首页 / 专利库 / 银行与财务事项 / 比特币地址 / 一种智能合约记账方法、计算机装置及可读存储介质

一种智能合约记账方法、计算机装置及可读存储介质

阅读:291发布:2020-05-27

专利汇可以提供一种智能合约记账方法、计算机装置及可读存储介质专利检索,专利查询,专利分析的服务。并且本 发明 适用于计算机技术领域,提供了一种 智能合约 记账方法、计算机装置及可读存储介质,该方法包括:用户记账 节点 构建智能合约调用交易,并签名后全网广播;记账节点接收合约调用交易后进行验证,验证通过后将合约调用交易存入合约队列中;同时合约管理 服务器 从合约队列中调取出与该交易对应的合约并执行,生成合约执行结果,并根据合约执行结果创建合约返回结果交易并签名后广播;记账节点接收到合约返回结果交易后进行交易签名验证,验证通过后将合约返回结果交易存入待打包队列中,更新区 块 的智能合约信息并广播区块,触发执行记账操作。本发明的记账操作安全性好,且让智能合约能更专注于其业务数据的服务,提高了业务服务效率。,下面是一种智能合约记账方法、计算机装置及可读存储介质专利的具体信息内容。

1.一种智能合约记账方法,其特征在于,应用于链中,所述区块链由多个相互连接的节点组成,所述方法包括:
用户记账节点构建智能合约调用交易,并签名后全网广播;
所述用户记账节点接收合约调用者发起的合约调用交易后,对所述合约调用交易进行验证,若验证通过,则将所述合约调用交易存入合约队列中;
同时,合约管理服务器从所述合约队列中调取出与所述合约调用交易对应的合约并执行合约的调用交易,生成合约执行结果,并根据所述合约执行结果创建合约返回结果交易并签名,并广播所述合约返回结果交易;
所述用户记账节点接收到所述合约返回结果交易后,对所述合约返回结果交易进行交易签名验证,若验证通过后,则将所述合约返回结果交易存入待打包队列中,同时,更新区块的智能合约信息并广播区块,触发执行记账操作。
2.如权利要求1所述的智能合约记账方法,其特征在于,所述用户记账节点构建智能合约调用交易,包括:
基于比特币的交易结构,创建UTXO账户记账交易结构模型,所述记账交易结构模型包括交易输入和输出单元;
所述交易输入单元中附带有使用账户余额的个人签名解脚本;
所述交易输出单元中附带有输出余额的锁定脚本,用于限定只有指定账户可消费与之对应的UTXO单元;
所述记账交易结构模型中存储有合约地址、合约调用函数名称和合约输入参数。
3.如权利要求1所述的智能合约记账方法,其特征在于,所述合约调用交易包括合约调用校验签名和未消费的交易输入输出记录;
所述对所述合约调用交易进行验证,包括:
通过交易脚本验证所述合约调用校验签名和未消费的交易输入输出记录是否有效。
4.如权利要求1所述的智能合约记账方法,其特征在于,所述根据所述合约执行结果创建合约返回结果交易并签名,并广播所述合约返回结果交易,包括:
将所述合约执行结果以及执行合约的调用交易时产生的转账交易输入和输出信息打包成合约返回结果交易,并签名后广播所述合约返回结果交易。
5.如权利要求1所述的智能合约记账方法,其特征在于,所述方法还包括:
所述区块链的其他节点接收到所述用户记账节点广播的区块时,进行交易签名验证;
验证通过后,执行所述合约调用交易,生成第一合约执行结果;
校验所述第一合约执行结果与所述区块中的合约返回结果交易中的结果是否一致;
若一致,则接受区块同步。
6.一种计算机装置,其特征在于,所述计算机装置包括:处理器,用于执行存储器中存储的计算机程序时实现如权利要求1~5任一项所述方法的步骤。
7.一种计算机可读存储介质,其上存储有计算机程序/指令,其特征在于,所述计算机程序/指令被所述处理器执行时实现如权利要求1~5中任意一项所述方法的步骤。

说明书全文

