当前位置: 首页 > 专利查询>贺新征专利>正文

基于可认证数据结构的区块链语义分析的方法技术

技术编号:28981667 阅读:13 留言:0更新日期:2021-06-23 09:29
本发明专利技术公开了基于可认证数据结构的区块链语义分析的方法,通过完整展示将可认证数据结构的操作性语义转化为指示性语义的过程,由于monad概念过于抽象,所以本文重点描述了auth和unauth代码的分析过程,以具体实例展示如何将非纯函数组合在一起。采用monad方法可直接借助源编译器语言实现新的语言功能,因此可避免修改编译器的语法树,同时便于在不同程序编译器之间移植新的语言功能。

【技术实现步骤摘要】
基于可认证数据结构的区块链语义分析的方法
本专利技术涉及区块链
,尤其涉及基于可认证数据结构的区块链语义分析的方法。
技术介绍
可认证数据结构(AuthenticatedDataStructure)是基于Merkle树的二叉树数据结构。用户从树上获得某个数据的同时,还得到从根到数据的路径信息,后者称为证明流。依靠证明流能校验所获得数据的真实性。例如,比特币的超级账本底层采用了Merkle树结构,即区块链是基于Merkle树实现的。在区块链中,merkle树充当着一个代表性的角色,一个区块中的所有交易信息都被它归纳总结,大大提高区块链的效率,经过实践测试其能有效防止中间人攻击。Merkle树启发研究人员,按照链表、字典等方式组织的数据也可重新设计为基于Merkle树的可认证数据结构,但对每类非二叉树结构都需重新设计。在不同适用场景下,需要用到区块链的可认证性质,但采用树形结构并不是实现特定算法的最优数据结构。例如,不同行业都有电子证据保全需求,而基于区块链技术实现电子证据保全,本质上就是使用Merkle树的可认证结构完成。但并非所有电子证据保全算法都适用于二叉树结构,有的可能需要图,有的可能需要Hash链表。这就导致了算法需求一种数据结构,证据保全的防篡改性需要另一种数据结构。如果要实现两者的融合,就必需要通过编程人员付出大量重复性劳动。Milleret.等人从Merkle树中抽取出生成证明流和验证证明流的操作性语义(operationalsematics),将两者写入编译器,然后作为一种新的程序设计语言特性提供给编程人员,从而能让非二叉树数据结构使用可认证数据结构进行数据验证。这种实验性的方法是在OCaml编译器上实现的。但不足之处是,研究人员在具体实施时需要掌握HackOCaml和特定于OCaml编译器的Camlp4语法树转换技术,因此难以移植到其他编译器中实现。
技术实现思路
针对上述存在的问题,本专利技术旨在提供一种具有通用性的方法,通过Monad转换,将这种非二叉树转为可认证数据结构,即Merkle树,减少程序员的重复工作。为了实现上述目的,本专利技术所采用的技术方案如下:基于可认证数据结构的区块链语义分析的方法,其特征在于,包括以下步骤:S1:获取比特币区块中非二叉树结构的数据;S2:基于Monad技术将非二叉树结构的数据转换为可认证数据结构;S3:使用得出的可认证数据结构进行比特币交易验证。进一步地,步骤S2的具体操作步骤包括:S21:输入非二叉树结构的数据;S22:从Merkle树中抽取出生成证明流和验证证明流的操作性语义,并写入编译器;S23:将编译器中的所述操作性语义进行Monad转化,成为等价的指示性语义;S24:将得到的所述指示性语义转化为目标编译器语言编码的库文件;S25:调用所述目标编译器语言编码的库文件将输入的非二叉树结构转换为可认证数据结构。进一步地,步骤S25中所述的可认证数据结构为基于Merkle树的二叉树数据结构。进一步地,步骤S23中所述的将操作性语义包括纯函数、纯函数组合、非纯函数和非纯函数组合,将操作性语义Monad转换为等价的指示性语义的具体步骤包括:S231:将操作性语义中的纯函数和纯函数组合用λ演算表示,并将其编码为λ表达式,再用let语句表示其指示性语义;S232:将操作性语义中的非纯函数和非纯函数组合进行范畴转化;S232:将转换后的非纯函数和非纯函数组合编码,得出指示性语义。进一步地,步骤S231的具体操作步骤为:步骤2311:将纯函数f(x)和g(x),用λ演算表示为:f(x)=λx.e1和g(x)=λx.e2(1),其中,e1和e2表示任意表达式;步骤2312:将纯函数组合用λ演算表示为:h(x)=(λx.e1)[e2/x],[e2/x](2),其中,[e2/x]表示用e2替换表达式e1中出现的所有非自由变量x;步骤2313:将纯函数组合h(x)编码为λ表达式:h(x)=(funx→e1)e2(3),将其用let语句表示为:h(x)=lety=e2ine1(4)。进一步地,步骤S232中的具体操作步骤包括:S2321:将非纯函数的基本类型映射到Kleisli范畴中的对象;S2322:将非纯函数映射到Kleisli范畴中的态射;S2323:在Kleisli中采用bind操作将非纯函数转换为纯函数;S2324:将转换后的纯函数进行组合;S2325:将转换后的纯函数和纯函数组合进行编码表示。本专利技术的有益效果是:第一,通过Monad将编译器中一小部分操作性语义转化为等价的指示性语义。在实现时,Monad并未向编译器语法树引入新语法属性,基于OCaml自身的语法实现了添加新语言特性的目标。这种只使用源语言的语法就能产生新语言特性Monad方法普遍适用于函数式编程语言。不需要语言特性设计者深入了解修改编译器语法树,也不需要修改源语言的语法。第二,使用Monad方法创建认证数据结构的方法具有通用性。只要程序语言编译器具有最一般性的类型推导系统,就能通过该方法将抽取出的证明流的语义写入到库文件中,形成新的语言特性。例如,Haskell是另外一种函数式程序语言编译器,同样也能通过Monad方法,在仅使用Haskell自身语言语法,便可实现在程序语言中引入可认证数据结构语言特性;综上所述,本专利技术采用一种更为抽象和凝练的基于范畴论的monad技术,通过将编译器中一小部分操作性语义转化为等价的指示性语义(denotationalsemantics),可从编译器中抽取出需要的语义将其转化为目标编译器语言编码的库文件供程序员调用。因为Monad适用于所有基于Hindley-Milner类型推导系统函数式的编程语言,所以这种方法能推广到所有这类编程语言编译器。附图说明图1为Merkle树沿着路径(L;R)生成数据d2的证明流proof;图2为所有纯函数集合为T的输出结果的集合;图3为Eilenberg-Moore从范畴论的角度对monad表现的行为所进行的解释;图4为Kleisli条件满足的两个等式ηA=idTA和图5为Klesili函数组合的解释;图6为用Klesili转化为指示性语的示意图;具体实施方式为了使本领域的普通技术人员能更好的理解本专利技术的技术方案,下面结合附图和实施例对本专利技术的技术方案做进一步的描述。1、Merkle树Merkle是一个带有Hash指针的二叉树,如附图1所示。其叶子节点存储数据,非叶子节点存储Hash指针。先计算两个叶子节点存储的数据的哈希值,然后将结果存储到父节点。如此反复计算,直到计算根节点左右孩子的哈希值,并将结果存储到根节点中。Merkle树最主要的优点是能提供本文档来自技高网
...

