CN109447601A - 在区块链网络中执行见证人转移交易的方法 - Google Patents
在区块链网络中执行见证人转移交易的方法 Download PDFInfo
- Publication number
- CN109447601A CN109447601A CN201811183619.5A CN201811183619A CN109447601A CN 109447601 A CN109447601 A CN 109447601A CN 201811183619 A CN201811183619 A CN 201811183619A CN 109447601 A CN109447601 A CN 109447601A
- Authority
- CN
- China
- Prior art keywords
- witness
- eye
- transaction
- node
- transfer transactions
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Abstract
本公开涉及一种在区块链网络中执行见证人转移交易的方法,该方法由交易节点执行,该方法包括:接收来自用户的执行见证人转移交易的请求,其中所述见证人转移交易的交易内容包括将未花费的交易输出UTXO从第一见证人节点转移到第二见证人节点的信息,并且所述见证人转移交易已被所述用户签名;验证所述请求的签名是否来自所述用户以及所述交易内容是否正确;响应于确定所述请求的签名来自所述用户并且所述交易内容正确,执行以下操作:锁定所述UTXO,对所述见证人转移交易签名,以及将所述见证人转移交易转发给所述第一见证人节点。
Description
技术领域
本公开涉及区块链领域,尤其是涉及在区块链网络中执行见证人转移交易的领域。
背景技术
“区块链”包括但不限于关于分布式存储、点对点网络、共识机制、加密算法等的技术。“联盟链”通常是指由多个组织或机构通过联盟的形式组建的区块链,联盟参与者之间通过契约或其他形式建立了信任和共识机制,构造区块和链接功能仅限于联盟参与者,访问权限可以对外采取限制性开放。
联盟链可以具有区块链的部分特性,例如UTXO(Unspent Transaction Output,未花费的交易输出)模型以及智能合约,它面向例如银行间或银行与其商业用户之间的互操作场景。联盟链通常由运行着特定服务和应用的节点构成,例如交易节点(也称为业务节点)以及/或者见证人节点,不同节点间的数据沟通是点对点的并且不使用全局广播。
在包括见证人节点的联盟链系统中,使用见证人节点来实现见证机制,一个交易都会有一个指定的见证人节点,而且见证人节点也只会去见证指定它为见证人的交易。此外,交易的类型至少包括一般类型的交易和见证人转移类型的交易。一般类型的交易在一个见证人节点的见证下执行。但是在某些情况下,比如交易数据从某一个见证人节点迁移到另一个见证人节点,则需要实现见证人转移类型的交易。具体来说,将交易数据从一个见证人节点迁移到另一个见证人节点上,从而改变该交易的见证人节点的交易,下文简称为见证人转移交易。在这样的联盟链系统中,为了完整无误地执行交易,尤其是防止在交易中出现双花问题,需要针对见证人转移交易来设计有效的方案。
发明内容
本公开提供了允许实现上述目的的在区块链网络中执行见证人转移交易的新方案。
根据本公开的一个方面,提供了一种在区块链网络中执行见证人转移交易的方法,该方法由交易节点执行,该方法包括:接收来自用户的执行见证人转移交易的请求,其中见证人转移交易的交易内容包括将未花费的交易输出UTXO从第一见证人节点转移到第二见证人节点的信息,并且所述见证人转移交易已被所述用户签名;验证所述请求的签名是否来自用户以及所述交易内容是否正确;响应于确定所述请求的签名来自用户并且交易内容正确,执行以下操作:锁定UTXO,对见证人转移交易签名,以及将见证人转移交易转发给所述第一见证人节点。
根据本公开的又一个方面,提供了一种在区块链网络中执行见证人转移交易的方法,该方法由见证人节点执行,该方法包括:接收来自交易节点的执行见证人转移交易的请求,其中见证人转移交易的交易内容包括将未花费的交易输出UTXO从第一见证人节点转移到第二见证人节点的信息,并且见证人转移交易已被交易节点签名,其中所述见证人节点为所述第一见证人节点;验证所述请求的签名是否来自所述交易节点以及交易内容是否正确;响应于确定所述请求的签名来自交易节点并且交易内容正确,执行以下操作:锁定UTXO,对见证人转移交易签名,以及将见证人转移交易转发给所述第二见证人节点。
根据本公开的另一个方面,提供了一种在区块链网络中执行见证人转移交易的方法,该方法由见证人节点执行,该方法包括:接收来自第一见证人节点的执行见证人转移交易的请求,其中见证人转移交易的交易内容包括将未花费的交易输出UTXO从第一见证人节点转移到第二见证人节点的信息,并且见证人转移交易已被所述第一见证人节点签名,其中所述见证人节点为所述第二见证人节点,并且UTXO已经被第一见证人锁定;验证所述请求的签名是否来自所述第一见证人节点以及所述交易内容是否正确;响应于确定所述请求的签名来自所述第一见证人节点并且交易内容正确,执行以下操作:执行交易并且将见证人转移交易落账,以及将见证人转移交易签名后把见证人转移交易执行成功的消息返回给所述第一见证人节点。
根据本公开的再一个方面,提供了一种在区块链网络中执行见证人转移交易的设备,所述区块链网络包括多个见证人节点和多个交易节点,所述设备包括存储有计算机可执行指令的存储器和处理器,当计算机可执行指令被处理器执行时,使得设备执行如前所述的方法。
根据本公开的又一个方面,提供了一种存储有计算机可执行指令的计算机可读介质,当计算机可执行指令被处理器执行时,使得处理器执行如前所述的方法。
附图说明
并入说明书中并且构成说明书的一部分的附图示出了本公开的实施例,并且与描述一起用于说明本公开的原理。
图1是其中实施根据本公开的实施例的见证人转移交易的区块链网络的示意图;
图2是根据本公开的实施例的交易节点的结构配置的示意图;
图3是根据本公开的实施例的交易节点的示意性操作流程的流程图;
图4是根据本公开的实施例的见证人节点的结构配置的示意图;
图5是根据本公开的实施例的见证人节点的示意性操作流程的流程图;
图6是根据本公开的实施例的见证人节点的另一结构配置的示意图;
图7是根据本公开的实施例的见证人节点的另一示意性操作流程的流程图;
图8是根据本公开的实施例的执行见证人转移交易的示意图;
图9是根据本公开的实施例的在执行见证人转移交易中确定交易失败的条件的示意图;
图10是可以实现根据本公开的实施例的计算机设备的示例性配置图。
具体实施方式
下面将参考附图来详细描述本公开的优选的实施例。不是本公开必需的细节和功能被省略,以便不会混淆本公开的理解。
请注意,类似的参考数字和字母指的是图中的类似的项目,因而一旦在一幅图中定义了一个项目,就不需要在之后的图中讨论了。
图1示出了根据本公开的实施例的区块链网络,更具体地为一种双层联盟链系统。虽然下文参照图1的双层联盟链系统进行描述,但是应当理解这样的描述仅是示例,本公开的实施例不限于应用到这样的双层联盟链系统,而是能够类似地应用到其它类型的使用见证机制的区块链网络中。
如图1所示,该双层联盟链系统例如可以划分为由底层交易节点构成的业务层以及由顶层见证人节点构成的见证共识层。业务层例如负责根据用户提供的业务数据生成完整交易数据、发起交易、确认交易并对用户进行反馈等。此处用户一般使用客户端连接到交易节点上,并且例如使用客户端上的“钱包”来发起交易,其中“钱包”可以是用于存放用户的数字资产的软件。业务层中的各个交易节点可以存储与该节点相关联的交易的完整交易数据。见证共识层例如负责对交易进行见证、将包含交易数据的散列值打包进区块、对区块进行共识并将达成共识的区块广播到双层联盟链上的所有节点(包括见证人节点和交易节点)等。下文将对此进行进一步的详细说明。
下面将结合图1描述根据本公开的实施例的经由双层联盟链系统进行的交易。
例如,对于一般类型的交易,交易节点A可以根据用户提交的业务数据生成完整的交易数据。随后,交易节点A可以对该交易数据签名,并将经签名的交易数据发送到交易节点B。在接收到从交易节点A发送的交易数据后,交易节点B也对该交易数据进行签名,并将经双方交易节点签名的交易数据发送到由业务路由指定的见证人节点1。
应当理解,在交易过程中,从用户、交易节点或者见证节点发送的交易数据可以被相应地签名,从而在后面的接收方执行数据完整性的验证。为了实现签名,各个发送方具有自己的证书和私钥文件,证书可以由系统的证书中心颁发并存放公钥,私钥文件存放与公钥对应的私钥。本领域技术人员能够理解关于签名和验证的具体细节,因此这里不再赘述。
此外,业务路由可以用来确定要将交易数据转发到的下一个业务路径节点。在一个实施例中,业务路由是由双层联盟链系统预先规定并且随时进行更新的。例如,业务路由可以是存储了用户钱包的地址与交易节点标识符的对应关系的路由表,并且,业务路由还可以包括规定每个用户钱包的每个账户应当由哪个见证人节点见证的路由表。
例如,在交易节点A充当交易发起者的情况下,可以根据用户钱包提交的业务数据(包括接收方用户的钱包地址)以及业务路由表来确定与交易的接收用户相关联的接收方交易节点B,以便将经交易发起方交易节点A签名的交易数据发送至该接收方交易节点B。在交易节点B充当接收方交易节点的情况下,可以根据业务路由表确定要见证该笔交易的见证人节点1,以便向该见证人节点1转发交易数据。
见证人节点1在接收到经由交易节点A、交易节点B签名的交易数据后,利用见证算法对交易进行见证。
见证过程例如至少包括以下几个操作:
-确定交易发起方的余额是否足够进行所述交易。例如,见证人节点1可以根据交易数据中包含的交易的发起方用户的标识符(例如,发起者用户的钱包地址),来验证与该标识符对应的账户的可使用的金额是否足够支付此次交易。
-验证交易的发起方交易节点的签名以及接收方交易节点的签名。例如可以通过验证交易双方交易节点的签名来确定该交易是否是经双方交易节点授权的。例如,见证人节点处可以存储交易双方交易节点的公钥,并利用该公钥对经该交易节点私钥签名的交易数据进行解密,以验证交易是否被该交易节点授权。
-验证交易的接收方地址。例如,可以验证交易的接收方用户的钱包地址,以确保该接收方地址真实有效。
见证过程并不限于上述操作,还可以根据实际需要进行其他见证处理,诸如验证交易的除金额之外的附加数据之类。
随后,见证人节点1将包含其签名的经见证的交易数据直接推送到交易节点A以及交易节点B双方,以便交易节点A、交易节点B能够快速确认交易并落账。
接下来,见证人节点1例如可以计算交易数据的散列值、对交易数据的散列值进行签名并将经见证人节点1签名的交易数据的散列值广播到所有见证人节点和所有交易节点,例如,在图1的示例中,交易数据的散列值可以被广播到见证人节点2-6和交易节点A和B。
随后,在见证共识层中,可以基于共识算法将该交易数据的散列值打包进区块并链接到区块链上,从而使得该区块被广播到整个双层联盟链(即,包括所有交易节点以及所有见证人节点)。将包含交易数据的散列值的区块链接到区块链,使得能够借助区块链本身的特性(例如,链式结构、区块相连、前后锁定等),来保证交易难以被否认或篡改等。
以上是关于在该区块链网络中执行一般类型的交易的说明。如前所述,在这样的区块链网络中还需要针对见证人转移交易来设计有效的方案来保障完整无误地进行交易,尤其是防止双花问题。
已知在R3CEV推出的基于分布式账本技术(DLT:Distributed LedgerTechnology)的Corda系统中,见证人转移交易如下执行:
-将交易数据的UTXO生成STXO(Spent Transaction Output,已花费的交易输出),并且将这个STXO广播到整个系统;
-系统中的其他见证人节点收到该STXO后,查询本地数据库中是否存在该STXO。如果查询到该STXO存在,则说明该对象已经成为STXO了,不能再执行交易数据在见证人节点之间的迁移,并且返回查询到该STXO,否则返回没有查询到该STXO;
-使用共识来确定是否每个见证人节点都返回没有查询到该STXO。如果共识结果为是,则系统中的见证人节点都会接受这个STXO,并且交易数据转移进入另一个见证人节点并且生成新的UTXO,以供后续使用。
然而,在Corda这样的系统中,必须使用类似PBFT的“强”共识机制,不能允许“分叉”情况的出现,这是因为Corda系统中没有“区块链”这样的全局数据结构。如果允许分叉,则很难设计有效的机制进行恢复,或者说恢复机制一定会导致系统引入非常复杂的处理流程。
因为Corda系统并非区块链系统,而是一种近似的分布式账本系统,所以其中的见证人转移交易的方法并不能完全移植到区块链网络中来。特别地,在这种强共识机制中,从其它每个见证人节点都接收到没有查询到该STXO的反馈之后,才确定共识成功。如果在区块链网络中某个见证人节点因为程序故障或者通信故障而宕机,则无法接收到其对该STXO的反馈,导致在区块链网络中对于该STXO长时间无法达成共识,从而严重影响系统性能。
下面将描述根据本公开的在区块链网络中执行见证人转移交易的实施例。
图2示出了根据本公开的实施例的交易节点200的示意性结构配置。交易节点200可以对应于图1中的节点A或B。如图2所示,交易节点200可以包括接收单元202、验证单元204、以及执行单元206。虽然图2例示了上述3个单元,但这仅仅是交易节点的示意性结构配置,交易节点200还可以包括其他可能的单元,或者可以包括上述三个单元中任意单元的组合单元。
接收单元202例如被配置为接收来自用户的执行见证人转移交易的请求,其中所述见证人转移交易的交易内容包括将未花费的交易输出(UTXO)从见证人节点1(第一见证人节点)转移到见证人节点2(第二见证人节点)的信息,并且所述见证人转移交易已被所述用户签名。
在一个实施例中,如果用户在某种情况下需要将业务的交易数据从见证人节点1迁移到见证人节点2下执行,那么用户会先发起一个请求交易数据迁移的见证人转移交易,此类交易的交易类型为见证人转移交易,并且在交易内容中放入想要将哪个UTXO从哪个见证人节点转移到哪个见证人节点的信息。此外,用户会对其进行签名。
验证单元204例如被配置为验证所述请求的签名是否来自用户以及验证交易内容是否正确,也就是验证将未花费的交易输出(UTXO)从见证人节点1转移到见证人节点2的信息是否正确。此外,验证单元204还可以验证UTXO是否存在。
验证单元204把验证正确或验证失败的结果通知给执行单元206。
执行单元206例如被配置为响应于确定所述请求的签名来自用户并且交易内容正确,执行以下操作:
-锁定UTXO,
-对所述见证人转移交易签名,以及
-将所述见证人转移交易转发给见证人节点1。
在一个实施例中,执行单元206锁定UTXO的操作包括将UTXO加入锁定表,从而将UTXO标志为已锁定。锁定表是已锁定的UTXO的列表。在另一个例子中,在锁定表中针对每个UTXO设置一个单独的标识位。例如,如果标识位被置为1,则表示对应的UTXO处于锁定状态;如果标识位被置为0,则表示对应的UTXO处于未锁定或解锁状态。类似地,也可以规定标志位的其它值来表示锁定或未锁定状态。
因为UTXO被锁定,所以该UTXO在锁定的状态下不能重复地用于其它交易,包括一般类型的交易和其它见证人转移交易,从而有效地防止了双花问题。
在另一个实施例中,在交易节点200例如通过接收单元202从见证人节点1接收到见证人转移交易执行成功的消息之后,执行单元206将所述见证人转移交易落账,并解锁UTXO。落账可以理解为例如在使用UTXO模型的情况下通过将交易的输出保存到本地来执行交易,例如,改变UTXO表、执行智能合约或者更改系统状态参数等,可选地,落账还包括把该见证人转移交易的信息记录到交易节点200的数据库中。
优选地,执行单元206针对UTXO的所述锁定设置超时时间,并且响应于到达所述超时时间,自动解锁UTXO并向用户返回处理失败的消息。
优选地,在交易节点200从见证人节点1接收到处理失败的消息之后,执行单元206解锁UTXO并且把处理失败的消息返回给用户。或者在用户向交易节点200查询交易执行结果的情况下执行单元206提供处理失败的消息。特别地,解锁所述UTXO包括将UTXO从锁定表中删除。
因为该实施例提供了在UTXO的锁定到达超时时间的情况下,可以自动解锁UTXO,从而防止在见证转移过程中出现特殊情况如节点宕机等,导致UTXO被锁死和系统性能下降。
在又一个实施例中,响应于确定所述请求的签名来自该用户并且交易内容正确,执行单元206将见证人转移交易放入交易节点200的交易缓存池。交易缓存池是在交易节点200中预先设置的用于存储尚未确定执行完成的交易例如见证人转移交易的存储空间。
优选地,在从见证人节点1接收到见证人转移交易执行成功的消息之后,执行单元206从交易缓存池中删除该见证人转移交易。
在另一个实施例中,响应于确定所述请求的签名并非来自该用户或者交易内容不正确或者锁定UTXO失败,执行单元206把处理失败的消息返回给用户;或者在用户向交易节点200查询交易执行结果的情况下执行单元206提供处理失败的消息。锁定UTXO失败可能是因为UTXO已经被锁定或该UTXO不存在等。
有利地,见证人转移交易本身带有一个超时时间,以防止太久不进行处理,执行单元206处理该见证人转移交易时会进行判定:如果当前时间已经超过了该交易的超时时间,则把处理失败的消息返回给用户;或者在用户向交易节点200查询交易执行结果的情况下执行单元206提供处理失败的消息。
优选地,UTXO锁定的超时时间会大于该交易自身的超时时间,以留有充足的时间来进行交易成功后的后续处理,使得当UTXO到达自身的超时时间而自动解锁时,早已超过该交易的超时时间,该交易的执行也早已有了结果。
在另一个实施例中,响应于接收到来自见证人节点2的针对见证人转移交易的广播的交易摘要,其中所述交易摘要包括对应的交易id,或者响应于接收到包括一个或更多个交易id的区块,执行单元206检查交易缓存池中是否存在与交易id相对应的见证人转移交易,其实施细节将在后文参照图8结合见证人节点2的操作相对应地继续描述。
下面,将结合图3描述根据本公开的实施例的交易节点的示意性操作流程300。交易节点例如为图2中的交易节点200。
该操作流程在S302处开始。
在步骤S304处,交易节点200接收来自用户的执行见证人转移交易的请求,其中所述见证人转移交易的交易内容包括将未花费的交易输出(UTXO)从见证人节点1转移到见证人节点2的信息,并且所述见证人转移交易已被所述用户签名。该步骤S304可以例如由图2中的接收单元202执行。在接收到来自用户的执行见证人转移交易的请求之后,流程进行到步骤S306。
在步骤S306处,交易节点200验证所述请求的签名是否来自所述用户以及所述交易内容是否正确。该步骤S306可以例如由图2中的验证单元204执行。如上文参考验证单元204所描述的,在验证之后可以把验证正确或验证失败的结果通知给执行单元206并且流程进行到步骤S308。
接下来,在步骤S308处,交易节点200响应于确定所述请求的签名来自用户并且交易内容正确,执行以下操作:
-锁定UTXO,
-对所述见证人转移交易签名,以及
-将所述见证人转移交易转发给见证人节点1。
该步骤S308可以例如由图2中的执行单元206执行。最后,该示意性操作流程300在S310处结束。
交易节点的操作流程300仅仅是示意性的,该操作流程300还可以根据具体情况包括其他的步骤。例如,步骤S308中还可以包括各个子步骤,分别用于实施如上文参考执行单元206所描述的锁定UTXO、解锁UTXO、交易缓存池、返回处理失败消息、或者与交易摘要有关的实施例等等。也就是说,执行某个处理的步骤可以与用于实施同一处理的对应的单元(由硬件和/或软件实施)对应。此外,这些步骤也可以根据实施按照其它顺序执行。通过所描述的步骤以及与这些步骤对应的单元的所有组合限定的技术方案都被包括在本公开中,只要它们构成的这些技术方案是完整并且可应用的。
图4示出了根据本公开的实施例的见证人节点400的示意性结构配置。见证人节点400可以对应于图1中的见证人节点1。如图4所示,见证人节点400可以包括接收单元402、验证单元404和执行单元406。虽然图4例示了上述三个单元,但这仅仅是见证人节点的示意性结构配置,见证人节点400还可以包括其他可能的单元,或者可以包括上述三个单元中任意单元的组合单元。
接收单元402例如被配置为接收执行见证人转移交易的请求,其中该请求来自交易节点200。在一个实施例中,该见证人转移交易可以具有用于识别该笔交易的交易id。见证人转移交易的交易内容可以包括例如将UTXO从见证人节点400转移到见证人节点2的信息。见证人转移交易可以已被交易节点200签名。接收单元402还可以被配置为接收其他信息,例如,接收来自见证人节点2的信息,该信息可以是例如见证人转移交易执行成功、处理失败等。
验证单元404例如被配置为对接收到的执行见证人转移交易的请求进行验证。在一个实施例中,验证单元404可以验证请求的签名是否来自交易节点200以及交易内容是否正确。在一个实施例中,见证人节点400可以在本地维护包括公钥的证书以及见证人节点400自身的私钥文件,验证单元404可以利用公钥来验证请求的签名是否来自交易节点200。在一个实施例中,验证单元404通过验证见证人转移交易的交易内容中将哪个UTXO从哪个见证人节点转移到哪个见证人节点的信息等是否正确来验证交易内容是否正确。此外,验证单元404还可以验证UTXO是否存在。通过对交易进行验证,可以防止出现错误交易。
验证单元404可以把验证正确或验证失败的结果通知给执行单元406。
执行单元406例如被配置为响应于验证单元404确定请求的签名来自交易节点200并且交易内容正确而执行以下操作:锁定UTXO,对见证人转移交易签名,以及将见证人转移交易转发给见证人节点2。对UTXO进行锁定,可以防止UTXO被重复使用,从而有效地防止了双花问题。
在一个实施例中,执行单元406针对该UTXO的锁定设置超时时间。锁定的超时时间可以是预定义的或者可以由用户或见证人节点400配置。在一个实施例中,响应于到达锁定的超时时间,自动解锁UTXO,并向交易节点200返回处理失败的消息。在一个实施例中,执行单元406可以将UTXO加入锁定表从而将UTXO标志为已锁定,并且可以通过将UTXO从锁定表中删除来解锁该UTXO。执行单元406还可以采用其他合适的方法来锁定和/或解锁UTXO。例如,执行单元406可以对要锁定的UTXO加锁定标识位(例如,1),并且针对未被锁定的UTXO设置与锁定标志位不同的标识位(例如,0),在这种情况下,可以通过修改标识位(例如,将1修改为0)来解锁UTXO。在一个实施例中,在UTXO被锁定时,无法对该UTXO进行其他交易,包括普通交易及其他见证人转移交易。在UTXO被解锁之后,该UTXO可以被再次使用。通过对UTXO进行锁定以及超时解锁的机制,可以实现自动超时解锁,防止由于交易过程中出现问题而导致一直无法使用该UTXO。在一个实施例中,见证人转移交易本身可以包含交易超时时间,如果见证人节点400在处理该交易时判定当前时间已经超过了交易超时时间,则可以返回交易处理超时。通过设置交易超时时间,可以防止交易节点或见证人节点太久不对交易进行处理。在一个实施例中,UTXO锁定的超时时间可以大于该交易超时时间,以留有充足的时间来进行交易成功后的后续处理步骤(将在下文更详细地描述)。例如,交易超时时间可以是24小时,UTXO锁定的超时时间可以是25小时。
在一个实施例中,执行单元406通过使用见证人节点400的私钥来对见证人转移交易签名。在一个实施例中,执行单元406根据见证人转移交易中包含的交易路由信息将见证人转移交易转发给见证人节点2。
在一个实施例中,见证人节点400可以维护交易缓存池、交易摘要池和处理失败的交易池,其中交易缓存池可以用于存储经过见证人节点400的尚未确定执行完成的交易,交易摘要池可以用于存储已经执行成功的交易的摘要,处理失败的交易池可以用于存储处理失败的交易。在一个实施例中,响应于验证单元404确定请求的签名来自交易节点200并且交易内容正确,执行单元406可以将见证人转移交易放入见证人节点400的交易缓存池。在一个实施例中,可以根据交易id对交易缓存池、交易摘要池或处理失败的交易池进行检索以确定是否存在与该交易id对应的交易。
在一个实施例中,响应于接收单元402从见证人节点2接收到见证人转移交易执行成功的消息,执行单元406可以将见证人转移交易落账,解锁UTXO,并向交易节点200返回执行成功的消息。在一个实施例中,响应于接收单元402从见证人节点2接收到见证人转移交易执行成功的消息,执行单元406还可以从见证人节点400的交易缓存池中删除该见证人转移交易。
在一个实施例中,响应于确定以下条件中的一个或多个,执行单元406可以向交易节点200返回处理失败的消息:请求的签名不是来自交易节点200、交易内容不正确、锁定UTXO失败、从见证人节点2接收到处理失败的消息、或者超过见证人转移交易的交易超时时间等。在一个实施例中,响应于从见证人节点2接收到处理失败的消息,执行单元406解锁UTXO,将该交易从交易缓存池中删除并放入处理失败的交易池中。在一个实施例中,锁定UTXO失败可能是因为UTXO已经被锁定或该UTXO不存在等。
在另一个实施例中,响应于接收到来自见证人节点2的针对见证人转移交易的广播的交易摘要,其中所述交易摘要包括对应的交易id,或者响应于接收到包括一个或更多个交易id的区块,执行单元406检查交易缓存池中是否存在与交易id相对应的见证人转移交易,其实施细节将在后文参照图8结合见证人节点2的操作相对应地继续描述。
下面,将结合图5说明根据本公开的实施例在作为见证人转移交易的源节点的见证人节点处进行的示意性操作流程500。
下面将以见证人节点400为例说明操作流程500。该操作流程在S502处开始。
在步骤S504处,见证人节点400接收来自交易节点200的执行见证人转移交易的请求。如上所述,见证人转移交易的交易内容可以包括将UTXO从见证人节点400(例如见证人节点1)转移到另一见证人节点(例如见证人节点2)的信息,并且见证人转移交易已被该交易节点200签名。该步骤S504可以例如由图4中的接收单元402执行。在接收到来自交易节点200的执行见证人转移交易的请求之后,流程进行到步骤S506。
在步骤S506处,见证人节点400可以验证请求的签名是否来自该交易节点200以及交易内容是否正确。该步骤S506可以例如由图4中的验证单元404执行。如上文参考验证单元404所描述的,在验证之后可以把验证正确或验证失败的结果通知给执行单元406,并且流程进行到步骤S508。
在步骤S508处,响应于确定请求的签名来自该交易节点200并且交易内容正确,见证人节点400可以锁定该UTXO,对见证人转移交易签名,以及将见证人转移交易转发给该另一见证人节点(例如,见证人节点2)。
该步骤S508可以例如由图4中的执行单元406执行。最后,该示意性操作流程500在S510处结束。
见证人节点的操作流程500仅仅是示意性的,该操作流程500还可以根据具体情况包括其他的步骤。例如,步骤S508中还可以包括各个子步骤,分别用于实施如上文参考执行单元406所描述的锁定UTXO、解锁UTXO、交易缓存池、返回处理失败消息、或者与交易摘要有关的实施例等等。也就是说,执行某个处理的步骤可以与用于实施同一处理的对应的单元(由硬件和/或软件实施)对应。此外,这些步骤也可以根据实施按照其它顺序执行。通过所描述的步骤以及与这些步骤对应的单元的所有组合限定的技术方案都被包括在本公开中,只要它们构成的这些技术方案是完整并且可应用的。
以上说明了见证人节点的示意性结构配置和示意性操作流程,该见证人节点例如是见证人转移交易的源节点。下面,将参考图6及图7对见证人节点的另一结构配置和另一操作流程进行说明,该见证人节点例如是见证人转移交易的目的节点。
首先将参考图6说明根据本公开的实施例的见证人节点600的示意性结构配置。见证人节点600可以对应于图1中的见证人节点1-6中的不同于见证人节点1的任一个节点。如图6所示,见证人节点600可以包括接收单元602、验证单元604和执行单元606。虽然图6例示了上述三个单元,但这仅仅是见证人节点的示意性结构配置,见证人节点600还可以包括其他可能的单元,或者可以包括上述三个单元中任意单元的组合单元。
接收单元602例如被配置为接收来自见证人节点1的执行见证人转移交易的请求,其中该见证人节点1例如是参照图4所述的见证人节点400。见证人转移交易的交易内容可以包括例如将UTXO从见证人节点400转移到见证人节点600的信息。该见证人转移交易可以已被见证人节点400签名,并且该UTXO可以已经被见证人节点400锁定。
验证单元604例如被配置为对接收到的执行见证人转移交易的请求进行验证。在一个实施例中,验证单元604可以验证请求的签名是否来自见证人节点400以及交易内容是否正确。在一个实施例中,见证人节点600可以在本地维护包括公钥的证书以及见证人节点600自身的私钥文件,验证单元604可以利用公钥来验证请求的签名是否来自见证人节点400。在一个实施例中,验证单元604通过验证见证人转移交易的交易内容中将哪个UTXO从哪个见证人节点转移到哪个见证人节点的信息等是否正确(例如,见证人转移交易的目的节点是否为自己)来验证交易内容是否正确。
验证单元604可以把验证正确或验证失败的结果通知给执行单元606。
执行单元606例如被配置为响应于验证单元604确定请求的签名来自见证人节点400并且交易内容正确而执行以下操作:执行该见证人转移交易并且将其落账,以及将见证人转移交易签名后把交易执行成功的消息返回给见证人节点400。在一个实施例中,执行单元606在使用UTXO模型的情况下通过将交易的输出保存到本地来执行交易,例如,改变UTXO表、执行智能合约或者更改系统状态参数等。在一个实施例中,执行单元606将该笔交易的信息记录到见证人节点600本地的数据库中。在一个实施例中,执行单元606通过使用见证人节点600的私钥来对见证人转移交易签名。在一个实施例中,执行单元606根据见证人转移交易中包含的交易路由信息将交易执行成功的消息返回给见证人节点400。
在一个实施例中,见证人节点600可以维护交易缓存池、交易摘要池和处理失败的交易池,其中交易缓存池可以用于存储经过见证人节点600的尚未确定执行完成的交易,交易摘要池可以用于存储见证人节点600执行成功的交易的摘要,处理失败的交易池可以用于存储处理失败的交易。在一个实施例中,响应于验证单元604确定请求的签名来自见证人节点400并且交易内容正确,执行单元606可以将见证人转移交易生成交易摘要,并且在区块链网络中广播该交易摘要,其中该交易摘要包括见证人转移交易的交易id。
在一个实施例中,响应于确定以下条件中的一个或多个,执行单元606可以向见证人节点400返回处理失败的消息:请求的签名不是来自见证人节点400、交易内容不正确、落账失败、或者超过见证人转移交易的交易超时时间等。
下面,将结合图7说明根据本公开的实施例在作为见证人转移交易的目的节点的见证人节点处进行的示意性操作流程700。
下面将以见证人节点600为例说明操作流程700。该操作流程在S702处开始。
在步骤S704处,见证人节点600接收来自另一见证人节点(例如,见证人节点400)的执行见证人转移交易的请求。如上所述,见证人转移交易的交易内容可以包括将UTXO从见证人节点400转移到见证人节点600的信息。见证人转移交易可以已被见证人节点400签名并且该UTXO已被见证人节点400锁定。该步骤S704可以例如由图6中的接收单元602执行。在接收到来自用户的执行见证人转移交易的请求之后,流程进行到步骤S706。
在步骤S706处,见证人节点600可以验证请求的签名是否来自见证人节点400以及交易内容是否正确。该步骤S706可以例如由图6中的验证单元604执行。如上文参考验证单元604所描述的,在验证之后可以把验证正确或验证失败的结果通知给执行单元606,并且流程进行到步骤S708。
在步骤S708处,响应于确定请求的签名来自见证人节点400并且交易内容正确,见证人节点600可以执行该见证人转移交易并且将该笔交易落账,以及将见证人转移交易签名后把交易执行成功的消息返回给见证人节点400。如上文关于执行单元606所描述的,见证人节点600可以通过将该笔交易的信息记录到见证人节点600本地的数据库中来对交易进行落账。
该步骤S708可以例如由图6中的执行单元606执行。最后,该示意性操作流程700在S710处结束。
见证人节点的操作流程700仅仅是示意性的,该操作流程700还可以根据具体情况包括其他的步骤。例如,步骤S708中还可以包括各个子步骤,分别用于实施如上文参考执行单元606所描述的返回处理失败消息、或者与交易摘要有关的实施例等等。也就是说,执行某个处理的步骤可以与用于实施同一处理的对应的单元(由硬件和/或软件实施)对应。此外,这些步骤也可以根据实施按照其它顺序执行。通过所描述的步骤以及与这些步骤对应的单元的所有组合限定的技术方案都被包括在本公开中,只要它们构成的这些技术方案是完整并且可应用的。
下面,将参考图8说明根据本公开的实施例的执行见证人转移交易的示意图。
如图8所示,在步骤S801处,由用户发起见证人转移交易并将其发送给交易节点A,其中该见证人转移交易的交易内容包括将UTXO从见证人节点1(例如,见证人节点400)转移到见证人节点2(例如,见证人节点600)的信息。例如,用户可以使用客户端连接到交易节点A,并且对该见证人转移交易进行签名。
在接收到从用户发送的见证人转移交易的请求后,在步骤S802处,交易节点A对该交易进行验证,包括验证请求的签名是否来自该用户以及交易内容是否正确。响应于确定请求的签名来自该用户并且交易内容正确,交易节点A锁定UTXO,对见证人转移交易进行签名,并且在步骤S803处将该交易转发给见证人节点1。在一个实施例中,响应于确定请求的签名来自该用户并且交易内容正确,交易节点A还为该笔交易生成交易id。在一个实施例中,交易节点A还可以将见证人转移交易保存到自己的交易缓存池中。
在接收到从交易节点A发送的见证人转移交易的请求后,在步骤S804处,见证人节点1对该交易进行验证,包括验证请求的签名是否来自交易节点A以及交易内容是否正确。响应于确定请求的签名来自交易节点A并且交易内容正确,见证人节点1锁定UTXO,对见证人转移交易进行签名,并且在步骤S805处将该交易转发给见证人节点2。在一个实施例中,见证人节点1还可以将见证人转移交易保存到自己的交易缓存池中。
在接收到从见证人节点1发送的见证人转移交易的请求后,在步骤S806处,见证人节点2对该交易进行验证,包括验证请求的签名是否来自见证人节点1以及交易内容是否正确。响应于确定请求的签名来自见证人节点1并且交易内容正确,见证人节点2执行见证人转移交易,将该交易落账,并对见证人转移交易进行签名。在步骤S807处,见证人节点2把执行成功的消息返回给见证人节点1。
在步骤S808处,见证人节点1在接收到见证人节点2返回的执行成功的消息后,验证该消息的签名是否来自见证人节点2。响应于确定消息的签名来自见证人节点2,见证人节点1将该交易落账并且解锁该交易的UTXO。在一个实施例中,见证人节点1还可以从自己的交易缓存池中删除之前保存的见证人转移交易。接下来,在步骤S809处,见证人节点1将执行成功的消息返回给交易节点A。
在步骤S810处,交易节点A在接收到见证人节点2返回的执行成功的消息后,将该交易落账并且解锁该交易的UTXO。在一个实施例中,交易节点A还可以从自己的交易缓存池中删除之前保存的见证人转移交易。可选地,在步骤S811处,交易节点A通知用户交易成功。或者,如虚线所示,交易节点A还可以响应于用户的查询而提供交易成功的消息,其中用户可以向交易节点A发送该查询。
随后,在步骤S812中,见证人节点2可以广播该见证人转移交易的摘要。应当注意步骤S812可以与步骤S807同时由见证人节点2执行,也可以在步骤S807之后的预定时间执行。
在步骤S813处,见证人节点1在接收到见证人节点2广播的交易摘要后,可以检查它的交易缓存池中是否存在与该交易摘要中的交易id相对应的见证人转移交易。交易缓存池中存在该见证人转移交易可能是因为在步骤S807处由见证人节点2返回的交易成功消息由于例如网络问题等没有被见证人节点1接收到。响应于确定交易缓存池中存在该见证人转移交易,见证人节点1可以根据交易id从交易缓存池中获取见证人转移交易,向见证人节点2获取见证人转移交易的结果。如果获取到该交易执行成功,则将见证人转移交易落账,解锁UTXO,从交易缓存池中删除见证人转移交易,并且向交易节点A返回执行成功的消息。在一个实施例中,广播的交易摘要可以被保存到见证人节点1的交易摘要池中。
在步骤S814处,交易节点A在接收到见证人节点2广播的交易摘要后,可以检查它的交易缓存池中是否存在与该交易摘要中的交易id相对应的见证人转移交易。交易缓存池中存在该见证人转移交易可能是因为在步骤S809处由见证人节点1返回的交易成功消息由于例如网络问题等没有被交易节点A接收到。响应于确定交易缓存池中存在该见证人转移交易,交易节点A可以根据交易id从交易缓存池中获取见证人转移交易,向见证人节点2获取见证人转移交易的结果。如果获取到该交易执行成功,则将见证人转移交易落账,解锁UTXO,从交易缓存池中删除见证人转移交易。在一个实施例中,广播的交易摘要可以被保存到交易节点A的交易摘要池中。
在步骤S815处,见证人节点1响应于接收到包括一个或更多个交易id的区块,在达成共识并将区块落块时,检查见证人节点1的交易缓存池中是否存在与区块中的各个交易id相对应的见证人转移交易。交易缓存池中存在该见证人转移交易可能是因为在步骤S807处由见证人节点2返回的交易成功消息由于例如网络问题等没有被见证人节点1接收到,并且见证人节点2在步骤S812广播的交易摘要消息也没有被见证人节点1接收到,所以没有将该交易从交易缓存池中删除。响应于确定交易缓存池中存在见证人转移交易,见证人节点1可以根据交易id从交易缓存池中获取见证人转移交易,向见证人节点2获取见证人转移交易的结果。如果获取到该交易执行成功,则将见证人转移交易落账,解锁UTXO,从交易缓存池中删除见证人转移交易。
在步骤S816处,交易节点A响应于接收到包括一个或更多个交易id的区块,在达成共识并将区块落块时,检查交易节点A的交易缓存池中是否存在与区块中的各个交易id相对应的见证人转移交易。交易缓存池中存在该见证人转移交易可能是因为在步骤S809处由见证人节点1返回的交易成功消息由于例如网络问题等没有被交易节点A接收到,并且见证人节点2在步骤S812广播的交易摘要消息也没有被交易节点A接收到,所以没有将该交易从交易缓存池中删除。响应于确定交易缓存池中存在见证人转移交易,交易节点A可以根据交易id从交易缓存池中获取见证人转移交易,向见证人节点2获取见证人转移交易的结果。如果获取到该交易执行成功,则将见证人转移交易落账,解锁UTXO,从交易缓存池中删除见证人转移交易。
操作流程800仅仅是示意性的,该操作流程800还可以根据具体情况包括其他的步骤。例如,在实际情况中,交易可能会由于各种原因而失败。下面,将参考图9并结合图8来说明根据本公开的实施例的在执行见证人转移交易中确定交易失败的条件的示意图。
如图9所示,交易节点A响应于确定以下各项中的至少一个,向用户返回处理失败的消息或者在用户向交易节点A查询交易执行结果的情况下提供处理失败的消息:请求的签名不是来自该用户,交易内容不正确,锁定UTXO失败,因到达用于锁定UTXO的超时时间而自动解锁UTXO,见证人转移交易超时,或者从见证人节点1接收到处理失败的消息。交易节点A确定请求的签名不是来自该用户、交易内容不正确、锁定UTXO失败或见证人转移交易超时可以在步骤S802处执行,并且随后作为步骤S803的替代,交易节点A向用户返回处理失败的消息,或者在用户向交易节点A查询交易执行结果的情况下提供处理失败的消息,在这种情况下,S803至S816将不再继续执行。交易节点A可以在S804处见证人节点1的处理结束后,从见证人节点1接收到处理失败的消息,在这种情况下,S805至S816将不再继续执行。交易节点A还可以在S806处见证人节点2的处理结束后,从见证人节点1接收到处理失败的消息,在这种情况下,S807至S816将不再继续执行。
见证人节点1响应于确定以下各项中的至少一个,向交易节点A返回处理失败的消息:请求的签名不是来自交易节点A,交易内容不正确,锁定UTXO失败,因到达用于锁定UTXO的超时时间而自动解锁UTXO,见证人转移交易超时,或者从见证人节点2接收到处理失败的消息。交易节点A确定请求的签名不是来自交易节点A、交易内容不正确、锁定UTXO失败或见证人转移交易超时可以在步骤S804处执行,并且随后作为步骤S805的替代,见证人节点1向交易节点A返回处理失败的消息,在这种情况下,S805至S816将不再继续执行。见证人节点1可以在S806处见证人节点2的处理结束后,从见证人节点2接收到处理失败的消息,在这种情况下,S807至S816将不再继续执行。
见证人节点2响应于确定以下各项中的至少一个,向见证人节点1返回处理失败的消息:请求的签名不是来自见证人节点1,交易内容不正确,落账失败,见证人转移交易超时。见证人节点2确定请求的签名不是来自见证人节点1、交易内容不正确、落账失败或见证人转移交易超时可以在步骤S806处执行,并且随后作为步骤S807的替代,见证人节点2向见证人节点1返回处理失败的消息,在这种情况下,S807至S816将不再继续执行。
如上所述,如果交易失败,则交易节点A可以向用户返回处理失败的消息,或者在用户向交易节点A查询交易执行结果的情况下提供处理失败的消息。
上述对在执行见证人转移交易中确定交易失败的条件的说明仅仅是示意性的,根据具体情况还可能有其他条件导致交易失败。这些条件也可应用于本公开的方法和设备,并且应视为被包含在本公开的范围内。
上文已经参考附图描述了根据本公开的实施例的执行见证人转移交易的设备及方法。通过对见证人转移交易的UTXO加锁,可以防止UTXO被其他交易(包括一般类型的交易和其他见证人转移交易)重复使用。通过对UTXO的锁定设定超时时间,在到达锁定超时时间后,UTXO可以被自动解锁,这可以防止由于在见证转移交易过程中出现特殊情况(例如,节点宕机等),而导致UTXO被锁死,并且可以使得UTXO在被解锁之后可以用于其他交易,从而有效地防止了双花问题。另外,交易节点和见证人节点1在接收到广播的交易摘要时和区块落块时,对已经在见证人节点2处执行成功但未被交易节点和见证人节点1处理的见证人转移交易进行处理,这可以防止节点由于网络情况较差而没有接收到交易成功的消息导致交易数据不一致或UTXO一直被锁定。
图10示出了可以实现根据本公开的实施例的计算机设备2000的示例性配置。计算机设备2000是可以应用本公开的上述方面的硬件设备的实例。计算机设备2000可以是被配置为执行处理和/或计算的任何机器。计算机设备2000可以是但不限制于工作站、服务器、台式计算机、膝上型计算机、平板计算机、个人数据助手(PDA)、智能电话、车载计算机或以上组合。前述见证人节点和交易节点均可以全部或至少部分地由上述计算机设备2000或与其相似的设备或系统实现。
如图10所示,计算机设备2000可以包括可能经由一个或多个接口与总线2002连接或通信的一个或多个元件。例如,计算机设备2000可以包括总线2002、一个或多个处理器2004、一个或多个输入设备2006以及一个或多个输出设备2008。总线2002可以包括但不限于,工业标准架构(Industry Standard Architecture,ISA)总线、微通道架构(MicroChannel Architecture,MCA)总线、增强ISA(EISA)总线、视频电子标准协会(VESA)局部总线、以及外设组件互连(PCI)总线等。一个或多个处理设备2004可以是任何种类的处理器,并且可以包括但不限于一个或多个通用处理器或专用处理器(诸如专用处理芯片)。输入设备2006可以是能够向计算机设备输入信息的任何类型的输入设备,并且可以包括但不限于鼠标、键盘、触摸屏、麦克风和/或远程控制器。输出设备2008可以是能够呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。计算机设备2000还可以包括或被连接至非暂态存储设备2010,该非暂态存储设备2010可以是任何非暂态的并且可以实现数据存储的存储设备,并且可以包括但不限于盘驱动器、光存储设备、固态存储器、软盘、柔性盘、硬盘、磁带或任何其他磁性介质、压缩盘或任何其他光学介质、ROM(只读存储器)、RAM(随机存取存储器)、缓存存储器和/或任何其他存储芯片或模块、和/或计算机可以从其中读取数据、指令和/或代码的其他任何介质。非暂态存储设备2010可以与任何接口可拆卸地连接。非暂态存储设备2010可以具有存储于其上的、用于实现前述在区块链网络中执行见证人转移交易的方法和/或步骤的数据/指令/代码。计算机设备2000还可以包括通信设备2012,该通信设备2012可以是能够启用与外部装置和/或网络通信的任何种类的设备或系统,并且可以包括但不限于调制解调器、网络卡、红外线通信设备、无线通信设备和/或芯片集(诸如蓝牙TM设备、1302.11设备、WiFi设备、WiMax设备、蜂窝通信设施等)。
计算机设备2000还可以包括工作存储器2014。该工作存储器2014可以是能够存储对于处理器2004有用的指令和/或数据的任何类型的工作存储器,并且可以包括但不限于随机存取存储器(RAM)和只读存储器(ROM)。
位于上述工作存储器上的软件元件可以包括但不限于操作系统2016、一个或多个应用程序2018、驱动器和/或其他数据和代码。上述一个或多个应用程序2018可以包括用于执行如上所述的在区块链网络中执行见证人转移交易的方法及各步骤的指令。可以通过读取和执行一个或多个应用程序2018的处理器实现前述的见证人节点/交易节点的部件/单元/模块。更具体地,例如,前述交易节点200中的接收单元202可以由处理器2004在执行具有用于执行图3的步骤S304的指令的应用程序2018时实现。此外,例如,前述交易节点200中的验证单元204可以由处理器2004在执行具有用于执行步骤S306的指令的应用程序2018时实现。此外,例如,前述交易节点200中的执行单元206可以由处理器2004在执行具有用于执行步骤S308的指令的应用程序2018时实现。前述见证人节点400和见证人节点600的各个单元也可以用类似的方式实现。软件元件的指令的可执行代码或源代码可以存储在非暂态计算机可读存储介质(诸如如上所述的存储设备2010)中,并且可以通过编译和/或安装读入工作存储器2014中。还可以从远程位置下载软件元件的指令的可执行代码或源代码。此外,工作存储器中还可以存储参数配置文件,以便指定各个操作参数和/或数据的存储位置等。
应当理解,可以根据特定要求进行变型。例如,可以使用定制的硬件和/或特定元件可以以硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合的方式实现。此外,可以采用与其他计算机设备(诸如网络输入/输出设备)的连接。例如,本公开的方法和设备中的一些或全部可以根据本公开通过使用汇编语言编程硬件(例如,包括现场可编程门阵列(FPGA)和/或可编程逻辑阵列(PLA)的可编程逻辑电路)或软件编程语言(例如Golang,C++,java等)来实现。
应当进一步理解,计算机设备2000的元件可以分布在整个网络上。例如,可以在使用一个处理器执行一些处理的同时,使用其他远程处理器执行其他处理。计算机系统2000的其他元件也可以类似地分布。因此,计算机设备2000可以被理解为在多个地点执行处理的分布式计算系统。
可以通过许多方式来实施本公开的方法和设备。例如,可以通过软件、硬件、固件、或其任何组合来实施本公开的方法和设备。上述的方法步骤的次序仅是说明性的,本公开的方法步骤不限于以上具体描述的次序,除非以其它方式明确说明。此外,在一些实施例中,本公开还可以被实施为记录在记录介质中的程序,其包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于实现根据本公开的方法的程序的记录介质。
虽然已通过示例详细展示了本公开的一些具体实施例,但是本领域技术人员应当理解,上述示例仅意图是说明性的而不限制本公开的范围。本领域技术人员应该理解,上述实施例可以在不脱离本公开的范围和实质的情况下被修改。本公开的范围是通过所附的权利要求限定的。
本公开还涉及以下方案:
方案1、一种在区块链网络中执行见证人转移交易的方法,所述方法由见证人节点执行,所述方法包括:
接收来自交易节点的执行见证人转移交易的请求,其中所述见证人转移交易的交易内容包括将未花费的交易输出UTXO从第一见证人节点转移到第二见证人节点的信息,并且所述见证人转移交易已被所述交易节点签名,其中所述见证人节点为所述第一见证人节点;
验证所述请求的签名是否来自所述交易节点以及所述交易内容是否正确;
响应于确定所述请求的签名来自所述交易节点并且所述交易内容正确而执行以下操作:
锁定所述UTXO,
对所述见证人转移交易签名,以及
将所述见证人转移交易转发给所述第二见证人节点。
方案2、根据方案1所述的方法,还包括:在从所述第二见证人节点接收到所述见证人转移交易执行成功的消息之后,将所述见证人转移交易落账,解锁所述UTXO,并向所述交易节点返回执行成功的消息。
方案3、根据方案1所述的方法,其中锁定所述UTXO包括针对所述锁定设置超时时间,并且所述方法还包括:
响应于到达所述超时时间,自动解锁所述UTXO,并向所述交易节点返回处理失败的消息。
方案4、根据方案1所述的方法,其中锁定所述UTXO包括将所述UTXO加入锁定表,从而将所述UTXO标志为已锁定。
方案5、根据方案2所述的方法,其中锁定所述UTXO包括将所述UTXO加入锁定表,从而将所述UTXO标志为已锁定,并且解锁所述UTXO包括将所述UTXO从锁定表中删除。
方案6、根据方案1所述的方法,还包括响应于确定所述请求的签名来自所述交易节点并且所述交易内容正确,将所述见证人转移交易放入所述第一见证人节点的交易缓存池。
方案7、根据方案6所述的方法,还包括:在从所述第二见证人节点接收到所述见证人转移交易执行成功的信息之后,从所述交易缓存池中删除所述见证人转移交易。
方案8、根据方案6所述的方法,还包括:
响应于接收到来自第二见证人节点的针对所述见证人转移交易的广播的交易摘要,其中所述交易摘要包括交易id,检查所述交易缓存池中是否存在与所述交易id相对应的所述见证人转移交易,其中;
响应于确定所述交易缓存池中存在所述见证人转移交易:
根据所述交易id从所述交易缓存池中获取所述见证人转移交易;
向第二见证人节点获取所述见证人转移交易的结果;
将所述见证人转移交易落账,解锁所述UTXO,从所述交易缓存池中删除所述见证人转移交易,并且向所述交易节点返回执行成功的消息。
方案9、根据方案6所述的方法,还包括:
响应于接收到包括一个或更多个交易id的区块,检查所述交易缓存池中是否存在与所述交易id相对应的所述见证人转移交易;
响应于确定所述交易缓存池中存在所述见证人转移交易:
根据所述交易id从所述交易缓存池中获取所述见证人转移交易;
向第二见证人节点获取所述见证人转移交易的结果;
将所述见证人转移交易落账,解锁所述UTXO,从所述交易缓存池中删除所述见证人转移交易,并且向所述交易节点返回执行成功的消息。
方案10、根据方案1所述的方法,还包括:
响应于确定以下各项中的至少一个,向所述交易节点返回处理失败的消息:
所述请求的签名不是来自所述交易节点;
所述交易内容不正确;
锁定所述UTXO失败;
从所述第二见证人节点接收到处理失败的消息;或者
所述见证人转移交易超时。
方案11、根据方案1所述的方法,还包括:
在从所述第二见证人节点接收到处理失败的消息之后,解锁所述UTXO。
方案12、一种在区块链网络中执行见证人转移交易的方法,所述方法由见证人节点执行,所述方法包括:
接收来自第一见证人节点的执行见证人转移交易的请求,其中所述见证人转移交易的交易内容包括将未花费的交易输出UTXO从第一见证人节点转移到第二见证人节点的信息,并且所述见证人转移交易已被所述第一见证人节点签名,其中所述见证人节点为所述第二见证人节点,并且所述UTXO已经被第一见证人锁定;
验证所述请求的签名是否来自所述第一见证人节点以及所述交易内容是否正确;
响应于确定所述请求的签名来自所述第一见证人节点并且所述交易内容正确而执行以下操作:
执行交易并且将所述见证人转移交易落账,以及
将所述见证人转移交易签名后把所述见证人转移交易执行成功的消息返回给所述第一见证人节点。
方案13、根据方案12所述的方法,还包括:响应于确定所述请求的签名来自所述第一见证人节点并且所述交易内容正确,将所述见证人转移交易生成交易摘要,并且在所述区块链网络中广播所述交易摘要,其中所述交易摘要包括所述见证人转移交易的交易id。
方案14、根据方案12所述的方法,还包括:
响应于确定以下各项中的至少一个,向所述第一见证人节点返回处理失败的消息:
所述请求的签名不是来自所述第一见证人节点;
所述交易内容不正确;
落账失败;或者
所述见证人转移交易超时。
方案15.一种在区块链网络中执行见证人转移交易的设备,所述区块链网络包括多个见证人节点和多个交易节点,所述设备包括存储有计算机可执行指令的存储器和处理器,当所述计算机可执行指令被所述处理器执行时,使得所述设备执行如前述方案中任一项所述的方法。
方案16.一种存储有计算机可执行指令的计算机可读介质,当所述计算机可执行指令被处理器执行时,使得所述处理器执行如前述方案中任一项所述的方法。
Claims (10)
1.一种在区块链网络中执行见证人转移交易的方法,所述方法由交易节点执行,所述方法包括:
接收来自用户的执行见证人转移交易的请求,其中所述见证人转移交易的交易内容包括将未花费的交易输出UTXO从第一见证人节点转移到第二见证人节点的信息,并且所述见证人转移交易已被所述用户签名;
验证所述请求的签名是否来自所述用户以及所述交易内容是否正确;
响应于确定所述请求的签名来自所述用户并且所述交易内容正确,执行以下操作:
锁定所述UTXO,
对所述见证人转移交易签名,以及
将所述见证人转移交易转发给所述第一见证人节点。
2.根据权利要求1所述的方法,还包括:在从所述第一见证人节点接收到所述见证人转移交易执行成功的消息之后,将所述见证人转移交易落账,并解锁所述UTXO。
3.根据权利要求1所述的方法,其中锁定所述UTXO包括针对所述锁定设置超时时间,并且所述方法还包括:
响应于到达所述超时时间,自动解锁所述UTXO,并向所述用户返回处理失败的消息。
4.根据权利要求1所述的方法,其中锁定所述UTXO包括将所述UTXO加入锁定表,从而将所述UTXO标志为已锁定。
5.根据权利要求2所述的方法,其中锁定所述UTXO包括将所述UTXO加入锁定表,从而将所述UTXO标志为已锁定,并且解锁所述UTXO包括将所述UTXO从锁定表中删除。
6.根据权利要求1所述的方法,还包括响应于确定所述请求的签名来自所述用户并且所述交易内容正确,将所述见证人转移交易放入所述交易节点的交易缓存池。
7.根据权利要求6所述的方法,还包括:在从所述第一见证人节点接收到所述见证人转移交易执行成功的消息之后,从所述交易缓存池中删除所述见证人转移交易。
8.根据权利要求6所述的方法,还包括:
响应于接收到来自第二见证人节点的针对所述见证人转移交易的广播的交易摘要,其中所述交易摘要包括交易id,检查所述交易缓存池中是否存在与所述交易id相对应的所述见证人转移交易,其中:
响应于确定所述交易缓存池中存在所述见证人转移交易:
根据所述交易id从所述交易缓存池中获取所述见证人转移交易;
向第二见证人节点获取所述见证人转移交易的结果;
将所述见证人转移交易落账,解锁所述UTXO,并且从所述交易缓存池中删除所述见证人转移交易。
9.根据权利要求6所述的方法,还包括:
响应于接收到包括一个或更多个交易id的区块,检查所述交易缓存池中是否存在与所述交易id相对应的所述见证人转移交易;
响应于确定所述交易缓存池中存在所述见证人转移交易:
根据所述交易id从所述交易缓存池中获取所述见证人转移交易;
向第二见证人节点获取所述见证人转移交易的结果;
将所述见证人转移交易落账,解锁所述UTXO,并且从所述交易缓存池中删除所述见证人转移交易。
10.根据权利要求1所述的方法,还包括:
响应于确定以下各项中的至少一个,向所述用户返回处理失败的消息或者在用户向交易节点查询交易执行结果的情况下提供处理失败的消息:
所述请求的签名不是来自所述用户;
所述交易内容不正确;
锁定所述UTXO失败;
从所述第一见证人节点接收到处理失败的消息;或者
所述见证人转移交易超时。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811183619.5A CN109447601B (zh) | 2018-10-11 | 2018-10-11 | 在区块链网络中执行见证人转移交易的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811183619.5A CN109447601B (zh) | 2018-10-11 | 2018-10-11 | 在区块链网络中执行见证人转移交易的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109447601A true CN109447601A (zh) | 2019-03-08 |
CN109447601B CN109447601B (zh) | 2022-04-12 |
Family
ID=65545273
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811183619.5A Active CN109447601B (zh) | 2018-10-11 | 2018-10-11 | 在区块链网络中执行见证人转移交易的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109447601B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110223178A (zh) * | 2019-06-06 | 2019-09-10 | 杭州趣链科技有限公司 | 一种用于联盟链的跨链系统和跨链方法 |
CN110569309A (zh) * | 2019-09-17 | 2019-12-13 | 上海保险交易所股份有限公司 | 用于实现区块链的设备、方法、系统以及介质 |
CN111626857A (zh) * | 2020-05-28 | 2020-09-04 | 中国建设银行股份有限公司 | 收益发放方法、装置、电子设备及计算机可读存储介质 |
CN112732676A (zh) * | 2021-01-12 | 2021-04-30 | 成都库珀区块链科技有限公司 | 基于区块链的数据迁移方法、装置、设备及存储介质 |
CN112950388A (zh) * | 2021-02-26 | 2021-06-11 | 平安资产管理有限责任公司 | 数据处理方法、系统、设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170103390A1 (en) * | 2015-04-05 | 2017-04-13 | Digital Asset Holdings | Digital asset intermediary electronic settlement platform |
CN106940854A (zh) * | 2017-03-06 | 2017-07-11 | 钱德君 | 一种utxo模型与合约之间的搭桥方法 |
US20180097779A1 (en) * | 2016-09-30 | 2018-04-05 | Nec Europe Ltd. | Method and system for providing a transaction forwarding service in blockchain implementations |
CN108154366A (zh) * | 2017-12-25 | 2018-06-12 | 丁江 | 跨链数字资产转移方法和终端设备 |
-
2018
- 2018-10-11 CN CN201811183619.5A patent/CN109447601B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170103390A1 (en) * | 2015-04-05 | 2017-04-13 | Digital Asset Holdings | Digital asset intermediary electronic settlement platform |
US20180097779A1 (en) * | 2016-09-30 | 2018-04-05 | Nec Europe Ltd. | Method and system for providing a transaction forwarding service in blockchain implementations |
CN106940854A (zh) * | 2017-03-06 | 2017-07-11 | 钱德君 | 一种utxo模型与合约之间的搭桥方法 |
CN108154366A (zh) * | 2017-12-25 | 2018-06-12 | 丁江 | 跨链数字资产转移方法和终端设备 |
Non-Patent Citations (1)
Title |
---|
邵奇峰: ""区块链技术:架构及进展"", 《计算机学报》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110223178A (zh) * | 2019-06-06 | 2019-09-10 | 杭州趣链科技有限公司 | 一种用于联盟链的跨链系统和跨链方法 |
CN110569309A (zh) * | 2019-09-17 | 2019-12-13 | 上海保险交易所股份有限公司 | 用于实现区块链的设备、方法、系统以及介质 |
CN110569309B (zh) * | 2019-09-17 | 2023-06-20 | 上海保险交易所股份有限公司 | 用于实现区块链的设备、方法、系统以及介质 |
CN111626857A (zh) * | 2020-05-28 | 2020-09-04 | 中国建设银行股份有限公司 | 收益发放方法、装置、电子设备及计算机可读存储介质 |
CN112732676A (zh) * | 2021-01-12 | 2021-04-30 | 成都库珀区块链科技有限公司 | 基于区块链的数据迁移方法、装置、设备及存储介质 |
CN112732676B (zh) * | 2021-01-12 | 2023-12-05 | 库珀科技集团有限公司 | 基于区块链的数据迁移方法、装置、设备及存储介质 |
CN112950388A (zh) * | 2021-02-26 | 2021-06-11 | 平安资产管理有限责任公司 | 数据处理方法、系统、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109447601B (zh) | 2022-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11392940B2 (en) | Multi-approval system using M of N keys to perform an action at a customer device | |
US11924324B2 (en) | Registry blockchain architecture | |
CN109447601A (zh) | 在区块链网络中执行见证人转移交易的方法 | |
CA3011600C (en) | Information transaction infrastructure | |
US10636033B2 (en) | System for routing of process authorizations and settlement to a user in a process data network | |
US20170221053A1 (en) | Digital asset conversion | |
US20140279403A1 (en) | Methods and systems for executing mobile currency transactions | |
US20190362340A1 (en) | Secure multiple cryptocurrency wallet and methods of use thereof | |
CN113544722A (zh) | 使用区块链的方法 | |
US11748744B2 (en) | Source independent consistent tokenization | |
US11501290B2 (en) | Digital currency transfer | |
CN115066863B (zh) | 用于利益拒绝系统中的跨账户设备密钥转移的系统和技术 | |
CA2970301C (en) | Improved network for onboarding and delivery of electronic payments to payees | |
JP2020129284A (ja) | プログラム、情報処理装置、及び情報処理方法 | |
KR102070252B1 (ko) | 블록체인 기반 결제 서비스 서버 및 이의 동작 방법 | |
US11107074B2 (en) | Method, apparatus and system for electronic payments | |
CN112492593A (zh) | 信息处理方法、信息处理装置以及程序 | |
US20200097966A1 (en) | Information processing method, information processing device, and computer-readable non-transitory storage medium storing program | |
JP2020129283A (ja) | プログラム、情報処理装置、及び情報処理方法 | |
US20230334470A1 (en) | Blockchain interoperability system for native asset creation | |
JP2020129282A (ja) | プログラム、情報処理装置、及び情報処理方法 | |
JP4253247B2 (ja) | 金融機関端末及びプログラム | |
Cigno et al. | The Lightning Network |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 200120 T3, 1788, 1800 Century Avenue, free trade Experimental Zone, Pudong New Area, Shanghai Applicant after: Shanghai insurance exchange, Limited by Share Ltd Address before: 200120 Shanghai East Road Pudong New Area Financial Information Center 22 Applicant before: Shanghai insurance exchange, Limited by Share Ltd |
|
GR01 | Patent grant | ||
GR01 | Patent grant |