一种智能合约记账方法、计算机装置及可读存储介质

技术领域

[0001] 本发明属于计算机技术领域,尤其涉及一种智能合约记账方法、计算机装置及可读存储介质。

背景技术

[0002] 以太坊,是一个开源的有智能合约功能的公共链平台。2015年,以太坊将智能合约作为基础特性引入区块链节点。至今,智能合约已成为区块链的一个重要特性,其中智能合约记账方式采用了账户余额记账。
[0003] 由于以太坊项目的示范性效应,各个区块链项目的智能合约交易都采用了以太坊账户余额记账方式记账。然而,近期,采用账户记账模式的智能合约爆发了一系列的安全问题,导致多种token因合约编码漏洞造成价值清零,即突破账户余额进行转账。而且,在账户记账模式下,智能合约代码本身要维护账户余额,这造成了智能合约不能聚焦业务服务客户。另外,合约账户的余额必须通过合约调用才能转出,难以确保余额不被非法提现。
[0004] 由此可见,现有的智能合约记账方式存在容易被非法攻击而存在较大安全隐患,且由于业务服务不聚焦而导致效率低下的问题。

发明内容

[0005] 本发明实施例提供一种智能合约记账方法,旨在解决现有的智能合约记账方式存在容易被非法攻击而存在较大安全隐患,且由于业务服务不聚焦而导致效率低下的问题。
[0006] 本发明实施例是这样实现的,一种智能合约记账方法,应用于区块链中,所述区块链由多个相互连接的节点组成,所述方法包括:
[0007] 用户记账节点构建智能合约调用交易,并签名后全网广播;
[0008] 所述用户记账节点接收合约调用者发起的合约调用交易后,对所述合约调用交易进行验证,若验证通过,则将所述合约调用交易存入合约队列中;
[0009] 同时,合约管理服务器从所述合约队列中调取出与所述合约调用交易对应的合约并执行所述合约的调用交易,生成合约执行结果,并根据所述合约执行结果创建合约返回结果交易并签名,并广播所述合约返回结果交易;
[0010] 所述用户记账节点接收到所述合约返回结果交易后,对所述合约返回结果交易进行交易签名验证,若验证通过后,则将所述合约返回结果交易存入待打包队列中,同时,更新区块的智能合约信息并广播区块,触发执行记账操作。
[0011] 本发明实施例还提供一种计算机装置,该计算机装置包括:处理器,用于执行存储器中存储的计算机程序时实现上述方法的各步骤。
[0012] 本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序/指令,所述计算机程序/指令被所述处理器执行时实现上述方法的各步骤。
[0013] 本发明实施例提供的智能合约记账方法,用户记账节点通过构建智能合约调用交易,并通过定义智能合约调用交易的脚本以支持合约的调用交易签名和验证操作;记账节点接收合约调用者发起的合约调用交易后对该调用交易进行验证,以确保与该合约调用交易相关的信息的合法性和有效性;同时,合约管理服务器从合约队列中调取出与上述调用交易相对应的合约并执行合约的调用交易,而后根据生成的合约执行结果创建合约返回结果交易并签名,防止合约返回结果交易在后续的传输过程中被非法篡改,提高了合约返回结果交易的安全性;记账节点在接收到合约管理服务器返回的合约返回结果交易后进行签名验证,进一步确定合约返回结果交易的合法性,也保证了后续操作的安全性,并将验证通过的合约返回结果交易放入待打包队列,同时更新该区块的智能合约信息并广播区块,触发执行记账操作以记录整个合约调用交易的过程。在整个记账过程中,对合约调用交易的调用和结果返回过程进行多次签名签证,提高了交易数据传输的安全性,同时也降低了这些数据被篡改的险,而且该方法将记账操作从智能合约中剥离出来,统一由UTXO模型来进行维护,利用UTXO模型的余额原子性操作来提升整个合约交易过程的安全性,而且也能让智能合约更专注于业务数据的处理,提升了合约调用交易的效率。附图说明
[0014] 图1是本发明实施例一提供的智能合约记账方法的实现流程图
[0015] 图2是本发明实施例二提供的智能合约记账方法的实现流程图;
[0016] 图3是采用本发明方法进行记账操作的合约交易业务流程简图;
[0017] 图4是本发明实施例提供的智能合约记账装置的结构示意图。

