【技术实现步骤摘要】
智能合约调用账本的方法、装置、电子设备和存储介质
[0001]本申请涉及区块链
,尤其涉及一种智能合约调用账本的方法、装置、电子设备和存储介质。
技术介绍
[0002]在智能合约执行的过程中,经常需要对区块链账本进行操作。区块链账本属于区块链平台的一部分,其包含了区块链的状态集。通常来说,区块链平台会封装一些账本操作方法以供智能合约调用,这些账本操作方法最终以账本操作指令的形式成为区块链平台机器码中的一部分。
[0003]目前,对于已经编译成机器码的智能合约,当其需要与区块链账本进行交互时,如果区块链平台使用C++等语言编写,则可以使用CALL机器指令来完成账本操作方法的调用。CALL机器指令是机器码指令集中的一类指令,如x86
‑
64指令集架构下的CALL指令,其含义是将当前程序信息保存在堆栈上并跳转到使用目标操作数指定的调用程序上执行。
[0004]然而,如果区块链平台使用包含内存管理机制的语言(例如Golang)编写,由于存在内存管理机制的限制,会导致无法使用CALL机器指令来完 ...
【技术保护点】
【技术特征摘要】
1.一种智能合约调用账本的方法,其特征在于,包括:调用并执行已完成编译的智能合约机器码;当执行到所述智能合约机器码中的账本调用指令时,保存所述智能合约机器码中处于所述账本调用指令之后的第一条指令的地址,并返回执行区块链平台机器码;调用并执行所述区块链平台机器码中预设的账本操作指令;当执行完所述账本操作指令之后,根据所述地址跳转至执行所述智能合约机器码中处于所述账本调用指令之后的第一条指令。2.如权利要求1所述的方法,其特征在于,所述当执行到所述智能合约机器码中的账本调用指令时,还包括:设置调用状态量为指定数值;所述调用并执行所述区块链平台机器码中预设的账本操作指令,包括:若检测到所述调用状态量为所述指定数值,则确定所述智能合约机器码的调用返回状态为账本调用;若所述智能合约机器码的调用返回状态为账本调用,则调用并执行所述区块链平台机器码中预设的账本操作指令。3.如权利要求1所述的方法,其特征在于,所述调用并执行已完成编译的智能合约机器码,包括:当执行到所述区块链平台机器码中的智能合约调用指令时,调用并执行所述智能合约机器码。4.如权利要求3所述的方法,其特征在于,在根据所述地址跳转至执行所述智能合约机器码中处于所述账本调用指令之后的第一条指令之后,还包括:当执行完所述智能合约机器码的最后一条指令之后,返回执行所述区块链平台机器码中处于所述智能合约调用指令之后的第一条指令。5.如权利要求1所述的方法,其特征在于,在调用并执行已完成编译的智能合约机器码之前,还包括:获取智能合约的字节码;检测所述字节码中存在的用于操作账本的目标指令;将所述目标指令替换为指定指令,得到更新后的字节码;其中,所述指定指令的处理逻辑包括保存所述指定指令之后的第一条指令的地址、设置调用状态量和子程序返回;对所述更新后的字节码进行编译,得到所述智能合约机器码;其中,所述智能合约...
【专利技术属性】
技术研发人员:张珂杰,黄方蕾,何奇,邱炜伟,胡麦芳,
申请(专利权)人:杭州趣链科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。