【技术保护点】
1.基于可认证数据结构的区块链语义分析的方法,其特征在于,包括以下步骤:/nS1:获取比特币区块中非二叉树结构的数据;/nS2:基于Monad技术将非二叉树结构的数据转换为可认证数据结构;/nS3:使用得出的可认证数据结构进行比特币交易验证。/n

【技术特征摘要】
1.基于可认证数据结构的区块链语义分析的方法,其特征在于,包括以下步骤:
S1:获取比特币区块中非二叉树结构的数据;
S2:基于Monad技术将非二叉树结构的数据转换为可认证数据结构;
S3:使用得出的可认证数据结构进行比特币交易验证。


2.根据权利要求1所述的基于可认证数据结构的区块链语义分析的方法,其特征在于,步骤S2的具体操作步骤包括:
S21:输入非二叉树结构的数据;
S22:从Merkle树中抽取出生成证明流和验证证明流的操作性语义,并写入编译器;
S23:将编译器中的所述操作性语义进行Monad转化,成为等价的指示性语义;
S24:将得到的所述指示性语义转化为目标编译器语言编码的库文件;
S25:调用所述目标编译器语言编码的库文件将输入的非二叉树结构转换为可认证数据结构。


3.根据权利要求2所述的基于可认证数据结构的区块链语义分析的方法,其特征在于:步骤S25中所述的可认证数据结构为基于Merkle树的二叉树数据结构。


4.根据权利要求2所述的基于可认证数据结构的区块链语义分析的方法,其特征在于:步骤S23中所述的将操作性语义包括纯函数、纯函数组合、非纯函数和非纯函数组合,将操作性语义Monad转换为等价的指示性语义的具体步骤包括:
S231:将操作性语义中的纯函数和纯函数组合用λ演算表示,并将其编码为λ表达式,再用let语句表示其指...

【专利技术属性】
技术研发人员:贺新征光炎祝跃飞
申请(专利权)人:贺新征
类型:发明
国别省市:河南;41

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1