使用ABAP实现一个最简单的区块链原型

Showsomething 2018-05-03

这个测试程序的前半部分来源于SAP Community的博客ABAP Meets Blockchain, 作者是Nabheet Madan。

这部分主要负责生成一个ABAP内表,每行记录是区块链的一个块。为简单起见,每块拥有如下字段:

  • 块索引

  • 块数据 - 这里简单用一个字符串来描述

  • 块哈希 - 这个例子里,将该块所有字段的内容拼成一个长字符串,再经过SHA1计算得到的结果,作为该块的哈希值。

  • 时间戳 - 存储了该块的哈希计算出来的时间戳,即该块诞生的时间戳

  • 前一块的哈希 - 通过这个字段把一系列块串起来形成了链的结构。

  • NONCE - 这个字段需要和难度层级(difficult level)联合起来理解。

我使用下图的输入执行测试程序,

 
使用ABAP实现一个最简单的区块链原型

生成了如下图的区块链:

 
使用ABAP实现一个最简单的区块链原型

可以看到每个块的hash都是00000开头。这就对应了输入的难度层级00000。这个层级的意思是,如果根据上文介绍的SHA1计算出来的hash的前5个字符不是以00000开头,则丢弃掉,nonce加1,再继续循环,直至计算出来的hash前5个字符确实是以00000开头为止。因此,nonce字段实际上记录了该块诞生以来一共经过了多少次SHA1计算。

测试程序的后半部分是我自己开发的,作用是接受一个包含了区块链数据的ABAP内表,然后以链式结构输出。因为SAPGUI里没有现成的链表控件,所以我用树形控件做了模拟。

 
使用ABAP实现一个最简单的区块链原型

完整测试程序在我的github上。

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

 
使用ABAP实现一个最简单的区块链原型
 
使用ABAP实现一个最简单的区块链原型

相关推荐