CN112015396B - 基于dsl的智能合约代码生成方法、装置、设备及存储介质 - Google Patents

基于dsl的智能合约代码生成方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN112015396B
CN112015396B CN202010888504.7A CN202010888504A CN112015396B CN 112015396 B CN112015396 B CN 112015396B CN 202010888504 A CN202010888504 A CN 202010888504A CN 112015396 B CN112015396 B CN 112015396B
Authority
CN
China
Prior art keywords
contract
intelligent contract
asset
language
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010888504.7A
Other languages
English (en)
Other versions
CN112015396A (zh
Inventor
吴森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Saiante Technology Service Co Ltd
Original Assignee
Shenzhen Saiante Technology Service Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Saiante Technology Service Co Ltd filed Critical Shenzhen Saiante Technology Service Co Ltd
Priority to CN202010888504.7A priority Critical patent/CN112015396B/zh
Publication of CN112015396A publication Critical patent/CN112015396A/zh
Application granted granted Critical
Publication of CN112015396B publication Critical patent/CN112015396B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/186Templates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Artificial Intelligence (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Health & Medical Sciences (AREA)
  • Signal Processing (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请揭示了一种基于DSL的智能合约代码生成方法、装置、设备及存储介质,其中方法包括:获取利用资产模型领域特定语言编写的语言文本,所述资产模型特定领域语言的语法用于描述资产模型的数据结构和操作接口;根据预先构建的语法解析规则对所述语言文本进行解析,得到资产数据集;将所述资产数据集载入目标区块链的智能合约模板,利用预先构建的代码生成器渲染出智能合约代码文件。本申请的基于DSL的智能合约代码生成方法,为资产模型构建一种领域特定语言,对语言进行解析和编译,最终生成目标区块链的智能合约代码文件,可以有效降低普通开发人员开发智能合约产生错误的概率,提升合约代码质量。本申请适用于科技金融领域。

Description

基于DSL的智能合约代码生成方法、装置、设备及存储介质
技术领域
本申请涉及到区块链领域,特别是涉及到一种基于DSL的智能合约代码生成方法、装置、设备及可读存储介质。
背景技术
智能合约是现有区块链技术的重要领域之一。智能合约通常包含了接近或达到图灵完备的合约专用编程语言,可以执行合约代码的专用虚拟机,以及与区块链系统紧密结合的分布式一致性运作机制,这些要素使得智能合约可以在区块链构建安全可靠的去中心计算,使得合约内容在区块链上实现了可信任性。智能合约的出现克服了区块链以往只能处理简单转账数据的缺陷,极大增加了区块链可以应用的场景。
现有的区块链智能合约方案之中,超级帐本的链码方案和以太坊的solidity方案使用最为广泛。传统的区块链合约开发,需要面对复杂、冗长、繁琐的智能合约编程语言,将业务流程转化为区块链能够运作的逻辑,再逐步写成智能合约代码。由于链码和solidity都只支持非常底层的区块链接口,面对现在主要的区块链业务模式,大量以资产为中心的数据交互模式,没有得到良好的套件支持。导致开发人员只能重复编写大量定义代码去构建区块链业务,并且还需要建立在具备丰富的智能合约开发经验之上。否则,开发智能合约对于企业来说具备非常高昂的用人门槛和开发成本,导致区块链这项优秀技术的落地举步维艰。
发明内容
本申请的主要目的为提供一种基于DSL的智能合约代码生成方法、装置、计算机设备及可读存储介质,旨在解决以资产为中心的智能合约代码开发效率低、成本高的技术问题。
为了实现上述发明目的,本申请提出一种基于DSL的智能合约代码生成方法,包括:
获取利用资产模型领域特定语言编写的语言文本,所述资产模型特定领域语言的语法用于描述资产模型的数据结构和操作接口;
根据预先构建的语法解析规则对所述语言文本进行解析,得到资产数据集;
将所述资产数据集载入目标区块链的智能合约模板,利用预先构建的代码生成器渲染出智能合约代码文件。
进一步地,所述根据预先构建的解析规则对所述语言文本进行解析,得到资产数据集的步骤包括:
利用ANTLR工具生成解析器Lexer和Parser;
利用所述解析器Lexer和Parser对根据预先构建的解析规则所述语言文本进行解析,得到抽象语法树;
对所述抽象语法树进行遍历,抽取结构化的元数据信息;
利用预先构建的编译器Visitor,将所述结构化的元数据信息编译为资产数据集。
进一步地,所述利用所述解析器Lexer和Parser对所述语言文本进行解析,得到抽象语法树的步骤包括:
利用Lexer将所述语言文本的代码文件转化成词法记号流;
利用Parser将词法记号流转化为语法记号流,将词按照特定的顺序排布解析成对应语句结构,形成语法抽象树。
进一步地,所述将资产数据集载入目标区块链的智能合约模板,利用预先构建的代码生成器渲染出智能合约代码文件的步骤之前还包括:
对目标区块链智能合约框架去参数化,获取目标区块链的智能合约模板。
进一步地,所述将资产数据集载入目标区块链的智能合约模板,利用预先构建的代码生成器渲染出智能合约代码文件的步骤之后还包括:
发送合约确认反馈消息至合约参与方,合约确认反馈消息要求合约参与方于反馈期限内发送携带数字签名的合约确认信息;
当在反馈期限内接收到合约参与方反馈的携带数字签名的合约确认信息时,对合约确认信息进行解密验证;
若解密验证通过,将智能合约上链至对应的区块链中。
进一步地,所述若解密验证通过,将智能合约上链至对应的区块链中的步骤包括:
将所述智能合约代码文件保存在可读存储介质中并生成对应的合约文件地址;
获取合约安装地址,并将合约文件地址和合约安装地址的对应关系保存至区块链网络中;
进一步地,所述获取合约安装地址,并将合约文件地址和合约安装地址的对应关系保存至区块链网络中的步骤之后还包括:
根据合约安装地址和合约文件地址的对应关系,从可读存储介质中加载需要安装的智能合约代码文件;
使用校验算法验证智能合约代码文件的正确性和完整性;
如果通过校验,则将所述智能合约代码文件安装在所述合约安装地址。
本申请实施例还提供一种基于DSL的智能合约代码生成装置,包括:
语言获取模块,用于获取利用资产模型领域特定语言编写的语言文本,所述资产模型特定领域语言的语法用于描述资产模型的数据结构和操作接口;
文本解析模块,用于根据预先构建的语法解析规则对所述语言文本进行解析,得到资产数据集;
代码生成模块,用于将所述资产数据集载入目标区块链的智能合约模板,利用预先构建的代码生成器渲染出智能合约代码文件。
本申请还提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。
本申请的基于DSL的智能合约代码生成方法、装置和计算机设备,通过领域特定语言(DSL)的思想,为资产模型构建一种领域特定语言,对语言进行解析和编译,最终生成目标区块链的智能合约代码文件,开发人员或者业务人员只需要在理解业务的前提下建立资产模型,通过建模语言声明资产的各项属性,就完成了合约的研发工作,有效降低普通开发人员开发智能合约产生错误的概率,提升合约代码质量。
附图说明
图1为本申请一实施例的基于DSL的智能合约代码生成方法的流程示意图;
图2为本申请一实施例的基于DSL的智能合约代码生成装置的结构示意框图;
图3为本申请一实施例的计算机设备的结构示意框图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)交易(Transaction),等同于计算机术语“事务”,交易包括了需要提交到区块链网络执行的操作,并非单指商业语境中的交易,鉴于在区块链技术中约定俗成地使用了“交易”这一术语,本申请实施例遵循了这一习惯。
例如,部署(Deploy)交易用于向区块链网络中的节点安装指定的智能合约并准备被调用;调用(Invoke)交易用于通过调用智能合约在区块链中追加交易的记录,并对区块链的状态数据库进行操作,包括更新操作(包括增加、删除和修改状态数据库中的键值对)和查询操作(即查询状态数据库中的键值对)。
2)区块链(Blockchain),是由区块(Block)形成的加密的、链式的交易的存储结构。
例如,每个区块的头部既可以包括区块中所有交易的哈希值,同时也包含前一个区块中所有交易的哈希值,从而基于哈希值实现区块中交易的防篡改和防伪造;新产生的交易被填充到区块并经过区块链网络中节点的共识后,会被追加到区块链的尾部从而形成链式的增长。
3)区块链网络(Blockchain Network),通过共识的方式将新区块纳入区块链的一系列的节点的集合。
4)账本(Ledger),是区块链(也称为账本数据)和与区块链同步的状态数据库的统称。
其中,区块链是以文件系统中的文件的形式来记录交易;状态数据库是以不同类型的键(Key)值(Value)对的形式来记录区块链中的交易,用于支持对区块链中交易的快速查询。
5)智能合约(Smart Contracts),也称为链码(Chaincode)或应用代码,部署在区块链网络的节点中的程序,节点执行接收的交易中所调用的智能合约,来对账本数据库的键值对数据进行更新或查询的操作。
6)共识(Consensus),是区块链网络中的一个过程,用于在涉及的多个节点之间对区块中的交易达成一致,达成一致的区块将被追加到区块链的尾部,实现共识的机制包括工作量证明(PoW,Proof of Work)、权益证明(PoS,Proof of Stake)、股份授权证明(DPoS,Delegated Proof-of-Stake)、消逝时间量证明(PoET,Proof of Elapsed Time)等。
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
参照图1,本申请实施例中提供一种基于DSL的智能合约代码生成方法,适用于科技金融领域,包括步骤:
S1、获取利用资产模型领域特定语言编写的语言文本,所述资产模型特定领域语言的语法用于描述资产模型的数据结构和操作接口;
S2、根据预先构建的语法解析规则对所述语言文本进行解析,得到资产数据集;
S3、将所述资产数据集载入目标区块链的智能合约模板,利用预先构建的代码生成器渲染出智能合约代码文件。
DSL(domain-specific language)是指领域特定语言,是专注于某个应用程序领域的计算机语言,又译作领域专用语言。目前区块链业务主要落地场景都是将一些重要的核心数据登记到区块链中,然后在区块链上进行增删查改,利用区块链的不可篡改与共识特性减少信任成本。所以数据构建模式大多都是定义资产属性如资产所有者和资产操作权限等,对资产进行增删查改操作。这种交互模式可以抽象出专用的资产模式,以便快速构建业务。通过领域特定语言(DSL)的思想,我们可以为资产模型构建一种领域特定语言,这个语言可以通过定义配置的方式声明资产的属性、功能、接口、权限、查询方法。
如上述步骤S1所述,首先由开发人员建立相关资产模型,编写支持资产模型的领域特定语言(DSL),语言的语法可以描述资产具有的属性。例如定义一个虚拟货币为资产,可以如下声明:
asset coin{
Count int
}permission{
User read,write
Admin read
}action{
Get
Post
Put
Delete
}
之后对该资产进行数据结构和操作接口的描述:
通过这种简单的结构,定义出需要的属性,即完成了资产模型领域特定语言的开发工作,将所述语言代码存储在系统设备中供编译器使用。
如上述步骤S2所述,根据预先构建的语法解析规则对所述语言文本进行解析,得到资产数据集。对步骤S1中的资产模型领域特定语言进行解析,其解析规则由开发人员预先设定。可以使用ANTLR工具对语言进行语法和词法解析,生成抽象语法树AST,获取与资产相关的资产数据集。
具体地:
通过以上操作,利用语法抽象树,将语言文本转换成数据集。
如上述步骤S3所述,根据目标区块链平台的原始智能合约接口,封装相应的增删查改、权限配置、校验等功能可以设计以资产为核心的区块链智能合约框架,然后将智能合约框架拆分得到目标区块链平台的智能合约模板。然后将所述资产数据集载入目标区块链的智能合约模板,利用预先构建的代码生成器渲染出智能合约代码。具体地,如下述代码所述,
如上所述,开发人员或者业务人员只需要在理解业务的前提下建立资产模型,通过领域特定语言声明资产的各项属性,就完成了合约的研发工作。剩下的只需要将语言文件提交给区块链部署系统,由部署系统调用编译器,生成最终的合约代码,就可以安全高效地部署区块链智能合约服务。资产模型领域特定语言不止简化了合约内容构建地复杂度,通过背后专业区块链人员预先设计的合约模板,还能有效降低普通开发人员开发智能合约产生错误的概率,提升合约代码质量。
在一个具体的实施例中,所述根据预先构建的解析规则对所述语言文本进行解析,得到资产数据集的步骤包括:
S21、利用ANTLR工具生成解析器Lexer和Parser;
S22、利用所述解析器Lexer和Parser对根据预先构建的解析规则所述语言文本进行解析,得到抽象语法树;
S23、对所述抽象语法树进行遍历,抽取结构化的元数据信息;
S24、利用预先构建的编译器Visitor,将所述结构化的元数据信息编译为资产数据集。
如上述步骤所述,在本实施例中,使用了ANTLR工具对资产模型领域特定语言进行解析。ANTLR(Another Tool for Language Recognition),其前身是PCCTS(PurdueCompiler Construction Tool Set),它为包括Java,C++,C#在内的语言提供了一个通过语法描述来自动构造自定义语言的识别器(recognizer),编译器(parser)和解释器(translator)的框架。计算机语言的解析已经变成了一种非常普遍的工作。程序员为了解析数据格式、图形文件(如PostScript、AutoCAD)、文本文件(如HTML,SGML等)而需要构造解析器。ANTLR被设计出来处理所有这些转换工作。ANTLR可以生成词法解析器Lexer和语法解析器Parser,并根据解析结果形成抽象语法树AST(Abstract Syntax Tree)。然后对所述抽象语法树进行遍历,抽取资产标识符,利用预先构建的编译器Visitor,将所述资产标识符编译为资产数据集。使用ANTLR工具对资产模型领域特定语言进行解析可以实现对语言文本的解析工作,降低人力成本,提高效率。
在一个实施例中,所述利用所述解析器Lexer和Parser对所述语言文本进行解析,得到抽象语法树的步骤包括:
利用Lexer将所述语言文本的代码文件转化成词法记号流;
利用Parser将词法记号流转化为语法记号流,将词按照特定的顺序排布解析成对应语句结构,形成语法抽象树。
如上所述,在本实施例中,词法解析器Lexer和语法解析器Parser使用正则表达式的解析方式,将一个语言要匹配的元素全部描述出来。Lexer专门将源代码文件转化成词法记号流,主要把源代码解析成标识符、字面量、特殊符号、空白。Parser再将词法记号流转化为语法记号流,将词按照特定的顺序排布解析成对应语句结构,最后形成语法抽象树。
在一个实施例中,所述将资产数据集载入目标区块链的智能合约模板,利用预先构建的代码生成器渲染出智能合约代码文件的步骤之前还包括:
对目标区块链智能合约框架去参数化,获取目标区块链的智能合约模板。如上所述,专业的区块链人员可以根据目标区块链平台的原始智能合约接口,封装相应的增删查改、权限配置、校验等功能设计出以资产为核心的区块链智能合约框架,然后将区块链智能合约框架去参数化,得到区块链智能合约模板,供编译器渲染合约使用。
通过智能合约模板,利用预先构建的代码生成器渲染出智能合约代码文件。通过智能合约模板,可以省去底层合约代码的开发工作,大大降低开发人员的工作量,提高智能合约开发效率。
在一个实施例中,所述将资产数据集载入目标区块链的智能合约模板,利用预先构建的代码生成器渲染出智能合约代码文件的步骤之后还包括:
S4、发送合约确认反馈消息至合约参与方,合约确认反馈消息要求合约参与方于反馈期限内发送携带数字签名的合约确认信息;
S5、当在反馈期限内接收到合约参与方反馈的携带数字签名的合约确认信息时,对合约确认信息进行解密验证;
S6、若解密验证通过,将智能合约上链至对应的区块链中。
如上所述,数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换,一般多以随机的数字串为主。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。基于公钥密码体制和私钥密码体制都可以获得数字签名,例如,信息发送方利用私钥加密,生成的加密信息,发送原文和密文,接收方利用公钥解密,验证解密信息是否和原文一致,即可确认是否为发送方发送。在实际应用中,为保证智能合约执行的及时性,可在生成智能合约之后,发送合约确认信息至合约参与方。具体的,合约确认反馈消息要求合约参与方于反馈期限内发送携带数字签名的合约确认信息。当合约参与双方接收到合约确认反馈消息时,可以是在反馈期限内使用各自的私钥对拟发送的合约确认信息进行加密处理,生成数字签名,并将携带数字签名的合约确认信息一同发送至服务器,服务器进而对数字签名和合约确认信息进行解密验证。若解密验证成功,则将智能合约上链至对应的区块链。若未在反馈期限内收到携带数字签名的合约确认信息,则再次发送合约确认反馈消息至合约参与方,直至合约参与方对智能合约完成确认。本实施例中,通过发送合约确认反馈消息,能够确保合约确认信息发送方的身份,提高智能合约的安全性且保证了智能合约的时效性,加快部署智能合约的进程。
在一个实施例中,所述若解密验证通过,将智能合约上链至对应的区块链中的步骤包括:
S61、将所述智能合约代码文件保存在可读存储介质中并生成对应的合约文件地址;
S62、获取合约安装地址,并将合约文件地址和合约安装地址的对应关系保存至区块链网络中。
如上所述,在智能合约代码文件生成之后,还需要将智能合约应用在目标区块链平台中,即需要完成智能合约的安装。智能合约的安装部署可以由人工完成,也可以由系统自动实现。在本实施例中,首先将生成的智能合约代码文件保存在可读存储介质中,并生成对应的代码文件存储地址。然后获取合约的安装地址,将合约文件地址和合约安装地址对应起来,并将对应关系保存在目标区块链网络中以供系统完成后续安装工作。
在一个具体的实施例中,所述获取合约安装地址,并将合约文件地址和合约安装地址的对应关系保存至区块链网络中的步骤之后还包括:
S63、根据合约安装地址和合约文件地址的对应关系,从可读存储介质中加载需要安装的智能合约代码文件;
S64、使用校验算法验证智能合约代码文件的正确性和完整性;
S65、如果通过校验,则将所述智能合约代码文件安装在所述合约安装地址。
如上所述,根据合约安装地址和合约文件地址的对应关系,从可读存储介质中加载可执行智能合约代码文件,之后校验智能合约代码文件的正确性和完整性,对通过校验的智能合约代码文件予以安装。校验算法可以采用如下的算法:对智能合约代码文件进行代码解析,获取可执行代码;利用校验码解析函数对对智能合约代码文件进行解析,获取期望校验码e;利用密钥生成函数生成所述可执行代码的密钥;利用哈希加密算法对所述密钥和所述可执行代码进行处理,获取实际校验码a;比较期望校验码e和实际校验码a是否相等,如果相等则通过校验。
本申请实施例的基于DSL的智能合约代码生成方法,通过领域特定语言(DSL)的思想,为资产模型构建一种领域特定语言,对语言进行解析和编译,最终生成目标区块链的智能合约代码文件,开发人员或者业务人员只需要在理解业务的前提下建立资产模型,通过建模语言声明资产的各项属性,就完成了合约的研发工作,有效降低普通开发人员开发智能合约产生错误的概率,提升合约代码质量。
参照图2,本申请实施例中还提供一种基于DSL的智能合约代码生成装置,包括:
语言获取模块1,用于获取利用资产模型领域特定语言编写的语言文本,所述资产模型特定领域语言的语法用于描述资产模型的数据结构和操作接口;
文本解析模块2,用于根据预先构建的语法解析规则对所述语言文本进行解析,得到资产数据集;
代码生成模块3,用于将所述资产数据集载入目标区块链的智能合约模板,利用预先构建的代码生成器渲染出智能合约代码文件。
在一个实施例中,所述文本解析模块2包括:
解析工具生成模块,用于利用ANTLR工具生成解析器Lexer和Parser;
解析模块,利用所述解析器Lexer和Parser对根据预先构建的解析规则所述语言进行解析,得到抽象语法树;
抽取模块,对所述抽象语法树进行遍历,抽取结构化的元数据信息;
编译模块,利用预先构建的编译器Visitor,将所述结构化的元数据信息编译为资产数据集。
在一个具体的实施例中,所述解析模块包括:
第一解析模块,用于利用Lexer将所述语言文本的代码文件转化成词法记号流;
第二解析模块,用于利用Parser将词法记号流转化为语法记号流,将词按照特定的顺序排布解析成对应语句结构,形成语法抽象树。
在一个实施例中,所述基于DSL的智能合约代码生成装置还包括:
智能合约模板获取模块,用于对目标区块链智能合约框架去参数化,获取目标区块链的智能合约模板。
在一个实施例中,所述基于DSL的智能合约代码生成装置还包括:
合约确认模块,用于发送合约确认反馈消息至合约参与方,合约确认反馈消息要求合约参与方于反馈期限内发送携带数字签名的合约确认信息;
确认信息验证模块,用于当在反馈期限内接收到合约参与方反馈的携带数字签名的合约确认信息时,对合约确认信息进行解密验证;
上链模块,用于若解密验证通过,将智能合约上链至对应的区块链中。
在一个实施例中,所述上链模块包括:
合约文件地址生成模块,用于将所述智能合约代码文件保存在可读存储介质中并生成对应的合约文件地址;
保存模块,用于获取合约安装地址,并将合约文件地址和合约安装地址的对应关系保存至区块链网络中。
在一个实施例中,所述基于DSL的智能合约代码生成装置还包括:
加载模块,用于根据合约安装地址和合约文件地址的对应关系,从可读存储介质中加载需要安装的智能合约代码文件;
校验模块,用于使用校验算法验证智能合约代码文件的正确性和完整性;
安装模块,用于如果通过校验,则将所述智能合约代码文件安装在所述合约安装地址。
如上所述,可以理解地,本申请中提出的所述基于DSL的智能合约代码生成装置的各组成部分可以实现如上所述基于DSL的智能合约代码生成方法任一项的功能,具体结构不再赘述。
参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于保存智能合约模板等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于DSL的智能合约代码生成装置方法。
上述处理器执行上述的基于DSL的智能合约代码生成装置方法,包括:获取利用资产模型领域特定语言编写的语言文本,所述资产模型特定领域语言的语法用于描述资产模型的数据结构和操作接口;根据预先构建的语法解析规则对所述语言文本进行解析,得到资产数据集;将所述资产数据集载入目标区块链的智能合约模板,利用预先构建的代码生成器渲染出智能合约代码文件。
在一个实施例中,所述根据预先构建的解析规则对所述语言文本进行解析,得到资产数据集的步骤包括:利用ANTLR工具生成解析器Lexer和Parser;利用所述解析器Lexer和Parser对根据预先构建的解析规则所述语言进行解析,得到抽象语法树;对所述抽象语法树进行遍历,抽取结构化的元数据信息;利用预先构建的编译器Visitor,将所述结构化的元数据信息编译为资产数据集。
在一个实施例中,所述利用所述解析器Lexer和Parser对所述语言文本进行解析,得到抽象语法树的步骤包括:利用Lexer将所述语言文本的代码文件转化成词法记号流;利用Parser将词法记号流转化为语法记号流,将词按照特定的顺序排布解析成对应语句结构,形成语法抽象树。
在一个实施例中,所述将资产数据集载入目标区块链的智能合约模板,利用预先构建的代码生成器渲染出智能合约代码文件的步骤之前还包括:对目标区块链智能合约框架去参数化,获取目标区块链的智能合约模板。
在一个实施例中,所述将资产数据集载入目标区块链的智能合约模板,利用预先构建的代码生成器渲染出智能合约代码文件的步骤之后还包括:发送合约确认反馈消息至合约参与方,合约确认反馈消息要求合约参与方于反馈期限内发送携带数字签名的合约确认信息;当在反馈期限内接收到合约参与方反馈的携带数字签名的合约确认信息时,对合约确认信息进行解密验证;若解密验证通过,将智能合约上链至对应的区块链中。
在一个实施例中,所述若解密验证通过,将智能合约上链至对应的区块链中的步骤包括:将所述智能合约代码文件保存在可读存储介质中并生成对应的合约文件地址;获取合约安装地址,并将合约文件地址和合约安装地址的对应关系保存至区块链网络中。
在一个实施例中,所述获取合约安装地址,并将合约文件地址和合约安装地址的对应关系保存至区块链网络中的步骤之后还包括:根据合约安装地址和合约文件地址的对应关系,从可读存储介质中加载需要安装的智能合约代码文件;使用校验算法验证智能合约代码文件的正确性和完整性;如果通过校验,则将所述智能合约代码文件安装在所述合约安装地址。
本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种基于DSL的智能合约代码生成装置方法。
上述处理器执行上述的基于DSL的智能合约代码生成装置方法,包括:获取利用资产模型领域特定语言编写的语言文本,所述资产模型特定领域语言的语法用于描述资产模型的数据结构和操作接口;根据预先构建的语法解析规则对所述语言文本进行解析,得到资产数据集;将所述资产数据集载入目标区块链的智能合约模板,利用预先构建的代码生成器渲染出智能合约代码文件。
在一个实施例中,所述根据预先构建的解析规则对所述语言文本进行解析,得到资产数据集的步骤包括:利用ANTLR工具生成解析器Lexer和Parser;利用所述解析器Lexer和Parser对根据预先构建的解析规则所述语言进行解析,得到抽象语法树;对所述抽象语法树进行遍历,抽取结构化的元数据信息;利用预先构建的编译器Visitor,将所述结构化的元数据信息编译为资产数据集。
在一个实施例中,所述利用所述解析器Lexer和Parser对所述语言文本进行解析,得到抽象语法树的步骤包括:利用Lexer将所述语言文本的代码文件转化成词法记号流;利用Parser将词法记号流转化为语法记号流,将词按照特定的顺序排布解析成对应语句结构,形成语法抽象树。
在一个实施例中,所述将资产数据集载入目标区块链的智能合约模板,利用预先构建的代码生成器渲染出智能合约代码文件的步骤之前还包括:对目标区块链智能合约框架去参数化,获取目标区块链的智能合约模板。
在一个实施例中,所述将资产数据集载入目标区块链的智能合约模板,利用预先构建的代码生成器渲染出智能合约代码文件的步骤之后还包括:发送合约确认反馈消息至合约参与方,合约确认反馈消息要求合约参与方于反馈期限内发送携带数字签名的合约确认信息;当在反馈期限内接收到合约参与方反馈的携带数字签名的合约确认信息时,对合约确认信息进行解密验证;若解密验证通过,将智能合约上链至对应的区块链中。
在一个实施例中,所述若解密验证通过,将智能合约上链至对应的区块链中的步骤包括:将所述智能合约代码文件保存在可读存储介质中并生成对应的合约文件地址;获取合约安装地址,并将合约文件地址和合约安装地址的对应关系保存至区块链网络中。
在一个实施例中,所述获取合约安装地址,并将合约文件地址和合约安装地址的对应关系保存至区块链网络中的步骤之后还包括:根据合约安装地址和合约文件地址的对应关系,从可读存储介质中加载需要安装的智能合约代码文件;使用校验算法验证智能合约代码文件的正确性和完整性;如果通过校验,则将所述智能合约代码文件安装在所述合约安装地址。
上述执行的基于DSL的智能合约代码生成方法,通过领域特定语言(DSL)的思想,为资产模型构建一种领域特定语言,对语言进行解析和编译,最终生成目标区块链的智能合约代码文件,开发人员或者业务人员只需要在理解业务的前提下建立资产模型,通过建模语言声明资产的各项属性,就完成了合约的研发工作,有效降低普通开发人员开发智能合约产生错误的概率,提升合约代码质量。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

