首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当ABAP遇上区块链 II

作者:nabheet madan

翻译:大话君

关键词:Blockchain | 区块链 | SAP Leonardo | ABAP

在上一篇《当ABAP遇上区块链》里,我们用ABAP实现了一个基本的区块链。

这次,让我们深入到区块的交易结构中。区块是交易的组合,不同的区块链中,一个区块中包含多少个交易也是不一样的。以比特币为例,它的一个区块中包括大约500个交易。

什么是交易?

交易中包含发送方,接收方,交易金额等等。按照区块链的需求,其中可以包括多个字段。下图展示了一个基本的交易结构。

在区块中交易的存储 > Merkle树

区块中的交易基本是以二进制树的形式存储的。

那么什么是Merkle树?Merkle树的实现方式是每次对一对节点执行哈希算法,获得新的节点。持续执行以上逻辑,直到获得一个最终节点,也就是根节点或者说Merkle根节点,它包括了整棵树的哈希值。如果节点数量是奇数,那么需要复制最后一个节点来构成一对节点来完成算法。

下图描绘了一棵Merkle树的基本结构,以及它是如何层层计算出根节点的。首先所有代表交易值的底层节点(橙色节点,前缀为T)会被哈希化,变为前缀为H的节点(灰色)。然后节点会被两两组合,并递归式地算出上层节点。这个过程会一直持续,直到获得根节点,也就是图中的HABCD节点。

用ABAP实现Merkle Tree

节点数通过用户输入完成。

首先确定节点数是奇数还是偶数。如果是奇数,需要增加一个节点以满足节点配对的需要。在下面的例子中,所有的叶节点都是带索引的字符串。整棵树的高度是总节点数除以2。

在名为recursivehashing的子程序中,程序把一对节点哈希化,并递归执行到根节点。在每一次递归中,都会检查节点是奇数还是偶数,如果是奇数则复制最后一个节点,以保持Merkle树的计算逻辑。

最终结果

最终的输出结构包括可读的合并值,以及对应的哈希值。此外,当前节点的左右子节点也会被保存下来。

原文地址

https://blogs.sap.com/2018/03/06/abap-meets-blockchain-transaction-merkle-tree/

往期精华

我是大话君

一位

外表羞涩,内心狂野的

SAP顾问

爱学习的你,欢迎长按以下二维码关注大话SAP

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180309B059XU00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券