用于通过区块链网络实现转账的计算机实现的系统和方法与流程

文档序号:28311366发布日期:2022-01-01 00:55阅读:111来源:国知局
用于通过区块链网络实现转账的计算机实现的系统和方法与流程

1.本发明整体涉及经由网络进行资源通信和转账,并且更具体地涉及通过区块链网络以及数字钱包进行转账。本发明特别适合但不限于用于处理在区块链上实现或通过区块链通信的加密货币、代币和其他资源的转账的钱包。本发明提供了提供多种技术优势的装置和技术,包括但不限于提高数字钱包和基于区块链的通信的安全性、多功能性、弹性和效率。


背景技术:

2.在本文中,“区块链”一词涵盖所有形式的基于计算机的电子分布式分类账。这些分类账包括基于共识的区块链和交易链技术、许可和非许可的分类账、共享分类账,及其变体。虽然已提出并开发了其他区块链实施方案,但是区块链技术最广为人知的应用是比特币分类账。尽管出于方便和说明的目的在本文中可能会提及比特币,但需要说明的是,本发明不限于与比特币区块链一起使用,其他的区块链实施方式和协议也属于本发明的范围。“比特币”一词可包括源自或实现比特币协议的任何变体的协议或具体实施的所有实现方式。“用户”一词在本文中可指人员或基于处理器的资源。
3.区块链是一种点对点的电子分类账,其实现为基于计算机的去中心化的分布式系统,所述系统由区块组成,而区块又由交易组成。每个交易都是一种数据结构,该数据结构对区块链系统参与者之间的数字资产控制权的转账进行编码,并且包括至少一个输入和至少一个输出。每个区块都包含前一个区块的哈希值,因此区块被链接在一起,以创建自所述区块链创建以来写入其中的所有交易的永久性的不可更改的记录。每个区块的头包含字段,该字段为该区块提供默克尔根。默克尔根是通过将区块中的交易id对一起反复进行哈希直到达到单个哈希来生成的。此默克尔根提供一种有效机制来验证(verify)交易是否是区块的一部分,因为它允许用户验证特定交易而无需下载整个区块链。
4.交易包括嵌入到其输入和输出中的小程序,称为脚本,这些脚本指定如何以及由谁访问所述交易的输出。在比特币平台上,这些脚本是使用基于堆栈的脚本语言编写的。
5.为了将交易写入区块链,必须对其进行“核实(validate)”。网络节点(矿工)进行工作以确保每个交易均有效,而无效交易则被网络拒绝。安装在节点上的软件客户端通过执行其锁定和解锁脚本对未花费的交易(utxo)执行此核实工作。如果锁定和解锁脚本的执行评估为真,则交易有效,将交易写入区块链。因此,为了将交易写入区块链,该交易必须:i)由接收该交易的第一个节点进行核实,如果该交易通过核实,则此节点将其转发到网络中的其他节点;ii)添加到由矿工建造的新区块中;iii)已挖掘,即已被添加到历史交易的公共分类账中。(注:上述的核实(validation)不应与本文使用的用于意指确认或检查特定交易是否已包含在区块链上的区块中的“验证(verification)”一词混淆)。
6.一旦作为utxo存储在区块链中,用户就可将相关联加密货币的控制权转移到与另一交易中的输入相关联的另一地址。这通常使用数字钱包来完成,该数字钱包存储与用户的加密货币相关联的公钥和私钥对。已知的加密货币钱包有多种形式,包括spv钱包(简易
支付验证、简单支付验证或简易付款验证simplified payment verification)。
7.在爱丽丝和鲍勃之间的基于spv的加密货币交换中,双方使用相同类型的spv钱包。spv钱包存储用户的私钥和公钥、未花费的交易和区块头。spv钱包还具有连接到区块链网络的能力。“区块头”一词是本领域已知的,用于指在区块链交易的区块顶部提供的数据。区块头唯一地标识区块,因此它可定位在区块链上。区块头包含提供整个区块的内容的唯一汇总或指纹的数据字段。区块头包括默克尔根,默克尔根是该区块中所有交易的哈希值。然后,用户能够使用该根搜索默克尔树,以检查(即验证)特定交易是否包含在区块链上的特定区块中,而无需下载整个区块链。
8.spv钱包的一个优点是,它使诸如手机和笔记本电脑的电力和存储受限设备能够在比特币生态系统中运行,因为它只需要检查交易是否已通过验证(因此称为“简易支付验证”),而不是按照其他形式的钱包对区块链进行全面检查。由于spv钱包只下载区块头而不包含任何交易,这将所需的存储空间从159gb(截至2018年11月)减少到43mb,即使比特币规模不断扩大,存储需求也只会以每年4.2mb的速度增长。
9.假设爱丽丝希望向鲍勃发送一些加密货币或代币化资产/资源。当使用传统spv钱包时,爱丽丝和鲍勃之间的通信流程如下:
10.1.爱丽丝创建区块链交易(tx),在输出中指定鲍勃的地址,并为输入(从之前未花费的交易到爱丽丝)提供签名。
11.2.爱丽丝将交易广播到区块链网络。
12.3.鲍勃查询网络以验证交易是否已被接受。
13.本质上,区块链网络充当了爱丽丝的钱包和鲍勃的钱包之间的中介。然而,这不仅仅是资源密集型过程,而且需要网络连接。如果运行爱丽丝钱包的设备由于某种原因离线,则无法完成转账。因此,存在技术挑战,包括但不限于如何提供用于实现从一个实体(例如,计算资源/节点/数字钱包)到另一实体的电子转账的更可靠和有效的机制的方法、系统和设备。


技术实现要素:

14.因此,希望提供一种至少解决这些技术问题的解决方案。现在已设计出这种改进的解决方案。因此,根据本公开,提供了一种如所附权利要求中所限定的系统和对应的方法。根据本公开的实施例,可以提供一种计算机和/或区块链实现的方法以及对应的系统和/或资源。该资源可以是计算机实现的资源或设备。
15.本发明可以提供或布置为促进或实现在区块链网络上或通过区块链网络(在转出方和转入方之间)的资产转账。转出方(资产的发送方)可以称为爱丽丝,而转入方(资产的接收方)可以称为鲍勃。资产可为或可包括任何类型的可转账的电子实体,例如可以经由区块链交易以某种方式进行数字转让的加密货币或代币或任何其他东西的一部分。附加地或替代地,本发明可以被布置为促进或实现区块链交易的验证。优选地,这是spv验证。本发明可以提供区块链实现的简易付款验证方法和对应的系统。
16.对应于本公开的实施例的一种方法,该方法包括以下步骤:
17.验证包含未花费输出(utxo1)的第一交易的默克尔证明;以及
18.在成功验证所述默克尔证明后向区块链发送第二交易,其中所述第二交易包括花
费所述第一交易的所述未花费输出(utxo1)的输入。
19.这些步骤可以由计算机实现的资源来执行。资源可以基本上如本文关于鲍勃bob的描述、或本文所提供的标题为“pos spv钱包”或“分裂钱包”的章节的描述并参考相关附图。资源(和/或计算机实现的资源)可以包括硬件和软件的组合,或者可以基于纯软件。
20.资源在下文中可以被称为鲍勃bob,并且计算机实现的资源可以被称为爱丽丝alice。“成功验证”可以意味着merkle证明建立第一区块链交易存在于区块链上,即已经被挖掘到区块中。
21.为了便于参考,第二交易可以被称为支付交易(payment transaction)。它可以包括至少一个另外的输入,所述至少一个另外的输入花费所述第一交易的至少一个另外的未花费输出(utxo2)或第三交易的未花费输出(utxo3)。换言之,发送到区块链的支付交易可以包括多于一个的输入。这些输入可以从一个或多个其他的交易中花费输出(utxo3)。应当注意,在权利要求中使用的短语“第三交易”应当被解释为意味着“一个或多个另外的交易”,因为在该意义上可以有多于一个的“第三交易
”‑
可以存在从任何数量的交易到第二交易之中的任何数量的输入。
22.本公开的实施例可以包括验证所述第三交易的默克尔证明的步骤。换言之,本发明可以被布置为验证用于输入到支付交易中的输出(utxo)的每个交易的merkle证明。
23.该方法还可以包括以下步骤:经由链下通信接收所述至少一个交易和/或所述第三交易的默克尔路径和/或完整交易数据。术语“链下通信off

chain communication”可以意味着通信不涉及即经由区块链网络和/或区块链本身。
24.该方法还包括存储至少一个公钥、至少一个私钥、和/或至少一个区块头的步骤。
25.该方法还可以包括以下步骤:经由链下通信,从基于计算机/计算机实现的资源(爱丽丝),请求所述第一交易或所述第三交易的所述默克尔路径和/或所述完整交易数据。该请求可以使用交易模板来进行。模板可以包括形成有效区块链交易所需的信息中的一些,而不是全部。基于计算机的资源可以通过更新或完成交易模板来提供所请求的数据。模板也可以被称为“不完整(区块链)交易”。
26.该方法还可以包括以下步骤:经由链下通信并且从所述基于计算机的资源接收:所述第一交易或所述第三交易的所述默克尔路径和/或完整交易数据;用于花费所述第一交易和/或第三交易的至少一个未花费区块链交易输出(utxo)的签名。
27.该第二交易还可以包括用于将加密货币的一部分花费到目的地的找零地址。
28.本公开的实施例还提供了相应的系统。关于本发明的方法描述的任何特征也可以应用于系统的实施例,反之亦然。
29.可以提供计算机实现的系统,该系统包括:处理器;以及存储器,该存储器包括可执行指令,处理器执行所述可执行指令时,使得该系统执行本文所要求保护的计算机实现的方法或所公开的任何实施例。
30.该系统可以包括至少一个简易付款验证钱包。
31.本公开的实施例还提供一种非暂时性计算机可读存储介质,其上存储有可执行指令,计算机系统的处理器执行所述可执行指令时,使得计算机系统至少执行本文公开的本方法的实施例。
32.本发明的这些方面和其他方面将从本文所述的实施例中变得显而易见,并参考本
文所述的实施例进行阐述。现将仅通过举例的方式并参考附图对本公开的实施例进行说明,其中:
附图说明
33.图1示出了根据本公开的实施例的“离线spv钱包”的图示。
34.图2示出了根据本公开的实施例的“在线和离线spv钱包”的图示。
35.图3示出了根据本公开的实施例的“pos spv钱包”的图示。
36.图4示出了根据本公开的实施例的部分和完成的模板交易以及相关联的默克尔证明。
37.图5示出了根据本公开的实施例的在使用分裂spv钱包进行交易时爱丽丝和鲍勃之间的数据流和交互。
38.图6示出了本公开的实施例的在使用中的示意图。
39.图7是示出可实现各种实施例的计算环境的示意图。
40.图8是示出了三个交易和可用于将它们与区块(头)相关联的默克尔路径的示意图。
41.图9示出了传统的spv支付方法。
42.图10示出了根据本公开的实施例的方法的图示。
43.图11示出了现有技术中已知的二叉默克尔树的示例。
44.图12示出了根据现有技术的使用默克尔路径的由根r表示的树中的数据块d1的默克尔存在证明。
具体实施方式
45.现有技术:默克尔树
46.由于本发明充分利用了默克尔树的概念,因此仅以背景的方式提供说明。
47.默克尔树是分层数据结构,能够对数据集合进行安全验证。在默克尔树中,树中的每个节点均被提供索引对(i,j),并且表示为n(i,j)。索引i、j只是与树中的特定位置相关的数字标签。默克尔树的一个重要特征是,其每个节点的构造由以下(简化)方程式控制:
[0048][0049]
其中k=(i+j

1)/2和h为加密哈希函数。
[0050]
根据这些方程式构建的标记的二叉默克尔树如图11所示,从图中可以看到i=j情况对应于叶节点,叶节点只是对应的第i个数据分包d
i
的哈希值。i≠j情况对应于内节点或父节点,它是通过递归哈希和连接子节点直到找到一个父节点(默克尔根)而生成的。
[0051]
例如,节点n(1,4)由四个数据分包(data packet)构造d1,

,d4为
[0052]
n(1,4)=h(n(1,2)||n(3,4))
[0053]
=[h(n(1,1)||n(2,2))||n(n(3,3)||n(4,4))]
[0054]
=[h(h(d1)||h(d2))||h(h(d3)||h(d4))]。
[0055]
树的深度m被定义为树中节点的最低级别,节点的深度m是节点所在的层级。例如,
m
root
=0并且m
leaf
=m,其中在图11中,m=3。
[0056]
默克尔证明
[0057]
默克尔树的主要功能是验证某个数据分包d
i
是n个数据分包d∈{d1,

,d
n
}的列表或集合的成员。验证的机制被称为默克尔证明,包括为给定的数据分包d
i
和默克尔根r获得一组称为默克尔路径的哈希值。数据分包的默克尔路径只是通过反复哈希和串联的方式重建根r所需的最小哈希列表,通常称为“认证路径”。如果验证程序知道所有分包d1,