Claims (8)

1.一种基于DSL的智能合约代码生成方法,其特征在于,包括:
获取利用资产模型领域特定语言编写的语言文本,所述资产模型领域特定语言的语法用于描述资产模型的数据结构和操作接口;
根据预先构建的语法解析规则对所述语言文本进行解析,得到资产数据集;
将所述资产数据集载入目标区块链的智能合约模板,利用预先构建的代码生成器渲染出智能合约代码文件;
所述根据预先构建的解析规则对所述语言文本进行解析,得到资产数据集的步骤包括:
利用ANTLR工具生成解析器Lexer和Parser;
利用所述解析器Lexer和Parser对所述语言文本进行解析,得到抽象语法树;
对所述抽象语法树进行遍历,抽取结构化的元数据信息;
利用预先构建的编译器Visitor,将所述结构化的元数据信息编译为资产数据集;
所述利用所述解析器Lexer和Parser对所述语言文本进行解析,得到抽象语法树的步骤包括:
利用Lexer将所述语言文本的代码文件转化成词法记号流;
利用Parser将词法记号流转化为语法记号流,将词按照特定的顺序排布解析成对应语句结构,形成语法抽象树。
2.根据权利要求1所述的基于DSL的智能合约代码生成方法,其特征在于,所述将资产数据集载入目标区块链的智能合约模板,利用预先构建的代码生成器渲染出智能合约代码文件的步骤之前还包括:
对目标区块链智能合约框架去参数化,获取目标区块链的智能合约模板。
3.根据权利要求1所述的基于DSL的智能合约代码生成方法,其特征在于,所述将资产数据集载入目标区块链的智能合约模板,利用预先构建的代码生成器渲染出智能合约代码文件的步骤之后还包括:
发送合约确认反馈消息至合约参与方,合约确认反馈消息要求合约参与方于反馈期限内发送携带数字签名的合约确认信息;
当在反馈期限内接收到合约参与方反馈的携带数字签名的合约确认信息时,对合约确认信息进行解密验证;
若解密验证通过,将智能合约上链至对应的区块链中。
4.根据权利要求3所述的基于DSL的智能合约代码生成方法,其特征在于,所述若解密验证通过,将智能合约上链至对应的区块链中的步骤包括:
将所述智能合约代码文件保存在可读存储介质中并生成对应的合约文件地址;
获取合约安装地址,并将合约文件地址和合约安装地址的对应关系保存至区块链网络中。
5.根据权利要求4所述的基于DSL的智能合约代码生成方法,其特征在于,所述获取合约安装地址,并将合约文件地址和合约安装地址的对应关系保存至区块链网络中的步骤之后还包括:
根据合约安装地址和合约文件地址的对应关系,从可读存储介质中加载需要安装的智能合约代码文件;
使用校验算法验证智能合约代码文件的正确性和完整性;
如果通过校验,则将所述智能合约代码文件安装在所述合约安装地址。
6.一种基于DSL的智能合约代码生成装置,其特征在于,包括:
语言获取模块,用于获取利用资产模型领域特定语言编写的语言文本,所述资产模型领域特定语言的语法用于描述资产模型的数据结构和操作接口;
文本解析模块,用于根据预先构建的语法解析规则对所述语言文本进行解析,得到资产数据集;
代码生成模块,用于将所述资产数据集载入目标区块链的智能合约模板,利用预先构建的代码生成器渲染出智能合约代码文件;
解析工具生成模块,用于利用ANTLR工具生成解析器Lexer和Parser;
解析模块,利用所述解析器Lexer和Parser对所述语言文本进行解析,得到抽象语法树;
抽取模块,对所述抽象语法树进行遍历,抽取结构化的元数据信息;
编译模块,利用预先构建的编译器Visitor,将所述结构化的元数据信息编译为资产数据集;
第一解析模块,用于利用Lexer将所述语言文本的代码文件转化成词法记号流;
第二解析模块,用于利用Parser将词法记号流转化为语法记号流,将词按照特定的顺序排布解析成对应语句结构,形成语法抽象树。
7.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述方法的步骤。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
CN202010888504.7A 2020-08-28 2020-08-28 基于dsl的智能合约代码生成方法、装置、设备及存储介质 Active CN112015396B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010888504.7A CN112015396B (zh) 2020-08-28 2020-08-28 基于dsl的智能合约代码生成方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010888504.7A CN112015396B (zh) 2020-08-28 2020-08-28 基于dsl的智能合约代码生成方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN112015396A CN112015396A (zh) 2020-12-01
CN112015396B true CN112015396B (zh) 2024-02-13

