作者: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
领取专属 10元无门槛券
私享最新 技术干货