,d
n
,则可以简单地执行存在证明。然而,这确实需要比默克尔路径大得多的存储开销,并且需要整个数据集可供验证程序使用。使用默克尔路径和使用整个列表之间的比较如下表所示,其中使用了二叉默克尔树,并假设数据块的数量n正好等于2的整数幂。如果不是这种情况,默克尔证明所需的哈希数在每个实例中都会相差
±
1。
[0058][0059]
表:默克尔树中的叶节点数与默克尔证明所需的哈希数之间的关系。
[0060]
在这个简化场景中(其中数据分包的数量等于叶节点的数量),已发现,计算默克尔证明所需的哈希值的数量以对数方式缩放。显然,计算涉及log
k
n哈希的默克尔证明比存储n个数据哈希值并计算简单证明要高效和实用得多。
[0061]
方法
[0062]
如果给定默克尔根r,则希望证明数据块d1属于由r表示的集合可以执行默克尔证明如下
[0063]
i.从可信源获得默克尔根r。
[0064]
ii.从源获得默克尔路径γ。在这种情况下,γ是哈希值的集合:
[0065]
γ={n(2,2),n(3,4),n(5,8)}。
[0066]
iii.使用d1和γ计算默克尔证明如下:
[0067]
a.对数据块进行哈希以得到:
[0068]
n(1,1)=h(d1)。
[0069]
b.与n(2,2)串联(concatenate)并进行哈希以得到:
[0070]
n(1,2)=h(n(1,1)||n(2,2))。
[0071]
c.与n(3,4)串联并进行哈希以得到:
[0072]
n(1,4)=h(n(1,2)||n(3,4))。
[0073]
d.与n(5,8)串联并进行哈希以得到根:
[0074]
n(1,8)=h(n(1,4)||n(5,8)),
[0075]
r

=n(1,8)。
[0076]
e.将所计算的根r

与(i)中获得的根r进行比较:
[0077]
i.如果r

=r,则确认树中存在d1,从而确认数据集
[0078]
ii.如果r

≠r,则证明失败,无法确认d1是的成员。
[0079]
这是一种有效机制,可以为作为由默克尔树及其根表示的数据集的一部分的某些数据提供存在证明。例如,如果数据d1对应于区块链交易,并且根r作为区块头的一部分公开可用,那么可以快速证明该交易包含在该区块中。
[0080]
作为示例性默克尔树的一部分,验证d1存在的过程如图12所示,该图显示了使用默克尔路径由根r表示的树中数据块d1的默克尔存在证明。这表明对给定的块d1和根r执行默克尔证明,仅使用必要的最少哈希值就可以有效地“向上”遍历默克尔树。
[0081]
本发明使用这些技术来提供更有效和更安全的验证解决方案,现在将注意力转向讨论。
[0082]
简易支付验证(spv)
[0083]
由于本发明提供了改进的spv解决方案,为了便于参考,现在提供已知spv验证技术的概述。在下文中,考虑爱丽丝(顾客)和鲍勃(商户),他们希望在某些商品的销售点进行交易。如nakamoto白皮书(“比特币:点对点电子现金系统”,satoshi nakamoto,[2008]www.bicoin.org/bitcoin.pdf)中所述,使用传统方法使用简易支付验证(spv)来研究这种交互是如何发生的。稍后在题为“发明概述”的部分中,关于本发明的说明性实施例描述相同的交互。在这两种情况下,考虑三个区块链交易(tx)的作用。两个交易具有爱丽丝拥有的可花费的输出(utxo):
[0084]
·
tx1

具有可花费的输出(vout

1)的交易
[0085]
·
tx2

具有可花费的输出(vout

0)的交易
[0086]
这些交易tx1、tx2在本文将被称为输入交易,简明地说,它们是由一些后续交易(例如,tx3)的输入所花费的输出组成的交易。
[0087]
第三区块链交易为支付交易:
[0088]
·
tx3

使用vout

0和vout

1作为其两个输入和一个输出并向鲍勃支付的交易。为了更简单地演示本发明,只有两个输入和一个输出。
[0089]
图8中示意性地示出了,这三个交易以及可用于将它们与区块(头)相关联的默克尔路径。
[0090]
spv的基本概念自nakamoto白皮书以来就已存在,并在最初的比特币客户端(v0.1,2009)中实现。本质上,spv利用了比特币区块链的两个属性:
[0091]
1.默克尔证明,其可很容易地用来验证给定交易是否包含在默克尔树中并由默克尔根表示;以及
[0092]
2.区块头,其通过包含交易的默克尔树的默克尔根来表示交易区块。
[0093]
通过结合这两种属性,轻量级比特币客户端只需维护整个区块链的区块头副本,而不是整个区块,即可验证交易已被网络处理。为了验证给定交易已被处理并包含在区块中,spv客户端仅需以下各项:
[0094]
·
最新区块头的完整列表;
[0095]
·
所考虑的交易的默克尔路径。
[0096]
从属性1可以看出,spv用户可以验证给定交易是默克尔树的一部分(由默克尔根表示),只需执行上一部分中解释的默克尔路径认证证明即可。然后,从属性2中可以看出,如果spv客户端具有包含此默克尔根的有效区块头,则该交易也是区块链中区块的一部分。在比特币中执行这种类型的支付验证在本文被称为执行“spv检查”。
[0097]
nakamoto指定的这种spv机制通知spv客户端实现方式的现有方法,包括在销售点的方法。重要的是,spv实现方式中的最新技术基于这样一种范例,即用户通过确认(在区块链上的适当深度,例如6)支付已包含在区块中来验证已收到支付。实际上,这是对交易的广播后检查,以验证它是否已被挖掘。
[0098]
相比之下,本发明要求在广播之前对交易的输入执行必要的spv检查。这种重点的转移大大减少了网络在处理无效交易时的负担和流量。
[0099]
现有spv系统中的第二个重要范例是,spv客户端必须查询网络上的完整节点,以获得spv检查所需的默克尔路径。这可以在比特币开发者指南(https://bitcoin.org/en/developer

guide)中看到,该指南指出“spv客户端知道默克尔根和相关联的交易信息,并从全节点请求相应的默克尔分支”。
[0100]
本发明的实施例提供涉及spv检查的机制和方法,通过规定轻量级比特币客户端用户保留、维护或至少有权访问与其所拥有的未花费的交易输出相关的默克尔路径的自己的副本,从而消除网络上的这一负担。
[0101]
实现spv(在交易点)的传统方法如下,并参考图9:
[0102]
[1]消息:鲍勃向爱丽丝
[0103]
·
鲍勃(商户)向爱丽丝(顾客)发送他的公钥地址。除了作为鲍勃选择的赎回脚本的哈希值提供的任何其他支出条件之外,他的消息还可能包括要支付的金额。
[0104]
·
爱丽丝还将支付交易tx3的交易id txid3传送给鲍勃(未示出)。
[0105]
[2]p2p网络介导(mediate)爱丽丝和鲍勃之间的交换:
[0106]
[2.i]消息:爱丽丝向p2p网络
[0107]
·
爱丽丝将tx3广播到网络。
[0108]
[2.ii]消息:鲍勃向p2p网络
[0109]
·
鲍勃查询网络以检查tx3是否被接受用于挖掘区块链。
[0110]
·
鲍勃发送连续查询[2.ii],直到他对网络认为支付有效感到满意。需注意,他可能在[2.i]发生之前就开始查询了。
[0111]
·
如果鲍勃满意,他可以将交易视为完成,而无需任何一方等待下一个区块被挖掘。
[0112]
[3]spv检查(消息):鲍勃向p2p网络
[0113]
·
鲍勃等待下一区块被挖掘,并在网络上广播时下载新的区块头。
[0114]
·
鲍勃向网络发送“spv检查”请求。这是对于与tx3相对应的默克尔路径的请求,该路径将其链接到最近挖掘的区块中的默克尔根。
[0115]
·
如果网络可为鲍勃提供默克尔路径,则他可以使用他的spv钱包自己计算默克尔证明并检查支付tx3是否已处理。
[0116]
图9中示出了此通信流程。应注意的是,[2.i]、[2.ii]和[3]是由p2p网络介导的,因此对网络上的流量有贡献。还应注意的是,在现有的spv范例中,执行必要的spv检查[3]:
[0117]
·
在支付(tx3)提交后;
[0118]
·
关于支付(tx3)本身;
[0119]
·
在提供默克尔路径的其他网络对等方的帮助下。
[0120]
现在将这种已知的方法与本发明的方法进行对比。
[0121]
发明概述
[0122]
本发明为使用低带宽spv系统在区块链网络(为方便起见,以下将其称为“比特币”网络)上进行的验证提供了改进的安全性解决方案。根据本发明的一个实施例,资源的发送方(例如,顾客)不需要在线,接收方(例如,商户)就可以创建和/或接受交易。仅接收方需要在线。为了方便和便于参考,将使用“顾客”或“爱丽丝”一词代替“发送方”,并使用“商户”或“鲍勃”代替“接收方”。
[0123]
相对于传统spv交易,本发明在各方之间采用了新颖的通信流程,因为它仅要求将商户的钱包连接到网络。这是通过商户的钱包创建模板(可称为“不完整交易”)来实现的,该模板包含顾客需要提供的信息,例如找零地址(change address)、签名等。一旦商户从顾客处收到此请求信息,他就会将交易广播到网络。
[0124]
因此,本发明引起了在比特币网络上的在一简单支付验证期间的在交易方与网络之间的通信和交换过程的根本变化,从:
[0125]
商户