Family

ID=73503042

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010888504.7A Active CN112015396B (zh) 2020-08-28 2020-08-28 基于dsl的智能合约代码生成方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN112015396B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113110874B (zh) * 2021-04-14 2024-05-17 北京沃东天骏信息技术有限公司 用于生成代码结构图的方法和装置
CN113408446B (zh) * 2021-06-24 2022-11-29 成都新希望金融信息有限公司 账单核算方法、装置、电子设备及存储介质
CN113408245B (zh) * 2021-06-28 2023-05-30 湖南大学 基于gep的区块链数据编解码方法、装置、设备及介质
CN114706571B (zh) * 2022-06-02 2022-09-02 杭州比智科技有限公司 一种基于dsl的声明式可视化图表开发方法及系统
CN115469875B (zh) * 2022-08-22 2023-08-15 西安衍舆航天科技有限公司 基于遥控作业的领域专用语言dsl的编译方法及装置
CN116185373B (zh) * 2023-04-26 2023-09-01 上海金仕达软件科技股份有限公司 基于静态代码分析的微服务基础设施生成方法
CN117421009B (zh) * 2023-12-19 2024-04-19 深圳市航盛电子股份有限公司 信号代码生成方法、装置、终端设备以及存储介质
CN118014334B (zh) * 2024-04-08 2024-06-07 微神马科技(大连)有限公司 一种业务记录方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108985073A (zh) * 2018-07-18 2018-12-11 成都链安科技有限公司 一种高度自动化的智能合约形式化验证系统及方法
CN110569033A (zh) * 2019-09-12 2019-12-13 北京工商大学 一种数字化交易类智能合约基础代码生成方法
CN112104709A (zh) * 2020-08-28 2020-12-18 腾讯科技(深圳)有限公司 智能合约的处理方法、装置、介质及电子设备
CN112100054A (zh) * 2020-08-12 2020-12-18 北京大学 一种面向数据管控的程序静态分析方法和系统
CN114418585A (zh) * 2022-01-20 2022-04-29 平安国际智慧城市科技股份有限公司 智能合约生成方法、装置及相关设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10896195B2 (en) * 2018-07-29 2021-01-19 International Business Machines Corporation Automatic generation of smart contracts

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108985073A (zh) * 2018-07-18 2018-12-11 成都链安科技有限公司 一种高度自动化的智能合约形式化验证系统及方法
CN110569033A (zh) * 2019-09-12 2019-12-13 北京工商大学 一种数字化交易类智能合约基础代码生成方法
CN112100054A (zh) * 2020-08-12 2020-12-18 北京大学 一种面向数据管控的程序静态分析方法和系统
CN112104709A (zh) * 2020-08-28 2020-12-18 腾讯科技(深圳)有限公司 智能合约的处理方法、装置、介质及电子设备
CN114418585A (zh) * 2022-01-20 2022-04-29 平安国际智慧城市科技股份有限公司 智能合约生成方法、装置及相关设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
DSLs for Ethereum Contracts;Michael Burge;http://www.michaelburge.us/2018/05/15/ethereum-chess-engine.html;全文 *
java库web3j的Gradle插件(Solidity开发以太坊智能合约);tualala;https://segmentfault.com/a/1190000017141110;全文 *

