加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 运营中心 > 建站资源 > 经验 > 正文

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

发布时间:2018-09-05 13:09:50 所属栏目:经验 来源:列旭松
导读:技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战 引言 什么是区块链?官方的解释是:区块链是一个分布式记账系统,是藉用密码学串接并保护其内容的串连交易记录(又称区块)。每一个区块包含了前一个区块的加密散列、对应的时间戳

可能聪明的读者会发现,在区块链刚创建时并没有任何区块,那么添加新区块时拿哪个区块作为前一个区块呢?答案就是创世区块。创世区块不用包含前一个区块的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: %sn", $block->prevHash);  
  10.     printf("Hash: %sn", $block->hash);  
  11.     printf("Data: %sn", $block->data);  
  12.     printf("n");  
  13. }  

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

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

总结

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

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

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读