日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP也能实现区块链?基础结构篇

發布時間:2025/3/19 php 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP也能实现区块链?基础结构篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

列旭松,唯品會資深工程師,曾任職于YY語音,熟識PHP、C語言和Go語言。10年PHP開發經驗,對PHP底層實現原理有較深理解。熱衷于開源事業,開源過多個PHP相關的擴展,流行的PHP源碼加密擴展(PHP-Beast)作者。另外,本人對分布式緩存系統(如Redis、Memcached)有較大的興趣,喜歡鉆研底層實現原理,《 PHP 核心技術與最佳實踐》一書的作者。

引言

什么是區塊鏈?官方的解釋是:區塊鏈是一個分布式記賬系統,是藉用密碼學串接并保護其內容的串連交易記錄(又稱區塊)。每一個區塊包含了前一個區塊的加密散列、對應的時間戳記以及交易數據(通常用默克爾樹算法計算的散列值表示),這樣的設計使得區塊內容具有難以被竄改的特性。用區塊鏈所串接的分布式賬本能讓兩方有效率地紀錄交易,且此交易可永久被查驗。

但這個解釋對于初學者來說太抽象了,所以接下來我們將會使用PHP來實現一個簡易的區塊鏈來加深對區塊鏈的理解。

區塊

大家應該玩過成語接龍,規則是這樣:我先說一個成語“人上人海”,下一個玩家需要使用我說的成語的最后一個字作為下一個成語的開頭,就是說需要使用“海”這個字作為新成語的開頭,這時就可以接一個“海闊天空”。

而區塊鏈的形式有點像成語接龍,就是下一個區塊必須使用上一個區塊的Hash值作為憑據來生成下一個區塊。如下圖:

這樣做的好處是:從任意一個區塊開始都可以通過前一個區塊的Hash值可以不斷的追溯整條區塊鏈,直到創世區塊(也就是區塊鏈的第一個區塊)。如果有人惡意攻擊,也必須更改整條區塊鏈的數據。但是計算Hash值是一個耗時的操作,所以要更改整條區塊鏈的數據基本是不可能達到,這就保證了區塊鏈的安全性。

下面我們使用PHP代碼來定義區塊:

<php
class Block {
public $prevHash;
public $hash;
public $timeStamp;
public $data;
}
字段解釋
prevHash
前一個區塊的Hash值
hash當前區塊的Hash值
timeStamp區塊生成的時間戳
data區塊保存的數據

prevHash、hash和timeStamp這幾個字段在區塊鏈中被稱為區塊頭,區塊的Hash值使用SHA-256算法計算。計算方法如下:

<php
class Block {
...
public function setBlockHash {
$data = serialize($this);
$this->hash = hash('sha256', $data);
}
}

首先我們使用serialize函數把整個區塊序列化,然后使用hash函數計算區塊的Hash值,并賦值給hash字段。

區塊對象的構造函數如下:

<php
class Block {
...
public function __construct($prevHash, $data) {
$this->prevHash = $prevHash;
$this->timeStamp = time;
$this->data = $data;
$this->setBlockHash;
}
}

另外我們提供一個獲取區塊Hash值的方法:

<?php

class Block
{
...
public function getBlockHash
{
return $this->hash;
}
}

區塊鏈

前面說了,區塊鏈就是按照一定的規則連接起來的區塊,連接的規則就是下一個區塊的區塊頭中必須包含前一個區塊的Hash值。我們編寫一個區塊鏈對象來保存整條區塊鏈,代碼如下:

<?php include('block.php');

class Blockchain
{
public $blocks = ;
}

區塊鏈對象內部使用了一個數組來保存所有的區塊,現階段我們還沒有使用到數據庫來保存區塊鏈,所以現在只需要把區塊鏈保存在內存即可。

向區塊鏈添加一個新的區塊代碼如下:

<?php

include('block.php');

class Blockchain
{
...
public function addBlock($data)
{
$prevBlock = $this->blocks[count($this->blocks)-1];
$this->blocks = new Block($prevBlock->getBlockHash, $data);
}
}

因為生成新區塊必須包含前一個區塊的Hash值,所以在添加新區塊時需要獲取區塊鏈中最后一個區塊作為新區塊的前一個區塊,然后把前一個區塊的Hash包含到新區塊的區塊頭中。

可能聰明的讀者會發現,在區塊鏈剛創建時并沒有任何區塊,那么添加新區塊時拿哪個區塊作為前一個區塊呢?答案就是創世區塊。創世區塊不用包含前一個區塊的Hash值,而且隨著區塊鏈的創建被創建,代碼如下:

<?php

include('block.php');

class Blockchain
{
...
public function __construct
{
$this->blocks = new Block('', 'Genesis Block');
}
}

創世區塊并不需要包含前一個區塊的Hash值,所以在創建創世區塊時把前一個區塊的Hash值設置為空。

OK!我們的簡易區塊鏈已經完成了,現在來測試一下我們的代碼吧:

<?php

include('blockchain.php');

$bc = new Blockchain;

$bc->addBlock('This is block1');
$bc->addBlock('This is block2');

foreach ($bc->blocks as $block) {
printf("PrevHash: %s\n", $block->prevHash);
printf("Hash: %s\n", $block->hash);
printf("Data: %s\n", $block->data);
printf("\n");
}

我們來運行一下測試代碼,運行結果如下:

很好,結果符合我們的預期。

總結

本文只是實現了一個最簡易的區塊鏈,離完整的區塊鏈還有非常遠的距離。在我們現在的實現中存在很多不足,如:添加一個區塊的成本很低,沒有實現分布式,不能保存到本地磁盤(重啟機器數據就會丟失)等,接下來的教程將會不斷完善這些問題。

總結

以上是生活随笔為你收集整理的PHP也能实现区块链?基础结构篇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美久久久久久又粗又大 | 男人的天堂网av | 亚洲视频 一区 | 久久精品天天中文字幕人妻 | 手机看片91 | 日日夜夜一区二区 | 国产乱人视频 | 国产激情精品一区二区三区 | 久久久精品国产sm调教网站 | 日本国产在线视频 | 香蕉视频链接 | 国产一区二区三区在线看 | 污视频在线免费 | 动漫美女视频 | 黄色二级视频 | 女同动漫免费观看高清完整版在线观看 | 精品一区二区久久 | 国产精品理伦片 | 精彩视频一区二区三区 | 无码成人精品区在线观看 | 香蕉视频成人在线 | 超碰2023 | 香蕉视频成人在线 | 青青草视频免费播放 | 国产精品久久久久久久久久久久久久久久久 | 麻豆国产原创 | 亚洲成人77777 | 亚洲偷 | 女人18毛片水真多 | 成人精品影院 | 黄黄视频在线观看 | 成人免费在线播放视频 | 野外吮她的花蒂高h在线观看 | 不卡成人| 色香蕉在线 | 一区二区三区日 | 澳门黄色网 | 香蕉网站在线 | 日韩第八页 | 在线观看免费视频国产 | 蜜臀尤物一区二区三区直播 | 啦啦啦免费高清视频在线观看 | 四虎影院永久 | 爱情岛论坛成人 | 亚洲福利网址 | 天堂社区av| 久久亚洲网| 国产一区二区精品在线观看 | 亚洲天天综合网 | 黄色a级片视频 | 女女同性女同一区二区三区按摩 | 国产人成精品 | 天天色综合图片 | 精品少妇人妻av免费久久久 | 美女露胸露尿口 | 男人操女人的软件 | 成人日韩视频 | 在线看视频 | 淫视频在线观看 | 精品视频久久 | 亚洲色图制服丝袜 | 无码人妻精品一区二区蜜桃网站 | 男女性杂交内射妇女bbwxz | 国产字幕在线观看 | 少妇被黑人到高潮喷出白浆 | 黄色大片视频 | 我想看一级黄色片 | 欧美日韩另类视频 | 无码人妻精品一区二 | 国产 欧美 日韩 | 丁香视频在线观看 | 精品人妻一区二区三区免费 | 中文字幕中出 | 黄色网战在线观看 | 草比视频在线观看 | 青青草97 | 亚洲色图图片区 | 能看毛片的网站 | 在线视频日韩欧美 | 成人在线观看免费网站 | 欧美日韩不卡一区 | 欧美激情综合网 | 中文字幕超清在线免费观看 | 大陆一级片 | 热久久中文字幕 | 国产综合在线观看视频 | 亚洲精品国产精品国自产网站 | 米奇久久 | 精品久久久久久中文字幕人妻最新 | 你懂的在线免费观看 | 无码h黄肉3d动漫在线观看 | 午夜精品福利在线观看 | 熟女肥臀白浆大屁股一区二区 | 91蜜桃网 | av中文字幕第一页 | www.99re7.com| 欧美无遮挡 | 91桃色网站| 久久国产激情视频 |