美文网首页技术干货程序员H5技术栈
JS 实现区块链—记账激励

JS 实现区块链—记账激励

作者: zidea | 来源:发表于2018-11-16 20:29 被阅读18次

    在比特币的世界里,挖矿是有奖励的,而且奖励的力度会随时间而逐渐减少,一半一半地减少。当初挖矿(记账)成功会得到 50 个比特币的奖励,而现在只有 25。以后会更少。今天我们就用 js 简单地实现激励记账的过程。

    修改 data 为 transactions ,transactions 为交易的集合,通过控制计算 hash 值难度将出矿的时间控制为需要一段时间才能出矿。所以在这段时间内发生交易我们会添加到这个 transactions 数组,

    我们去掉 index,因为只需要块在区块链数组位置就可以判断块位置,无需 index。

    相应地修改 createGensisBlocak 方法,去掉第一个参数。

    创建 Transaction 类表示每一笔交易,参数表示交易的发出方,接收方和交易的数量

    在 BlockChain 的构造函数中添加每次挖矿的奖励为 100,pendingTransactions 用于保存在两个出块之间发生的所有交易。

    将 addBlock 方法修改为 minePendingTransactions,并修改其具体内容见注释。

    createTransaction 方法用于将发生的交易写入 pendingTransactions 的数组中。

    getBalaceOfAddress 方法用于计算发生交易后,根据交易内容,对交易双方进行收支平衡计算。实现交易的结果

    完成了代码实现,可以来测试一下,从下面打印结果来看,矿工完成挖矿(也就是记账)后,是在下一次交易时才得到自己应得的激励 100 比特币。

    当然真正的区块链要比这里代码复杂的多的多,不过我相信一切都是从简单开始。

    相关文章

      网友评论

        本文标题:JS 实现区块链—记账激励

        本文链接:https://www.haomeiwen.com/subject/ivkpfqtx.html