【技术实现步骤摘要】
合约调用方法、装置、电子设备和存储介质
[0001]本申请涉及计算机
,具体涉及合约调用方法、装置、电子设备和存储介质。
技术介绍
[0002]区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,信息不可伪造和篡改,区块链上的交易确认由区块链上的所有节点共同完成,由共识算法保证其一致性,区块链上维护一个公共的账本,公共账本位于存储区块上任何节点可见,从而保证其不可伪造和篡改。
[0003]智能合约是编程在区块链上的汇编语言,智能合约是一个在计算机系统上,当一定条件被满足后,可以被自动执行的合约。由传统编程语言编写的智能合约缺少操作持久化字段的指令,增强后的该种智能合约能够通过指令对区块链账本的持久化字段进行读写等操作,然而,目前很多由传统编程语言编写的智能合约中都存在对跨合约调用逻辑,目前无法针对该种智能合约进行指令增强和调用。
技术实现思路
[0004]本申请实施例提供合约调用方法、装置、电子设备和存储介质,可以对包含跨合约调用逻辑的智能合约进行指令增强和调用。
[0005]本申请实施例提供一种合约调用方法,应用于第一设备,该方法包括:获取第一增强合约的第一地址,所述第一地址为第一增强合约在区块链上部署后得到的地址;根据所述第一地址对第二合约进行指令增强得到第二增强合约,所述第二合约包括所述第一地址;将所述第二增强合约发送至第二设备,以便所述第二设备将所述第二增强合约部署在区块链上,得到所述第二增强合约的第二地址;根据所述第二地址向所述第二设备发送调用请求,以便所 ...
【技术保护点】
【技术特征摘要】
1.一种合约调用方法,其特征在于,应用于第一设备,所述方法包括:获取第一增强合约的第一地址,所述第一地址为第一增强合约在区块链上部署后得到的地址;根据所述第一地址对第二合约进行指令增强得到第二增强合约,所述第二合约包括所述第一地址;将所述第二增强合约发送至第二设备,以便所述第二设备将所述第二增强合约部署在区块链上,得到所述第二增强合约的第二地址;根据所述第二地址向所述第二设备发送调用请求,以便所述第二设备根据所述第二地址调用所述第二增强合约。2.根据权利要求1所述的方法,其特征在于,所述第一增强合约为对第一合约进行指令增强得到,所述根据所述第一地址对第二合约进行指令增强得到第二增强合约,包括:解压所述第二合约至预设文件,所述预设文件包括字节码文件和元数据,所述字节码文件包括基于所述第一地址获取到的第一合约中的字节码文件;基于所述元数据和字节码文件,确定所述第二合约是否满足预设条件;若所述第二合约满足所述预设条件,基于所述字节码文件解析合约类的持久化字段信息,所述合约类为字节码文件中继承了合约抽象类的类,所述持久化字段信息包括所述合约类中的持久化字段;基于所述持久化字段信息,将所述合约类中的预设字节码指令替换为预设增强指令得到目标字节码,所述预设字节码指令和预设增强指令具有一一对应的关系;以所述目标字节码替换所述预设文件中的对应字节码文件,并打包所述预设文件,得到所述第二增强合约。3.根据权利要求2所述的方法,其特征在于,所述预设条件包括第一条件和第二条件,所述基于所述元数据和字节码文件,确定所述第二合约是否满足预设条件,包括:对所述元数据进行解析,确定合约开发框架包是否满足第一条件;若合约开发框架包满足所述第一条件,将所述合约开发框架包和开发工具包中的类存储至基础类池;解析所述字节码文件中的类并存储至合约类池,并确定所述合约类池中的合约类是否满足第二条件;若所述字节码文件中的类满足第二预设条件,且所述合约开发框架包满足所述第一条件,确定所述第二合约满足所述预设条件。4.根据权利要求3所述的方法,其特征在于,所述基于所述持久化字段信息,将所述合约类中的预设字节码指令替换为预设增强指令得到目标字节码,包括:遍历所述合约类中的方法的字节码指令;当所述字节码指令为所述预设字节码指令时,确定操作字段的声明类是否存在于所述基础类池或合约类池中,所述操作字段为所述字节码指令所操作的字段;若所述操作字段的声明类存在于所述基础类池或合约类池中,确定所述操作字段是否存在于所述持久化字段信息中;若所述操作字段存在于所述持久化字段信息中,将所述字节码指令替换为预设增强指令。
5.一种合约调用方法,其特征在于,应用于第二设备,所述第二设备为区块链中的节点设备,所述方法包括:接收第一设备发送的调用请求,所述调用请求包括第二地址;根据所述第二地址获取第二增强合约的字节码文件,所述第二增强合约包括第一地址;根...
【专利技术属性】
技术研发人员:张延楠,张珂杰,卢益铭,黄方蕾,尚璇,
申请(专利权)人:杭州趣链科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。