顾客

网络

商户
[0126]
到:
[0127]
商户

顾客

商户

网络
[0128]
爱丽丝和鲍勃可以使用例如wo 2017145016中所描述的秘密共享协议来安全地交换消息。
[0129]
这一过程中的变化产生了一个技术问题,即顾客钱包和商户钱包都需要一种新颖的设计。因此,本发明的实施例至少提供以下内容:
[0130]
1.爱丽丝的新颖顾客钱包(称为“离线钱包offline wallet”):它存储爱丽丝的公钥、私钥、包含可花费的输出的交易、所有区块头,以及重要的是,所存储交易的默克尔路径(删除了爱丽丝连接到网络的要求)
[0131]
2.新颖的鲍勃商户钱包(称为“销售点(pos)钱包point of sale wallet”):它存储鲍勃的公钥和所有区块头。
[0132]
现在提供了这些组件的更详细描述。
[0133]
参考图10,提供了根据本发明的实施例的用于实现spv(在交易点)的例示性方法,如下所示:
[0134]
[1]消息:鲍勃向爱丽丝
[0135]
·
鲍勃向爱丽丝发送支付交易模板(模板tx3),并向爱丽丝请求以下信息:
[0136]
o所有输入交易(tx1和tx2)的完整交易数据,包括至少一个
[0137]
输出,爱丽丝希望将其用作支付(tx3)的输入;
[0138]
o所有输入交易(tx1和tx2)的默克尔路径,将它们链接到与
[0139]
相应区块头相关联的相应默克尔根;
[0140]
o完成(即填写了模板)的支付交易(tx3)。
[0141]
·
需注意,鲍勃向爱丽丝请求信息,而不是发送他的地址。
[0142]
[2]消息:爱丽丝向鲍勃
[0143]
·
爱丽丝将所请求的信息发送给鲍勃:
[0144]
o所有输入交易(tx1和tx2)的完整交易数据,包括至少一个
[0145]
输出,爱丽丝希望将其用作支付(tx3)的输入;
[0146]
o所有输入交易(tx1和tx2)的默克尔路径,将它们链接到相
[0147]
应的区块头;
[0148]
o完成(即填写了模板)的支付交易(tx3)。除了填写模板,
[0149]
爱丽丝还提供了她的签名。
[0150]
[3]spv检查(本地):鲍勃
[0151]
·
鲍勃使用以下各项对输入交易tx1和tx2执行spv检查:
[0152]
o交易tx1和tx2;
[0153]
o对应的默克尔路径,路径1和路径2;
[0154]
o鲍勃的本地区块头列表。
[0155]
·
这些检查由鲍勃在本地执行,而不通过p2p网络进行;
[0156]
·
在优选实施例中,在此阶段,鲍勃还对他从爱丽丝收到的支付tx3执行适当的检查,以确保:
[0157]
o支付tx3与鲍勃预期的一样;
[0158]
o爱丽丝的签名对该交易有效。
[0159]
[4]消息:鲍勃向p2p网络
[0160]
·
鲍勃将支付交易(tx3)广播到p2p网络。在现有范例中,爱丽丝将交易提交给网络。
[0161]
·
只有在tx3所有输入的spv检查[3]都是肯定的情况下,才能执行此操作。
[0162]
[5]spv检查(消息):鲍勃向p2p网络
[0163]
·
此步骤与spv方法的现有范例中的步骤[3]相同(见前面)。
[0164]
图10中示出了此通信流程。应注意的是,只有[4]和[5]是由p2p网络介导(mediate)的。步骤[5]只不过是对现有spv技术的重复,并不是所提出方法的必要特征;为了完整性和现有范例与本发明之间的区别,这里包括本发明。
[0165]
需注意,根据本发明的实施例,执行必要的spv检查[3]:
[0166]
·
在支付交易(tx3)提交之前;
[0167]
·
关于到支付交易(tx3)的输入交易(tx1和tx2);
[0168]
·
无需网络对等方的帮助即可提供默克尔路径(由爱丽丝提供)。
[0169]
本发明的实施例的特征包括但不限于:
[0170]
·
爱丽丝不需要在线,也不需要自己向网络提交任何信息。这对爱丽丝来说更可靠。它还允许她使用无法连接到网络的设备,诸如智能卡。
[0171]
·
包含默克尔路径允许鲍勃快速拒绝来自爱丽丝的任何无效输入。通过拒绝提交具有无效默克尔路径的“垃圾邮件”交易,这减轻多余的网络流量。
[0172]
·
鲍勃与网络的连接可能特别快,因此他核实交易的速度可能更快。
[0173]
·
鲍勃创建交易供爱丽丝签名,因此对交易的内容有更多的控制权,例如,他可以选择支付更多的交易内费用,这将确保该交易被网络接受。
[0174]
·
鲍勃的钱包不需要包含任何私钥。这提高了安全性,因为私钥不能被未经授权的第三方访问或泄露。
[0175]
·
向网络提交交易的责任依赖于鲍勃。
[0176]
·
爱丽丝的spv钱包必须有私钥,并且能够对交易进行签名。因此,它必须有足够
的处理能力来进行椭圆曲线点乘运算。
[0177]
现在更详细地考虑本发明的各种组件。
[0178]
离线spv钱包
[0179]
离线spv的实施例在图1中示意性地示出,并且包括以下特征:
[0180]
1.tx

