CN109493057A - 一种基于utxo模型的交易方法及装置 - Google Patents
一种基于utxo模型的交易方法及装置 Download PDFInfo
- Publication number
- CN109493057A CN109493057A CN201811502579.6A CN201811502579A CN109493057A CN 109493057 A CN109493057 A CN 109493057A CN 201811502579 A CN201811502579 A CN 201811502579A CN 109493057 A CN109493057 A CN 109493057A
- Authority
- CN
- China
- Prior art keywords
- transaction
- output
- verification
- cost
- input
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000012795 verification Methods 0.000 claims abstract description 362
- 238000010200 validation analysis Methods 0.000 claims description 10
- 238000013515 script Methods 0.000 description 52
- 238000010586 diagram Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 10
- 238000004590 computer program Methods 0.000 description 8
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000001404 mediated effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
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/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Computer Security & Cryptography (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明实施例涉及区块链技术领域,尤其涉及一种基于UTXO模型的交易方法及装置,用以节省交易数据占用的网络资源。本发明实施例包括:确定交易包括N条未花费交易输出,N>0;创建所述交易的数据;所述交易的数据包括交易标识、交易输入、交易输出以及验证数组,所述验证数组中包括未花费交易输出的验证信息,所述交易输入和/或所述交易输出中包括未花费交易输出的验证索引,所述验证索引标示出未花费交易输出的验证信息在所述验证数组中的位置;将所述交易的数据进行广播。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种基于UTXO模型的交易方法及装置。
背景技术
区块链(Blockchain)是从比特币中提炼出一个重要概念,它本质上是一个去中介化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
UTXO(Unspent Transaction Outputs,未花费交易输出),是比特币交易生成及验证的一个核心概念。交易构成了区块,区块之间组成链式结构,所有合法的比特币交易都可以追溯到前向一个或多个交易的输出,这些链条的源头都是挖矿奖励,末尾则是当前未花费交易输出。所有的未花费交易输出即整个比特币网络的UTXO。
比特币规定每一笔新的交易的输入必须是某笔交易未花费的输出,每一笔输入同时也需要上一笔输出所对应的私钥进行签名,并且每个比特币的节点都会存储当前整个区块链上的UTXO,整个网络上的节点通过UTXO及签名算法来验证新交易的合法性。这样,节点不需要追溯历史就可以验证新交易的合法性。现有的采用UTXO模型的区块链系统中,交易数据占用网络资源较多,交易处理效率不够高效,在签名以及验证方面需要进行改善。
发明内容
本发明提供一种基于UTXO模型的交易方法及装置,用以节省交易数据占用的网络资源。
本发明实施例提供的基于UTXO模型的交易方法,包括:
确定交易包括N条未花费交易输出,N>0;
创建所述交易的数据;所述交易的数据包括交易标识、交易输入、交易输出以及验证数组,所述验证数组中包括未花费交易输出的验证信息,所述交易输入和/或所述交易输出中包括未花费交易输出的验证索引,所述验证索引标示出未花费交易输出的验证信息在所述验证数组中的位置;
将所述交易的数据进行广播。
一种可选的实施例中,所述创建所述交易的数据,包括:
判断第M条未花费交易输出对应的输出地址是否与第P条未花费交易输出对应的输出地址相同,0≤P<M≤N;
若是,则在所述第M条未花费交易输出的交易输入中写入所述第M条未花费交易输出的验证索引,所述第M条未花费交易输出的验证索引标示出所述第P条未花费交易输出的验证信息在所述验证数组中的位置;
若否,则根据所述第M条未花费交易输出对应的输出地址,计算出所述第M条未花费交易输出的验证信息,将所述第M条未花费交易输出的验证信息加入所述验证数组中,并在所述第M条未花费交易输出的交易输入中写入所述第M条未花费交易输出的验证索引,所述第M条未花费交易输出的验证索引标示出所述第M条未花费交易输出的验证信息在所述验证数组中的位置。
一种可选的实施例中,所述第M条未花费交易输出的验证信息包含所述第M条未花费交易输出的签名值和第一公钥;
所述计算出所述第M条未花费交易输出的验证信息,包括:
利用第一私钥对所述交易的数据进行签名,得到所述第M条未花费交易输出的签名值,所述第一私钥以及所述第一公钥与所述第M条未花费交易输出的输出地址相对应。
本发明实施例还提供一种基于UTXO模型的交易方法,包括:
接收交易的数据,所述交易包括N条未花费交易输出,N>0;
根据每一条未花费交易输出作为交易输入时的验证索引,对未花费交易输出的合法性进行验证;所述交易的数据包括交易标识、交易输入、交易输出以及验证数组,所述验证数组中包括未花费交易输出的验证信息,所述交易输入和/或所述交易输出中包括每一条未花费交易输出的验证索引,所述验证索引标示出验证信息在所述验证数组中的位置。
一种可选的实施例中,所述根据每一条未花费交易输出作为交易输入时的验证索引,对未花费交易输出的合法性进行验证,包括:
判断第M条未花费交易输出作为交易输入时的验证索引与第P条未花费交易输出作为交易输入时的验证索引在同一笔交易中是否相同,0≤P<M≤N;
若是,则根据所述第P条未花费交易输出验证成功,确定所述第M条未花费交易输出验证成功;
若否,则至少根据所述第M条未花费交易输出的验证索引,确定所述第M条未花费交易输出的验证信息;利用所述第M条未花费交易输出的验证信息对所述第M条未花费交易输出作为交易输入的交易进行验证。
一种可选的实施例中,所述第M条未花费交易输出的验证信息为所述第M条未花费交易输出作为交易输入的交易的签名值;
所述利用所述第M条未花费交易输出的验证信息对所述第M条未花费交易输出作为交易输入的交易进行验证,包括:
从所述第M条未花费交易输出的交易输入中确定所述第M条未花费交易输出的验证索引;
根据所述第M条未花费交易输出的验证索引,在所述交易的验证数组中确定所述第M条未花费交易输出作为交易输入的交易的签名值,所述第M条未花费交易输出作为交易输入的交易的签名值为利用第一私钥对所述交易的数据进行签名得到的签名值;
利用第一公钥对所述第M条未花费交易输出作为交易输入的交易的签名值进行验证,所述第一私钥以及所述第一公钥与所述第M条未花费交易输出的输出地址相对应。
本发明实施例还提供一种基于UTXO模型的交易装置,包括:
确定模块,用于确定交易包括N条未花费交易输出,N>0;
创建模块,用于创建所述交易的数据;所述交易的数据包括交易标识、交易输入、交易输出以及验证数组,所述验证数组中包括未花费交易输出的验证信息,所述交易输入和/或所述交易输出中包括未花费交易输出的验证索引,所述验证索引标示出未花费交易输出的验证信息在所述验证数组中的位置;
广播模块,用于将所述交易的数据进行广播。
一种可选的实施例中,所述创建模块,具体用于:
判断第M条未花费交易输出对应的输出地址是否与第P条未花费交易输出对应的输出地址相同,0≤P<M≤N;
若是,则在所述第M条未花费交易输出的交易输入中写入所述第M条未花费交易输出的验证索引,所述第M条未花费交易输出的验证索引标示出所述第P条未花费交易输出的验证信息在所述验证数组中的位置;
若否,则根据所述第M条未花费交易输出对应的输出地址,计算出所述第M条未花费交易输出的验证信息,将所述第M条未花费交易输出的验证信息加入所述验证数组中,并在所述第M条未花费交易输出的交易输入中写入所述第M条未花费交易输出的验证索引,所述第M条未花费交易输出的验证索引标示出所述第M条未花费交易输出的验证信息在所述验证数组中的位置。
一种可选的实施例中,所述第M条未花费交易输出的验证信息包含所述第M条未花费交易输出的签名值和第一公钥;
所述创建模块,具体用于:
利用第一私钥对所述交易的数据进行签名,得到所述第M条未花费交易输出的签名值,所述第一私钥以及所述第一公钥与所述第M条未花费交易输出的输出地址相对应。
本发明实施例还提供一种基于UTXO模型的交易装置,包括:
接收模块,用于接收交易的数据,所述交易包括N条未花费交易输出,N>0;
验证模块,用于根据每一条未花费交易输出作为交易输入时的验证索引,对未花费交易输出的合法性进行验证;所述交易的数据包括交易标识、交易输入、交易输出以及验证数组,所述验证数组中包括未花费交易输出的验证信息,所述交易输入和/或所述交易输出中包括每一条未花费交易输出的验证索引,所述验证索引标示出验证信息在所述验证数组中的位置。
一种可选的实施例中,所述验证模块,具体用于:
判断第M条未花费交易输出作为交易输入时的验证索引与第P条未花费交易输出作为交易输入时的验证索引在同一笔交易中是否相同,0≤P<M≤N;
若是,则根据所述第P条未花费交易输出验证成功,确定所述第M条未花费交易输出验证成功;
若否,则至少根据所述第M条未花费交易输出的验证索引,确定所述第M条未花费交易输出的验证信息;利用所述第M条未花费交易输出的验证信息对所述第M条未花费交易输出作为交易输入的交易进行验证。
一种可选的实施例中,所述第M条未花费交易输出的验证信息为所述第M条未花费交易输出作为交易输入的交易的签名值;
所述验证模块,具体用于:
从所述第M条未花费交易输出的交易输入中确定所述第M条未花费交易输出的验证索引;
根据所述第M条未花费交易输出的验证索引,在所述交易的验证数组中确定所述第M条未花费交易输出作为交易输入的交易的签名值,所述第M条未花费交易输出作为交易输入的交易的签名值为利用第一私钥对所述交易的数据进行签名得到的签名值;
利用第一公钥对所述第M条未花费交易输出作为交易输入的交易的签名值进行验证,所述第一私钥以及所述第一公钥与所述第M条未花费交易输出的输出地址相对应。
本发明实施例还提供一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述方法。
本发明实施例还提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行上述方法。
本发明实施例中,发送节点创建交易,该交易包括N条未花费交易输出。交易的数据中包括交易标识、交易输入、交易输出以及验证数组。其中,验证数组中包括未花费交易输出的验证信息,交易输入和/或交易输出中包括未花费交易输出的验证索引,该验证索引标示出未花费交易输出的验证信息在验证数组中的位置。发送节点创建完交易的数据后,将交易的数据进行广播,以供接收节点进行验证。本发明实施例中,将交易输入和交易输出中未花费交易输出的验证信息提取出来,写在交易数据的验证数组中,在交易输入和/或交易输出中增加未花费交易输出的验证索引,用以标示该未花费交易输出的验证信息在验证数组中的位置。这样,在未花费交易输出的验证信息相同的情况下,只需将验证信息在验证数组中存储一次,解决了在两个或多个未花费交易输出来源于同一个地址,需要进行重复验证的问题。本发明实施例中,对于重复地址的未花费交易输出,只进行一次签名,减少了交易数据的字节数,节省了交易占用的存储空间和传输时的网络带宽。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中基于UTXO模型的区块链系统中一种交易的数据结构示意图;
图2为本发明实施例提供的一种基于UTXO模型的交易方法的流程示意图;
图3为本发明一种可能的实施例中一种交易的数据结构示意图;
图4为本发明另一种可能的实施例中一种交易的数据结构示意图;
图5为本发明实施例提供的一种基于UTXO模型的交易装置的结构示意图;
图6为本发明实施例提供的另一种基于UTXO模型的交易装置的结构示意图;
图7为本发明实施例提供的电子设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
比特币网络中,从交易产生和打包验证的角度来说,节点可以简单分为发送节点和接收节点,发送节点在比特币体系里就是用于提交交易信息的用户,如果有新的交易要提交,那么发送节点就会在比特币网络进行交易信息的广播。接收节点在比特币体系里面一直监听比特币网络里是否有交易广播。接收节点收到广播的交易信息后,需要校验这个信息的签名等内容是否合法。如果校验通过后,就需要将收到的所有交易信息按照一定的规则组装成一个数据块,也就是区块。在一个区块中,比特币系统用交易(Transaction)来表示一笔比特币交易。一个区块包含至少一笔交易。
A给B转账的时候,会先用A的私钥进行签名,再转账给B的公钥的hash。这个过程,说明了2件事:用A的私钥签名,证明了这笔钱是A的;转账给B的公钥,证明了这笔钱是转给B的,不是转给别人的。接下来,B要花这笔钱,比如转给C;同样的,要用B的私钥签名,转账给C的公钥的hash。
下面结合交易的内部结构,详细介绍区块链系统中如何建立交易以及如何验证交易。
图1示出了现有技术的基于UTXO模型的区块链系统中,交易的数据结构。如图1所示。交易的数据包括交易标识(TxId)、交易输入(TxIn)以及交易输出(TxOut)。TxOut部分可以表示未花费的具体记录,系统中所有的交易,均用未花费交易输出,作为下个交易的输入,即交易的TxOut作为下个交易的输入。这样,每个交易的TxOut都与一个交易的TxIn相关联。交易的类型简单可以分为,一对一交易,一对多交易,多对一交易,以及多对多交易。
除了第一笔交易外,每一笔交易都拥有一个或多个输入(TxIn),以及一个或多个输出(TxOut)。第一笔交易通常被称为Coinbase,它没有输入,所以TxIn中的Pre hash总是被标记为00000000...0000。其他的交易,任何一个TxIn都会唯一追溯到区块链上在本区块之前的某个交易的未花费交易输出。
每个TxIn中,包括三个字段:Pre hash、Index和Script sig。其中,Pre hash为该TxIn对应的TxOut所在交易的交易标识。索引(Index)为该TxIn对应的TxOut在交易中的偏移量。通过Pre hash和Index,即可唯一确定一个未花费交易输出的交易输出——UTXO,这样每一个TxIn都与之前的某个TxOut关联了起来。Script sig为解锁脚本,包含了付款方的签名。Script sig需要与上一个未花费交易输出的交易输出中的Pubkey script对应。
TxOut中也包括了三个字段:Mondey、Address和Pubkey script。其中,Mondey为转账的钱数,Address为收款方的地址,Pubkey script为锁定脚本,包含了收款方公钥信息。
对于一个未花费交易输出,需要把其中的Pubkey script与下一个相关联交易的Script sig关联在一起。Pubkey script中包含了上一笔交易的收款方公钥,也就是下一笔交易的付款方公钥。Script sig中包含了下一步交易的付款方签名。将上一笔交易的Pubkey script与下一笔交易的Script sig拼接在一起,放入脚本解释器(Script Engine)里面运行,执行结果就是TRUE或FALSE,表示这笔交易是否有效。
下面以一个具体的例子详细描述上述交易的创建过程。表1和表2示出了一对二交易。其中,表1的交易输出与表2的交易输入相对应。
表1
表2
假设Alice的地址为Addr0000,Bob地址为Addr0001,Dave地址为Addr0002,在交易#0001中Alice的地址Addr0000拥有0.2个Mondey,即交易#0001中未花费交易输出的资金数为0.2,Alice生成一个新的交易#0002,从未花费交易输出中向Bob和Dave分别转账0.1。交易#0002的创建过程如下:
Alice创建交易#0002,这个新交易#0002中,TxIn的Prev hash字段为#0001,标识出这个TxIn对应的未花费交易输出所在的交易为#0001。TxIn中Index字段为未花费交易输出在交易#0001的交易输出中的偏移量。
交易#0002,通过锁定脚本OP_DUP b0001和OP_DUP b0002,把交易#0002中的两个未花费交易输出的所有权锁定给Addr0001和Addr0002,锁定脚本中指定拥有特定公钥的地址才能消费这笔资金,这里指是Bob和Dave。
Alice将交易#0002进行广播。各个节点收到交易#0002,分别对这个交易里的每个TxIn进行验证。通过交易#0002里每个TxIn的Pre hash和Index,进而得到#0001的TxOut中的锁定脚本OP_DUP b0000。各个节点将锁定脚本OP_DUP b0000与#0002中的解锁脚本Sig0Pubkey0一同放入脚本解释器中运行。若运行成功,则成功把资金的所有权转移到地址Addr0001和地址Addr0002。
在多对一交易或多对多交易中,若两个或多个输入来自于同一个地址,则这些输入对应的签名完全相同,但发送节点仍需要针对每个输入进行一次签名,且接收节点需要针对每个输入分别验证。即对于重复地址的未花费交易输出,存在重复签名和验签的过程,锁定脚本和解锁脚本也重复存储,占用了较多的存储空间,影响了系统的整体交易性能。
为了说明上述问题,下面举例说明。表3和表4示出了多对一交易。
表3
表4
在交易#0010中存在三个未花费交易。创建交易#0011,即把#0010交易中地址Addr0003,Addr0004拥有的资金转给Addr0005。在交易#0011中,Pubkey script锁定脚本字段OP_DUP C111锁定资金给地址Addr0005,TxIn中的Script sig字段的解锁脚本Sig1Pubkey1包括了Addr0003对应的签名值和公钥数据,解锁脚本Sig2 Pubkey2包括了Addr0004对应的签名值和公钥数据。在交易#0011中,第一笔输入和第二笔输入对应的输出地址都是Addr0003,故两者的签名值和公钥相同,均为Sig1 Pubkey1,但发送节点仍需利用私钥进行两次签名,并重复存储。
其它节点接收到交易#0011,对每个输入进行验证。对第一笔输入,根据#0011的TxIn字段中的Pre hash和Index(偏移量为0)找到交易#0010中Money为0.2的未花费交易输出,其对应的锁定脚本为OP_DUP C003(地址为Addr003)。将锁定脚本OP_DUP C003与第一笔输入的解锁脚本Sig1 Pubkey1一同完成验签,验签通过后Money为0.2的未花费交易输出的所有权为Addr0005。
针对第二笔输入,根据#0011的TxIn字段中的Pre hash和Index(偏移量为1)找到交易#0010中Money为0.4的未花费交易输出,其对应的锁定脚本为OP_DUP C003(地址为Addr003)。将锁定脚本OP_DUP C003与第二笔输入的解锁脚本Sig1 Pubkey1一同完成验签,验签通过后Money为0.4的未花费交易输出的所有权为Addr0005。
最后针对第三笔输入,根据#0011的TxIn字段中的Pre hash和Index(偏移量为2)找到交易#0010中Money为0.6的未花费交易输出,其对应的锁定脚本为OP_DUP C005(地址为Addr004)。将锁定脚本OP_DUP C005与第三笔输入的解锁脚本Sig2 Pubkey2一同完成验签,验签通过后Money为0.6的未花费交易输出的所有权为Addr0005。
可以看出,由于第一笔输入与第二笔输入对应的输出地址相同,因此,两者的锁定脚本相同,两者的解锁脚本相同。进一步,第一笔输入和第二笔输入的验签过程也相同。
为了解决上述问题,本发明实施例提供了一种基于UTXO模型的交易方法。如图2所示,本发明实施例提供的基于UTXO模型的交易方法,包括以下步骤:
步骤201、确定交易包括N条未花费交易输出,N>0。
步骤202、创建所述交易的数据;所述交易的数据包括交易标识、交易输入、交易输出以及验证数组,所述验证数组中包括未花费交易输出的验证信息,所述交易输入和/或所述交易输出中包括未花费交易输出的验证索引,所述验证索引标示出未花费交易输出的验证信息在所述验证数组中的位置。
步骤203、将所述交易的数据进行广播。
本发明实施例中,发送节点创建交易,该交易包括N条未花费交易输出。交易的数据中包括交易标识、交易输入、交易输出以及验证数组。其中,验证数组中包括未花费交易输出的验证信息,交易输入和/或交易输出中包括未花费交易输出的验证索引,该验证索引标示出未花费交易输出的验证信息在验证数组中的位置。发送节点创建完交易的数据后,将交易的数据进行广播,以供接收节点进行验证。本发明实施例中,将现有的交易输入和交易输出中未花费中的交易输出的验证信息提取出来,写在交易数据的验证数组中,在交易输入和/或交易输出中增加未花费交易输出的验证索引,用以标示该未花费交易输出的验证信息在验证数组中的位置。这样,在未花费交易输出的验证信息相同的情况下,只需将验证信息在验证数组中存储一次,解决了在两个或多个未花费交易输出来源于同一个地址,需要进行重复验证的问题。本发明实施例中,对于重复地址的未花费交易输出,只进行一次签名且只存储了一条验证信息,减少了交易数据的字节数,节省了交易占用的存储空间和传输时的网络带宽。
接收节点接收到交易的数据后,对该交易进行验证。具体包括:
接收交易的数据,所述交易包括N条未花费交易输出,N>0;
根据每一条未花费交易输出的验证索引,对未花费交易输出进行验证;所述交易的数据包括交易标识、交易输入、交易输出以及验证数组,所述验证数组中包括未花费交易输出的验证信息,所述交易输入和/或所述交易输出中包括每一条未花费交易输出的验证索引,所述验证索引标示出验证信息在所述验证数组中的位置。
本发明实施例中,由于验证信息都存储在验证数组中,交易输入和/或交易输出中存储有验证信息的验证索引,因此,接收节点可以通过验证索引找到相应的验证信息。这样,相同的验证信息只需要在验证数组中存储一次,减少了交易数据的字节数,节省了交易占用的存储空间和传输时的网络带宽。
验证信息存储在验证数组中,不仅可以节省存储空间,还可以提高交易创建和验证的效率。上述步骤202、创建所述交易的数据包括:
判断第M条未花费交易输出对应的输出地址是否与第P条未花费交易输出对应的输出地址相同,0≤P<M≤N;
若是,则在所述第M条未花费交易输出的交易输入中写入所述第M条未花费交易输出的验证索引,所述第M条未花费交易输出的验证索引标示出所述第P条未花费交易输出的验证信息在所述验证数组中的位置;
若否,则根据所述第M条未花费交易输出对应的输出地址,计算出所述第M条未花费交易输出的验证信息,将所述第M条未花费交易输出的验证信息加入所述验证数组中,并在所述第M条未花费交易输出的交易输入中写入所述第M条未花费交易输出的验证索引,所述第M条未花费交易输出的验证索引标示出所述第M条未花费交易输出的验证信息在所述验证数组中的位置。
具体来说,发送节点创建交易时,对于交易中第一条交易输入,直接计算出验证信息存储在验证数组中,将该验证信息在验证数组中的位置利用验证索引标识出,并把验证标识存储在交易输入和/或交易输出中。对于第一条交易输入之后的交易输入,首先判断该条交易输入对应的输出地址是否与之前的交易输入对应的输出地址相同,若相同,表明该条交易输入的验证信息与之前的交易输入的验证信息相同,则无需再对该条交易输入计算验证信息,只需在交易输入中写入验证索引,该验证索引标识出之前的交易输入的验证信息在验证数组中的位置。这样,针对两个或多个输出地址相同的交易,节省了发送节点的计算过程,提高了交易的创建效率。
对于接收节点,根据每一条未花费交易输出的验证索引,对未花费交易输出进行验证,包括:
判断第M条未花费交易输出作为交易输入时的验证索引与第P条未花费交易输出作为交易输入时的验证索引在同一笔交易中是否相同,0≤P<M≤N;
若是,则根据所述第P条未花费交易输出验证成功,确定所述第M条未花费交易输出验证成功;
若否,则至少根据所述第M条未花费交易输出的验证索引,确定所述第M条未花费交易输出的验证信息;利用所述第M条未花费交易输出的验证信息对所述第M条未花费交易输出作为交易输入的交易进行验证。
同理,接受节点验证接受到的交易时,对于第一条交易输入,验证其对应的未花费交易输出,根据第一条未花费交易输出的验证索引,确定第一条未花费交易输出的验证信息,根据第一条未花费交易输出的验证信息对第一条未花费交易输出进行验证。对于第M条未花费交易输出之后的未花费交易输出,可以将第M条未花费交易输出的验证索引与第P条未花费交易输出的验证索引相比较,第P条未花费交易输出位于第M条未花费交易输出之前,若两者相同,则表明第M条未花费交易输出的验证信息与第P条未花费交易输出的验证信息相同,由于第P条未花费交易输出已被验证通过,则无需重新验证第M条未花费交易输出,直接可认为第M条未花费交易输出验证通过。这样,针对两个或多个输出地址相同的交易,节省了接收节点的验证过程,提高了交易的验证效率。
一种可能的实施例中,交易的数据结构如图3所示。交易的数据包括交易标识(Txid)、交易输入(TxIn)、交易输出(TxOut)以及验证数组(Verifications)。其中,验证数组中包括有验证信息,验证信息可以包括解锁脚本(Script sig)和锁定脚本(Pubkeyscript),解锁脚本与上一个交易的锁定脚本相对应。交易输入中包括Pre hash、Index和Sig Index(解锁索引),其中,Sig Index标识出该输入的解锁脚本在验证数组中的位置。交易输出中包括Mondey和Address。
另一种可能的实施例中,交易的数据结构如图4所示。交易的数据包括交易标识(Txid)、交易输入(TxIn)、交易输出(TxOut)以及验证数组(Verifications)。其中,验证数组中包括有验证信息,验证信息可以包括签名值(sign)和公钥(Pubkey),该签名值为发送节点利用私钥对整个交易数据进行签名得到的数据。此时,不再存储锁定脚本和解锁脚本,而是直接利用签名和公钥对未花费交易输出验证。则交易输入中包括Pre hash、Index和Verif Index(签名索引),其中,Verif Index标识出该输入的签名值(sign)和公钥(Pubkey)在验证数组中的位置。交易输出中可以包括Mondey、Address。
对于验证信息为签名值的情况,上述步骤,计算出所述第M条未花费交易输出的验证信息,包括:
利用第一私钥对所述交易的数据进行签名,得到所述第M条未花费交易输出的签名值;第M条未花费交易输出的验证信息包括所述第M条未花费交易输出的签名值和第一公钥,所述第一私钥以及所述第一公钥与所述第M条未花费交易输出的输出地址相对应。
具体实施过程中,发送节点利用第一私钥对创建的数据进行签名,得到未花费交易输出的签名值,这里的第一私钥与未花费交易输出的输出地址相对应,即可以看做利用付款方的私钥进行签名。将锁定脚本和解锁脚本的验证模式利用签名值代替,由于签名值对应的公钥已公开,因此可以将签名值写入验证数组中,在交易输入或交易输出中存储对应的验证索引。此外,也可以将签名值和公钥一同存储在验证数组中,验证索引标识出签名值和公钥的位置。
对应于接收节点,所述第M条未花费交易输出的验证信息为所述第M条未花费交易输出的签名值;
所述利用所述第M条未花费交易输出的验证信息对所述第M条未花费交易输出作为交易输入的交易进行验证,包括:
从所述第M条未花费交易输出的交易输入中确定所述第M条未花费交易输出的验证索引;
根据所述第M条未花费交易输出的验证索引,在所述交易的验证数组中确定所述第M条未花费交易输出作为交易输入的交易的签名值,所述第M条未花费交易输出作为交易输入的交易的签名值为利用第一私钥对所述交易的数据进行签名得到的签名值;
利用第一公钥对所述第M条未花费交易输出作为交易输入的交易的签名值进行验证,所述第一私钥以及所述第一公钥与所述第M条未花费交易输出的输出地址相对应。
具体实施过程中,接收节点通过对接收到的签名值进行解签来验证未花费交易输出。接收节点根据交易输入中的验证索引,定位到验证数组中的签名值和公钥。接收节点在验证该公钥为未花费交易输出的输出地址的公钥后,利用该公钥对签名值进行解签,解签成功则验证成功。本发明实施例中,利用签名值替换了锁定脚本和解锁脚本,进一步节省了存储空间。
为了更清楚地理解本发明,下面以具体的实施例对上述流程进行详细描述,。具体场景为已有两个交易#0020和#0021,交易#0020如表5所示,交易#0021如表6所示。交易#0020中,有两笔未花费输出,来自不同的地址转入,所有权属于同一个地址Addr0004。#0021仅有一笔未花费交易,所有权属于地址Addr0005。发送节点建立交易#0022,如表7所示。交易#0022把交易#0020和交易#0021两笔交易中的未花费交易输出一同转给地址Addr0006。
表5
表6
表7
具体步骤如下所示,包括:
步骤301、发送节点确定交易#0022中第一笔交易输入对应的交易输出为交易#0020中的第一笔交易输出,从而确定第一笔交易输入的Pre hash为#0020,Index为0。利用地址Addr0004的私钥对交易#0022进行签名,将签名值Sign4以及公钥Pub4放入交易#0022的验证数组Verifications中,并确定验证索引为0,写入第一笔交易输入中。由于将金额为0.2的未花费交易输出转给地址Addr0006,因此,交易#0022中第一笔交易输出的Mondey为0.2,Address为Addr0006。
步骤302、发送节点确定交易#0022中第二笔交易输入对应的交易输出为交易#0020中的第二笔交易输出,从而确定第二笔交易输入的Pre hash为#0020,Index为1。发送节点判定交易#0020中第二笔交易输出的输出地址与交易#0020中第一笔交易输出的输出地址相同,均为Addr0004,因此无需重复签名,可以直接确定第二笔交易输入中的验证索引为0。同时,交易#0022中第二笔交易输出的Mondey为0.4,Address为Addr0006。
步骤303、发送节点确定交易#0022中第三笔交易输入对应的交易输出为交易#0021中的第一笔交易输出,从而确定第三笔交易输入的Pre hash为#0021,Index为0。利用地址Addr0005的私钥对交易#0022进行签名,将签名值Sign5以及公钥Pub5放入交易#0022的验证数组Verifications中,并确定验证索引为1,写入第一笔交易输入中。由于将金额为0.6的未花费交易输出转给地址Addr0006,因此,交易#0022中第三笔交易输出的Mondey为0.6,Address为Addr0006。
步骤304、发送节点创建交易#0022,其具体数据结构如图4所示。
步骤305、发送节点将交易#0022进行广播。
步骤306、接收节点接收到交易#0022后,对第一条未花费交易输出进行验证。具体的,根据第一条交易输入中的Pre hash和Index,确定第一条交易输入对应于交易#0020的第一条交易输出,即输出地址为Addr0004,金额为0.2。又根据VerifIndex为0,确定第一条交易输入的签名值为Sign4,公钥为Pub4。接收节点确定公钥Pub4为输出地址Addr0004对应的公钥,并利用公钥Pub4对签名值Sign4进行验证。
步骤307、接收节点对第二条未花费交易输出进行验证。具体的,根据第二条交易输入中的Pre hash和Index,确定第二条交易输入对应于交易#0020的第二条交易输出,即输出地址为Addr0004,金额为0.4。同时,根据第二条交易输入的VerifIndex为0,与第一条交易输入的VerifIndex相同,则根据第一条交易输入验证成功,认为第二条交易输入也验证成功。
步骤308、接收节点对第三条未花费交易输出进行验证。具体的,根据第三条交易输入中的Pre hash和Index,确定第三条交易输入对应于交易#0021的第一条交易输出,即输出地址为Addr0005,金额为0.6。又根据VerifIndex为1,确定第一条交易输入的签名值为Sign5,公钥为Pub5。接收节点确定公钥Pub5为输出地址Addr0005对应的公钥,并利用公钥Pub5对签名值Sign5进行验证。
本发明实施例还提供了一种基于UTXO模型的交易装置,如图5所示,包括:
确定模块601,用于确定交易包括N条未花费交易输出,N>0;
创建模块602,用于创建所述交易的数据;所述交易的数据包括交易标识、交易输入、交易输出以及验证数组,所述验证数组中包括未花费交易输出的验证信息,所述交易输入和/或所述交易输出中包括未花费交易输出的验证索引,所述验证索引标示出未花费交易输出的验证信息在所述验证数组中的位置;
广播模块603,用于将所述交易的数据进行广播。
进一步地,所述创建模块602,具体用于:
判断第M条未花费交易输出对应的输出地址是否与第P条未花费交易输出对应的输出地址相同,0≤P<M≤N;
若是,则在所述第M条未花费交易输出的交易输入中写入所述第M条未花费交易输出的验证索引,所述第M条未花费交易输出的验证索引标示出所述第P条未花费交易输出的验证信息在所述验证数组中的位置;
若否,则根据所述第M条未花费交易输出对应的输出地址,计算出所述第M条未花费交易输出的验证信息,将所述第M条未花费交易输出的验证信息加入所述验证数组中,并在所述第M条未花费交易输出的交易输入中写入所述第M条未花费交易输出的验证索引,所述第M条未花费交易输出的验证索引标示出所述第M条未花费交易输出的验证信息在所述验证数组中的位置。
进一步地,所述第M条未花费交易输出的验证信息包含所述第M条未花费交易输出的签名值和第一公钥;
所述创建模块602,具体用于:
利用第一私钥对所述交易的数据进行签名,得到所述第M条未花费交易输出的签名值,所述第一私钥以及所述第一公钥与所述第M条未花费交易输出的输出地址相对应。
本发明实施例还提供另一种基于UTXO模型的交易装置,如图6所示,包括:
接收模块701,用于接收交易的数据,所述交易包括N条未花费交易输出,N>0;
验证模块702,用于根据每一条未花费交易输出作为交易输入时的验证索引,对未花费交易输出的合法性进行验证;所述交易的数据包括交易标识、交易输入、交易输出以及验证数组,所述验证数组中包括未花费交易输出的验证信息,所述交易输入和/或所述交易输出中包括每一条未花费交易输出的验证索引,所述验证索引标示出验证信息在所述验证数组中的位置。
进一步,所述验证模块702,具体用于:
判断第M条未花费交易输出作为交易输入时的验证索引与第P条未花费交易输出作为交易输入时的验证索引在同一笔交易中是否相同,0≤P<M≤N;
若是,则根据所述第P条未花费交易输出验证成功,确定所述第M条未花费交易输出验证成功;
若否,则至少根据所述第M条未花费交易输出的验证索引,确定所述第M条未花费交易输出的验证信息;利用所述第M条未花费交易输出的验证信息对所述第M条未花费交易输出作为交易输入的交易进行验证。
进一步,所述第M条未花费交易输出的验证信息为所述第M条未花费交易输出作为交易输入的交易的签名值;
所述验证模块702,具体用于:
从所述第M条未花费交易输出的交易输入中确定所述第M条未花费交易输出的验证索引;
根据所述第M条未花费交易输出的验证索引,在所述交易的验证数组中确定所述第M条未花费交易输出作为交易输入的交易的签名值,所述第M条未花费交易输出作为交易输入的交易的签名值为利用第一私钥对所述交易的数据进行签名得到的签名值;
利用第一公钥对所述第M条未花费交易输出作为交易输入的交易的签名值进行验证,所述第一私钥以及所述第一公钥与所述第M条未花费交易输出的输出地址相对应。
基于相同的原理,本发明还提供一种电子设备,如图7所示,包括:
包括处理器801、存储器802、收发机803、总线接口804,其中处理器801、存储器802与收发机803之间通过总线接口804连接;
所述处理器801,用于读取所述存储器802中的程序,执行下列方法:
确定交易包括N条未花费交易输出,N>0;
创建所述交易的数据;所述交易的数据包括交易标识、交易输入、交易输出以及验证数组,所述验证数组中包括未花费交易输出的验证信息,所述交易输入和/或所述交易输出中包括未花费交易输出的验证索引,所述验证索引标示出未花费交易输出的验证信息在所述验证数组中的位置;
将所述交易的数据进行广播。
进一步地,所述处理器801具体用于:
判断第M条未花费交易输出对应的输出地址是否与第P条未花费交易输出对应的输出地址相同,0≤P<M≤N;
若是,则在所述第M条未花费交易输出的交易输入中写入所述第M条未花费交易输出的验证索引,所述第M条未花费交易输出的验证索引标示出所述第P条未花费交易输出的验证信息在所述验证数组中的位置;
若否,则根据所述第M条未花费交易输出对应的输出地址,计算出所述第M条未花费交易输出的验证信息,将所述第M条未花费交易输出的验证信息加入所述验证数组中,并在所述第M条未花费交易输出的交易输入中写入所述第M条未花费交易输出的验证索引,所述第M条未花费交易输出的验证索引标示出所述第M条未花费交易输出的验证信息在所述验证数组中的位置。
进一步地,所述第M条未花费交易输出的验证信息为所述第M条未花费交易输出的签名值;所述处理器801具体用于:
利用第一私钥对所述交易的数据进行签名,得到所述第M条未花费交易输出的签名值,所述第一私钥与所述第M条未花费交易输出的输出地址相对应。
本申请实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述任一一项文本标记的方法。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
Claims (14)
1.一种基于UTXO模型的交易方法,其特征在于,包括:
确定交易包括N条未花费交易输出,N>0;
创建所述交易的数据;所述交易的数据包括交易标识、交易输入、交易输出以及验证数组,所述验证数组中包括未花费交易输出的验证信息,所述交易输入和/或所述交易输出中包括未花费交易输出的验证索引,所述验证索引标示出未花费交易输出的验证信息在所述验证数组中的位置;
将所述交易的数据进行广播。
2.如权利要求1所述的方法,其特征在于,所述创建所述交易的数据,包括:
判断第M条未花费交易输出对应的输出地址是否与第P条未花费交易输出对应的输出地址相同,0≤P<M≤N;
若是,则在所述第M条未花费交易输出的交易输入中写入所述第M条未花费交易输出的验证索引,所述第M条未花费交易输出的验证索引标示出所述第P条未花费交易输出的验证信息在所述验证数组中的位置;
若否,则根据所述第M条未花费交易输出对应的输出地址,计算出所述第M条未花费交易输出的验证信息,将所述第M条未花费交易输出的验证信息加入所述验证数组中,并在所述第M条未花费交易输出的交易输入中写入所述第M条未花费交易输出的验证索引,所述第M条未花费交易输出的验证索引标示出所述第M条未花费交易输出的验证信息在所述验证数组中的位置。
3.如权利要求2所述的方法,其特征在于,所述第M条未花费交易输出的验证信息包含所述第M条未花费交易输出的签名值和第一公钥;
所述计算出所述第M条未花费交易输出的验证信息,包括:
利用第一私钥对所述交易的数据进行签名,得到所述第M条未花费交易输出的签名值,所述第一私钥以及所述第一公钥与所述第M条未花费交易输出的输出地址相对应。
4.一种基于UTXO模型的交易方法,其特征在于,包括:
接收交易的数据,所述交易包括N条未花费交易输出,N>0;
根据每一条未花费交易输出作为交易输入时的验证索引,对未花费交易输出的合法性进行验证;所述交易的数据包括交易标识、交易输入、交易输出以及验证数组,所述验证数组中包括未花费交易输出的验证信息,所述交易输入和/或所述交易输出中包括每一条未花费交易输出的验证索引,所述验证索引标示出验证信息在所述验证数组中的位置。
5.如权利要求4所述的方法,其特征在于,所述根据每一条未花费交易输出作为交易输入时的验证索引,对未花费交易输出的合法性进行验证,包括:
判断第M条未花费交易输出作为交易输入时的验证索引与第P条未花费交易输出作为交易输入时的验证索引在同一笔交易中是否相同,0≤P<M≤N;
若是,则根据所述第P条未花费交易输出验证成功,确定所述第M条未花费交易输出验证成功;
若否,则至少根据所述第M条未花费交易输出的验证索引,确定所述第M条未花费交易输出的验证信息;利用所述第M条未花费交易输出的验证信息对所述第M条未花费交易输出作为交易输入的交易进行验证。
6.如权利要求5所述的方法,其特征在于,所述第M条未花费交易输出的验证信息为所述第M条未花费交易输出作为交易输入的交易的签名值;
所述利用所述第M条未花费交易输出的验证信息对所述第M条未花费交易输出作为交易输入的交易进行验证,包括:
从所述第M条未花费交易输出的交易输入中确定所述第M条未花费交易输出的验证索引;
根据所述第M条未花费交易输出的验证索引,在所述交易的验证数组中确定所述第M条未花费交易输出作为交易输入的交易的签名值,所述第M条未花费交易输出作为交易输入的交易的签名值为利用第一私钥对所述交易的数据进行签名得到的签名值;
利用第一公钥对所述第M条未花费交易输出作为交易输入的交易的签名值进行验证,所述第一私钥以及所述第一公钥与所述第M条未花费交易输出的输出地址相对应。
7.一种基于UTXO模型的交易装置,其特征在于,包括:
确定模块,用于确定交易包括N条未花费交易输出,N>0;
创建模块,用于创建所述交易的数据;所述交易的数据包括交易标识、交易输入、交易输出以及验证数组,所述验证数组中包括未花费交易输出的验证信息,所述交易输入和/或所述交易输出中包括未花费交易输出的验证索引,所述验证索引标示出未花费交易输出的验证信息在所述验证数组中的位置;
广播模块,用于将所述交易的数据进行广播。
8.如权利要求7所述的装置,其特征在于,所述创建模块,具体用于:
判断第M条未花费交易输出对应的输出地址是否与第P条未花费交易输出对应的输出地址相同,0≤P<M≤N;
若是,则在所述第M条未花费交易输出的交易输入中写入所述第M条未花费交易输出的验证索引,所述第M条未花费交易输出的验证索引标示出所述第P条未花费交易输出的验证信息在所述验证数组中的位置;
若否,则根据所述第M条未花费交易输出对应的输出地址,计算出所述第M条未花费交易输出的验证信息,将所述第M条未花费交易输出的验证信息加入所述验证数组中,并在所述第M条未花费交易输出的交易输入中写入所述第M条未花费交易输出的验证索引,所述第M条未花费交易输出的验证索引标示出所述第M条未花费交易输出的验证信息在所述验证数组中的位置。
9.如权利要求8所述的装置,其特征在于,所述第M条未花费交易输出的验证信息包含所述第M条未花费交易输出的签名值和第一公钥;
所述创建模块,具体用于:
利用第一私钥对所述交易的数据进行签名,得到所述第M条未花费交易输出的签名值,所述第一私钥以及所述第一公钥与所述第M条未花费交易输出的输出地址相对应。
10.一种基于UTXO模型的交易装置,其特征在于,包括:
接收模块,用于接收交易的数据,所述交易包括N条未花费交易输出,N>0;
验证模块,用于根据每一条未花费交易输出作为交易输入时的验证索引,对未花费交易输出的合法性进行验证;所述交易的数据包括交易标识、交易输入、交易输出以及验证数组,所述验证数组中包括未花费交易输出的验证信息,所述交易输入和/或所述交易输出中包括每一条未花费交易输出的验证索引,所述验证索引标示出验证信息在所述验证数组中的位置。
11.如权利要求10所述的装置,其特征在于,所述验证模块,具体用于:
判断第M条未花费交易输出作为交易输入时的验证索引与第P条未花费交易输出作为交易输入时的验证索引在同一笔交易中是否相同,0≤P<M≤N;
若是,则根据所述第P条未花费交易输出验证成功,确定所述第M条未花费交易输出验证成功;
若否,则至少根据所述第M条未花费交易输出的验证索引,确定所述第M条未花费交易输出的验证信息;利用所述第M条未花费交易输出的验证信息对所述第M条未花费交易输出作为交易输入的交易进行验证。
12.如权利要求11所述的装置,其特征在于,所述第M条未花费交易输出的验证信息为所述第M条未花费交易输出作为交易输入的交易的签名值;
所述验证模块,具体用于:
从所述第M条未花费交易输出的交易输入中确定所述第M条未花费交易输出的验证索引;
根据所述第M条未花费交易输出的验证索引,在所述交易的验证数组中确定所述第M条未花费交易输出作为交易输入的交易的签名值,所述第M条未花费交易输出作为交易输入的交易的签名值为利用第一私钥对所述交易的数据进行签名得到的签名值;
利用第一公钥对所述第M条未花费交易输出作为交易输入的交易的签名值进行验证,所述第一私钥以及所述第一公钥与所述第M条未花费交易输出的输出地址相对应。
13.一种电子设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-3任一所述的方法。
14.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行权利要求1~3任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811502579.6A CN109493057A (zh) | 2018-12-10 | 2018-12-10 | 一种基于utxo模型的交易方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811502579.6A CN109493057A (zh) | 2018-12-10 | 2018-12-10 | 一种基于utxo模型的交易方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109493057A true CN109493057A (zh) | 2019-03-19 |
Family
ID=65709701
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811502579.6A Pending CN109493057A (zh) | 2018-12-10 | 2018-12-10 | 一种基于utxo模型的交易方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109493057A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110349025A (zh) * | 2019-07-11 | 2019-10-18 | 湖南天河国云科技有限公司 | 一种基于未花费交易输出的合约资产防遗失方法及装置 |
CN110675147A (zh) * | 2019-09-11 | 2020-01-10 | 上海唯链信息科技有限公司 | 一种区块链交易方法、电子设备以及存储装置 |
CN112070489A (zh) * | 2020-07-21 | 2020-12-11 | 深圳华数云计算技术有限公司 | 一种多终端共同交易数字货币的方法、系统和存储介质 |
CN113450223A (zh) * | 2021-07-13 | 2021-09-28 | 成都质数斯达克科技有限公司 | 基于utxo模型的交易处理方法、装置、设备及存储介质 |
CN114884734A (zh) * | 2022-05-10 | 2022-08-09 | 中山市当下科技有限公司 | 一种区块链一层数据结构的校验方法 |
CN116051088A (zh) * | 2023-04-03 | 2023-05-02 | 布比(北京)网络技术有限公司 | 基于未花费交易输出模型的交易方法、装置以及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106251216A (zh) * | 2016-07-18 | 2016-12-21 | 恒宝股份有限公司 | 一种用于缓解节点存储压力的方法和系统 |
CN107358424A (zh) * | 2017-06-26 | 2017-11-17 | 中国人民银行数字货币研究所 | 一种基于数字货币的交易方法和装置 |
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 | 丁江 | 跨链数字资产转移方法和终端设备 |
CN108961052A (zh) * | 2018-06-25 | 2018-12-07 | 百度在线网络技术(北京)有限公司 | 区块链数据的验证方法、存储方法、装置、设备和介质 |
-
2018
- 2018-12-10 CN CN201811502579.6A patent/CN109493057A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106251216A (zh) * | 2016-07-18 | 2016-12-21 | 恒宝股份有限公司 | 一种用于缓解节点存储压力的方法和系统 |
US20180097779A1 (en) * | 2016-09-30 | 2018-04-05 | Nec Europe Ltd. | Method and system for providing a transaction forwarding service in blockchain implementations |
CN107358424A (zh) * | 2017-06-26 | 2017-11-17 | 中国人民银行数字货币研究所 | 一种基于数字货币的交易方法和装置 |
CN108154366A (zh) * | 2017-12-25 | 2018-06-12 | 丁江 | 跨链数字资产转移方法和终端设备 |
CN108961052A (zh) * | 2018-06-25 | 2018-12-07 | 百度在线网络技术(北京)有限公司 | 区块链数据的验证方法、存储方法、装置、设备和介质 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110349025A (zh) * | 2019-07-11 | 2019-10-18 | 湖南天河国云科技有限公司 | 一种基于未花费交易输出的合约资产防遗失方法及装置 |
CN110349025B (zh) * | 2019-07-11 | 2023-03-28 | 湖南天河国云科技有限公司 | 一种基于未花费交易输出的合约资产防遗失方法及装置 |
CN110675147A (zh) * | 2019-09-11 | 2020-01-10 | 上海唯链信息科技有限公司 | 一种区块链交易方法、电子设备以及存储装置 |
CN112070489A (zh) * | 2020-07-21 | 2020-12-11 | 深圳华数云计算技术有限公司 | 一种多终端共同交易数字货币的方法、系统和存储介质 |
CN113450223A (zh) * | 2021-07-13 | 2021-09-28 | 成都质数斯达克科技有限公司 | 基于utxo模型的交易处理方法、装置、设备及存储介质 |
CN114884734A (zh) * | 2022-05-10 | 2022-08-09 | 中山市当下科技有限公司 | 一种区块链一层数据结构的校验方法 |
CN116051088A (zh) * | 2023-04-03 | 2023-05-02 | 布比(北京)网络技术有限公司 | 基于未花费交易输出模型的交易方法、装置以及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109493057A (zh) | 一种基于utxo模型的交易方法及装置 | |
US20230370283A1 (en) | Securing blockchain transaction based on undetermined data | |
US20240313947A1 (en) | System for securing verification key from alteration and verifying validity of a proof of correctness | |
CN109741056B (zh) | 一种电子凭证上传的方法及装置 | |
CN111445334B (zh) | 一种区块链系统的聚合签名方法、装置及存储介质 | |
CN111801910A (zh) | 基于证明验证的用于认证链外数据的系统和方法 | |
CN110189128B (zh) | 一种用于区块快速生成的分布式共识的方法和装置 | |
US20220321360A1 (en) | Hash function attacks | |
US20210049715A1 (en) | Blockchain-based data procesing method, apparatus, and electronic device | |
CN111629039A (zh) | 一种区块链共识方法及客户端、背书节点、排序节点 | |
CN109669986A (zh) | 基于区块链的黑名单共享方法、装置、设备和存储介质 | |
CN113924747A (zh) | 区块链交易数据字段验证 | |
CN114982193A (zh) | 使用区块链事务的数字合约 | |
Borkowski et al. | Caught in chains: Claim-first transactions for cross-blockchain asset transfers | |
JP6941691B2 (ja) | 読み書きセットモデルベースのブロックチェーン技術における二重消費問題を回避するための方法および装置 | |
EP3977673B1 (en) | Blockchain transaction comprising runnable code for hash-based verification | |
CN109447636A (zh) | 一种资产转移方法及装置 | |
CN110188572B (zh) | 一种应用于区块链的可消耗凭证的验证方法和装置 | |
US20220239501A1 (en) | Knowledge proof | |
CN110868286A (zh) | 一种基于区块链智能合约生成随机数的方法 | |
EP4333368A2 (en) | Knowledge proof | |
CN109685657B (zh) | 在区块链网络中处理交易的方法和节点设备以及存储介质 | |
CN111311259A (zh) | 票据处理方法、装置、终端及计算机可读存储介质 | |
CN110176998A (zh) | 一种工作量证明的共识方法、装置、设备和存储介质 | |
CN114430830A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190319 |