CN117716379A - 用于高效区块链交易的软件架构 - Google Patents

用于高效区块链交易的软件架构 Download PDF

Info

Publication number
CN117716379A
CN117716379A CN202280046826.4A CN202280046826A CN117716379A CN 117716379 A CN117716379 A CN 117716379A CN 202280046826 A CN202280046826 A CN 202280046826A CN 117716379 A CN117716379 A CN 117716379A
Authority
CN
China
Prior art keywords
transaction
blockchain
fee
transactions
block
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
Application number
CN202280046826.4A
Other languages
English (en)
Inventor
阿隆·纳冯
列夫·帕赫曼诺夫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
PayPal Inc
Original Assignee
PayPal Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by PayPal Inc filed Critical PayPal Inc
Publication of CN117716379A publication Critical patent/CN117716379A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3823Payment protocols; Details thereof insuring higher security of transaction combining multiple encryption tools for a transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0241Advertisements
    • G06Q30/0251Targeted advertisements
    • G06Q30/0253During e-commerce, i.e. online transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/02Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/22Payment schemes or models
    • G06Q20/223Payment schemes or models based on the use of peer-to-peer networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3827Use of message hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/401Transaction verification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Abstract

本公开内容提供了用于高效处理区块链交易的技术。在一种实施方式中,计算机系统将第一交易广播至区块链网络以用于添加到区块链中的区块。计算机系统可以将第二交易广播至区块链网络以用于添加到区块链中的区块,其中,第二交易衍生自第一交易并包含占位费用。计算机系统监控并确定第一交易在一时间段内尚未被确认至区块链中的区块(例如,卡陷在存储池中)。响应于确定第一交易卡陷,计算机系统可以传输用足够高的交易费用替换占位费用的请求,从而使第一交易和第二交易被确认成去到区块链中的区块,因此使第一交易解除卡陷。

Description

用于高效区块链交易的软件架构
技术领域
本说明书总体上涉及区块链技术,并且更具体地,涉及根据本公开的各种实施方式方式的用于高效区块链交易的软件架构。
背景技术
区块链由于其固有的点对点和不可变的特性已经成为用于存储交易数据的流行计算机数据结构。例如,区块链已被用作去中心化账本来记录与各种加密货币、智能合约和其他类型的交易数据相关的交易数据。区块链的副本和/或部分可以存储在不同的计算机节点上,其中,每个计算机节点可以被配置为验证交易并向区块链添加新的交易数据。当进行新交易时,计算机节点中的一个或更多个计算机节点可以被配置为验证新交易(例如,通过工作量证明或权益证明机制等)。一旦新交易被验证,新交易的交易数据可以被一个或更多个计算机节点打包成块并附加到区块链的副本。
然而,随着区块链技术变得更加流行,区块链网络(例如比特币)上的交易数量将随着时间的推移而稳步增加。随着更多交易的发生,更多的区块被填满。由于并非所有交易都可以立即包含在区块链中,因此矿工的存储池中经常会形成积压,其行为有点像交易队列,矿工可以选择支付最多费用的交易,并将所选交易首先包含在其区块中。那些包含较低费用的交易在费用市场上被出价更高的交易所取代,被留在矿工的存储池中,直到找到新的区块。如果交易再次被出价超过,它必须等待下一区块,如此反复。费用过低的交易可能需要数小时甚至数天才能确认,有时根本无法确认。这样的交易可以被认为是“卡陷(stuck)”在内存池中。本公开提供了使卡陷的交易解除卡陷的技术。
附图说明
图1示出了根据本公开的实施方式的用于促进一个或更多个基于区块链的交易的示例计算架构;
图2示出了根据本公开实施方式的示例区块链网络;
图3示出了根据本公开实施方式的示例区块链;
图4是根据本公开实施方式的示例交易消息的图;
图5示出了根据本公开实施方式的被广播至区块链网络的示例交易;
图6A是示出根据本公开的实施方式的用于执行基于区块链的交易的示例过程的流程图;
图6B是示出根据本公开的实施方式的用于执行基于区块链的交易的另一示例过程的流程图;
图7A示出了根据本公开实施方式的私有广播区块链的示例;
图7B示出了根据本公开实施方式的区块链滥用的示例;
图8示出了根据本公开的实施方式的启用区块链的店内购买系统的示例;
图9示出了根据本公开的实施方式的启用物联网区块链的设备系统的通信的示例;
图10示出了根据本公开实施方式的示例系统;
图11示出了根据本公开实施方式的示例计算设备;
图12示出了根据本公开的一个或更多个实施方式的对应于卡陷交易的预防方案的示例图;
图13示出了根据本公开的一个或更多个实施方式的用于使区块链交易解除卡陷的过程的流程图;以及
图14例示了示出根据本公开的一个或更多个实施方式的用于选择区块链交易的输入的过程的流程图。
通过参考下面的详细描述可以最好地理解本公开的实施方式及其优点。应当理解,相似的附图标记用于标识一幅或多幅图中所示的相似元件,其中的示出内容是为了说明本公开的实施方式的目的,而不是为了限制本公开的目的。
具体描述
区块链
在其最广义上,区块链是指支持在对等网络中以分布式方式存储、维护和更新的可信账本的框架。例如,在加密货币应用中,诸如比特币或以太坊、瑞波币、达世币、莱特币、多吉币、大零币、泰达币、比特现金、艾达币、恒星币、EOS、NEO、NEM、比特股、德赛币、Augur、Komodo、PIVX、Waves、斯蒂姆币、门罗币、Golem、Stratis、字节币、Ardor,或在数字货币交易所中,诸如Coinbase、Kraken、CEX.IO、Shapeshift、Poloniex、Bitstamp、Coinmama、Bisq、LocalBitcoins、Gemini和其他公司,分布式账本代表每笔交易,加密货币的单位在实体之间进行转移。例如,使用数字货币交易所,用户可以购买任何价值的数字货币,或者将持有的任何数字货币兑换成全球货币或其他数字货币。每个交易都可以通过分布式账本进行验证,并且只有经过验证的交易才会被添加到账本中。账本,连同区块链的许多方面,都可以被称为“去中心化”,原因在于通常不存在中央机构。正因为如此,账本的准确性和完整性在单一的中心位置不会受到攻击。很难在账本被存储的位置中的所有或大部分存储位置都修改账本,由此保护了账本的完整性。这在很大程度上是因为与构成对等网络的节点相关联的个人对账本的准确性有既得利益。
尽管在分布式账本中维护加密货币交易可能是当今区块链技术最知名的用途,但账本可以用于各种不同的领域中。事实上,区块链技术适用于可以访问任何类型的数据并且确保了数据准确性的任何应用。例如,供应链可以被维护在区块链账本中,其中每个组成部分在各方之间以及位置之间的转移可以记录在账本中,以供日后检索。这样做允许更容易地识别缺陷部分的来源以及其他此类缺陷部分的交付地点。类似地,食品可以以类似的从农场到杂货店再到购买者的方式进行跟踪。
现在将参照附图详细描述本公开的实施方式。
需要理解的是,本文使用的措辞和术语仅用于描述的目的,不应被视为限制。确切地讲,本文使用的用语和术语将给予其最广泛的解释和含义。“包括”和“包含”及其变型的使用意在涵盖下文列出的项目和其等同物,以及附加项目和其等同物。
计算架构
如上所讨论的,区块链框架中的分布式账本在对等网络中被存储、维护和更新。在一种示例中,分布式账本维护许多区块链交易。图1示出了用于促进区块链交易的示例系统100。系统100包括经由网络140互连的第一客户端设备120、第二客户端设备125、第一服务器150、第二服务器152和物联网(IoT)设备155。第一客户端设备120、第二客户端设备125、第一服务器150和/或第二服务器152可以是参照图11更详细地描述的计算设备1105。IoT设备155可以包括各种设备中的任何设备,上述设备包括:车辆、家用电器、嵌入式电子器件、软件、传感器、致动器、恒温器、灯泡、门锁、冰箱、RFID植入物、RFID标签、起搏器、可穿戴设备、智能家居设备、相机、跟踪器、泵、POS设备,以及固定和移动通信设备连同被配置成连接和交换数据的连接硬件。网络140可以是诸如因特网之类的各种可用网络中的任何网络,并且表示支持连接到网络140的设备之间的通信的全球网络和网关集合。系统100还可以包括一个或更多个分布式或对等(P2P)网络,诸如第一区块链网络130a、第二区块链网络130b和第三区块链网络130c(统称为区块链网络130)。如图1所示,网络140可以包括第一区块链网络130a和第二区块链网络130b。第三区块链网络130c可以与如下参照图2所描述的私有区块链相关联并连接至一个或更多个服务器诸如服务器152,并且因此第三区块链网络130c与第一区块链网络130a和第二区块链网络103b分开示出。每个区块链网络130可以包括多个互连的设备(或节点),如参照图2更详细描述的。如上所讨论的,账本或区块链是分布式数据库,用于维护包括任何信息类型的不断增长的记录列表。如参照图3更详细描述的,区块链可以至少被存储在一个或更多个区块链网络130的多个节点(或设备)处。
在一种示例中,基于区块链的交易通常可能涉及实体之间的数据或价值的转移,诸如图1中的第一客户端设备120的第一用户110和第二客户端设备125的第二用户115之间的数据或价值的转移。服务器150和152中的每一者均可以包括一个或更多个应用程序,例如,交易应用程序,所述交易应用程序被配置成通过利用与区块链网络130中的一者相关联的区块链来促进实体之间的交易。作为示例,第一用户110可以经由在第一客户端设备120上执行的用户应用程序来请求或发起与第二用户115的交易。该交易可以与从第一用户110到第二用户115的价值或数据的转移有关。第一客户端设备120可以向服务器150发送交易的请求。第一服务器150和/或第二服务器152可以将所请求的交易发送到区块链网络130中的一者以进行验证和批准,如下所讨论的。
区块链网络
图2示出了包括多个互连节点或设备205a至205h(统称为节点205)的示例区块链网络200。节点205中的每个节点可以包括参照图11更详细描述的计算设备1105。尽管图2示出了用于节点205中的每个节点的单个设备,但是节点205中的每个节点可以包括多个设备(例如,池)。区块链网络200可以与一个或更多个区块链220a至220h(统称为区块链220)相关联。节点205的一些或所有节点可以复制并保存区块链220的相同副本。例如,图2示出了节点205b至205e和205g至205h存储区块链220的副本。节点205b至205e和205g至205h可以独立地更新它们各自的区块链220的副本,如下所讨论的。
区块链节点类型
区块链节点(例如,节点205)可以是全节点或轻量级节点。全节点(诸如节点205b至205e和节点205g至205h)可以通过存储整个区块链220的副本并且确保发布到区块链220上的交易是有效的来充当区块链网络200中的服务器。全节点205b至205e和205g至205h可以在区块链220上发布新的块。轻量级节点(诸如节点205a和205f)可以具有比全节点更少的计算资源。例如,IoT设备通常充当轻量级节点。轻量级节点可以与其他节点205进行通信,向全节点205b至205e和205g至205h提供信息,并且对由全节点205b至205e和205g至205h存储的区块链220的块的状态进行查询。然而,在该示例中,如图2所示,轻量级节点205a和205f可以不存储区块链220的副本,因此,可以不在区块链220上发布新的块。
区块链网络类型
区块链网络200及其关联的区块链220可以是公共的(无许可的)、联合的或联盟的、或私有的。如果区块链网络200是公共的,则任何实体都可以对相关联的区块链220进行读取和写入。然而,如果区块链网络200及其相关联的区块链220由单个实体或组织控制,则区块链网络200及其相关联的区块链220可以是联合的或联盟的。此外,可以限制能够对互联网访问的节点205的任何一个节点参与区块链220上的交易的验证。如果对区块链网络200和区块链220的访问被限制为特定的授权实体,例如组织或个人团体,则区块链网络200及其相关联的区块链220可以是私有的(被许可的)。此外,区块链220的读取权限可以是公共的或受限制的,而写入权限可以被限制到控制或授权实体。
区块链
如上所讨论的,区块链220可以与区块链网络200相关联。图3示出了示例性区块链300。区块链300可以包括多个区块305a、305b和305c(统称为区块305)。区块链300包括第一区块(未示出),有时被称为创世区块。区块305中的每个区块均可以包括一个或更多个已提交的且经验证的交易的记录。区块链300的区块305可以链接在一起并且以加密的方式进行保护。在一些情况下,可以利用随时间动态变化的后量子密码算法来减轻量子计算破坏当前密码方案的能力。下面提供了存储在区块链区块中的各种类型的数据字段的示例。区块链300的副本可以作为文件或数据库例如通过节点205b至205e和205g至205h进行本地存储、云存储、网格上存储。
区块
区块305中的每个区块均可以包括一个或更多个数据字段。区块链300内的区块305的组织和相应的数据字段可以是特定于实现方式的。作为示例,区块305可以包括相应的标头320a、320b、和320c(统称为标头320),以及区块数据375a、375b和375c(统称为区块数据375)。标头320可以包括与它们各自的区块305相关联的元数据。例如,标头320可以包括相应的区块编号325a、325b和325c。如图3所示,区块305a的区块编号325a是N-1,区块305b的区块编号325b是N,并且区块305c的区块编号325c是N+1。区块305的标头320可以包括数据字段,该数据字段包括区块大小(未示出),区块大小可以指示存储在区块中的数据的量(未示出)。
区块305可以链接在一起并且以加密方式进行保护。例如,区块N(区块305b)的标头320b包括包含先前区块N-1的标头320a的散列表示的数据字段(先前区块散列330b)。用于生成散列表示的散列算法可以是例如安全散列算法256(SHA-256),其产生固定长度的输出。在该示例中,散列算法是单向散列函数,其中基于散列函数的输出来确定散列函数的输入在计算上是困难的。附加地,区块N+1(区块305c)的标头320c包括包含区块N(区块305b)的标头320b的散列表示的数据字段(先前区块散列330c)。
区块305的标头320还可以包括包含区块数据的散列表示的数据字段,诸如区块数据散列370a至370c。区块数据散列370a至370c可以例如通过Merkle树并且通过存储该散列或者通过使用基于所有区块数据的散列来生成。区块305的标头320可以包括相应的随机数360a、360b和360c。在一些实现方式中,随机数360a至360c的值是与区块的散列连结(或附加到区块的散列)的任意字符串。随机数360通常用于开采区块。标头320可以包括诸如难度目标的其他数据。
区块305可以包括相应的区块数据375a、375b和375c(统称为区块数据375)。区块数据375可以包括也已经经由共识模型(如下所述)集成到区块链200中的经验证的交易的记录。如上所讨论的,除了经验证的交易之外,区块数据375可以包括各种不同类型的数据。区块数据375可以包括任何数据(诸如文本、音频、视频、图像或文件),这些数据可以以数字方式表示,并且以电子方式存储。
区块链交易
在一种示例中,基于区块链的交易通常可能涉及数据或价值的转移或者实体之间的交互,并且下文将更详细的描述。返回参照图1,第一服务器150和/或第二服务器152可以包括一个或更多个应用程序,例如,交易应用程序,所述交易应用程序被配置成促进实体之间的区块链交易。实体可以包括用户、设备等。第一用户110可以经由在第一客户端设备120上执行的用户应用程序来请求或发起与第二用户115的交易。该交易可能与从第一用户110到第二用户115的价值或数据的转移有关。价值或数据可以表示金钱、合约、财产、记录、权利、状态、供应、需求、警报、触发、或任何其他可以以数字形式表示的资产。交易可以表示第一用户110与第二用户115之间的交互。
图4是由交易应用程序生成的交易465的视图。交易465可以包括公钥415、与第一用户110相关联的区块链地址430、数字签名455和交易输出信息460。交易应用程序可以通过将密码散列函数410应用于私钥405来根据第一用户110的私钥405得到公钥415。密码散列函数410可以是基于SHA-2或SHA-3的,但是可以使用其他密码模型。关于加密算法的更多信息可以在联邦信息处理标准出版物(FIPS PUB 180-3)安全散列标准中找到。交易应用程序可以通过将散列函数420应用于公钥415来得到第一用户110的地址或标识符(诸如区块链地址430)。简言之,散列函数是可以用于将任意大小的数据映射到固定大小的数据的函数。该值也可以被称为摘要、散列值、散列代码或散列。为了表示第一用户110是交易465的发起者,交易应用程序可以使用第一用户110的私钥405生成交易数据435的数字签名455。交易数据435可以包括关于要转移的资产的信息和对资产的来源的引用,诸如资产被转移到第一用户110的先前交易或者发起资产的事件的标识。生成数字签名455可以包括将散列函数440应用于交易数据435,从而产生散列化的交易数据445。可以使用第一用户110的私钥405(经由加密函数450)来对散列化的交易数据445和交易数据435进行加密,从而产生数字签名455。交易输出信息460可以包括资产信息470和第二用户115的地址或标识符(诸如区块链地址475)。交易465可以从第一客户端设备125发送到第一服务器150。
所利用的特定类型的加密算法可以基于各种因素(诸如时间长度、隐私问题等)而动态变化。例如,所利用的密码算法类型可以每年、每周、每天等发生变化。算法类型也可以基于隐私级别的变化而变化。例如,内容的所有者可以通过利用更强的算法来实现保护或隐私的更高级别。
区块链地址
区块链网络可以利用区块链地址来表示使用区块链的实体或交易中的起点和终点。例如,第一用户110的区块链地址(如图4中所示为发送方的区块链地址430)可以包括基于将密码散列函数420应用于公钥415而根据第一用户的公钥415得到的字母数字字符串。用于得到地址的方法可能会有所不同,并且可以特定于区块链网络的实现方式。在一些示例中,区块链地址可以被转换为QR码表示、条形码、令牌、或其他视觉表示或图形描述,以使地址能够通过可移动设备、可穿戴设备、传感器、相机等进行光学扫描。除了地址或QR码之外,还有许多识别区块链中所表示的个体、对象等的方式。例如,可以通过诸如指纹、视网膜扫描、语音、面部id、温度、心率、个体特有的手势/动作等生物特征信息来识别个体,以及通过诸如账号、家庭地址、社会安全号码、正式姓名等其他类型的识别信息来识别个体。
广播交易
第一服务器150可以接收来自区块链网络130的用户的交易。交易可以经由桌面应用程序、智能手机应用程序、数字钱包应用程序、网络服务、或其他软件应用程序提交至第一服务器150。第一服务器150可以向区块链网络130发送或广播交易。图5示出了由服务器150向区块链网络130广播的示例交易502。交易502可以被广播至区块链网络130的多个节点205。通常,一旦交易502被广播或提交至区块链网络130,交易502就可以被节点205中的一个或更多个节点接收。一旦交易502被区块链网络130的一个或更多个节点205接收,交易502就可以被接收节点205传播至区块链网络130的其他节点205。
区块链网络可以根据一组规则进行操作。规则可以指定节点可以接受交易的条件、节点可以接受的交易类型、节点接收的用于接受和处理交易的补偿类型等。例如,节点可以基于交易历史、信誉、计算资源、与服务提供商的关系等来接受交易。规则可以指定用于向节点广播交易的条件。例如,可以基于与节点的地理位置、历史、信誉、市场条件、记事表/延迟、技术平台相关的标准而将交易广播到一个或更多个特定节点。可以动态地修改或更新(例如打开或关闭)规则,以解决诸如延迟、可扩展性和安全条件之类的问题。交易可以作为对与这些节点相关联的实体的补偿的形式(例如,通过接收用于将一个或更多个交易的区块添加至区块链的补偿)广播至节点的子集。
交易验证-用户身份验证和交易数据完整性
由于诸如延迟之类的问题,并非所有全节点205都可以同时接收到经广播的交易502。此外,并非所有接收到经广播的交易502的全节点205都可以选择对交易502进行验证。节点205可以例如基于与交易502相关联的交易费用来选择对特定交易进行验证。交易502可以包括发送方的区块链地址505、公钥510、数字签名515和交易输出信息520。节点205可以对交易502是否合法或者是否符合预定规则集进行验证。节点205还可以基于建立用户真实性和交易数据完整性来对交易502进行验证。可以通过对由交易502指示的发送方实际上是否是交易502的实际发起者进行确定来建立用户真实性。用户真实性可以经由密码学来证明,例如,使用一对密钥(诸如公钥和私钥)的非对称密钥密码学来证明。在建立用户真实性时可以考虑附加的因素,诸如用户信誉、市场条件、历史、交易速度等。可以通过对与交易502相关联的数据是否以任何方式被修改进行确定来建立交易502的数据完整性。返回参照图4,当交易应用程序创建交易465时,它可以通过包括数字签名455来指示第一用户110是交易465的发起者。
节点205可以使用公钥510来对数字签名515进行解密。解密的结果可以包括交易数据530和散列化的交易数据540。节点205可以基于将散列函数545应用于交易数据530来生成散列化的交易数据550。节点205可以在第一散列化的交易数据540与第二散列化的交易数据550之间进行比较565。如果比较565的结果570指示匹配,则然后可以建立交易502的数据完整性,并且节点205可以指示交易502已经被成功验证。否则,交易502的数据可能已经以某种方式被修改,并且节点205可以指示交易502还没有被成功验证。
每个全节点205可以构建其自己的区块,并且将经验证的交易添加至该区块。因此,不同的全节点205的区块可以包括不同的经验证的交易。作为示例,全节点205a可以创建包括交易“A”、“B”、和“C”的第一区块。另一个全节点205b可以创建包括交易“C”、“D”、和“E”的第二区块。这两个区块都可以包括有效交易。然而,仅一个区块可以添加到区块链中,否则这些区块可能共同具有的交易(诸如交易“C”)可能会被记录两次,导致交易执行两次时出现诸如重复支出之类的问题。从上面的示例中可以看到的一个问题是,交易“C”、“D”、和“E”在被添加至区块链时可能会被过度延迟。这可以通过多种不同的方式来解决,如下所讨论的。
保护密钥
可以使用软件(诸如数字钱包)来对私钥、公钥和地址进行管理和保护。私钥也可以使用硬件进行存储和保护。数字钱包还可以使用户能够进行交易并管理余额。数字钱包可以在线或离线、以及以软件或以硬件或以硬件和软件两者进行存储或维护。如果没有公钥/私钥,用户就无法证明资产的所有权。此外,有权访问用户的公钥/私钥的任何人都可以访问用户的资产。虽然资产可以被记录在区块链上,但在没有私钥的情况下,用户可能无法访问这些资产。
代币
代币可以指属于区块链地址的区块链中的一个条目。该条目可能包含指示资产所有权的信息。代币可以代表货币、合同、财产、记录、访问权、状态、供应、需求、警报、触发、声誉、票据或任何其他可以以数字形式表示的资产。例如,代币可以指的是与加密货币相关的条目,该加密货币用于特定目的,或者可能代表现实世界资产的所有权,如法定货币或房地产。代币合约指的是代表一组规则的加密代币,这些规则被编码在智能合约中。拥有与区块链地址对应的私钥的人可以访问该地址处的代币。因此,区块链地址可以代表拥有代币的人的身份。只有区块链地址的所有者才能将代币发送给另一个人。代币可以通过所有者的钱包供所有者访问。代币的所有者可以通过区块链交易将代币发送或转移给用户。例如,所有者可以用私钥签署与代币转移相对应的交易。当用户收到代币时,代币可能会在用户的区块链地址处被记录在区块链上。
建立用户身份
虽然数字签名可以提供交易与被转移资产的所有者之间的联系,但数字签名可能无法提供与所有者的真实身份的联系。在某些情况下,可能需要建立与数字签名相对应的公钥的所有者的真实身份。公钥的所有者的真实身份可以例如基于生物特征数据、密码、个人信息等进行验证。生物特征数据可以包括任何物理识别信息,诸如指纹、面部和眼睛图像、语音样本、DNA、人类运动、手势、步态、表情、心率特征、温度等。
发布并验证区块
如上所讨论的,全节点205可以各自构建它们自己的包括不同交易的区块。节点可以通过向区块添加经验证的交易来构建区块,直到区块达到可以由区块链规则指定的特定大小。但是,仅一个区块可以添加至区块链中。可以基于共识模型来对将要添加至区块链的区块和区块的排序进行确定。在工作量证明模型中,节点可能会通过解决复杂的数学难题来竞争将其各自的区块添加至区块链中。例如,这样的难题可以包括对随机数360进行确定,如上所讨论的,使得将要被添加至区块链的区块的散列(使用预定散列算法)(包括随机数)具有满足范围限制的值(例如散列中的特定数量的前导零)。如果两个或更多个节点同时解决了难题,那么可能会创建“分叉”。当全节点205解决了难题时,全节点205可以发布其区块以由区块链网络130的验证节点205进行验证。
在工作量证明模型中,节点例如通过对存储在区块链中的当前账本进行检查或搜索来对交易进行验证。该节点将创建用于区块链的新区块,该新区块将包括用于一个或更多个经验证的交易的数据(参见,例如,图3的区块375)。在诸如比特币这样的区块链实现中,区块的大小是受限制的。返回参照图3,在该示例中,该区块将包括先前区块散列330,先前区块散列表示当前区块链中的最后的区块的散列。该区块还可以包括其自己的交易数据的散列370(例如,所谓的Merkle散列)。根据特定算法,区块中的所有数据或者从区块中所选的数据被散列以创建最终散列值。根据工作量证明模型的实施方式,节点将寻求修改区块的数据,使得最终散列值满足预设标准(例如,小于预设值,具有特定数量的前导零等)。这是通过添加被称为随机数360的数据值来实现的。因为最终散列值不能基于其输入来进行预测,所以无法对将导致最终散列值满足预设标准的随机数360的适当值进行计算。因此,在该实施方式中,在节点处需要计算密集型操作,以通过“强力”试错方法来对适当的随机数值进行确定。一旦确定了成功的随机数值,则将完成的区块发布至区块链网络用于验证。
如果对区块链网络中的大多数节点进行了验证,则在每个参与节点处将完成的区块添加至区块链中。当节点的区块没有被添加至区块链中时,区块将被丢弃,并且节点将继续构建新的区块。被丢弃的区块中的交易可以返回到队列(例如,存储池)中,并且等待被添加至下一个区块。当交易被丢弃或返回队列时,与被丢弃的交易相关联的资产不会丢失,因为资产的记录将存在于区块链中。但是,当交易返回至队列时,返回将导致交易延迟完成。减少完成交易的时间可能是重要的。区块链规则集,或用于节点处理返回的交易的报酬/补偿,可以确定如何处理返回的交易。在交易被放入池中的情况下,该交易然后可以具有优先级,但随后规则可能表示交易优先级水平必须超过阈值水平。返回或丢弃的交易的优先级水平可以是增加的。减少完成交易时间的另一种方法是使系统、服务提供商、交易参与者或商家针对节点处理返回的交易支付额外的激励。作为示例,服务提供商可以基于地理位置或基于数量折扣视角来识别优选矿工的网络。可以通过将返回的交易路由至特定的优选节点来对完成交易的时间进行优化。交易可能与如下地址相关联,该地址限制了如果交易由于被包括在丢弃的区块中而被返回,则优选节点中的哪一个节点将对该交易进行处理。可以将值与该交易相关联,使得该值进入特定地理位置的优选矿工。此外,可以基于预设规则对返回的交易进行处理。例如,规则可以表示承诺处理特定数量的返回交易以接收额外的奖励或补偿。
区块链确认
在将包括交易的区块添加至区块链之后,可以针对该交易生成区块链确认。区块链确认可以是在包括该交易的区块之后添加至区块链的多个区块。例如,当交易被广播到区块链时,将不存在与该交易相关联的区块链确认。如果交易未经验证,则包含该交易的区块将不会被添加至区块链中,并且该交易将继续没有与该交易相关联的区块链确认。然而,如果包含该交易的区块经过验证,则该区块中的交易的每一个交易都将具有与该交易相关联的区块链确认。因此,当区块被验证时,区块中的交易将具有与之相关的一个区块链确认。当区块被添加至区块链中时,区块中的交易的每一个交易都将具有与之相关的两个区块链确认。随着额外的验证区块被添加至区块链,与该区块相关联的区块链确认的数量将增加。因此,与交易相关联的区块链确认的数量可以表示重写交易或撤销交易的难度。值更高的交易在交易被执行之前可能需要更多的区块链确认。
共识模型
如上所讨论的,区块链网络可以对全节点205中的哪一个节点向区块链发布下一个块进行确定。在无许可区块链网络中,节点205可以竞争以确定哪个节点发布下一区块。节点205可以被选择为基于共识模型来将其区块发布为区块链中的下一区块。例如,所选择的或获胜的节点205可以接收诸如用于例如发布其区块的交易费的奖励。可以使用各种共识模型,例如,工作量证明模型、股权证明模型、委托股权证明模型、循环模型、权威证明或身份证明模型以及经过时间证明模型。
在工作量证明模型中,节点可以通过成为首先解决计算密集型数学问题(例如,上述的数学难题)的节点来发布下一个区块。该解决方案用作节点为了发布区块而花费了适当工作量的“证据”。该解决方案可以在区块被接受之前由全节点进行验证。然而,工作量证明模型可能容易受到下面描述的51%的攻击。
股权证明模型通常低于工作量证明模型的计算密集度。与工作量证明模型不同,在工作量证明模型中对任何具有用于解决数学问题的计算资源的节点是开放的,股权证明模型对系统中具有股份的任何节点是开放的。股份可以是区块链网络节点(用户)可能已经投资到系统中的加密货币的数量。节点发布下一个区块的可能性可以与其股份成比例。由于该模型使用较少的资源,区块链可能会放弃奖励作为发布下一个区块的激励。
循环模型通常由许可的区块链网络使用。使用此模型,节点可以轮流发布新的区块。
在经过时间证明模型中,每个发布节点都向其计算机系统中的安全硬件请求等待时间。发布节点可能在等待时间的持续时间中变为空闲,并且然后创建区块并将区块发布至区块链网络。作为示例,在需要速度和/或可扩展性的情况下(例如,在企业环境的背景下),混合区块链网络可以在完全或部分许可与无许可之间进行切换。网络可以基于各种因素(诸如延迟、安全性、市场条件等)进行切换。
分叉
如上所讨论的,共识模型可以用于对区块链上的事件顺序进行确定,诸如哪个节点开始添加下一个区块,并且哪个节点的交易首先得到验证。当存在与事件顺序相关的冲突时,结果可能是区块链中的分叉。分叉可能导致区块链的两个版本同时存在。共识方法通常解决了与事件顺序相关联的冲突,并且从而防止了分叉的发生。在某些情况下,分叉可能是不可避免的。例如,使用工作量证明共识模型,竞争解决难题的节点中的仅一个节点可以通过首先解决其难题而获胜。获胜节点的区块然后由网络进行验证。如果获胜节点的区块被网络成功地验证,则获胜节点的区块将是被添加至区块链的下一个区块。然而,可能会出现两个节点可以同时解决各自难题的情况。在这样的场景中,两个获胜节点的区块可以被广播至网络。由于不同的节点可以接收不同获胜节点的通知,因此接收到第一节点作为获胜节点通知的节点可以将第一节点的区块添加至其区块链的副本中。接收到第二节点作为获胜节点的通知的节点可以将第二节点的区块添加至其区块链的副本中。这导致了两个版本的区块链或“分叉”。这种类型的分叉可以通过工作量证明共识模型的最长链规则来解决。根据最长链规则,如果存在两个版本的区块链,则具有较大数量的区块的网络链可能被认为是有效的区块链。区块链的另一个版本可能被视为无效且被丢弃的或孤立的。由于不同节点创建的区块可能包括不同的交易,因此分叉可能导致交易被包含在区块链的一个版本中,而不是被包含在区块链的另一个版本中。被丢弃区块链的区块中的交易可以返回至队列中,并且等待被添加至下一个区块。
在某些情况下,分叉可能是由与区块链实现相关的变化而引起的,例如,区块链协议和/或软件的变化。对无许可和全球分布的区块链网络而言,分叉与私有区块链网络相比可能更具破坏性,因为它们对更多的用户产生了影响。对向后兼容的区块链实现的更改或更新可能会导致软分叉。当出现软分叉时,一些节点可能会执行对区块链实现的更新,而其他节点不会执行对区块链实现的更新。然而,没有更新新的区块链实现的节点可以继续与更新的节点进行交易。
对不向后兼容的区块链实现的更改可能导致硬分叉。虽然硬分叉通常是有意的,但这些硬分叉也可能是由无意的软件缺陷/错误而引起的。在这种情况下,网络中的所有发布节点可能需要更新至新的区块链实现。虽然没有更新至新的区块链实现的发布节点可以继续根据先前的区块链实现方式发布区块,但这些发布节点可能拒绝基于新的区块链实现方式而创建的区块,并且继续接受基于先前的区块链实现方式而创建的区块。因此,区块链的不同硬分叉版本上的节点可能无法彼此交互。如果所有节点都移动至新的区块链实现方式,则先前的版本可能会被丢弃或被放弃。然而,将网络中的所有节点更新为新的区块链实现方式可能并不实用或并不可行,例如,在更新使由某些节点使用的专用硬件失效的情况下。
基于区块链的应用:加密货币
加密货币是一种可以在区块链(如图1中的区块链130a)中以电子方式进行创建和存储的交换的媒介。比特币是加密货币的一个示例,然而还有其他几种加密货币。各种加密技术可以用于对加密货币的单元进行创建,并且用于对交易进行验证。作为示例,第一用户110可以拥有10个单位的加密货币。区块链130a可以包括表示第一用户110拥有10个单位的加密货币的记录。第一用户110可以经由在第一客户端设备120上执行的钱包应用程序向第二用户115发起10个单位的加密货币的转移。钱包应用程序可以存储和管理第一用户110的私钥。钱包设备的示例包括个人计算机、膝上型电脑、智能手机、个人数据助理(PDA)等。
图6A是示出了用于在实体之间(诸如图1中的第一客户端设备120的第一用户110和第二客户端设备125的第二用户115)执行区块链交易的示例方法600的步骤的流程图。该方法600的步骤可以由图1中所示的计算设备中的任何一个来执行。替代地或附加地,该方法600的步骤的一些或全部可以由一个或更多个其他计算设备来执行。该方法600的步骤可以被修改、被省略和/或以其他顺序执行和/或可以添加其他步骤。
在步骤605处,钱包应用程序可以生成用于将10个单位的加密货币从第一用户110转移至第二用户115的交易数据。钱包应用程序可以使用第一用户110的私钥来生成用于交易的公钥。为了表示第一用户110是交易的发起者,还可以使用第一用户110的私钥生成用于交易的数字签名。如参照图4所讨论的,交易数据可以包括信息,诸如发送方的区块链地址430、数字签名455、交易输出信息460和发送方的公钥415。交易数据可以从第一客户端设备125被发送至第一服务器150。
第一服务器150可以从第一客户端设备125接收交易数据。在步骤610处,第一服务器150可以向区块链网络130a广播该交易。可以由区块链网络130a的一个或更多个节点205接收该交易。在步骤615处,在接收到该交易时,节点205可以例如基于与该交易相关联的交易费用来选择对该交易进行验证。如果交易没有被节点205中的任何节点选择来进行验证,则可以将交易放置在队列中,并且等待被节点205选择。
在步骤620处,选择了该交易的节点205中的每个节点都可以对交易进行验证。对交易进行验证可以包括:对交易是否合法或是否符合用于该交易的预定规则集进行确定、建立用户真实性、以及建立交易数据完整性。在步骤625处,如果交易被节点205成功地验证,则将经验证的交易添加至由该节点205正在被构建的区块中(步骤630)。如上所讨论的,由于不同的节点205可以选择对不同的交易进行验证,因此不同的节点205可以对包含不同的已验证的交易的区块进行构建或组装。因此,与第一用户110向第二用户115转移10个单位的加密货币相关联的交易可以被包括在一些区块中,而不是被包括在其他区块中。
在步骤635处,区块链网络130a可以等待区块被发布。经验证的交易可以被添加至被节点205正在组装的区块,直到其达到由区块链指定的最小大小或者达到区块大小限制。如果区块链网络130a利用工作量证明共识模型,则节点205可以通过解决复杂的数学难题来竞争将其各自的区块添加至区块链的权利。首先解决其难题的节点205赢得发布其区块的权利。作为补偿,获胜节点可以被授予与交易相关联的交易费用(例如,来自第一用户110的钱包)。替代地,或者除此之外,获胜节点可以被奖励补偿,作为从区块链网络添加至与获胜节点相关联的账户的加密货币的数额(例如,进入流通的“新”单位的加密货币)。后一种所述的补偿并且将新单位的加密货币释放到流通中的方法有时被称为“挖矿”。在步骤640处,如果区块还没有被发布,则该方法600返回至步骤635处,并且等待区块被发布。然而,在步骤640处,如果区块已经被发布,则该方法600进行至步骤645。
在步骤645处,将经发布的区块广播至区块链网络130a以进行验证。在步骤650处,如果该区块被大多数节点205进行验证,则在步骤655处,将经验证的区块添加至区块链220。然而,在步骤650处,如果该区块未被大多数节点205进行验证过,则该方法600进行至步骤675。在步骤675处,该区块被丢弃,并且被丢弃的区块中的交易被返回至队列中。队列中的交易可以由一个或更多个节点205选择用于下一区块。构建了被丢弃的区块的节点205可以构建下一个新的区块。
在步骤660处,如果交易被添加至区块链220中,则服务器150可以等待接收用于交易的最小数量的区块链确认。在步骤665处,如果还没有接收到用于交易的最小数量的确认,则该过程可以返回至步骤660。然而,如果在步骤665处,已经接收到最小数量的确认,则该过程进行至步骤670。在步骤670处,可以执行该交易,并且可以将来自第一用户110的资产被转移至第二用户115。例如,在交易接收到至少三个确认之后,可以将由第一用户110拥有的10个单位的加密货币从第一用户110的金融账户转移至第二用户115的金融账户。
智能合约
智能合约是一种被存储在区块链中的协议,并且当协议的预定条款和条件得到满足时,将自动执行该协议。协议的条款和条件对区块链的其他用户可以是可见的。当预定规则得到满足时,那么将自动执行相关的代码。协议可以使用诸如Java、C++、JavaScript、VBScript、PHP、Perl、Python、Ruby、ASP、Tcl等的编程语言被编写为脚本。脚本可以作为区块链上的交易被上传至区块链。
作为示例,第一用户110(也称为承租者110)可以从第二用户115(也称为出租者115)租赁公寓。可以在承租者110与出租者115之间使用智能合约用于支付租金。智能合约可以指示承租者110同意在当月的28日之前支付下个月$1000的租金。该协议还可以指示,如果承租者110支付了租金,则出租者115向承租者110提供电子收据和公寓的数字输入密钥。该协议还可以指示,如果承租者110在当月28日之前支付了租金,则在当月的最后一天,向承租者110和出租者115分别释放进入密钥和租金。
图6B是示出了用于在实体之间(诸如承租者110和出租者115)执行智能合约交易的示例方法601的步骤的流程图。方法601的步骤可以通过图1中所示的计算设备中的任何一个来执行。替代地或附加地,该方法601的步骤的一些或全部可以由一个或更多个其他计算设备来执行。该方法601的步骤可以被修改、被省略和/或以其他顺序执行,和/或可以添加其他步骤。
在步骤676处,可以创建承租者110与出租者115之间的协议或智能合约,并且然后将其作为交易提交至区块链网络130a。交易可以被添加至由区块链网络130a的节点205挖掘的区块中,包括该交易的区块可以通过区块链网络130a进行验证,并且然后被记录在区块链220中(如图6A中的步骤610至655所示)。与交易相关联的协议可以被赋予用于识别的唯一地址。
在步骤678处,方法601等待接收关于与协议相关的条件的信息。例如,方法601可以等待接收通知,即从与承租者110相关联的区块链地址发送了$1000,并且在当月28日之前在与出租者115相关联的块链地址处接收到$1000。在步骤680处,如果未接收到这样的通知,则该方法601返回至步骤678。然而,如果在步骤680处接收到该通知,则该方法601进行至步骤682。
在步骤682处,基于确定接收到的通知满足触发智能合约的各种条款的执行所需的条件,方法601进行至步骤684。然而,在步骤682处,如果确定接收到的通知不满足触发智能合约的执行所需的条件,则该方法601返回至步骤678。在步骤684处,该方法601创建并记录与智能合约的执行相关联的交易。例如,交易可以包括所接收到的付款的信息、接收到的付款的日期、承租者110的标识和出租者115的标识。交易可以被广播至区块链网络130a并且被记录在区块链220中(如图6A的方法600的步骤610至655所示)。如果该交易被成功地记录在区块链220中,则可以执行该交易。例如,如果在28日接收到付款,则可以生成电子收据,并且将其发送至承租者110。然而,在当月的最后一天,数字输入密钥和租金两者都被分别释放至承租者110和出租者115。
智能合约可以基于从不在区块链或链外资源上的实体中接收到的数据来执行。例如,如果来自智能传感器或IoT传感器的温度读数降至10度以下,则可以对智能合约进行编程以执行。智能合约不能够从链外资源中提取数据。相反,这样的数据需要被推送至智能合约。附加地,由于智能合约是在网络的多个节点上进行复制的,因此即使是数据的微小变化也可能是有问题的。例如,第一节点可以接收9.8度的温度读数,而第二节点可以接收10度的温度读数。由于交易的验证是基于节点之间的共识,因此即使接收到的数据中的微小变化也可能导致智能合约的条件被评估为是不满足的。第三方服务可以用于检索链外资源信息并将其推送到区块链。这些第三方服务器可以被称为Oracle。Oracle可以是软件应用程序(诸如大数据应用程序),或者可以是硬件(诸如IoT或智能设备)。例如,Oracle服务可以预先评估所接收到的温度读数,以确定读数是否低于10度,并且然后将此信息推送至智能合约。然而,利用Oracle可以在整个过程中引入另一个可能的失败点。Oracle可能会经历错误,推送不正确的信息,或者甚至可能倒闭。
由于区块链是不可变的,所以对驻留在区块链中的智能合约进行修改或更新可能具有挑战性并且因此,与基于文本的合约相比,区块链更昂贵和/或更具限制性。
物联网(IoT)
IoT网络可以包括收集数据并且经由网关相互中继数据的设备和传感器。网关可以在设备与传感器的不同协议之间进行转换,以及网关可以对数据进行管理和处理。例如,IoT设备可以从其环境中收集信息,诸如运动、手势、声音、语音、生物特征数据、温度、空气质量、湿度和光线。所收集的信息通过互联网发送以供进一步处理。通常,IoT设备使用低功耗网络、蓝牙、Wi-Fi、或卫星以连接至互联网或“云”。区块链能够检测的一些IoT相关的问题包括在IoT设备的制造阶段中的缺乏符合性。例如,区块链可以跟踪IoT设备是否经过充分地测试。
如上所讨论的,来自链外资源(包括IoT设备)的信息可以经由被称为Oracle的第三方实体推送至智能合约。作为示例,智能冰箱可以对存储在冰箱中的物品(例如牛奶)的使用进行监控。冰箱内的各种传感器可以用于周期性地对冰箱中储存的牛奶的量进行确定。存储在区块链中的智能合约可以指示,如果存储的牛奶重量降低到低于10盎司,则将自动购买并交付一纸箱新牛奶。冰箱传感器可以周期性地将其读数发送至第三方服务或Oracle。Oracle可以对传感器读数进行评估,以确定是否已经满足用于购买一纸箱新牛奶的条件。在确定所储存的牛奶的重量低于10盎司时,Oracle可以向智能合约推送信息,指示已经满足用于执行智能合约的条件。可以执行智能合约,并且可以自动购买一纸箱新牛奶。智能合约的执行和新的一纸箱的购买两者都可以被记录在区块链中。在某些情况下,条件可能是事件的发生(诸如需求或预期需求)或便利因素(诸如交货日期、成本、促销、或激励)。
与区块链融入IoT相关的一些问题包括交易的速度和计算的复杂性。当具有数百或数千台连接设备的IoT网络都同时进行运行和交易时,区块链上执行交易的速度可能是重要的。IoT设备通常是为了连接而非为了计算而设计的,并且因此IoT设备可以没有支持区块链共识算法(诸如工作量证明)的处理能力。IoT设备也常常容易受到经由互联网和/或物理篡改的攻击。例如,IoT设备可能更容易受到DDoS和恶意软件的攻击。黑客可能会以特定网络为目标,并且在短时间段内开始使用流量向网络发送垃圾邮件。由于流量增加的上涨,带宽可能会迅速过载,并且整个系统可能会崩溃。
供应链监控与物流
产品的供应链可以包括参与产品创建以及将产品最终销售给客户的实体和活动的网络。例如,可以利用基于区块链的产品供应链记录来追踪零部件和材料的来源,并防止假冒零部件进入供应链。产品供应链的区块链集成可能会利用物联网设备和数据、oracle和智能合约。例如,可以在产品上附加RFID标签,以便在供应链中物理跟踪产品并记录其位置。此外,可以利用智能合约来记录产品供应链中所涉及的各个实体之间的各种活动和互动。如上文参考图6A和6B所讨论的,任何可以数字表示和电子存储的数据或信息都可以通过将数据作为区块链交易的一部分提交到区块链中来记录。当交易被包含在添加到区块链中的已验证区块时,交易及其相关数据就被记录在区块链中。
例如,可以使用许可区块链来记录和监控食品分销中涉及的实体和活动,上述视频诸如为水果或蔬菜。区块链可以供诸如种子和农药供应商、农民、分销商、杂货店、客户和监管机构之类的实体访问。区块链可以记录活动,例如向农民销售农药和/或种子、水果的收获和包装、运送到分销商仓库、到达各个商店以及最终由消费者购买。可以利用传感器和RFID设备来跟踪水果在供应链中的流转。例如,水果可以打包在带有独特RFID设备的箱子中。当带有标签的箱子从农场装车运往分销商时,可以扫描箱子,并将其运输记录上传到区块链。当箱子到达仓库时,可以再次扫描,并将其到达仓库的记录上传到区块链。此外,可以在整个供应链中执行智能合约。例如,当箱子在仓库被扫描时,可以执行农民和仓库之间的智能合约,表明箱子已成功从农民运送到仓库并被仓库接收。
又例如,汽车的许可区块链可以存储与用于汽车制造的组件相关的实体和活动的记录。区块链可以供诸如汽车原始设备制造商(OEM)、材料和组件的分销商和供应商、经销商、机械师、保险提供商之类的各种实体访问。在评估涉及保单持有人汽车的事故时,第一用户110(在此示例中为保险提供商110)可能会确定事故可能是由汽车轮子中使用的有缺陷的组件引起的。保险提供商110可能希望根据记录在许可区块链中的信息追溯组件的来源。保险提供商110可以通过在第一客户端设备120上执行的区块链查询应用程序查询区块链数据以获取与组件相关的信息。查询可能包括与组件相关的识别信息。例如,组件可能被标记有对组件或一组组件来说是唯一的标识。查询结果可能包括区块链中涉及创建组件及其最终销售给汽车制造商的实体和活动的记录。
启用区块链的店内购买
以图8所示的系统800、图6A所示的过程600和图6B所示的过程601为参考描述了启用区块链的店内购买的示例。图8示出了启用区块链的店内购买系统800的示例。系统800包括通过网络840连接的移动设备805、商户系统810和服务器850。商户系统810可以通过本地无线网络与商店内的各种物联网设备连接,例如,商户系统810可以通过本地无线网络与店内智能货架815和店内智能结账探测器830连接。
商店可以包括一个或更多个智能货架,诸如店内智能货架815。智能货架815可以包括RFID标签、RFID读取器和天线。一个或更多个产品可能存储在店内智能货架815上。每个产品可以包括RFID标签,例如附在第一产品816a上的第一产品标签820a和附在第二产品816b上的第二产品标签820b。店内智能货架815可以基于读取产品标签820a和820b,全天向商户系统810发送有关产品816a和816b的信息。商户系统810可以反过来更新当前在店内的产品库存。
顾客可以带着移动设备805在商店内走动。移动设备805上的数字购物清单可以包括顾客可能需要购买的物品清单。例如,购物清单可能包括与第一产品816a匹配的物品。当顾客靠近店内智能货架815时,移动设备805可以通知顾客当前店内智能货架815上有第一产品816a。顾客可以将第一产品816a从店内智能货架815上取下并放入智能购物车835。智能购物车835可以读取第一产品标签820a以及可能已放入智能购物车835中的其他产品的产品标签。当顾客准备结账时,顾客可以带着购物车835走出商店。当顾客走出商店时,店内智能结账探测器830可以探测到智能购物车835。智能购物车835可以与店内智能结账探测器830通信并传输有关购物车中产品的信息。店内智能结账探测器830可以将有关产品的信息,例如有关第一产品816a的信息,以及来自移动设备805的支付信息发送到商户系统810。商户系统810可以接收来自店内智能结账探测器830的信息和支付信息,并继续启动购买第一产品816a的流程。
在图6A所示的过程600的步骤605中,移动设备805上的钱包应用程序可以生成交易数据,以便将与第一产品816a的销售价格相匹配的加密货币数额从顾客转移到商户。钱包应用程序可以使用顾客的私钥来为交易生成公钥。为了表明顾客是交易的发起人,还可以使用顾客的私钥来为交易生成数字签名。交易数据可以从移动设备805发送到服务器850。
服务器850可以从移动设备805接收交易数据。在步骤610,服务器850可以将交易广播到区块链网络130a。交易可以被区块链网络130a的一个或更多个节点205接收。在步骤615,接收到交易后,节点205可以选择验证交易,例如,基于与交易相关的交易费用。如果交易没有被任何节点205选中进行验证,则交易可能会被放入队列中,等待被节点205选中。
在步骤620,选择了交易的每个节点205可以验证交易。在步骤625,如果交易被节点205成功验证,则在步骤630,被验证的交易被添加到该节点205正在构建的区块中。在步骤635,区块链网络130a可以等待区块被发布。在步骤640,如果没有区块被发布,则过程600返回到步骤635并等待区块被发布。然而,在步骤640,如果区块已经被发布,则过程600继续到步骤645。
在步骤645,已发布的区块被广播到区块链网络130a以进行验证。在步骤650,如果区块被大多数节点205验证,则在步骤655,被验证的区块被添加到区块链220中。在步骤660,如果交易被添加到区块链220中,服务器850可以等待接收用于该交易的最少数量的区块链确认。在步骤665,如果交易没有收到最少数量的确认,则过程可以返回到步骤660。然而,如果在步骤665,交易已经收到最少数量的确认,则过程继续到步骤670。在步骤670,交易可以被执行,第一产品816a的销售价格可以从顾客转移到商户。
当店内智能结账探测器830将有关产品的信息,例如有关第一产品816a的信息,以及来自移动设备805的支付信息发送到商户系统810时,可以创建顾客和商户之间的智能合约,并根据图6B所示的过程601执行该智能合约。例如,在步骤676,可以创建顾客和商户之间的智能合约,然后将其作为交易提交到区块链网络130a。例如,在步骤678,过程601可以等待接收通知,所述通知即与第一产品816a销售价格同等的加密货币数额已从与顾客相关联的区块链地址发送,并在第一产品816a从智能购物车835中移除之前被接收到与商户相关联的区块链地址。如果第一产品816a的支付已经在顾客从智能购物车835中移除第一产品816a之前成功地从顾客转移到商户,则可以生成并发送给顾客一份电子收据。否则,商户系统815可以被告警顾客试图在未支付第一产品816a的情况下离开店铺。
启用区块链的车内购买
以图9所示的系统900、图6A所示的过程600和图6B所示的过程601为参考描述了启用区块链的车内购买的示例。图9示出了用于启用区块链的车内购买的示例系统900。系统900包括启用物联网的智能车辆908。车辆908可以包括一个或更多个计算设备,这些计算设备用以实现车辆系统910、车辆导航系统930、支付系统960和燃料管理系统935。车辆908可以包括RFID标签,例如车辆识别标签912。系统900还可以包括各种商户系统,例如燃料商户系统915和收费站系统916。系统900还可以包括属于车辆908的驾驶员的移动设备905。
当驾驶员进入车辆908时,支付信息可以从驾驶员的移动设备905加载到车辆支付系统910中,以便用于向其他设备进行安全支付以完成车内购买,例如车内购买燃料和车内支付过路费。智能车辆的驾驶员可以使用启用物联网的智能车辆908支付停车费、快餐等。此外,启用物联网的智能车辆908还可以促进车内购买智能手机应用程序、音乐、有声读物以及其他商品和服务。
燃料管理系统935可以执行与燃料使用相关的各种功能,并与车辆系统916通信。例如,燃料管理系统935可以监测燃料使用情况,并基于检测到燃料低于阈值,通知车辆系统910。车辆系统910可以与车辆导航系统930通信以确定附近的燃料站。选择燃料站可能基于各种因素,例如附近燃料站的燃料供应情况、车辆当前的路线和位置、附近燃料站可能提供的激励措施等。车辆系统910可以通知驾驶员关于选择燃料站的决定,车辆908可以被重新路由到所选的燃料站。到达所选的燃料站后,驾驶员可以驶向燃料泵。燃料泵可以包括燃料泵系统965,燃料泵系统965被配置成检测车辆RFID标签,例如车辆识别标签912,以获取车辆的识别信息。燃料泵系统965和支付系统960可以被配置为相互通信。燃料支付系统960可以将支付信息发送到燃料泵系统965。在驾驶员完成燃料补充后,驾驶员可以直接驾车离开。燃料泵系统965可以将有关车辆908的识别信息、购买的燃料量和支付信息发送到燃料商户系统915。燃料商户系统915可以使用这些信息来完成与驾驶员的燃料购买交易。例如,燃料商户系统915可以与服务器950通信以根据图6A所示的过程600向驾驶员收取燃料费用。此外,燃料商户系统915可以与服务器950通信以创建驾驶员和燃料商之间的智能合约。智能合约可以根据图6B所示的过程601创建和执行。
增强现实(AR)、混合现实以及基于区块链的电子商务
启用增强现实或混合现实的设备,例如可穿戴智能眼镜、头戴设备、全息设备或智能手机应用程序,可以在真实世界视图之上覆盖数字内容,从而增强用户的现实世界体验。覆盖内容可能是基于对真实世界对象3D扫描生成的3D模型。AR使用户能够在虚拟环境中体验在线购物。例如,使用AR,可以浏览虚拟商店并查看虚拟商店中待售商品的3D模型。就像在现实世界中一样,顾客能够处理和检查产品的各种物理细节。区块链智能合约可以用来提供电子商务平台,在该平台上顾客可以使用加密货币和数字钱包从在线商户购买商品。关于产品的信息,如原产国、材料、成分、价格、描述、尺寸、条款和条件、实物产品的3D模型等,可以被散列处理并记录在区块链中。这提供了虚拟商品和产品所有权的证明,并能够准确跟踪对这些信息所做的任何更改。人工智能(AI)可以用来基于产品的2D图像生成产品的3D模型。智能合约可以用来处理商户和顾客之间的交易。
例如,顾客可以通过佩戴AR设备,如一副智能眼镜,在虚拟购物中心浏览不同的商店来购买衣服。顾客可以像在现实世界中一样检查衬衫的3D模型。此外,顾客可以使用顾客身体的3D模型虚拟试穿衬衫。如果顾客决定购买衬衫,顾客可以启动与商店商户的交易。交易可以通过顾客的数字钱包提交到区块链,以将资金(加密货币)从顾客转移到商户。可以使用各种智能合约来实施电子商务流程的各个方面。例如,基于检测到衬衫的销售价格已成功从顾客转移到商户,可以执行智能合约来启动从商户仓库向顾客发货。如上所述,参考供应链监控和跟踪,可以使用RFID标签和其他物联网设备来跟踪衬衫从商户仓库到顾客住所的运输。
量子计算
量子计算的一个担忧是它可能增加破解加密算法的可能性,从而削弱区块链的整体安全性。这可以通过要求某些加密算法使用更大的密钥大小或切换到量子安全算法来解决。在某些情况下,如果担心将来某个区块可能被解密,可以使用动态变化的加密散列。可以基于各种因素动态地选择用于特定区块或整个区块链的不同加密散列,所述各种因素诸如为是否担心区块将来会被解密、增加散列的强度、使用更适合保护隐私的散列。在某些情况下,可以为不同的区块选择不同的加密散列。
匿名性与隐私
如上所述,使用私钥/公钥对在验证区块链交易时建立用户真实性提供了一定的隐私性,因为它不会泄露用户身份。然而,存储在区块链上的交易可以对公众可见。已经表明,可以从公开可用的交易信息中推导出用户身份。
区块链大小
根据事件记录在区块链中的频率,区块链的大小可能会迅速增长。可能需要计算/存储能力(即更快的处理器、更大的存储组件)来支持区块链的扩展。在某些情况下,可能会在添加到链之前对区块进行压缩。在某些情况下,可能会消除区块,例如当位于区块链的开端的区块变得陈旧或不相关时消除位于区块链的开端的区块。例如,一种用新区块“替换”前1000个交易的方法可能对管理区块链大小有用,该新区块有效地模仿了1000个交易的散列。
区块链不变性
在某些情况下,区块链中的内容可能需要被删除。例如,如果出现安全漏洞或内容不再相关,则可能需要删除内容。区块链的不变性水平可能取决于区块链的类型。例如,在公共区块链中更改内容可能会很困难,因为它可能会影响大量用户。根据某些技术,存储在私有区块链中或由少数实体控制的公共区块链中的数据可以通过记录更改正在进行的标志(当前区块),并将当前区块(由标志引用)添加到区块链中来更改。然后添加的区块可以指示对前一区块所做的更改。
又例如,可能需要更改区块链以解决断开的链接。例如,更改后的区块的散列可能不再与区块+1中存储的散列匹配。在某些情况下,可能需要更改区块链以撤销非法交易的结果。在某些情况下,可能需要更改区块链以解决软件错误、错误交易,或删除机密信息或法律要求删除的信息。如果区块链是不可变的,这些错误和信息可能会永久嵌入区块链中。此外,可能需要更改区块链以符合监管关切,例如欧盟即将到来的通用数据保护条例(GDPR)或关于消费者数据隐私和所有权权利的加利福尼亚消费者隐私法案(CCPA),美国公平信用报告法,以及SEC的“Regulation SP”,这些都要求记录的用户可识别的个人财务数据可以被编辑。
某些技术可能允许修改区块链以解决软件错误、法律和监管要求等问题,允许指定的权威机构编辑、重写或删除以前的区块信息而不破坏区块链。这些技术可以通过使用“变色龙”散列函数的变体和使用安全的私钥来启用区块链编辑。这种编辑可以允许更新在发行时存在缺陷的智能合约,以便更改传递到区块链中后续的智能合约。使用这些技术,已更改的区块可以使用“疤痕”或标记,即使是受信任的方也无法将其移除。
根据某些技术,当区块被散列处理时,任何机密信息诸如个人身份信息以及IP地址都不包括在区块中,因为它不是被散列处理的数据值的一部分。但是因为没有机密信息的散列,它可以被更改。根据某些技术,机密信息可以不放置或记录在区块链中。相反,信息可能存在于区块链外部的文件中。然而,该文件的散列可以被记录在区块链中。例如,用户的机密信息可以在不影响区块链的情况下本地删除。
又例如,假设区块链中的区块中包含的所有内容在区块被添加到区块链后都不能更改,在将数据添加到区块链之前,可以确定这些数据的全部或部分是否可能需要在以后删除。例如,机密信息(即稍后要删除的数据)可以存储为区块和区块链外部的文件。为了创建区块,可以将包含机密信息的文件的链接和该包含机密信息的文件的散列添加到区块中。链接的示例可以是HTTP链接。在确认要添加到区块链的区块时,网络节点可能能够访问机密信息,并根据区块中文件的散列值验证机密信息。因为文件的散列值是区块的一部分,所以包含机密信息的文件不容易被更改。然而,可能通过更改其中的数据并添加随机数来更改机密信息文件。这可能试图更改随机数,直到产生的散列等于存储在区块链中的散列。然而,这将是困难的(可能几乎不可能),并且对修改后的机密信息文件的检查将揭示添加的随机数,这可能致使怀疑信息自首次添加到区块链以来已被更改。
包含机密信息的文件可以在散列操作之前被加密(例如,通过非对称密钥加密函数)。在“删除”机密信息时,包含机密信息的文件可能被删除或移除,导致存储在区块链中的链接无法有效检索文件。文件的散列和链接仍然保留在区块链中,因此不会影响通过散列函数链接区块。然而,由于这种变化,可以将交易添加到区块链中,作为区块的一部分或不同特殊区块的一部分,以指示链接不再有效并且机密信息文件不再是区块链的一部分。这可以有效地将机密信息保持在区块链之外,同时向区块链的用户提供机密信息的真实性证明,并在机密信息从区块链中删除之前提供证明。这可能会带来缺点,因为访问数据意味着这些数据可能被存储。因此,那些在机密信息文件是区块链一部分时可以访问该文件的人,可能已经将该信息存储在另一个在上述“删除”操作期间可能不再可达的位置。
51%攻击
“51%攻击”指的是单独的矿工节点或一组矿工节点控制了区块链网络超过50%的挖矿能力,也称为散列率或散列能力。散列率是衡量区块链网络上计算散列的速率的指标。如上所述,散列可能包括取一个给定长度的输入字符串,并通过加密散列函数运行它以产生固定长度的输出。区块链网络的散列率可以用1KH/s(每秒千散列,即每秒1000散列)、1MH/s(每秒百万散列,即每秒1,000,000散列)、1TH/s(每秒万亿散列,即每秒1,000,000,000,000)或1PH/s(每秒千万亿散列,即每秒1,000,000,000,000,000散列)来表示。例如,使用工作量证明共识模型(PoW)的区块链中的矿工节点可以执行散列运算以找到一个难以解决的数学问题的解决方案。矿工节点的散列率可以取决于该节点可用的计算资源。成功解决数学问题的矿工节点可能能够向区块链添加区块。因此,通过确保无效交易不能被包含在区块中,矿工节点提高了网络的可靠性。如果交易试图花费超过当前拥有的数额或进行双重支付,则可能被视为无效。如果矿工节点故意或无意中在区块中包含了无效交易,那么该区块将不会被网络验证。此外,接受无效区块为有效并继续在无效区块之上添加区块的节点也将最终浪费计算资源。因此,矿工节点被阻止通过故意添加无效交易到区块和接受无效区块为有效来作弊。
实体可以通过获得网络50%的散列率来破坏网络。在51%攻击中,区块链节点可能故意逆转或覆盖交易并进行双重支付。当节点生成有效的交易区块时,它会将该区块广播到网络进行验证。在某些情况下,控制超过网络50%散列率的节点可能会私下挖掘区块而不将它们广播到网络。在这种情况下,网络的其余部分可能遵循区块链的公共版本,而控制节点可能遵循其私有版本的区块链。图7A显示了区块链700的欺诈和有效版本。顶部的有效区块链包括有效区块705、710a、715a和720。底部的欺诈区块链没有广播到网络,并包括区块705、710b、715b和无效区块720。
图7B展示了区块链的另一欺诈和有效版本。有效版本的区块链包括节点740、745a、750a和755a。欺诈版本的区块链包括节点740、745b、750b、755b和775。然而,根据最长链规则,网络可能会选择并使用包含节点740、745b、750b、755b和775的私有或欺诈区块链。由于它是最长的链,之前的交易可能根据这条链进行更新。作弊节点可能在公共或欺诈版本的区块链上包括花费资金的交易,例如区块750b包含了150BTC的交易,而未将这些交易包含在私有版本的区块链中。因此,在私有版本的区块链中,作弊节点可能继续拥有已花费的150BTC。当作弊节点控制了网络超过50%的散列资源时,它可能能够广播其私有版本的区块链,并比网络的其他部分更快地在私有区块链上创建区块,从而导致更长的区块链。由于存在两个版本的区块链,网络可能会选择最长的或欺诈的私有区块链作为有效的区块链。结果,网络的其他部分可能被迫使用更长的区块链。然后,公共或有效版本的区块链可能会被丢弃或废弃,而且该区块链中不在私有或欺诈版本的区块链中的所有交易可能会被逆转。控制或作弊节点可能会继续拥有已花费的资金,因为花费交易没有包含在欺诈版本的区块链上,因此作弊节点可能会在未来的交易中使用这些资金。
由于获得比整个网络其余部分更多的散列能力所需的财务资源,成功实施51%攻击通常可能具有挑战性。然而,在散列率较低的网络上实施51%攻击的成本可能会低于在散列率较高的网络上实施。此外,使用矿池的情况下成功实施51%攻击的概率会增加,在矿池中,多个节点可能会合并它们的计算资源,例如,当挖矿是在同一矿池中进行时。
计算设备
图10示出了系统1000。系统1000可以包括经由网络1040进行通信的至少一个客户端设备1010(也称为“控制处理设备”)、至少一个数据库系统1020、和/或至少一个服务器系统1030。将理解的是,所示的网络连接是说明性的,并且可以使用在计算机之间建立通信链路的任何手段。假定存在诸如TCP/IP、以太网、FTP、HTTP等的各种网络协议中的任何一种,以及诸如GSM、CDMA、WiFi、和LTE的各种无线通信技术中的任何一种,并且本文所描述的各种计算设备可以被配置成使用这些网络协议或技术中的任何一种进行通信。本文所描述的设备和系统中的任何可以全部或部分地使用关于图10所描述的一个或更多个计算系统来实现。
客户端设备1010可以使用本文所述的一个或更多个客户端应用程序(未示出)来对服务器应用程序和/或资源进行访问。客户端设备1010可以是移动设备,诸如膝上型电脑、智能手机、移动电话、或平板电脑、或计算设备,诸如台式计算机或服务器、可穿戴设备、嵌入式设备。替代地,客户端设备1010可以包括其他类型的设备,诸如游戏控制台、相机/录像机、视频播放器(例如,结合DVD、蓝光、红色激光、光学和/或流技术)、智能电视、和其他网络连接设备(视情况而定)。
数据库系统1020可以被配置成对服务器系统1030的信息进行维护、存储、检索、和更新。此外,数据库系统可以周期性地或根据请求向服务器系统1030提供信息。在这方面,数据库系统1020可以是能够跨节点集群存储、维护、和更新大量数据的分布式数据库。数据库系统1020可以提供各种数据库,包括但不限于关系数据库、层次数据库、分布式数据库、内存中数据库、平面文件数据库、XML数据库、NoSQL数据库、图形数据库、和/或其组合。
服务器系统1030可以被配置有服务器应用程序(未示出),该服务器应用程序能够与本文所述的客户端应用程序和数据库系统1020进行接口。在这方面,服务器系统1030可以是独立服务器、公司服务器、或位于服务器场或云计算机环境中的服务器。根据一些示例,服务器系统1030可以是托管在能够支持多个虚拟服务器的硬件上的虚拟服务器。
网络1040可以包括任何类型的网络。例如,网络1040可以包括局域网(LAN)、广域网(WAN)、无线电信网络、和/或任何其他通信网络或其组合。将理解的是,所示的网络连接是说明性的,并且可以使用在计算机之间建立通信链路的任何手段。假定存在诸如TCP/IP、以太网、FTP、HTTP等的各种网络协议中的任何一种,以及诸如GSM、CDMA、WiFi、和LTE的各种无线通信技术,并且本文所描述的各种计算设备可以被配置成使用这些网络协议或技术中的任何一种进行通信。
传输至系统1000中的各种计算设备的数据和从系统1000中的各种计算设备传输的数据可以包括安全且敏感的数据,诸如机密文档、客户个人可识别信息和账户数据。因此,可能需要使用安全的网络协议和加密来保护这种数据的传输,以及/或者保护数据在存储在各种计算设备上时的完整性。例如,基于文件的集成方案或基于服务的集成方案可以用于在各种计算设备之间传输数据。可以使用各种网络通信协议来传输数据。在文件传输中可以使用安全的数据传输协议和/或加密来保护数据的完整性,例如,文件传输协议(FTP)、安全文件传输协议(SFTP)、和/或良好隐私(PGP)协议。在许多实施方式中,一个或更多个网络服务可以在各种计算设备内实现。Web服务可以由授权的外部设备和用户进行访问,以支持系统1000中的各种计算设备之间的数据的输入、提取、和操纵。为支持个性化显示系统而构建的Web服务可以是跨域和/或跨平台的,并且可以针对企业使用而构建。可以使用安全套接字层(SSL)或传输层安全性(TLS)协议来传输数据,以提供计算设备之间的安全连接。Web服务可以使用WS-Security标准来实现,该标准使用XML加密来提供安全的SOAP消息。可以使用专门的硬件来提供安全的网络服务。例如,安全网络设备可以包括内置特征,诸如硬件加速的SSL和HTTPS、WS-Security、和/或防火墙。这样的专用硬件可以被安装和配置在系统1000中在一个或更多个计算设备的前面,使得任何外部设备可以直接与专用硬件进行通信。
现在转到图11,描述了可以与计算系统中的一个或更多个一起使用的计算设备1105。计算设备1105可以包括:处理器1103,其用于控制计算设备1105及其相关组件的整体操作,相关组件包括:RAM 1105、ROM 1107、输入/输出设备11011、通信接口1111和/或存储器1115。数据总线可以互连(一个或更多个)处理器1103、RAM 1106、ROM 1107、存储器1115、I/O设备1109、和/或通信接口1111。在一些实施方式中,计算设备1105可以表示、并入和/或包括各种设备,诸如台式计算机、计算机服务器、移动设备(例如膝上型计算机、平板电脑、智能电话、任何其他类型的移动计算设备等)和/或任何其他类型数据处理设备。
输入/输出(I/O)设备1109可以包括麦克风、键盘、触摸屏、和/或手写笔运动、手势,计算设备1105的用户可以通过该麦克风、键盘、触摸屏和/或手写笔运动、手势来提供输入,并且输入/输出(I/O)设备1109还可以包括用于提供音频输出的扬声器和用于提供文本、视听、和/或图形输出的视频显示设备中的一个或更多个。软件可以存储在存储器1115内以向处理器1103提供指令,从而允许计算设备1200执行各种动作。例如,存储器1115可以存储计算设备1200所使用的软件,诸如操作系统1117、应用程序1119、和/或相关联的内部数据库1121。存储器1115中的各种硬件存储器单元可以包括以用于存储诸如计算机可读指令、数据结构、程序模块、或其他数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。存储器1115可以包括一个或更多个物理持久存储器设备和/或一个或更多个非持久存储器设备。存储器1115可以包括但不限于随机存取存储器(RAM)1106、只读存储器(ROM)1107、电可擦可编程只读存储器(EEPROM)、闪存或其他存储器技术、光盘存储、磁盒、磁带、磁盘存储或其他磁存储设备,或者可以用于存储期望信息并且可以由处理器1103访问的任何其他介质。
通信接口1111可以包括一个或更多个收发器、数字信号处理器、和/或用于使用本文所述的任何协议经由任何网络(有线或无线)进行通信的附加电路和附加软件。
处理器1103可以包括单个中央处理单元(CPU),其可以是单核或多核处理器,或者可以包括多个CPU。(一个或更多个)处理器1103和相关联的组件可以允许计算设备1100执行一系列计算机可读指令以执行本文所述的过程的一些或全部。尽管图11中未示出,但是存储器1115或计算设备1105中的其他组件内的各种元件可以包括一个或更多个高速缓冲存储器,例如,处理器1103所使用的CPU高速缓冲存储器、操作系统1117所使用的页面高速缓冲存储器、硬盘驱动器的盘高速缓冲存储器、和/或用于缓存来自数据库1121的内容的数据库高速缓冲存储器。针对包括CPU高速缓冲存储器的实施方式,CPU高速缓冲存储器可以由一个或更多个处理器1103使用以减少存储器延迟和访问时间。处理器1103可以从CPU高速缓冲存储器中检索数据或将数据写入CPU高速缓冲存储器,而不是读取/写入到存储器1115,这可以提高这些操作的速度。在一些示例中,可以创建数据库高速缓冲存储器,其中来自数据库1121的某些数据被缓存在与数据库分离的存储器中的单独的较小数据库中,诸如在RAM 1106中或在单独的计算设备上。例如,在多层次应用程序中,应用程序服务器上的数据库高速缓冲存储器可以通过不需要通过网络与后端数据库服务器进行通信来减少数据检索和数据操纵时间。这些类型的高速缓冲存储器和其他的高速缓冲存储器可以包括在各种实施方式中,并且可以在本文所述的设备、系统、和方法的某些实现中提供潜在的优点,诸如在传输和接收数据时更快的响应时间和更少的对网络条件的依赖。
尽管计算设备1105的各种组件被单独描述,但是在不脱离本发明的情况下,各种组件的功能性可以由通信中的单个组件和/或多个计算设备组合和/或执行。
具体实施方式
当使用比特币或其他基于区块链的协议或货币进行交易时,交易会被输入到内存池(本文中被称为存储池)中。存储池是未经确认的待决交易的数据库,每个区块链网络中的节点都会保有这样一个数据库。存储池中的所有交易在被包含进区块之前都不会被信任。交易可能会在存储池中保持未决状态,直到它能被打包进区块并由区块链网络中的矿工以加密方式确认。通常,比特币交易的确认大约每十分钟进行一次,但在其他不同的区块链中可能会更快或更慢地被确认。
通常会出现这样的情况:交易没有被包含在区块链的下一区块中,甚至之后的区块也没有。经过一段时间和/或一定数量的区块被确认后,如果交易仍未被确认,那么交易可能被认为是“卡陷”在存储池中。通常,交易卡陷是区块链网络拥堵的副作用。拥堵通常是因为发送到存储池的交易突然激增或者散列率突然下降造成的。散列率可以指用于处理交易和挖掘新币的总计算能力。散列率可能因各种原因下降,包括停电、自然灾害和硬件可用性等。
不幸的是,拥堵已经成为使用比特币或其他加密货币处理交易的区块链的一个常规和预期的问题。当区块链网络拥堵时,那些支付最高费用(例如,费用与交易大小的比率,例如,每字节的聪(satoshis)或聪/字节)的交易会被优先处理,原因在于每个提交的交易都必须与其他交易竞争以被包含在未来的某个区块(例如,区块空间)中。如果用户所支付的在区块链上进行交易的费用低于将交易发送到存储池时的平均费率,那么交易被确认之前可能会有显著的延迟,原因在于矿工是出于利润动机,而支付更多费用的交易在挖掘新区块时会比其他交易被优先考虑。区块链网络越拥堵,用户为了让交易得到确认就必须支付更多的费用,因此在高拥堵时期,进行交易的平均费用会上升。
“子支付父(Child Pays for Parent)”交易允许用户(例如,卡陷交易的交易输出的接收方)支付费用,使得即将到来的卡陷交易(“父”)对矿工更有吸引力。用户可以通过向存储池发送第二交易(“子”)来实现这一点,其中子交易花费父节点的输出从而以更高的费用被挖掘。比特币共识规则要求创建输出的交易必须在区块链中早于花费输出的交易出现——包括如果两者包含在同一区块中,父交易必须早于子交易出现在该同一区块中。由于子交易只有在原始父交易被确认后才能被确认,矿工会看到并计算父交易和子交易两者的总费用,并接受利润较低的交易(卡陷的父交易),以便挖掘利润更高的交易(费用更高的子交易)。因此,矿工被鼓励处理这两笔交易。这并不能保证卡陷的父交易会被包含在下一区块中,但它可以增大卡陷的父交易被包含在下一区块中的概率,或者至少通过更早地被包含在区块中而不是更晚些时候被包含在区块中来加速确认。通常,父交易和子交易的总费用必须显著高于平均费用,以便子支付父交易起作用。
自比特币区块链最初诞生以来,它就支持了一个概念,即存储池中的未确认交易可以被修改并重新发布。这个概念被称为“交易替换”,因为新交易替换了旧交易。然而,由于交易替换消除了所有被替换的先前交易的成本,它产生了拒绝服务(DoS)的风险:攻击者可以产生任意多的交易,而只支付最终被挖掘的那个变体的费用。为了解决这个问题,开发了“按费用替换(Replace by Fee)”的概念。按费用替换要求替换交易不仅要支付自己的成本,还要支付被替换交易的费用;因此,DoS风险严格小于用单独交易淹没存储池的风险。
“按费用替换”方法可以通过让用户支付费用来更改卡陷交易的费用,从而使交易不再卡陷。存储池中的未确认交易被替换为一不同的交易,此交易花费了相同输入中的至少一个,并支付了更高的交易费用。举例来说,考虑用户进行了一笔费用为1聪/字节的交易,这是可能的最低数额。交易在存储池中停留了几天,零确认,直到用户意识到交易不会很快被确认。用户不愿意等待,可能会广播一笔与之前卡陷的交易相同但包含更高费用的新交易。通过挖掘新交易,矿工将获得新交易的费用,这应该严格大于被替换交易的费用以及被替换/丢弃的任何后代交易(如果有的话)的费用之和。如果费用高于原始交易,无论是绝对基础还是每字节基础,矿工通常会选择替换交易。
然而,“子支付父”和“按费用替换”都有技术限制,这种技术限制不允许它们用于交易被卡陷的所有情形。例如,子支付父的一个问题是某些区块链协议默认限制了子交易的使用。通常会设置祖先/后代的数量限制,以防止存储池被永远不会进入区块链的无用交易淹没。例如,比特币核心(Bitcoin Core)默认限制交易链,使得如果交易有超过25个祖先或超过25个后代(子交易),那么该交易将不会进入比特币核心节点的存储池。因此,经常发生的情况是,许多子交易没有通过,无法被包含在区块链中(它们可能有非常小的费用,不被矿工选择),父交易就卡陷了。结果,父交易和许多子交易都卡陷了,“子支付父”不能用作补救措施,因为子交易的数量已经达到了区块链协议的限制(例如,发送另一子交易将超过25个祖先/后代的限制)。
“子支付父”的上述技术限制在加密货币交易平台的背景下尤为明显。例如,交易平台通常会进行服务于多个用户的单个交易,比如当25个用户想要交换比特币时(例如,在提款期间),交易平台通常会进行单个交易,并且有多个交易输出指向用户。然后,用户可以在父交易被挖掘/确认之前使用这些交易输出进行子交易/后代交易。在这种情况下,如果子交易太多(例如,超过区块链协议的技术限制,如25个祖先/后代限制),并且父交易卡陷了,那么将无法使用“子支付父”来使父交易不再卡陷。通常在意识到父交易卡陷之前,就已经达到了子交易的限制数量。
在上述情况下,“按费用替换”也无法使用,原因在于如果原始的父交易卡陷了,替换交易的费用连同原始父交易的费用必须足够高以支付自身以及所有子交易的费用,因为如果已经有依赖于原始卡陷的父交易的子交易,那么后来的子交易将因它们的输入已经不存在而被丢弃。因此,矿工只有在其费用和原始交易费用大于子交易链的情况下才会接受替换交易。实际上,在这种情况下,“按费用替换”变得过于昂贵,无法作为解决交易被卡陷的方法。
本公开内容提供了系统和方法,提供了一种例如在“子支付父”或“按费用替换”不适用的情况下有效解决区块链交易卡陷的问题的解决方案。
现在参考图12,图示了与用于交易卡陷的预防性解决方案相对应的示例图1200。原始交易1202可以被广播到区块链网络,以便包含在区块链的区块中。例如,原始交易1202可以被发送到存储池,以便被矿工节点选中并包含在区块链的区块中。原始交易1202可以使用源自与发送实体对应的发送地址1208的未花费交易输出(UTXO)作为输入1218。原始交易1202可以具有将加密货币定向到接收地址1222的输出1220,以及将找零定向到发送方地址1228的输出1212,这可以是由与发送方地址1208对应的发送方控制的交易“找零”地址,或者在某些实施例中,是与发送方地址1208相同的地址。作为示例,原始交易1202可以由加密货币交易平台请求以将加密货币发送到对应于该交易平台的客户的接收地址1222。
原始交易1202可以以发送实体基于当前区块链网络的费用环境而(自动或手动)选择的费用1206进行广播。例如,费用1206可以大约是区块链网络中存储池中交易的当前平均费率或中位费率。
在广播原始交易1202之后立即(例如,不到三秒钟左右),可以将占位交易1204广播到区块链网络以便包含在区块链的区块中。对于占位交易1204,输入1210可以包括来自原始交易的输出1212(例如,“找零”),因此占位交易1204从原始交易1202创建了后代交易。例如,输入1210可以源自找零地址1228,这可以是由与发送方地址1208对应的发送方控制/拥有并从原始交易1202接收找零的地址。占位交易1204的输出1214可以指向回发送方/找零地址1228。因此,发送方正在使用来自原始交易1202的交易找零(来自输出1212的UTXO)并在占位交易1204中将其发送回自己。
最初,占位交易1204的占位费用1216可以是象征性的数额,其被选择成使得占位交易1204不太可能被矿工选中并包含在区块中。例如,占位费用1216可能是低于区块链网络平均费率的阈值数额,也可能是区块链网络允许占位交易被接纳到存储池的最低可能费率,或者可能是可以致使占位交易在节点的存储池空间不足时被丢弃(例如,占位交易在一定时间内未被验证/未被确认为区块后最终被丢弃)的某些其他费率。
在正常情况下(例如,区块链网络上没有拥堵或低拥堵),原始交易1202不会卡陷。然而,可能会有下述情况出现,即原始交易1202被确定为卡陷在存储池中。例如,基于交易在等待确认时由于矿工在挖掘新区块时选择了存储池中的其他交易而经历的显著延迟(例如,超过阈值持续时间),可以确定区块链网络拥堵。拥堵的存在还可能基于存储池中交易的交易费用上升(例如,超过阈值变化),原因在于用户开始支付更多的处理费用以使他们的交易在区块链中得到确认。
当区块链网络拥堵时,进一步考虑下述情境,在该情境中已经有大量子交易1226从原始交易1202衍生出来,在发送实体是加密货币交易平台且该平台已经向大量的对应于客户的输出提供了加密货币的情况下,这种情境是很可能发生的。例如,客户将很快开始使用来自输出1220的加密货币进行自己的交易,这可能很快就会达到祖先/后代交易的限制,甚至在原始交易1202在区块链中被确认之前就达到祖先/后代交易的限制。由于可能已经有超过区块链协议允许的最大祖先/后代交易限制的子交易1226数量,“子支付父”将无法使原始交易1202解除卡陷。此外,对原始交易1202的“按费用替换”也将因极其昂贵而无法使用,因为替代费用将需要足够高以支付替换交易、原始交易1202以及从原始交易1202衍生的所有子交易1226。
因此,作为解除原始交易1202卡陷的解决方案,通过以包括更高的费用1224的交易覆盖占位交易1204,来使占位交易1204的占位费用1216可以被更高的费用1224(例如,高费用)替换。占位交易1204可以被替换,因为它没有任何从自身衍生的子交易。换言之,由于占位交易1204没有子交易,“按费用替换”可以用于占位交易1204以使原始交易1202解除卡陷。更高的费用1224可以是适当的费率,以鼓励矿工选择将原始交易1202和新交易(其替换了占位交易1204)包含在区块链的区块中。
占位交易1204的输出不应被使用,以避免创建占位交易1204的后代交易。在原始交易1202没有卡陷的情况下,占位交易1204的输出将不会被实现,原因在于占位交易1204不会被挖掘。
在一些实施方式中,更高的费用1224可以通过使用(占位交易1204的费用+卡陷的原始交易1202的费用)/(占位交易1204的字节长度+卡陷的原始交易1202的字节长度)来计算,这应该大于当前的费用,以允许卡陷的交易被包含在下一区块中。
现在参考图13,图示了根据本公开内容的实施方式的用于使区块链交易解除卡陷的流程图1300。流程1300的各个步骤在此描述为连续发生,或线性发生(例如,一个接一个)。然而,流程1300的多个步骤可以并行发生。此外,流程1300的步骤不必按所示顺序执行,和/或流程1300的一个或更多个步骤可能不需要执行。
应当理解,第一、第二、第三等通常在此用作解释目的的标识符,并不一定意味着排序、序列或时间方面,这通常可以从使用第一、第二、第三等的上下文中明显看出。
在一些实施方式中,流程1300的各种操作可能由具有至少一个非暂态存储器(例如,机器可读介质)和一个或更多个硬件处理器的计算机系统执行,硬件处理器被配置为从非暂态存储器读取指令以使系统执行流程1300。例如,计算机系统可以包括图11中的一个或更多个计算机设备1105。
在步骤1305,计算机系统可以向区块链网络广播第一交易,以将其添加到区块链中的区块。例如,第一交易可以被发送到区块链网络的存储池,区块链网络中的矿工节点从区块链网络中选择交易以包含在区块链的下一区块中。
第一交易可以被视为原始交易,如上文参考图12所讨论的。第一交易可以包括发送方地址、一个或更多个接收方地址和第一交易费用。在一些实施方式中,计算机系统可以基于与当前区块链的存储池中的未决的其他交易相关联的交易费用和/或基于当前区块时间来确定用于第一交易费用的费用/费率。例如,计算机系统可以探测存储池中排队等待处理的其他交易,并确定用于存储池中未决交易的平均费率或中位费率。计算机系统可以使用该平均费率或中位费率作为第一交易费用。在另一示例中,计算机系统可以确定当前区块时间大于阈值持续时间,因此可以确定使用大于存储池中未决交易的平均费率或中位费率的费率。区块时间可以指区块链中产生新区块所需的时间量。
在步骤1310,计算机系统可以向区块链网络广播第二交易,以将其添加到区块链中的区块。例如,第二交易可以被发送到区块链网络的存储池。计算机系统可以选择第一交易的输出以被包括作为第二交易的输入,使得第二交易从第一交易衍生。例如,第一交易的输出可以是第一交易的交易找零或未花费的交易输出(UTXO)。
第二交易可以被广播成使得第二交易没有后代交易,这允许在未来需要时替换第二交易及其费用。例如,UTXO加密钱包的实现方式可以包括一种输入选择算法,使得不会从第二交易创建后代交易。然而,即使加密钱包确实允许选择单独的输入,大多数钱包会为每个外流交易生成新的找零地址——因此第一交易可以具有位于离散地址中的输出,其可以被指定为第二交易的源,因此不需要控制输入选择,只需要控制源地址选择,这在任何企业钱包中都是标准操作。假设这种对源地址的基本控制是可用的,则可以避免使用第二交易的源地址创建新交易,使得不会创建后代交易。
第二交易可以被视为占位交易,如上文参考图12所讨论的。
最初,第二交易可以包括象征性的费用,这可以作为占位费用,以防第一交易卡陷在存储池中。象征性费用的可以被选择成使得第二交易不太可能被矿工选中并被包含在区块中。例如,象征性费用可以是低于区块链网络平均费率的阈值,或者是允许第二交易仍然可以被接纳进存储池的区块链网络最低可能费率,和/或其他可能导致占位交易在节点的存储池空间不足时被丢弃的费率。如果第一交易在区块链中得到确认,象征性费用应被选择成使得在一定时间后第二交易因未被验证/未被确认至块中而最终从存储池中被丢弃。在这方面,第二交易的存在目的是作为一个占位,以防第一交易卡陷在存储池中。
在步骤1315,计算机系统可以确定第一交易尚未被确认至区块链中的区块。在一些实施方式中,为了被确认,必须在包含交易的区块被添加到区块链后再添加一定数量的区块。在一些实施方式中,用于确认的区块数量可以根据所需的应用程序进行更改。例如,更高数量的确认可能提供更多的关于第一交易已被包含在区块链中的确定性,而较低数量的确认可能提供较少的关于第一交易已被包含在区块链中的确定性。
在一些实施方式中,计算机系统可以监控区块链以确定第一交易尚未在一段时间内被确认成去到区块链中的区块。确定未确认成去到区块链中的区块可能基于确认的缺乏和该段时间的流逝。例如,该段时间可以是已添加到区块链中且不包括第一交易的区块的数量。又例如,该段时间可以是一时间段,如一定数量的分钟、小时、天、周等(例如,30分钟、2小时、4天、1周)。
在一些实施方式中,计算机系统可以针对存储池确定存储池的大小(例如,存储池交易计数)。计算机系统可以进一步确定存储池大小超过预定阈值,这表明了区块链网络拥堵。在另外的实施方式中,计算机系统可以确定区块链的区块时间超过预定阈值(或者区块被添加到区块链的频率未达到预定阈值),这也可以表明区块链网络拥堵。响应于第一交易未被确认和/或确定区块链网络拥堵,根据各种实施方式的计算机系统可以继续行进到步骤1320。
在步骤1320,计算机系统可以用更高的交易费用替换第二交易费用,从而使第一交易和第二交易被包含在区块链的区块中并得到确认。例如,计算机系统可以向区块链网络发送信号以用新交易替换第二交易,该新交易与第二交易类似,但将第二交易的费用替换为更高的交易费用。在一些实施方式中,与第二交易的费率和绝对费用相比,更高的交易费用可以包括更高的费率和更高的绝对费用。
在一些实施方式中,计算机系统可以探测区块链网络的存储池中排队等待处理的其他交易,并根据与这些其他交易相关的费用来确定要使用的更高费用。例如,计算机系统可以探测存储池中排队等待处理的其他交易,并确定存储池中未决交易的平均费率或中位费率。计算机系统可以使用平均费率或中位费率作为确定该更高费用的基础。例如,计算机系统可以针对该更高费用使用以下费率,这样的费率使得更高费用和第一交易的费用总体上超过存储池中未决交易的平均费率或中位费率。
通过用具有更高费用的新交易替换第二交易,区块链网络中的矿工节点将被鼓励从存储池中选择带有替代费用的新交易和第一交易,以将其包含在区块链的区块中。一旦矿工找到共识算法的解决方案,它可以将包含第一交易和新交易的候选区块广播到区块链网络的其他节点以验证解决方案的有效性并执行每个区块交易。如果大多数矿工同意,则新提议的区块可以被添加到区块链中,如本文所讨论的。
因此,本公开内容提供了用于在区块链网络经历网络拥堵时使第一交易解除卡陷的有效的解决方案。
现在参考图14,图示了根据本公开内容的实施方式的区块链交易输入选择过程1400的流程图。过程1400的步骤在此描述为顺序发生,或线性发生(例如,一个接一个)。然而,过程1400的多个步骤可能并行发生。此外,过程1400的步骤不需要按所示顺序执行,和/或过程1400的一个或更多个步骤不需要执行。
在创建区块链交易时,可能需要确定哪些未使用的交易输出(UTXO)将作为输入用于区块链交易,因为区块链交易的交易费用可能与所使用的输入有关。此外,在选择UTXO作为输入时,还应考虑由区块链交易创建的结果交易输出。例如,如果交易输入超过目标值(例如,外流数额加上交易费用),将会有“找零”形式的输出。太小的找零输出可能被认为是不经济的,因为它的交易费用可能比它的价值更高(例如,“尘埃”)。通常,避免找零输出将产生更小的交易,从而导致较少的交易费用。
然而,如本文所讨论的,所需的找零输出可以包含在目标值中,使得它可以用于占位交易。换言之,选择哪些输入用于区块链交易可能取决于是否需要占位交易。例如,在确定要设置占位交易的情况下,输入选择算法可以为原始交易选择下述输入,这样的输入将提供最小的找零值,该最小的找零值可以输出到由原始交易中的发送方控制的找零地址。由于发送方将控制找零地址(例如,拥有与找零地址对应的私钥),原始交易的输出实际上被发送回原始交易的发送方(例如,发送方也是原始交易的输出接收方)。原始交易的输出可以由发送方选择(例如,通过指定找零地址作为源)作为占位交易的输入。在一些实施方式中,用于占位交易的找零的最小值可以大于区块链的最小尘埃水平(例如,比特币约500聪)。在一些实施方式中,可以为原始交易选择更大的输入,使得原始交易输出的最小找零值产生最小尘埃值以产生占位交易。在某些情况下,可以为原始交易使用额外的输入,超出处理原始交易所需的数量,以便有足够的找零用作占位交易的输出,使得将来在原始交易卡陷时能够使用占位交易。
在步骤1405,计算机系统可以接收区块链交易请求,以从发送地址向接收地址发送加密货币。
在步骤1410,计算机系统可以确定发送地址的任何未花费交易输出(UTXO)是否与区块链交易的目标值匹配。如果存在与目标值匹配的发送地址的UTXO,计算机系统可以选择该UTXO作为输入,提交区块链交易以在步骤1430中包含在区块链中。
如果在步骤1410中不存在与目标值匹配的UTXO,则计算机系统可以继续执行步骤1415。
在步骤1415,计算机系统可以确定发送地址的所有小于目标值的UTXO之和是否与目标值匹配。例如,计算机系统可以扫描数字钱包地址以找到所有小于目标值的UTXO,并确定它们的和是否与目标值匹配。如果所有小于目标值的UTXO之和与目标值匹配,计算机系统可以选择各个所述UTXO作为输入,用于在步骤1430中的区块链交易。
如果在步骤1415,发送地址的所有小于目标值的UTXO之和不匹配目标值,计算机系统可以继续执行步骤1420。
在步骤1420,计算机系统可以确定是否存在大于目标值且可用作区块链交易的输入的最小发送地址UTXO。例如,如果UTXO从之前的以期作为输出的交易中获得足够数量的确认(例如,阈值为1、2、3等),则该UTXO可能是可用的。
由于计算机系统可能希望避免创建过小的找零输出,因此计算机系统可以计算是否存在会创建高于最小找零数额的找零输出的最小可用UTXO。例如,计算机系统可以仅使用大于目标值的UTXO,如果它会创建大于阈值数额(例如,0.01比特币)的找零输出的话。
如果存在最小UTXO,该最小UTXO超过目标值并且不会创建小于阈值数额的找零,则计算机系统可以选择该UTXO作为输入,用于步骤1430中的区块链交易。
如果不存在大于目标值并且可用的最小UTXO,则计算机系统可以继续执行步骤1425。
在步骤1425,计算机系统可以搜索并组合发送地址的UTXO,直到计算机系统找到下述组合,在该组合中UTXO之和大于或等于目标值。
例如,如果计算机系统确定了与目标值匹配的组合,则计算机系统可以选择组合中的UTXO作为输入,用于步骤1430的区块链交易。
如果计算机系统无法确定与目标值匹配的组合,则计算机系统可以确定以下组合,该组合的总和大于目标值加上任何最小找零输出。然后,计算机系统可以选择上述的其总和大于目标值加上任何最小找零输出的组合作为输入,用于步骤1430中的区块链交易。
在一些实施方式中,计算机系统可以在步骤1425中以随机方式组合UTXO以搜索大于或等于目标值的组合,直到发现满足所需条件的组合。
在各实施方式中,在执行过程1400的操作时,计算机系统可以首先考虑已有足够数量确认的UTXO。例如,计算机系统可以先考虑至少有六次确认的UTXO,然后再考虑确认次数较少的不太确定的UTXO。在一些情况下,随着计算机系统对可用UTXO进行多次扫描,计算机系统可以降低UTXO被考虑用于新区块链交易前所需的确认次数。例如,在第一次扫描时,可能需要六次确认才会考虑UTXO,而在第二次扫描时,可能需要五次确认,依此类推。
在适用的情况下,本公开内容提供的各种实施方式可以使用硬件、软件或硬件和软件的组合来实现。此外,在适用的情况下,本文中提出的各种硬件组件和/或软件组件可以组合成包含软件、硬件和/或两者的复合组件,而不偏离本公开内容的精神。在适用的情况下,本文中提出的各种硬件组件和/或软件组件可以分离成包含软件、硬件或两者的子组件,而不脱离本公开内容的范围。此外,在适用的情况下,预期软件组件可以实现为硬件组件,反之亦然。
与本公开内容相关的软件,如程序代码和/或数据,可以存储在一个或更多个计算机可读介质上。此外,还预期本文中识别的软件可以使用一个或更多个通用或特定用途的计算机和/或计算机系统来实现,无论是网络连接的还是其他方式均如此。在适用的情况下,本文中描述的各种步骤的顺序可以被更改、组合成复合步骤和/或分离成子步骤,以提供本文中描述的特征。
本文中描述的各种特征和步骤可以实现为系统,该系统包括一个或更多个存储本文中描述的各种信息的存储器,以及一个或更多个连接到一个或更多个存储器以及网络的处理器,其中一个或更多个处理器可以操作以执行本文中描述的步骤,非暂态的机器可读介质包括多个机器可读指令,这些指令在由一个或更多个处理器执行时,可以使一个或更多个处理器执行包含本文中描述的步骤的方法,以及由一个或更多个设备如硬件处理器、用户设备、服务器和本文中描述的其他设备执行的方法。

Claims (20)

1.一种计算机系统,所述计算机系统包括:
非暂态存储器,所述非暂态存储器存储有指令;以及
一个或更多个硬件处理器,所述硬件处理器被配置成执行所述指令并使所述计算机系统执行包括下述的操作:
将第一交易广播至区块链网络以用于添加至区块链中的区块,其中,所述第一交易包括:源自发送方地址的第一输入;到接收方地址的第一输出;以及第一交易费用;
将第二交易广播至所述区块链网络以用于添加至所述区块链中的区块,其中,所述第二交易包括:用作所述第二交易的第二输入的源自所述接收方地址的所述第一输出;到所述接收方地址的第二输出;以及第二交易费用;
监控并确定所述第一交易在一时间段内尚未被确认至所述区块链中的区块;以及
响应于确定所述第一交易在所述时间段内尚未被确认,自动地传输用以用大于所述第二交易费用的第三交易费用来替换所述第二交易费用的请求,从而使所述第一交易和所述第二交易被确认至所述区块链中的区块。
2.根据权利要求1所述的计算机系统,其中,所述操作还包括:
探测在所述区块链网络的存储池中排队等待处理的其他交易;以及
基于与所述其他交易相关联的费用,确定所述第三交易费用。
3.根据权利要求1所述的计算机系统,其中,所述第二交易被广播成使得所述第二交易不具有后代交易,这允许用更高的交易费用来替换所述第二交易费用。
4.根据权利要求1所述的计算机系统,其中,所述操作还包括:确定所述区块链网络的存储池的存储池大小,其中,用所述第三交易费用替换所述第二交易费用是以所述存储池大小超过预定阈值为基础。
5.根据权利要求1所述的计算机系统,其中,所述操作还包括:确定对所述区块链进行区块挖掘的当前频率,其中,用所述第三交易费用替换所述第二交易费用是以所述当前频率未达到预定阈值为基础。
6.根据权利要求1所述的计算机系统,其中,所述操作还包括:发送信号到所述区块链网络以用新交易替换所述第二交易,所述新交易具有被替换成所述第三交易费用的所述第二交易费用。
7.根据权利要求6所述的计算机系统,其中,与所述第二交易费用的费率和绝对费用相比,所述第三交易费用包括更高的费率和更高的绝对费用。
8.一种方法,所述方法包括:
通过计算机系统将第一交易广播至区块链网络以用于添加至区块链中的区块,其中,所述第一交易包括:源自发送方地址的第一输入;到接收方地址的第一输出;以及第一交易费用;
通过所述计算机系统将第二交易广播至所述区块链网络以用于添加至所述区块链中的区块,其中,所述第二交易包括:用作所述第二交易的第二输入的源自所述接收方地址的所述第一输出;到所述接收方地址的第二输出;以及第二交易费用;
通过所述计算机系统确定所述第一交易尚未被确认且所述第一交易在所述区块链网络的存储池中处于未决状态;以及
通过所述计算机系统用大于所述第二交易费用的第三交易费用来替换所述第二交易费用,从而使所述第一交易和所述第二交易被确认至所述区块链中的区块。
9.根据权利要求8所述的方法,所述方法还包括:
探测在所述存储池中排队等待处理的其他交易;以及
基于与所述其他交易相关联的费用,确定所述第三交易费用。
10.根据权利要求8所述的方法,所述方法还包括阻止所述第二交易有后代交易。
11.根据权利要求8所述的方法,所述方法还包括:确定所述区块链网络的所述存储池的存储池交易计数,其中,用所述第三交易费用替换所述第二交易费用是以所述存储池交易计数超过预定阈值为基础。
12.根据权利要求8所述的方法,所述方法还包括:确定对所述区块链进行区块挖掘的当前频率,其中,用所述第三交易费用替换所述第二交易费用是以所述当前频率未达到预定阈值为基础。
13.根据权利要求8所述的方法,所述方法还包括:发送信号到所述区块链网络以用新交易替换所述第二交易,所述新交易具有被替换成所述第三交易费用的所述第二交易费用。
14.根据权利要求8所述的方法,其中,与所述第二交易费用的费率和绝对费用相比,所述第三交易费用包括更高的费率和更高的绝对费用。
15.一种非暂态机器可读介质,在所述非暂态机器可读介质上存储有指令,其中,所述指令是可执行的以使系统的机器执行包括下述的操作:
将第一交易广播至区块链网络以用于添加至区块链中的区块,其中,所述第一交易包括:源自发送方地址的第一输入;到接收方地址的第一输出;以及第一交易费用;
将第二交易广播至所述区块链网络以用于添加至所述区块链中的区块,其中,所述第二交易包括:用作所述第二交易的第二输入的源自所述接收方地址的所述第一输出;到所述接收方地址的第二输出;以及第二交易费用;
确定所述第一交易尚未被确认且所述第一交易在所述区块链网络的存储池中处于未决状态;以及
用大于所述第二交易费用的第三交易费用来替换所述第二交易费用,从而使所述第一交易和所述第二交易被确认至所述区块链中的区块。
16.根据权利要求15所述的非暂态机器可读介质,其中,所述操作还包括:
探测在所述区块链网络的存储池中排队等待处理的其他交易;以及
基于与所述其他交易相关联的费用,确定所述第三交易费用。
17.根据权利要求15所述的非暂态机器可读介质,其中,所述操作还包括阻止所述第二交易有后代交易,其中,所述替换是以所述第二交易没有后代交易为基础。
18.根据权利要求17所述的非暂态机器可读介质,其中,所述操作还包括:确定所述区块链网络的存储池的存储池大小,其中,替换所述第二交易费用是以所述存储池大小超过预定阈值为基础。
19.根据权利要求15所述的非暂态机器可读介质,其中,所述操作还包括:确定对所述区块链进行区块挖掘的当前频率,其中,替换所述第二交易费用是以所述当前频率未达到预定阈值为基础。
20.根据权利要求15所述的非暂态机器可读介质,其中,所述操作还包括发送信号到所述区块链网络以用新交易替换所述第二交易,所述新交易具有被替换成所述第三交易费用的所述第二交易费用,以及其中,与所述第二交易费用的费率和绝对费用相比,所述第三交易费用包括更高的费率和更高的绝对费用。
CN202280046826.4A 2021-12-15 2022-11-21 用于高效区块链交易的软件架构 Pending CN117716379A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/551,631 2021-12-15
US17/551,631 US20230186290A1 (en) 2021-12-15 2021-12-15 Software architecture for efficient blockchain transactions
PCT/US2022/050632 WO2023113977A1 (en) 2021-12-15 2022-11-21 Software architecture for efficient blockchain transactions

Publications (1)

Publication Number Publication Date
CN117716379A true CN117716379A (zh) 2024-03-15

Family

ID=86694615

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280046826.4A Pending CN117716379A (zh) 2021-12-15 2022-11-21 用于高效区块链交易的软件架构

Country Status (4)

Country Link
US (1) US20230186290A1 (zh)
CN (1) CN117716379A (zh)
AU (1) AU2022409187A1 (zh)
WO (1) WO2023113977A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230128004A1 (en) * 2021-10-21 2023-04-27 Mastercard International Incorporated Method and system for cancellation of distributed ledger transactions
US11978049B1 (en) * 2023-11-28 2024-05-07 Citibank, N.A. Systems and methods for blockchain network traffic management using automatic coin selection

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020018921A1 (en) * 2018-07-20 2020-01-23 Coral Protocol Blockchain transaction safety using smart contracts
US20200160326A1 (en) * 2018-11-15 2020-05-21 Paypal, Inc. System and method for optimizing data writing to a blockchain
US11907942B2 (en) * 2020-05-01 2024-02-20 Coin Metrics Inc. Blockchain network risk management universal blockchain data model

Also Published As

Publication number Publication date
US20230186290A1 (en) 2023-06-15
AU2022409187A1 (en) 2024-01-18
WO2023113977A1 (en) 2023-06-22