预加载的完整交易数据,包含爱丽丝可用的未花费的交易输出。此完整交易数据与默克尔路径一起构成默克尔证明,证明爱丽丝正在花费的交易是有效的。对整个交易进行哈希将得到交易标识(txid),这是爱丽丝希望完成的新交易的输入数据的一部分。需注意,仅提供txid是不够的,因为鲍勃必须能够验证txid确实是交易的哈希值。这只有在她向鲍勃提供完整交易数据时才可能,因此她必须存储它或者至少在需要时可以访问它。
[0181]
2.私钥/公钥

钱包必须有权访问一组私钥以便对交易输出进行签名,还必须有权访问公钥以在进行交易时指定找零地址。
[0182]
3.默克尔路径

包含交易输出(utxo)的每个交易的(完整)默克尔路径。这将被商户的销售点钱包用来验证tx是否有效。应注意的是,虽然此钱包提供的默克尔证明并不能防止双重花费,但它确实充当一种快速失败机制,抵御垃圾邮件攻击,从而提高了钱包的稳健性和安全性。
[0183]
4.最少处理

离线spv钱包需要对未花费的交易进行签名,以便使用它们。这要求离线钱包(及其安装的设备)能够实现诸如ecdsa的加密算法,这意味着需要足够的处理能力来执行椭圆曲线点乘运算和计算哈希函数。
[0184]
5.区块头(可选的)

离线spv钱包可能希望包含区块头,以验证向销售点spv钱包的支付已被处理。这还需要在与销售点钱包交互后存储txid和默克尔路径。
[0185]
在一个或多个实施例中,上述内容可实现为同时具有在线和离线状态或功能的钱包。当钱包需要更新其utxo和默克尔路径集时,这可能是有利的。
[0186]
在这样的实施例中,爱丽丝的钱包可以通过与传统spv钱包相同的方式暂时连接到网络来下载数据。这在图2中示出,为方便起见,可以将其称为在线和离线spv钱包。
[0187]
一旦连接,爱丽丝的钱包就可以下载完整交易、默克尔路径和区块头。本领域中已知的具有1个输入和2个输出的标准p2pkh交易为226字节,区块头为80字节,并且包含100,000个交易的区块中的交易的默克尔路径大约为560字节。将这三者结合起来意味着更新爱丽丝的spv钱包只需要为每个新输入下载不到1mb的数据。这甚至可以通过低带宽连接实现,这是非常有利的。
[0188]
使用此实现方式的钱包是有利的,因为它提供了能够使用区块链促进离线支付和验证的益处,同时保持在需要时连接到网络的能力。额外的在线状态可用于更新区块头列表、获得新的tx和相关联的默克尔路径,甚至在需要时发送交易。
[0189]
在线和离线spv有多种可能的用例,包括软件应用程序和非接触式支付卡。
[0190]
pos spv钱包
[0191]
pos spv钱包被设计来实现鲍勃接受来自爱丽丝的转账所需的最低功能,爱丽丝正在使用如上所述的离线spv钱包。这些要求是鲍勃必须能够:
[0192]
·
生成销售点交易模板。
[0193]
·
计算与区块头相关联的默克尔证明。
[0194]
·
连接并广播到网络,包括对utxo集的查询。
[0195]
·
管理接收支付的公钥地址
[0196]
·
更新他的包含爱丽丝的utxo的完整tx数据列表。
[0197]
根据图3所示的原理图设计,pos spv钱包满足上述所有要求,并包括以下特征:
[0198]
1.区块头

pos spv钱包维护与区块链中的区块相对应的区块头数据列表的最新副本。当呈现交易及其默克尔路径时,pos spv钱包可以通过对默克尔根重复哈希来执行简单的默克尔证明。
[0199]
通过将此根与相关区块头中的根进行比较,鲍勃拥有一种有效的快速失败机制来检测错误或欺诈性支付。
[0200]
2.网络连接

pos spv钱包具有连接网络的能力。这包括(但不限于)向区块链网络广播新签名交易以及查询当前utxo集中是否存在特定utxo的能力。
[0201]
3.公钥存储

pos spv钱包只需要存储鲍勃想要接收资产或支付的公钥地址。这可以通过多种方式来完成,例如,通过使用确定性秘密(诸如在wo 2017/145016中公开的)或使用分层确定性钱包结构。
[0202]
通过在销售点仅存储公钥地址而不是相关联的私钥,“有卡”交易的安全性大大提高,因为鲍勃的私钥不容易被泄露,因此资金受到保护。
[0203]
4.最少处理

pos spv钱包只需要根据爱丽丝填写的模板执行最低限度的merkle证明处理。
[0204]
这大大减少了迭代和处理完整块以独立获得默克尔路径的负担,从而加快了销售点/交易流程,加快了资源在网络上的转移,并提高了鲍勃和爱丽丝的效率。
[0205]
应注意的是,在至少一个实施例中,销售点spv钱包将维护整个区块头列表的副本,以确保鲍勃始终能够针对区块链历史中的任何交易在默克尔路径上执行spv检查。然而,鲍勃可能选择不保留完整区块头列表,例如那些对应于不包含具有可花费输出的交易的区块。在这种情况下,应理解,鲍勃可能需要偶尔查询第三方以获得他还没有的区块头。在下一部分中,详细说明鲍勃根据一个或多个实施例发送给爱丽丝的商户销售点模板,并且应当理解,如果鲍勃没有所有区块头的完整列表,则他可以将对与她未花费的交易输出相关联的区块头的请求合并到此模板中。
[0206]
pos spv钱包模板
[0207]
转到图4,鲍勃的pos spv钱包以以下格式为爱丽丝的离线(或离线/在线)钱包请求信息:
[0208]
1.tx/utx

来自爱丽丝的可花费交易的完整交易数据(如上所述)。
[0209]
2.交易模板

部分完整的区块链交易,包括(至少)鲍勃的输出地址和爱丽丝请求的加密货币数量。为了完成交易,爱丽丝的离线钱包必须(至少)提供来自她的未花费的交易输出中的txid、每个要使用的可花费的tx输出的有效签名以及找零地址。
[0210]
3.默克尔路径

当与完整的、已完成的交易结合时,可以构建默克尔证明来验证爱丽丝的tx是否包含在区块中,并且因此是有效的
[0211]
需注意,在最简单的情况下,爱丽丝需要向鲍勃提供有效支付交易tx3,以便在p

o

s处交换商品。根据本发明的至少一个实施例,鲍勃提供商户模板以促进这一点,但也可以想到不使用模板。例如,如果爱丽丝事先已知道价格和鲍勃的地址,则她可以构建她的支付并将支付直接传输给鲍勃。爱丽丝还可以提供所需的签名和输出点引用,而无需显式地

填写”模板本身。
[0212]
完整交易(参见图4中的(1))和默克尔证明(参见图4中的(3))可以由爱丽丝发送并由鲍勃处理。这可以与爱丽丝完成鲍勃的模板(参见图4中的(2))并行并独立完成。
[0213]
延迟的交易提交:
[0214]
在某些情况下,例如对于在线零售商,定期分批提交支付交易可能是有利的。出于技术原因,诸如等待改进/最佳网络连接可用等,出于会计目的或为了降低产生的交易费用的总价值,这可能是有益的。
[0215]
对于商户鲍勃,这不会带来额外的挑战,但对于顾客爱丽丝,这意味着在鲍勃最终将签名交易提交到网络之前,她无法使用与爱丽丝的找零地址相关联的加密货币。
[0216]
该问题的解决方案是鲍勃在他提供给爱丽丝的模板中指定处理交易的人为延迟。爱丽丝的离线钱包可以将此解释为,在将批量交易提交到网络之前,商户无法在预定时间内使用向鲍勃进行支付所产生的零钱。应注意的是,在这种情况下,鲍勃没有额外的风险,因为如果商户在提交该批次交易之前发现双重花费的证据,则可以取消交付购买的商品。
[0217]
pos spv钱包的扩展

分裂钱包
[0218]
作为上述pos spv钱包的扩展,鲍勃可能希望使用几个具有不同功能的连接钱包,这些钱包可以被视为单个分裂钱包(split

wallet)系统。
[0219]
因此,本发明的某些实施例通过引入可以协调一个或多个销售点钱包的更高级主spv而建立在销售点(p

o

s)spv的基本概念上。主spv与一个或多个p

o

s spv的组合在本文将被视为“分裂钱包”系统。
[0220]
根据本发明的实施例的分裂钱包系统包括至少一个pos spv钱包,其充当支付终端,由主spv组件协调。主spv的功能使钱包能够:
[0221]
·
存储与p

o

s spv的公钥地址相关联的私钥。
[0222]
·
计算与区块头相关联的默克尔证明。
[0223]
·
连接并广播到区块链网络,包括对utxo集的查询。
[0224]
·
与用作支付终端的至少一个pos spv钱包通信。
[0225]
与所有简单支付验证系统一样,主钱包应能够执行好的spv的所有基本功能,诸如检查给定交易的默克尔存在证明。这意味着鲍勃可以检查他从销售点广播的任何交易是否已被网络接受并包含在区块中。然而,重要的是,根据本发明的实施例的主钱包与至少一个更简单的pos spv钱包通信并协调其处理的支付。
[0226]
对于主spv来说,为鲍勃的支付地址存储私钥是有利的。当使用分裂钱包系统时,这使得鲍勃的支付处理具有更大的安全性。然而,存储鲍勃的私钥是主钱包的可选功能,其主要功能是聚合和协调来自多个销售点钱包的支付。
[0227]
在这种商户分裂钱包的实现方式中(仅使用基本主spv),商户与顾客的交互没有严格修改。pos spv钱包仍必须对默克尔路径执行相同的检查,并向网络发出关于utxo集的相同查询。过程中的差异包括:
[0228]
·
爱丽丝和鲍勃使用的p

o

s spv终端的选择。
[0229]
·
主spv应与后台的区块链持续同步。
[0230]
·
与鲍勃的支付地址相关联的私钥从主钱包接收专门的管理。这为先前仅在销售点钱包存储公钥地址所引入的安全性添加了结构。
[0231]
应注意的是,出于安全考虑和实用主义考虑,作为分裂钱包实现方式的一部分使用的主钱包通常驻留与销售点spv不同的位置,诸如公司后台或总部。商户

顾客交互可以可视化,如图5所示。
[0232]
如先前所讨论的,使用简单主spv作为商户分裂钱包的一部分的这种实现方式对鲍勃有实用价值,但如果分裂钱包要提供适当级别的双重花费保护,则仍然依赖于网络来响应utxo集的查询。
[0233]
这可以根据一个或多个实施例来解决,在该实施例中,主spv被更强大类型的主钱包取代,该类型的主钱包还保存其自己的内存池副本。配备这种主钱包的分裂钱包架构不需要查询网络来检查顾客的utxo是否是当前utxo集的一部分。
[0234]
拥有自己的内存池副本的主钱包的功能类似于经典的非挖掘“全节点”客户端,但有利的是,它不需要保留区块链的完整副本。相反,这种类型的主钱包只保留区块头和它自己的内存池本地副本。内存池的副本可以通过与网络同步在本地构建,也可以来自可信的第三方或服务。
[0235]
使用带有自己的内存池副本的主spv钱包实现分裂钱包,从商户的角度改变了商户

顾客交互。
[0236]
与图5相比,上面描述的交互的主要变化体现在步骤4和5中:
[0237]
·
在步骤4中,商户只向网络广播交易,而不是添加utxo集的附加查询
[0238]
·
在步骤5中,商户现在通过检查内存池中是否存在冲突交易来对顾客交易的有效性进行自己的检查。然后,商户可以基于其同步内存池副本的状态决定采取什么行动。
[0239]
本发明在使用中的图示
[0240]
考虑爱丽丝想从鲍勃那里买东西的典型商户

