设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 数据 公司
当前位置: 首页 > 运营中心 > 建站资源 > 经验 > 正文

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

发布时间:2018-08-17 17:36 所属栏目:19 来源:列旭松
导读:可能聪明的读者会发现,在区块链刚创建时并没有任何区块,那么添加新区块时拿哪个区块作为前一个区块呢?答案就是创世区块。创世区块不用包含前一个区块的Hash值,而且随着区块链的创建被创建,代码如下: ?php inc

可能聪明的读者会发现,在区块链刚创建时并没有任何区块,那么添加新区块时拿哪个区块作为前一个区块呢?答案就是创世区块。创世区块不用包含前一个区块的Hash值,而且随着区块链的创建被创建,代码如下:

  1. <?php  
  2. include('block.php');  
  3. class Blockchain  
  4. {  
  5.     ...  
  6.     public function __construct()  
  7.     {  
  8.         $this->blocks[] = new Block('', 'Genesis Block');  
  9.     }  
  10. }  

创世区块并不需要包含前一个区块的Hash值,所以在创建创世区块时把前一个区块的Hash值设置为空。

OK!我们的简易区块链已经完成了,现在来测试一下我们的代码吧:

  1. <?php  
  2. include('blockchain.php');  
  3. $bc = new Blockchain();  
  4.  
  5. $bc->addBlock('This is block1');  
  6. $bc->addBlock('This is block2');  
  7.  
  8. foreach ($bc->blocks as $block) {  
  9.     printf("PrevHash: %s\n", $block->prevHash);  
  10.     printf("Hash: %s\n", $block->hash);  
  11.     printf("Data: %s\n", $block->data);  
  12.     printf("\n");  
  13. }  

我们来运行一下测试代码,运行结果如下:

很好,结果符合我们的预期。

总结

本文只是实现了一个最简易的区块链,离完整的区块链还有非常远的距离。在我们现在的实现中存在很多不足,如:添加一个区块的成本很低,没有实现分布式,不能保存到本地磁盘(重启机器数据就会丢失)等,接下来的教程将会不断完善这些问题。

【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读