具体实施方式

[0018] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0019] 在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0020] 应当理解,尽管在本发明实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一合约执行结果也可以被称为第二合约执行结果,不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。类似地,第二合约执行结果也可以被称为第一合约执行结果。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
[0021] 为了进一步阐述本发明为实现预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明的具体实施方式、结构、特征及其功效,详细说明如下。
[0022] 本发明实施例提供的智能合约记账方法,用户记账节点通过构建智能合约调用交易,并通过定义智能合约调用交易的脚本以支持合约的调用交易签名和验证操作;记账节点接收合约调用者发起的合约调用交易后对该调用交易进行验证,以确保与该交易请求相关的信息的合法性和有效性;同时,合约管理服务器从合约队列中调取出与上述调用交易相对应的合约并执行合约的调用交易,而后根据生成的合约执行结果创建合约返回结果交易并签名,防止合约返回结果交易在后续的传输过程中被非法篡改,提高了合约返回结果交易的安全性;记账节点在接收到合约管理服务器返回的合约返回结果交易后进行签名验证,进一步确定合约返回结果交易的合法性,也保证了后续操作的安全性,并将验证通过的合约返回结果交易放入待打包队列,同时更新该区块的智能合约信息并广播区块,触发执行记账操作以记录整个合约调用交易的过程。
[0023] 图1示出了本发明实施例一提供的智能合约记账方法的流程,详述如下:
[0024] 本发明实施例提供的智能合约记账方法应用于区块链中,该区块链由多个相互连接的节点组成。
[0025] 区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。区块链是比特币的底层技术,像一个数据库账本,记载所有的交易记录
[0026] 在步骤S101中,用户记账节点构建智能合约调用交易,并签名后全网广播。
[0027] 在本发明实施例中,用户记账节点采用类似于比特币的UTXO(未消费的交易输出)账户模型构建智能合约调用交易。其中,该交易模型中包含有UTXO输入和输出单元。UTXO输入单元中指定UTXO的来由,并且附带有使用该账户余额的个人签名脚本,以限制该账户余额的使用权限。UTXO输出单元中附带有用于定义校验个人签名的脚本,以定义对应的账户余额的交易输出的使用权限。
[0028] 脚本是形成交易的基础,具有重要作用。一个脚本本质上是众多指令的列表,这些指令记录在每个交易中,交易的接收者想花掉发送给他的比特币,这些指令就是描述接收者是如何获得这些比特币的。
[0029] 在步骤S102中,用户记账节点接收合约调用者发起的合约调用交易后,对合约调用交易进行验证,若验证通过,则将合约调用交易请求存入合约队列中。
[0030] 在本发明的一个实施例中,合约是指两方面或几方面在办理某事时,为了确定各自的权利和义务而订立的共同遵守的条文。例如,房东A与租户B在确定租赁关系时,双方协商订立租赁合同(合约),合约上写明双方的权利和义务(包括租赁的时间、租金、违约金等事项),如合约上清楚地写明租户B每月28号向房东A转账房租C。假设上述合约存储在区块链的所有节点上,当区块链上的某节点(如节点D)想要调用上述合约时,节点D构建智能合约调用交易,并签名后全网广播,区块链全网节点对该合约调用交易的有效性或合法性进行验证,比如,验证该合约调用交易的时间戳(通常是一个字符序列,唯一地标识某一刻的时间。)是否在合约规定的时间内等
[0031] 智能合约,是指合约的程序化实现,通过计算机程序来实现规范合约逻辑并完成合约执行和验证过程。
[0032] 合约队列,是指记账节点在每次接收到合约调用交易后,将验证通过的合约按照完成验证的时间节点依次排列形成的队列。
[0033] 在步骤S103中,合约管理服务器从所述合约队列中调取出与所述合约调用交易对应的合约并执行合约的调用交易,生成合约执行结果,并根据所述合约执行结果创建合约返回结果交易并签名,并广播所述合约返回结果交易。
[0034] 在本发明实施例中,合约管理服务器可以是设于区块链中的虚拟机,虚拟机是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统
[0035] 结合上述实施例的例子,虚拟机从上述合约队列中调取出这一合约调用交易相对应的合约,并执行该合约的调用交易,生成合约执行结果。并根据合约执行结果创建合约返回结果交易并进行签名,然后向全网广播该合约返回结果交易。
[0036] 在本发明的一个实施例中,合约返回结果交易是指将智能合约的执行结果信息,以及合约产生的交易UTXO的转账输入/输出单元打包成合约返回结果交易,并对交易签名后广播所述合约返回结果交易。
[0037] 在步骤S104中,用户记账节点接收到合约返回结果交易后,对合约返回结果交易进行交易签名验证,若验证通过后,则将合约返回结果交易存入待打包队列中,同时,更新区块的智能合约信息并广播区块,触发执行记账操作。
[0038] 在本发明实施例中,当记账节点接收到合约管理服务器广播的合约返回结果交易时,对这合约返回结果交易的交易签名进行验证,例如验证这个交易签是否是真实有效的。若验证的结果是该交易签名真实有效,则将该合约返回结果交易存入待打包队列中。同时,根据该合约返回结果交易更新区块的智能合约state信息,触发执行记账操作,记录整个合约调用交易的过程。
[0039] 在本发明的一个实施例中,为了防止智能合约state信息出现更新混乱,每个合约应有且仅有一个线程支持其运行程序。
[0040] 在本发明的一个实施例中,当记账节点接收到合约返回结果交易(tx2)时,先对该合约返回结果交易(tx2)进行交易签名验证,验证通过后,如果不进行合约执行结果验证,则可将合约返回结果交易(tx2)加入本节点的待打包队列中。当进行合约执行结果验证(验证方式为执行合约调用,验证本节点的合约返回结果(tx2’)是否与接收到的合约返回结果(tx2)一致),如果验证通过,则将交易(tx2)放入本节点待打包队列。如果不一致,则将返回结果交易(tx2)丢弃。
[0041] 本发明实施例提供的智能合约记账方法,用户记账节点通过构建智能合约调用交易,并通过定义智能合约调用交易的脚本以支持合约的调用交易签名和验证操作;记账节点接收合约调用者发起的合约调用交易后对该调用交易进行验证,以确保与该合约调用交易相关的信息的合法性和有效性;同时,合约管理服务器从合约队列中调取出与上述调用交易相对应的合约并执行合约的调用交易,而后根据生成的合约执行结果创建合约返回结果交易并签名,防止合约返回结果交易在后续的传输过程中被非法篡改,提高了合约返回结果交易的安全性;记账节点在接收到合约管理服务器返回的合约返回结果交易后进行签名验证,进一步确定合约返回结果交易的合法性,也保证了后续操作的安全性,并将验证通过的合约返回结果交易放入待打包队列,同时更新该区块的智能合约信息并广播区块,触发执行记账操作以记录整个合约调用交易的过程。在整个记账过程中,对合约调用交易的调用和结果返回过程进行多次签名签证,提高了交易数据传输的安全性,同时也降低了这些数据被篡改的风险,而且该方法将记账操作从智能合约中剥离出来,统一由UTXO模型来进行维护,利用UTXO模型的余额原子性操作来提升整个合约交易过程的安全性,而且也能让智能合约更专注于业务数据的处理,提升了合约调用交易的效率。
[0042] 在本发明实施例中,上述步骤S101具体为:
[0043] 基于比特币的交易结构,创建UTXO账户记账交易结构模型,所述记账交易结构模型包括交易输入和输出单元;
[0044] 所述交易输入单元中附带有使用账户余额的个人签名解脚本;
[0045] 所述交易输出单元中附带有输出余额的锁定脚本,用于限定只有指定账户可消费与之对应的UTXO单元;
[0046] 所述记账交易结构模型中存储有合约地址、合约调用函数名称和合约输入参数。
[0047] 在本发明实施例中,每个合约调用交易输出单元中可指定用于支付合约手续费。而记账交易结构模型中存储的合约地址和合约输入参数是提供给合约调用者执行合约调用交易时使用的。
[0048] 在本发明实施例中,UTXO,是指代表Unspent Transaction Output。Transaction被简称为TX。UTXO是中本聪最早在比特币中采用的一个具体的技术方案。
[0049] 个人签名解锁脚本,是指UTXO账户记账交易结构模型中用于证明个人账户余额是否可被消费的输出程序脚本代码,其中包含该账户的私钥签名串以及定义脚本调用方式。
[0050] 合约地址,是指智能合约的标识ID,用于索引获取要执行的智能合约执行代码内容。
[0051] 合约输入参数,是指智能合约调用所需要的的输入参数,及程序调用入参,需要调用者提供。
[0052] 在本发明实施例中,上述合约调用交易包括合约调用交易校验签名和未消费的交易输入输出记录。
[0053] 上述步骤S102中的‘对合约调用交易进行验证’,包括:验证合约调用交易校验签名和未消费的交易输入输出记录是否有效。
[0054] 在本发明实施例中,合约调用校验签名,是指在UTXO账户记账交易结构模型下,如果记账交易要消费某个UTXO账户的余额,在构建合约交易结构模型的输入单元时,需附带该交易结构的私钥签名,以证明其为该UTXO账户的私钥拥有者。用户记账节点在接收到合约调用发起者发起的合约调用交易后,会对该UTXO账户交易结构模型的输出脚本和当前交易的消费输入脚本进行脚本签名验证,如果验证通过,则确认合约调用者具备该合约交易结构模型的输出单元的私钥,即未消费的交易输入输出记录是有效的,合约调用者可以消费该账户的余额。
[0055] 在现实的生活中,我们手上的现金其实就是未消费的交易输出,每次我们产生一笔交易,我们会拿出一部分“现金”(就是一些未消费的交易输出),紧接着我们会有部分找零,因此在比特币中每一笔交易都会有输入输出。紧接着所有没有消耗的“现金“,都会完全同步的保存在各个节点中,用户钱包在查询余额时,其实就是根据用户私钥对应地址与相关联的未使用交易的列表,并且在钱包中计算这些未使用的UTXO总和,这也就是比特币钱包的最最基本的原理。
[0056] 在本发明实施例中,上述步骤S103中的‘根据合约执行结果创建合约返回结果交易,并广播合约返回结果交易’,包括如下步骤:
[0057] 将所述合约执行结果以及执行合约的调用交易时产生的转账交易输入和输出信息打包成合约返回结果交易,并签名后广播所述合约返回结果交易。
[0058] 图2示出了本发明实施例二提供的智能合约记账方法的流程,详述如下:
[0059] 本发明实施例与实施例一基本相同,其不同之处在于,本发明实施例还包括步骤S201、步骤S202、步骤S203和步骤S204。
[0060] 在步骤S201中,区块链的其他节点接收到用户记账节点广播的区块时,进行交易签名验证。
[0061] 在本发明实施例中,区块链的其他节点接收到用户记账节点广播的区块时,对区块中的合约返回结果交易进行交易签名验证(如验证该交易签名的有效性和合法性)。
[0062] 在步骤S202中,验证通过后,执行合约调用交易,生成第一合约执行结果。
[0063] 在本发明实施例中,若验证的结果是该区块中的合约返回结果交易的交易签名有效和合法,则执行该合约返回结果交易中的合约调用交易,生成第一合约执行结果。
[0064] 在步骤S203中,校验所述第一合约执行结果与区块中的合约返回结果交易中的结果是否一致。
[0065] 在本发明实施例中,其他节点验证本节点的第一合约返回结果是否与区块中合约返回结果交易中的结果一致。
[0066] 在步骤S204中,若一致,则接受区块同步。
[0067] 在本发明实施例中,如果一致,则验证通过,接受区块同步,并继续验证其他合约或者交易。如果不一致,则该合约返回结果交易非法,此区块为非法区块,不接受该区块。
[0068] 图3示出了采用本发明方法进行记账操作的合约交易业务流程,为了便于说明,仅示出了与本发明相关的部分,详述如下:
[0069] 在本发明实施例中,合约调用者创建合约调用交易请求(tx1),其中合约调用交易中包含有UTXO的交易输入和输出单元用于支付手续费和转账;合约相关数据有所需调用的合约地址(智能合约的地址是合约的ID,在交易中提供合约地址用于指定交易需要执行的智能合约,合约执行者可根据合约地址来获取智能合约的执行程序,它由非对称密钥对的公钥哈希,合约内容hash及校验串等内容组合而成)、合约方法名称、合约方法输入参数等,并对合约调用交易请求(tx1)进行交易签名完成合约调用交易的创建。创建后将合约调用交易请求(tx1)进行全网广播。
[0070] 记账节点(挖矿节点)接收到合约调用交易(tx1)后,进行验证(校验合约调用交易的合约调用校验签名和未消费的交易输入输出记录是否有效和合法)。将验证通过的合约调用交易(tx1)进行区块打包并存入合约队列中,验证不通过的,则抛弃该合约调用交易(tx1)。同时,虚拟机从合约队列中调取出与该合约调用交易请求(tx1)对应的合约并执行,生成合约执行结果,并根据该合约执行结果创建合约执行结果交易(tx2)并签名后进行广播。记账节点接收到合约返回结果交易(tx2)后,对合约返回结果交易(tx2)进行交易签名验证,若验证通过后,则将合约返回结果交易(tx2)存入待打包队列中,同时,更新区块的智能合约信息并广播区块,触发执行记账操作。
[0071] 图4示出了本发明实施例提供的智能合约记账装置的结构,为了便于说明,仅示出了与本发发明实施例相关的部分,详述如下:
[0072] 本发明实施例提供的智能合约记账装置,应用于区块链中,区块链由多个相互连接的节点组成,包括:用户记账节点401和合约管理服务器402。
[0073] 用户记账节点401,用户记账节点构建智能合约调用交易,并签名后全网广播;接收合约调用者发起的合约调用交易后,对所述合约调用交易进行验证,若验证通过,则将所述合约调用交易存入合约队列中。
[0074] 在本发明的一个实施例中,用户记账节点401采用类似于比特币的UTXO(未消费的交易输出)账户模型构建智能合约调用交易。其中,该交易模型中包含有UTXO输入和输出单元。UTXO输入单元中指定UTXO的来由,并且附带有使用该账户余额的个人签名脚本,以限制该账户余额的使用权限。UTXO输出单元中附带有用于定义校验个人签名的脚本,以定义对应的账户余额的交易输出的使用权限。
[0075] 脚本是形成交易的基础,具有重要作用。一个脚本本质上是众多指令的列表,这些指令记录在每个交易中,交易的接收者想花掉发送给他的比特币,这些指令就是描述接收者是如何获得这些比特币的。
[0076] 在本发明的一个实施例中,合约是指两方面或几方面在办理某事时,为了确定各自的权利和义务而订立的共同遵守的条文。例如,房东A与租户B在确定租赁关系时,双方协商订立租赁合同(合约),合约上写明双方的权利和义务(包括租赁的时间、租金、违约金等事项),如合约上清楚地写明租户B每月28号向房东A转账房租C。假设上述合约存储在区块链的所有节点上,当区块链上的某节点(如节点D)想要调用的上述合约时,节点D构建智能合约调用交易,并签名后全网广播,区块链全网节点对该合约调用交易的有效性或合法性进行验证,比如,验证该合约调用交易的时间戳(通常是一个字符序列,唯一地标识某一刻的时间。)是否在合约规定的时间内等。
[0077] 智能合约,是指合约的程序化实现,通过计算机程序来实现规范合约逻辑并完成合约执行和验证过程。
[0078] 合约队列,是指记账节点在每次接收到合约调用交易后,将验证通过的合约按照完成验证的时间节点依次排列形成的队列。
[0079] 合约管理服务器402,用于从所述合约队列中调取出与所述交易请求对应的合约并执行所述合约的调用交易,生成合约执行结果,并根据所述合约执行结果创建合约返回结果交易并签名,并广播所述合约返回结果交易。
[0080] 在本发明实施例中,合约管理服务器402可以是设于区块链中的虚拟机,虚拟机是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
[0081] 结合上述实施例的例子,虚拟机从上述合约队列中调取出与这一合约调用交易请求相对应的合约,并执行该合约的调用交易,生成合约执行结果。并根据合约执行结果创建合约返回结果交易并进行签名,然后向全网广播该合约返回结果交易。
[0082] 在本发明的一个实施例中,合约返回结果交易是指将智能合约的执行结果信息、合约产生的交易UTXO的转账输入/输出单元打包成合约返回交易,并对交易签名后广播所述合约返回结果交易。
[0083] 用户记账节点401,还用于接收到所述合约返回结果交易后,对所述合约返回结果交易进行交易签名验证,若验证通过后,则将所述合约返回结果交易存入待打包队列中,同时,更新区块的智能合约信息并广播区块,触发执行记账操作。
[0084] 在本发明实施例中,当记账节点401接收到合约管理服务器402广播的合约返回结果交易时,对这合约返回结果交易的交易签名进行验证,例如验证这个交易签是否是真实有效的。若验证的结果是该交易签名真实有效,则将该合约返回结果交易存入待打包队列中。同时,根据该合约返回结果交易更新区块的智能合约state信息,触发执行记账操作,记录整个合约调用交易的过程。
[0085] 在本发明的一个实施例中,为了防止智能合约state信息出现更新混乱,每个合约应有且仅有一个线程支持其运行程序。
[0086] 在本发明的一个实施例中,当记账节点401接收到合约返回结果交易(tx2)时,先对该合约返回结果交易(tx2)进行交易签名验证,验证通过后,如果不进行合约执行结果验证,则可将合约返回结果交易(tx2)加入本节点的待打包队列中。当进行合约执行结果验证(验证方式为执行合约调用,验证本节点的合约返回结果(tx2’)是否与接收到的合约返回结果(tx2)一致),如果验证通过,则将交易(tx2)放入本节点待打包队列。如果不一致,则将返回结果交易(tx2)丢弃。
[0087] 本发明实施例提供的智能合约记账装置,用户记账节点通过构建智能合约调用交易,并通过定义智能合约调用交易的脚本以支持合约的调用交易签名和验证操作;用户记账节点接收合约调用者发起的合约调用者发起的合约调用交易后对合约调用交易进行验证,以确保与该交易请求相关的信息的合法性和有效性;同时,合约管理服务器从合约队列中调取出与上述交易请求相对应的合约并执行合约的调用交易,而后根据生成的合约执行结果创建合约返回结果交易并签名,防止合约返回结果交易在后续的传输过程中被非法篡改,提高了合约返回结果交易的安全性;记账节点在接收到合约管理服务器返回的合约返回结果交易后进行签名验证,进一步确定合约返回结果交易的合法性,也保证了后续操作的安全性,并将验证通过的合约返回结果交易放入待打包队列,同时更新该区块的智能合约信息并广播区块,触发执行记账操作以记录整个合约调用交易的过程。在整个记账过程中,对合约调用交易的调用和结果返回过程进行多次签名签证,提高了交易数据传输的安全性,同时也降低了这些数据被篡改的风险,而且该方法将记账操作从智能合约中剥离出来,统一由UTXO模型来进行维护,利用UTXO模型的余额原子性操作来提升整个合约交易过程的安全性,而且也能让智能合约更专注于业务数据的处理,提升了合约调用交易的效率。
[0088] 在本发明实施例中,用户记账节点401,具体用于:基于比特币的交易结构,创建UTXO账户记账交易结构模型,所述记账交易结构模型包括交易输入和输出单元;
[0089] 所述交易输入单元中附带有使用账户余额的个人签名解锁脚本;
[0090] 所述交易输出单元中附带有输出余额的锁定脚本,用于限定只有指定账户可消费与之对应的UTXO单元;
[0091] 所述记账交易结构模型中存储有合约地址、合约调用函数名称和合约输入参数。
[0092] 在本发明实施例中,每个合约调用交易输出单元中可指定用于支付合约手续费。而记账交易结构模型中存储的合约地址和合约输入参数是提供给合约调用者执行合约调用交易时使用的。
[0093] 在本发明实施例中,UTXO,是指代表Unspent Transaction Output。Transaction被简称为TX。UTXO是中本聪最早在比特币中采用的一个具体的技术方案。
[0094] 签名脚本,是指UTXO账户记账交易结构模型中用于证明账户余额是否可被消费的输出程序脚本代码,其中包含该账户的私钥签名串以及定义脚本调用方式。
[0095] 合约地址,是指智能合约的标识ID,用于索引获取要执行的智能合约执行代码内容。
[0096] 合约输入参数,是指智能合约调用所需要的的输入参数,及程序调用入参,需要调用者提供。
[0097] 在本发明实施例中,上述合约调用交易请求包括合约调用校验签名和未消费的交易输入输出记录。
[0098] 在本发明实施例中,合约管理服务器402还用于:验证合约调用校验签名和未消费的交易输入输出记录是否有效。
[0099] 在本发明实施例中,合约调用校验签名,是指在UTXO账户记账交易结构模型下,如果记账交易要消费某个UTXO账户的余额,在构建合约交易结构模型的输入单元时,需附带该交易结构的私钥签名,以证明其为该UTXO账户的私钥拥有者。用户记账节点在接收到合约调用发起者发起的合约调用交易后,会对该UTXO账户交易结构模型的输出脚本和当前交易的消费输入脚本进行脚本签名验证,如果验证通过,则确认合约调用者具备该合约交易结构模型的输出单元的私钥,即未消费的交易输入输出记录是有效的,合约调用者可以消费该账户的余额。
[0100] 在现实的生活中,我们手上的现金其实就是未消费的交易输出,每次我们产生一笔交易,我们会拿出一部分“现金”(就是一些未消费的交易输出),紧接着我们会有部分找零,因此在比特币中每一笔交易都会有输入输出。紧接着所有没有消耗的“现金“,都会完全同步的保存在各个节点中,用户钱包在查询余额时,其实就是根据用户私钥对应地址与相关联的未使用交易的列表,并且在钱包中计算这些未使用的UTXO总和,这也就是比特币钱包的最最基本的原理。
[0101] 在本发明实施例中,记账节点401还用于:将所述合约执行结果以及执行合约的调用交易时产生的转账交易输入和输出信息打包成合约返回结果交易,并签名后广播所述合约返回结果交易。
[0102] 本发明实施例提供一种计算机装置,该计算机装置包括处理器,处理器用于执行存储器中存储的计算机程序时实现上述各个方法实施例提供的智能合约记账方法的各步骤。
[0103] 本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序/指令,所述计算机程序/指令被所述处理器执行时实现上述各个方法实施例提供的智能合约记账方法的各步骤。
[0104] 示例性的,计算机程序可以被分割成一个或多个模块,一个或者多个模块被存储在存储器中,并由处理器执行,以完成本发明。一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在计算机装置中的执行过程。例如,所述计算机程序可以被分割成上述各个方法实施例提供的智能合约记账方法的各步骤。
[0105] 本领域技术人员可以理解,上述计算机装置的描述仅仅是示例,并不构成对计算机装置的限定,可以包括比上述描述更多或更少的部件,或者组合某些部件,或者不同的部件,例如可以包括输入输出设备、网络接入设备、总线等。
[0106] 所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个用户终端的各个部分。
[0107] 所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0108] 所述计算机装置集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。
[0109] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