顾客交互。根据本发明的一个实施例,该过程按如下概述并参考图6进行:
[0241]
1.鲍勃创建了部分完成的区块链交易并向爱丽丝请求以下信息。以下信息可以打包在一起作为模板供爱丽丝填写:
[0242]
a.爱丽丝为了完成购买将花费的tx输出
[0243]
b.爱丽丝的(比特币)找零地址
[0244]
c.爱丽丝的签名
[0245]
d.tx的默克尔路径(这不构成交易的一部分)
[0246]
2.爱丽丝通过提供所需信息来完成模板。
[0247]
3.鲍勃执行默克尔证明以检查爱丽丝提供的tx的有效性。如果证明无效,则鲍勃知道爱丽丝的tx在区块链中从未有效过,他拒绝交易。有利的是,这是一种快速失败机制。
[0248]
4.鲍勃将完整交易广播到网络并查询utxo集。
[0249]
a.该广播允许矿工开始尝试将交易挖掘到区块中。
[0250]
b.该查询询问爱丽丝提供的表面上有效的utxo是否仍在utxo集中。
[0251]
这是一种防止爱丽丝双重花费的机制。
[0252]
5.网络响应鲍勃的utxo查询。这允许鲍勃采取以下行动之一:
[0253]
a.如果爱丽丝的utxo仍是utxo集的一部分,则鲍勃可以接受支付,而双重花费的风险最小。
[0254]
i.通过在某个时间间隔τ内继续使用此查询轮询网络节点,可以将鲍勃承担的风
险降至最低。
[0255]
ii.可以利用贝叶斯分析来确保鲍勃在某个置信区间内查询大多数诚实节点。
[0256]
b.如果爱丽丝的utxo并非utxo集的一部分,则鲍勃将拒绝爱丽丝的支付。
[0257]
如上面所提及的,本发明的实施例适合以多种形式使用和实施。这些形式可包括例如支付卡。
[0258]
如本领域所知,传统spv钱包通过检查其在区块链中的深度来验证交易并非双重花费,这是通过查询网络来实现的。一旦交易被矿工核实并包含在区块中,该交易就有1个确认。区块链中每增加一个区块,确认数就会增加1,而每增加一个新的确认数,双重花费的风险就会降低。传统spv钱包会将交易显示为“n/未确认”,直到有6个确认。
[0259]
然而,默认的6确认(6confirmation)规则并非比特币的基础。并非所有商户都希望等待6个区块(甚至1个区块)生成后才对支付感到满意。“0

conf”是本领域中用来表示尚未包含在区块中的交易的术语。一旦爱丽丝完成她的交易,她就会将交易广播到网络,鲍勃应(至少)能够在内存池中找到交易。
[0260]
本发明将广播交易的负担转移给接收方鲍勃,而不是发送方爱丽丝,从而最小化所需的cpu并改善爱丽丝的体验。鲍勃对交易过程有更大程度的控制,因为他并不需要依赖爱丽丝与网络的连接,但也没有足够的控制权来损害爱丽丝的安全。本质上,爱丽丝(仅)有权通过提供数字签名来接受或拒绝交易。
[0261]
默克尔路径检查并不能防止双重花费,因为只有当鲍勃看到交易被网络中继并且在内存池中时,才会到达0

conf。相反,它充当一种快速失败机制,允许鲍勃立即拒绝花费不存在的utxo的尝试。这很有用,因为它可以防止鲍勃被用作垃圾邮件攻击的中介,特别是因为如果连接不良,广播和查询完整节点所需的时间可能会超过几秒钟。
[0262]
随着离线支付的实现,预付费智能卡等硬件可以集成到比特币生态系统中。支付卡需要数据容量来存储私钥以及utxo、完整交易和默克尔路径。为了实现ecdsa签名算法,支付卡还需要一些处理能力。表1列出了提交时可用的一些电子卡类型的列表。
[0263][0264]
表1:典型支付卡规格
[0265]
双重花费保护
[0266]
假设顾客爱丽丝希望在商店中用加密货币交换实物商品。传统上,爱丽丝在销售点(pos)向区块链网络发送交易,而商户鲍勃只有在他看到此交易的以下情况时才允许爱丽丝带着商品离开
[0267]
(a)被网络接受后返回给他;或
[0268]
(b)在区块内得到确认(或,对于n

conf,n个区块深)。
[0269]
在场景(a)中,鲍勃知道爱丽丝对他的支付交易是有效的,矿工们将尝试将此支付挖掘到区块中。尽管这并不能保护鲍勃免受爱丽丝远程提交冲突交易所引发的简单双重花费的影响,但该场景与传统的基于区块头的spv兼容。
[0270]
在场景(b)中,鲍勃知道支付交易是有效的,并且没有双重花费。然而,这需要鲍勃运行全节点,并原位下载下一个区块。此外,在比特币网络上,这平均需要10分钟,然后爱丽丝才能带着商品离开场所。
[0271]
应该注意的是,在这个问题陈述中,假定0

conf安全性对于鲍勃来说是令人满意的,因为试图减轻的攻击是爱丽丝的简单双重花费。需要一个或多个区块来减轻不同的攻击向量,即第三对手卡罗尔的攻击向量,它使整个网络不堪重负。
[0272]
下表说明了对于这种顾客

商户交互,场景(a)和(b)是如何独立地被接受的。下表显示了场景a)和b)的交易特征:
[0273]
因子场景(a)场景(b)针对鲍勃的双重花费保护否可接受<10s平均交易时间可接受否<10m平均交易时间可接受否spv兼容*(鲍勃)可接受否spv兼容*(爱丽丝)可接受可接受
[0274]
*这意味着该方没有全节点要求。对于大多数交易,只有满足所有这些标准的解决方案才能同时被鲍勃(商户)和爱丽丝(顾客)接受。
[0275]
本文所公开的商户pos钱包的实施例提供以下优点:
[0276]
·
针对商户的双重花费保护
[0277]
·
即时(<<10s)平均交易时间
[0278]
·
顾客和商户都可以在销售点使用spv钱包。
[0279]
因子场景(a)场景(b)商户spv针对鲍勃的双重花费保护否是是<10s平均交易时间是否是<10m平均交易时间是否是spv兼容*(鲍勃)是否是spv兼容*(爱丽丝)是是是
[0280]
可以设想,本发明的实施例能够提供性能和结果,这将显著改善现有的spv/加密货币交易率,并且至少在即时性方面与现有的芯片和密码/非接触式终端支付交互相媲美。
[0281]
此外,本发明还允许在大约一小时内(即,6

conf)以高度确定性考虑支付的清算和批准。这远远优于目前长达60天的支付清算时间,即visa和万事达卡清算时间。
[0282]
可变风险
[0283]
作为商户,鲍勃可以校准在销售点接受支付的延迟。通过选择最小轮询时间间隔τ,他还设置了他可以接受的双重花费风险的概率上限。这可以提高商户支付处理的效率和灵活性。
[0284]
此外,鲍勃可以在生成模板时设置交易的挖掘费用。谁支付此费用并不一定重要,
但该值可以用作将双重花费风险设置为商户认为可接受的水平的参数。
[0285]
总的来说,销售点时间延迟和交易的挖掘费用是可以由商户设置并由顾客数字签名同意的两个参数,可以根据具体情况有效地校准效率和风险。例如,这可能取决于待交换商品的价值。
[0286]
现在转到图7,提供了可用于实施本公开的至少一个实施例的计算设备2600的说明性简化框图。在各种实施例中,所述计算设备2600可用于实现以上示出和说明的任何系统。例如,所述计算设备2600可配置为用作数据服务器、网络服务器、便携式计算设备、个人计算机或任何电子计算设备。如图7所示,计算设备2600可包括具有一级或多级高速缓存的一个或多个处理器以及存储器控制器(统称为2602),所述存储器控制器可被配置为与包括主存储器2608和永久存储器2610的存储子系统2606通信。如图所示,主存储器2608可以包括动态随机存取存储器(dram)2618和只读存储器(rom)2620。存储子系统2606和高速缓存存储器2602可用于存储信息,诸如与本公开中所描述的交易和区块相关联的细节。处理器2602可用于提供本公开中描述的任何实施例的步骤或功能。
[0287]
处理器2602还可以与一个或多个用户界面输入设备2612、一个或多个用户界面输出设备2614和网络接口子系统2616通信。
[0288]
总线子系统2604可以提供用于使计算设备2600的各个组件和子系统能够按预期彼此通信的机制。虽然总线子系统2604示意性地示出为单个总线,但是总线子系统的替代实施例可以利用多个总线。
[0289]
网络接口子系统2616可以向其他计算设备和网络提供接口。网络接口子系统2616可以作为从计算设备2600接收数据和向其他系统传输数据的接口。例如,网络接口子系统2616可以使数据技术人员能够将设备连接到网络,使得数据技术人员能够在远程位置(例如数据中心)向设备发送数据并从设备接收数据。
[0290]
用户界面输入设备2612可以包括一个或多个用户输入设备,例如键盘;指点设备,如集成鼠标、轨迹球、触摸板或图形平板电脑;扫描仪;条形码扫描仪;包含在显示器中的触摸屏;音频输入设备,如语音识别系统、麦克风;以及其他类型的输入设备。一般而言,术语“输入设备”的使用旨在包括用于向计算设备2600输入信息的所有可能类型的设备和机制。
[0291]
一个或多个用户界面输出设备2614可包括显示子系统、打印机、或非视觉显示器(例如音频输出设备等)。显示子系统可以是阴极射线管(crt)、平板设备(例如液晶显示器(lcd))、发光二极管(led)显示器或投影或其他显示设备。通常,术语“输出设备”的使用旨在包括用于从计算设备2600输出信息的所有可能类型的设备和机制。例如,可以使用一个或多个用户界面输出设备2614来呈现用户界面,以便于用户与执行所描述的过程和其中变型的应用程序进行交互(当这种交互可能合适时)。
[0292]
存储子系统2606可以提供计算机可读存储介质,该计算机可读存储介质用于存储可提供本公开的至少一个实施例的功能的基本编程和数据构造。当由一个或多个处理器执行时,应用程序(程序、代码模块、指令)可以提供本公开的一个或多个实施例的功能,并且可以存储在存储子系统2606中。这些应用程序模块或指令可以由一个或多个处理器2602执行。存储子系统2606可另外提供用于存储根据本公开所使用的数据的存储库。例如,主存储器2608和高速缓存存储器2602可以为程序和数据提供易失性存储。永久存储器2610可以提供用于程序和数据的永久(非易失性)存储,且可包括闪存、一个或多个固态驱动器、一个或
多个磁硬盘驱动器、一个或多个具有关联可移动介质的软盘驱动器、一个或多个具有关联可移动介质的光驱动器(例如cd

rom或dvd或蓝光)以及其他类似的存储介质。这样的程序和数据可以包括用于执行如在本公开中描述的一个或多个实施例的步骤的程序以及与在本公开中描述的交易和区块相关联的数据。
[0293]
计算设备2600可以是各种类型的,包括便携式计算机设备、平板电脑、工作站或下文描述的任何其他设备。另外,计算设备2600可包括可通过一个或多个端口(例如,usb、耳机插孔、闪电连接器等)连接至计算设备2600的另一设备。可以连接到计算设备2600的设备可以包括被配置为接受光纤连接器的多个端口。因此,该设备可以被配置为将光信号转换成电信号,所述电信号可经由将该设备连接至计算设备2600进行处理的端口传输。由于计算机和网络的不断变化的性质,图7所示的计算设备2600的描述仅用作说明设备的优选实施例的特定示例。可能存在比图7所示系统的组件更多或更少的许多其他配置。
[0294]“区块链交易”一词可用于指数据结构,它实现了使用加密密钥经由区块链网络实现数字资源或资产的控制权的转移。如上所述,为了将交易写入区块链,该交易必须:i)由接收该交易的第一节点进行核实,如果该交易通过核实,则此节点将该交易中继到网络中的其他节点;ii)添加到由矿工建造的新区块中;iii)已挖掘,即,已被添加到过去交易的公共分类账中。应当理解,矿工执行的工作的性质将取决于用于维护区块链的共识机制的类型。虽然工作证明(proof of work,pow)与原始比特币协议相关联,但应当理解,可以使用其他共识机制,诸如股权证明(proof of stake,pos)、委托股权证明(delegated proof of stake,dpos)、容量证明(proof of capacity,poc)、流逝时间证明(proof of elapsed time,poet)、权威证明(proof of authority,poa)等。不同的共识机制在节点之间的挖掘分布方式上有所不同,成功挖掘区块的几率取决于例如矿工的哈希能力(pow)、矿工持有的加密货币的数量(pos)、委托矿工持有的加密货币的数量(dpos)、矿工存储加密难题的预定解决方案的能力(poc)、随机分配给矿工的等待时间(poet),等。
[0295]
通常,矿工会因挖掘区块而获得激励或奖励。例如,比特币区块链用新发行的加密货币(比特币)和与区块中的交易相关联的费用(交易费用)奖励矿工。对于比特币区块链,加密货币的发行量会随时间的推移而减少,其激励最终仅由交易费用组成。因此,可以理解,交易费用的处理是将数据提交到公共区块链(诸如比特币区块链)的底层机制的一部分。
[0296]
如先前所提及的,给定区块中的每个交易对区块链系统参与者之间的数字资产控制权转移进行编码。数字资产不一定对应于加密货币。例如,数字资产可能与文档、图像、实体对象等的数字表示有关。向矿工支付加密货币和/或交易费用可能只是作为一种激励,通过执行必要的工作来维持区块链中区块的有效性。与区块链相关联的加密货币可能是矿工的安全保障,区块链本身是主要与加密货币以外的数字资产相关的交易的账本,而区块链本身是主要与加密货币以外的数字资产相关的交易分类账。在某些情况下,参与者之间的加密货币转账可能由与使用区块链维护交易分类账的实体不同的实体来处理。
[0297]
需要说明的是,上述实施例说明而不是限制本发明,本领域技术人员能够在不脱离所附权利要求定义的本发明范围的前提下设计出许多替代实施例。在权利要求书中,括号中的任何附图标记都不应解释为对权利要求的限制。词语“包括”等不排除任一项权利要求或说明书中整体列出的元件或步骤之外的元件或步骤的存在。在本说明书中,“包括”是
指“包含”或“由......组成”。元件的单数形式并不排除此类元件的复数形式,反之亦然。本发明可以通过包括几个不同元件的硬件以及通过适当编程的计算机来实现。在列举几个装置的设备权利要求中,这些装置中的几个装置可以由同一硬件来体现。在互不相同的从属权利要求中引用某些措施的事实并不意味着不能有利地使用这些措施的组合。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1