Also Published As

Publication number Publication date
CN112015396A (zh) 2020-12-01

Similar Documents

Publication Publication Date Title
CN112015396B (zh) 基于dsl的智能合约代码生成方法、装置、设备及存储介质
Chudnov et al. Continuous formal verification of Amazon s2n
KR20200011949A (ko) 미결정 소스로부터 미결정 데이터를 블록체인 트랜잭션의 잠금 스크립트에 안전하게 제공하는 기법
CN107111713A (zh) 软件系统的自动验证
CN110135986B (zh) 一种基于区块链智能合约实现的可搜索加密文件数据方法
CN110249307A (zh) 用于在区块链上执行原生合约的系统和方法
US20150095657A1 (en) Processing Extensible Markup Language Security Messages Using Delta Parsing Technology
CN115208665B (zh) 一种基于区块链的种质资源数据安全共享方法及系统
CN111179086A (zh) 一种基于WebAssembly的智能合约虚拟机
Klomp et al. On symbolic verification of Bitcoin’s script language
Annenkov et al. Extracting smart contracts tested and verified in Coq
US11188911B2 (en) Object oriented smart contracts for UTXO-based blockchains
CN114510262A (zh) 一种接口请求参数校验方法和装置
US11694197B2 (en) Object oriented smart contracts for UTXO-based blockchains
CN115904317A (zh) 一种前后端接口统一调用方法、装置、设备及存储介质
CN108052842A (zh) 签名数据的存储、验证方法及装置
Springborg et al. Towards a secure API client generator for IoT devices
CN115022312A (zh) 多智能合约引擎的实现方法、装置、电子设备及存储介质
Meng et al. Automatic Generation of Security Protocol Implementations Written in Java from Abstract Specifications Proved in the Computational Model.
Moebius et al. Modeling security-critical applications with UML in the SecureMDD approach
CN112445499A (zh) 衍生变量确定方法、装置、设备和存储介质
He et al. Analyzing security protocol Web implementations based on model extraction with applied PI calculus
Quaresma et al. Protocol implementation generator
CN117591087B (zh) 一种针对复杂数据处理需求的高效形式化代码构建方法
CN115391330A (zh) 区块链的智能合约的生成方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20210201

Address after: 518000 Room 201, building A, No. 1, Qian Wan Road, Qianhai Shenzhen Hong Kong cooperation zone, Shenzhen, Guangdong (Shenzhen Qianhai business secretary Co., Ltd.)

Applicant after: Shenzhen saiante Technology Service Co.,Ltd.

Address before: 1-34 / F, Qianhai free trade building, 3048 Xinghai Avenue, Mawan, Qianhai Shenzhen Hong Kong cooperation zone, Shenzhen, Guangdong 518000

Applicant before: Ping An International Smart City Technology Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant