php做区块链(PHP也能实现区块链?)PHP函数 / PHP函数在区块链项目中的角色...

wufei123 发布于 2024-05-26 阅读(16)

区块链兄弟社区,区块链技术专业问答先行者,中国区块链技术爱好者聚集地

作者:列旭松来源: 高可用架构原文链接:http://t.cn/RgjsJ1i著作权归作者所有商业转载请联系作者获得授权,非商业转载请注明出处本文约3000字+,阅读(观看)需要19分钟作者简介:列旭松,唯品会资深工程师,曾任职于YY语音,熟识PHP、C语言和Go语言。

10年PHP开发经验,对PHP底层实现原理有较深理解热衷于开源事业,开源过多个PHP相关的扩展,流行的PHP源码加密扩展(PHP-Beast)作者另外,本人对分布式缓存系统(如Redis、Memcached)有较大的兴趣,喜欢钻研底层实现原理,《 PHP 核心技术与最佳实践》一书的作者。

引言什么是区块链?官方的解释是:区块链是一个分布式记账系统,是藉用密码学串接并保护其内容的串连交易记录(又称区块)每一个区块包含了前一个区块的加密散列、对应的时间戳记以及交易数据(通常用默克尔树算法计算的散列值表示),这样的设计使得区块内容具有难以被。

窜改的特性用区块链所串接的分布式账本能让两方有效率地纪录交易,且此交易可永久被查验但这个解释对于初学者来说太抽象了,所以接下来我们将会使用PHP来实现一个简易的区块链来加深对区块链的理解区块大家应该玩过成语接龙,规则是这样:我先说一个成语“人上人海”,下一个玩家需要使用我说的成语的最后一个字作为下一个成语的开头,就是说需要使用“海”这个字作为新成语的开头,这时就可以接一个“海阔天空”。

而区块链的形式有点像成语接龙,就是下一个区块必须使用上一个区块的Hash值作为凭据来生成下一个区块。如下图:

这样做的好处是:从任意一个区块开始都可以通过前一个区块的Hash值可以不断的追溯整条区块链,直到创世区块(也就是区块链的第一个区块)如果有人恶意攻击,也必须更改整条区块链的数据但是计算Hash值是一个耗时的操作,所以要更改整条区块链的数据基本是不可能达到,这就保证了区块链的安全性。

下面我们使用PHP代码来定义区块:

前一个区块的Hash值hash当前区块的Hash值timeStamp区块生成的时间戳data区块保存的数据prevHash、hash和timeStamp这几个字段在区块链中被称为区块头,区块的Hash值使用SHA-256算法计算。

计算方法如下:hash = hash(sha256, $data);

}}首先我们使用serialize()函数把整个区块序列化,然后使用hash()函数计算区块的Hash值,并赋值给hash字段区块对象的构造函数如下:

$this->prevHash = $prevHash; $this->timeStamp = time(); $this->data = $data; $this->setBlockHash(); }

}另外我们提供一个获取区块Hash值的方法:hash; }}区块链

前面说了,区块链就是按照一定的规则连接起来的区块,连接的规则就是下一个区块的区块头中必须包含前一个区块的Hash值我们编写一个区块链对象来保存整条区块链,代码如下:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

河南中青旅行社综合资讯 奇遇综合资讯 盛世蓟州综合资讯 综合资讯 游戏百科综合资讯 新闻50649