Similar Documents

Publication Publication Date Title
US11444768B2 (en) Systems and methods for managing networked commitments of secure entities
AU2022226929B2 (en) Advanced non-fungible token blockchain architecture
Churyumov Byteball: A decentralized system for storage and transfer of value
Liu et al. Distributed ledger technology
US20220414664A1 (en) Blockchain address risk assessment via graph analysis
US20220318788A1 (en) Using an internal ledger with blockchain transactions
CN117716379A (zh) 用于高效区块链交易的软件架构
US20230186281A1 (en) Automatic access/restriction of nfts
US11893598B1 (en) On-chain loyalty program management
US20230185996A1 (en) Framework for blockchain development
CN117616410A (zh) 计算机分片环境中的多方计算
US20230177489A1 (en) Utilization of biometrics in creation of secure key or digital signature
US20230108610A1 (en) Systems for secure data replication and original destruction using a blockchain distributed ledger
WO2023129365A1 (en) Laundering detection in second layer networks
US20230298001A1 (en) Non-fungible token (nft) purchase and transfer system
US11888991B2 (en) Universally trusted bridges for heterogenous blockchain networks
JP2023510320A (ja) 分散型台帳ネットワークにおけるコンテンツのセキュアなピアツーピア送信のためのシステムおよび方法
US20230177507A1 (en) User activity detection for locking cryptocurrency conversions
US20240135369A1 (en) Multi-party computation in a computer sharding environment
US20230177167A1 (en) Automatic verification of decentrailized protocols
US20230298008A1 (en) Omniverse platform for predictive digital asset identification and recommendation in different metaverses
US20230298005A1 (en) Multi-layer cryptocurrency conversions using available blockchain outputs
US11978038B2 (en) Hot wallet protection using a layer-2 blockchain network
FR3101991A1 (fr) Système et méthode d'authentification et d'assurance d’objets

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