安全的数字数据操作的制作方法

文档序号:14959158发布日期:2018-07-18 00:10阅读:149来源:国知局

本发明涉及用于更有效地存储和背书描述实体的数据并且特别是描述人或公司的数据的系统和方法。从计算机系统或网络存储和检索数据。

本公开内容还涉及用于数字货币系统的方法、系统和设备。根据本公开内容的方面,可以实现例如由于数据处理和转移要求的减少而导致的效率提高以及交易安全性的提高的技术效果。



背景技术:

对于单独的实体重要的是安全地获取和保存关于彼此的信息并且保持隐私。当实体通过计算机网络例如因特网或使用电信网络进行交互时尤其如此。同样可能重要的是,每个实体有信心描述其他实体的信息是准确的和可信的。例如,一个实体可以希望与另一实体安全地进行电子通信。这种安全性可以取决于所涉及的特定实体的可信度。确定和验证这种信息可能会引入导致计算机或电信网络效率低下和额外负荷的开销和额外的工作。此外,这种验证通常取决于单独的来源,该单独的来源中的每一个可能也需要被验证。这可能需要大量的带宽和处理资源。

在一个特定示例中,实体可以是金融机构例如银行,并且另一实体可以是该银行的客户(个人或公司)。为了银行能够为客户提供服务(尤其是在线服务),那么他们必须执行某些“了解你的客户”(kyc)检查,并且遵守由一个或更多个司法管辖区或权威机构设置的特定标准。这可能是手动过程,在该手动过程中客户向银行提供公用事业账单、驾驶执照或护照或其他形式的文件和身份证明。虽然这些kyc标准要求单独的信息来源以提高检查的可靠性,但是这些过程可能会受到欺诈,尤其是来自确定的对手。手动检查每个客户可能是费力的,并且可能涉及重复的工作,尤其是在客户拥有账户或与不同的组织进行交互的情况下。

在另一示例中,如果人们可以向商家证明他们已经超过了某个年龄,则他们可能只能够购买某些物品(例如酒精或厨房刀具)。在面对面的环境例如商店中,如果一个人未成年,这可能是显而易见的。然而,对于在线购买,这种审查可能是困难的并且耗费时间的。虽然可以通过呈现标识符例如护照或驾驶执照的形式来实现证明年龄,但这对于客户而言可能是不方便的,并且还可能存在伪造和其他滥用。在公开互联网上呈现个人文档引入了另外的安全风险,并且因此还需要将被安全地进行的计算资源(例如加密算法)。可以执行更强大和更可靠的检查,但是这可能涉及不保证或不适合低成本或风险交易(例如,购买少量的常见非处方药)的额外的成本和步骤。

在另一示例中,两个单独的实体可以是希望传达或参与数据转移的计算机系统。对于单独的实体而言,通过公开网络例如因特网进行通信可能是便利的,但是这可能涉及风险。此外,可以预先或在通信期间执行检查以确保每个实体知道正在与他们交换数据的人和内容,但是这也可能增加开销,减少可用带宽并且涉及额外的处理要求。减少这种检查可以减少开销,但是也会增加风险。

http://securekey.com描述了限定的可信网络。在该模式下,第三方被允许保证其他人的身份,而不需要被识别方必须透露他们的身份。www.klout.com提供社交媒体链接的影响力和人气分数。www.peerreach.com提供了专业知识和兴趣的进一步的社交媒体衍生度量。但是,全部这些系统都具有依靠单个本体的集中方法。

因此,需要克服这些问题的方法和系统,提供更可靠的验证形式而不显著增加技术开销,并且改善计算环境和电信网络的操作。

加密货币是作为一种可替选的货币(或私人货币)的形式的数字货币。它们不同于中央控制的政府发行的货币(例如,法定货币),并且提供分散形式的货币和/或交换媒介。可以从一个所有者到另一所有者进行交易或转移数字货币,并且数字货币可以被用于日常目的,例如购买商品或服务,或被限制供特定团体使用,例如在在线游戏中。如此,数字货币表示传统货币的替代品。

加密货币的一个示例是比特币,尽管许多其他加密货币系统已经被设计出来。比特币由中本聪(satoshinakamoto)开发,并且概述了比特币的基本原理的原创论文“bitcoin:apeer-to-peerelectroniccashsystem”可以在https://bitcoin.org/bitcoin.pdf中找到。

比特币的所有者可以花费与特定地址相关联的比特币。地址或帐户是公开密钥,并且与该地址相关联的比特币的所有者拥有与公开密钥相对应的私有密钥。为了将比特币转移到新地址(例如,将比特币转移到与新地址相关联的受付方),支付方必须创建交易用于添加至被称为区块链的公开账簿。

图12示出了比特币交易的表示。交易90包括:支付方的地址(公开密钥);先前交易94(即支付方通过其获取与支付方的地址相关联的比特币的交易)的散列92和受付方的地址96(公开密钥);以及该散列的数字签名98。数字签名98是通过使用支付方的私人密钥99(其与支付方的地址或公开密钥对应)对散列92签名来创建的。

该交易具有输入和输出。输入是由支付方输入到交易中的量,并且可以被认为是由与输入量相关联的支付方的地址或公开密钥和输入量的值(例如1比特币(btc)、4.5btc、13.67btc等)表示。输出是从交易输出到受付方的量,并且可以被认为是由受付方希望该量要支付到的受付方的地址或公开密钥和输出量的值表示。

交易可以有多个输入,由此支付方有两个或更多个地址或公开密钥,每个地址或公开密钥与不同量的比特币相关联。在这种情况下,可以认为每个输入量由与输入量相关联的地址或公开密钥以及输入量的值表示。同样地,交易可以有多个输出,由此两个或更多个量被支付给两个或更多个不同的受付方地址或公开密钥。在这种情况下,可以认为每个输出量由地址或公开密钥以及输出量的值来表示。以这种方式,具有一批比特币的支付方——一些比特币与一个地址或公开密钥相关联并且与其他比特币与另一地址或公开密钥相关联——可以将该一批比特币全部花费在单个交易中。同样地,通过包括多个输出,可以一次性进行多个支付(例如,总输入大于支付方希望向受付方支付的量的情况下,第一输出量可以是要支付给受付方的值,并且第二输出量可以是为与支付方相关联的地址或公开密钥的作为交易中的改变的值)。

支付方将交易公开地广播到通信节点或矿工的网络。节点将把交易集合成区块,并且然后每个节点将致力于寻找所谓的“工作证明”。“工作证明”是数字(或随机数),其具有使得当新区块的内容与随机数散列时结果在数值上小于网络的难度目标的值。当节点找到工作证明时,节点将工作证明添加至其区块中,并且将区块广播到全部节点。新区块还包含如下信息:使用sha-256算法将其“链接”到前一区块——前一区块的加密散列。

每个单个节点不能独立地被信任。因此,比特币中的包括挖矿节点和非挖矿用户的每个实体必须对新区块执行他们自己的完整确证,以确保每个交易都由有效输入组成。这要求每个实体获取区块链的完整副本。

区块链是记录全部比特币交易的公开账簿。实体中的每一个都有整个区块链的副本,可以使用该副本通过检查副本中的全部交易是有效的并且尚未被花费例如通过针对每个交易检查支付方的签名是正确的以及根据区块链输入量尚未被支付方在较早的交易中花费来验证新区块。

如果新区块被节点接受,将通过致力于使用所接受的区块的散列作为先前区块在链中创建下一个区块来发出新区块被节点接受的信号。因此,所接受的区块被添加至区块链中。新区块大约每小时六次被添加至区块链。由于恶意实体可能广播新区块以及区块链中可能暂时出现分支的风险,其中一个分支包含恶意新区块而其他分支包含可靠的新区块,为了信任区块,明智的是等待直到一些后来的区块被链接至其为止。通常,建议在六个另外的区块被添加至区块链中之后,可以信任该区块。这可能需要大约一个小时,这可能导致在被参与交易的各方信任的交易中的相当大的延迟,从而减慢了其他活动(例如通过交易购买的商品的转移)。

为了验证新区块,例如检查交易的输入还没有被花费,每个实体必须具有整个区块链的副本。这意味着网络上的新实体必须下载整个区块链,这是相当大的数据量,特别是对于在低带宽数据连接上操作的实体和/或具有低处理能力的实体(例如移动设备,如移动电话、平板计算机、膝上型计算机等)而言更是如此。对于一些情况,这可以表示作为新实体采用比特币的阻碍,新实体例如希望检查他们的交易已经被包括在区块链中的区块中并且输出量没有被支付方在之前花费的新受付方,或希望参与验证新区块的新节点/矿工。此外,由于新区块大约每小时六次被添加至区块链中,因此区块链的大小不断增加,这意味着该障碍在不断增加。

对于比特币的许多用户而言,匿名是重要的。通过匿名,意味着第三方无法通过参考区块链(其为公开发布的)来确定用户持有的比特币的总值的能力。

为了给用户提供匿名性,通常建议对于用户是受付方的每个交易,应当生成新地址或公开密钥。也就是说,每当用户希望从另一实体接收一定量的比特币时,应当为他们希望接收的量生成新的公私密钥对,并且然后将该公开密钥提供给支付方,使得该公开密钥可以被用作交易输出的地址。这意味着,当用户在不同的交易中接收到多个不同的支付时,区块链将不会识别出进行全部支付的单个地址,该地址可以链接回实体(例如,当用户从该地址向其他人支付时,其他人可能能够将地址链接到用户,因为他们个人知道正在与他们交易的用户)。替代地,区块链将针对每个支付识别不同的接收方地址,使得即使地址中的一个地址可以被链接回用户,也将不可能确定用户持有的比特币总数,因为他们的比特币是保存在一系列地址中,其中地址之间没有公开链接。

然而,为每个新交易生成新的公私密钥对对于一些用户而言可能是不方便的并且耗时的。此外,这意味着从大量交易中接收钱的受付方随着时间的推移必须记录全部不同的公私密钥对,并且安全地存储全部的私有密钥。对于比特币的一些用户而言,这可能是巨大的组织开销。

比特币的一些用户遇到的另一问题是丢失他们的私有密钥的结果。只有支付方有与他们希望输入到交易中的量相关联的私有密钥才能进行交易。在没有使用正确的私有密钥生成正确的签名的情况下,交易不能被验证并且将不会被接受到区块链中。用户可以以各种不同的方式存储他们的公私密钥对,例如以电子方式存储在电子设备上或以物理方式存储在纸张上等。然而,如果用户丢失了他们的密钥(例如,通过错放密钥被存储的物理设备或装置和/或通过失去对密钥被存储的电子位置的访问),他们将不可挽回地损失与这些密钥相关联的量。因此,以比特币保存货币对于许多用户和潜在用户而言可能呈现重大风险。

加密货币的另一示例是氪石币。氪石币系统与比特币类似,但是使用了小型区块链方案替代比特币中使用的区块链。小型区块链方案被设计用于消除获取和存储完整区块链的需要。小型区块链方案包括小型区块链、帐户树和证明链。

帐户树实际上是一个自包含的资产负债表,用于保存与全部非空地址(公开密钥)相关联的余额记录。当新区块被添加至小型区块链中时,账户树中记录的余额被相应地更新,并且账户树的主散列被嵌入到小型区块链中的新区块的区块头中,以便保护帐户树不被恶意改变。

小型区块链本质上与比特币的区块链相同,但是由于帐户树,没有必要保存全部历史交易的副本。因此,可以从小型区块链中定期地丢弃老的区块以便使其大小最小化。然而,为了确保系统不受攻击,证明链保留了一系列连锁的工作证明解决方案,这是区块头的链。即使没有老交易的记录,区块头的链也会进入小型区块链,并且用作确保小型区块链和帐户树不受攻击。

虽然小型区块链方案通过允许老区块将被丢弃使得能够减小区块链的大小,但该方案通过还要求维护帐户树和证明链而引入另外的复杂性。

还需要一种方法和系统,该方法和系统提供更可靠和更有效地进行的交易,其中,交易的至少一方或双方被更可靠地验证而不会显著增加技术开销并且改善计算环境和电信网络的操作。



技术实现要素:

第一实体可以拥有描述他们的一条或一项信息或该信息可以声明该实体的某个属性。第二实体可以保证该信息是正确的或有效的,并且可以背书描述第一实体的信息。可以由第二实体预先或同时执行对该信息的确证。使用与第一实体的公开密钥链接的、与第一实体的公开密钥相关联或从第一实体的公开密钥生成的或由第一实体生成的标识符来标识该信息。该公开密钥具有相应的私有密钥,使得第一实体(或私有密钥的任何持有者)能够(例如通过可验证的数字签名)证明特定声明或信息描述了第一实体而不是另一实体。

为了背书或者保证描述第一实体的信息,第二实体使用他们的私有密钥对信息进行加密签名或对链接的数据进行加密签名或引用描述第一实体的信息。该私有密钥与第二实体的公开密钥对应,使得其他或实体或各方能够验证该信息或数据确实由第二实体签名。例如,公开密钥可以被公开。然后将签名的信息或数据(被标识为属于第一实体或与第一实体相关联)发布或公布到区块链(例如,作为单个交易或作为单独的交易;一个交易添加描述第一实体的信息并且第二交易添加与该信息相关联或引用该信息但由第二实体签名的数据)。这些交易可以是单独的或组合的。一个或更多个区块被添加至包含此(或两个)交易的区块链中。这些区块包含发布的交易和任何其他发布或公布的交易,这些交易可以包含描述此实体或其他实体或引用此信息的签名数据的信息。优选地,一个或更多个区块被另一实体添加至区块链中,但是这可以由具有添加区块的权限的任何实体来完成。如果第一实体需要证明或证实他们具有特定属性或实际描述他们的一些信息(例如要求),则他们可以将该信息的标识符提供给另一方。其他方可以在区块链中查找标识符并且找到特定交易,验证包含交易的区块链中的区块,验证该信息属于或描述第一实体并且还使用加密签名对存在确实由引用描述第一实体的特定信息的第二(可信)实体签名的交易进行验证。描述第一实体的声明或信息可以用这种方式读取和验证,而不需要做或重复任何其他检查或测试。这不需要任何特别的信任,因为这通过加密签名和区块链的完整性被取消。第二实体的状态或可信度也可以以类似的方式存储并且由其他(已记录的)实体验证。

几种类型的实体或团体可能会受益,特别是(但不限于)金融服务。这些包括:账户持有人、商家、用户权威机构(例如,主要雇主、mno、政府部门等)和银行。客户可以能够在没有或最少的文件或流程的情况下注册加密账户或钱包。商家可以更容易地接受数字支付,并且具有较低的费用和开销。第三方可以具有个人的经验证的知识。该系统和方法向个人提供将这些知识可靠地传递给新的一方而不需要重新证明信息的机制。这可以对于操作角色带来提高的安全性、更好的风险决策以及财务机会,他们现在可以在零售和其他交易中发挥作用。特别是银行可以通过显著减少处理(例如计算机处理)和维持系统记录的财务成本并且向监管者和其他提供必要的审查而受益。然而,这些益处可以扩展到彼此进行交易或通信的其他组织和实体。

实体可以具有针对其身份的许多不同的属性或成分。对这些id属性的完整性的信心将越来越被需要用于确定是否可以执行某些交易(或其他操作)。例如,买方是18岁以上?买方住在这个地址?卖方有权使用这些资金?本次交易的各方是否符合必要的信誉分数?

鉴于共识机制可以承诺随着时间的推移这样做:他们面临的问题是鸡和鸡蛋。本系统和方法使得分布式信任网络更快地出现。这允许特定的属性被声明,并且由用户或属性权威机构来检查这些声明。

此外,该系统和方法使得能够实现以下机制:身份属性能够被任何人声明(要求),并且能够被任何人使用由可信用户和/或属性权威机构给出的签名认证网络优选地使用互联网从公开区块链进行验证。

可以根据描述任一个或两个实体(即交易的各方)的信息被成功确证来进行数字货币在实体之间的转移。

根据一个方面,提供了一种用于从支付方向接收方转移数字货币的方法,该方法包括以下步骤:

接收描述第一实体的数据的标识符;

基于所接收的标识符从区块链中检索条目;

使用第二实体的公开密钥来验证条目;

从所检索的条目中提取描述第一实体的数据;

使用第三实体的公开密钥来验证包含该条目的区块链中的区块;

如果对区块链中区块的验证是成功的,则从支付方向接收方转移数字货币,其中,第一实体是支付方或接收方,并且其中,从支付方向接收方转移数字货币包括支付方:

获取与接收方相关联的钱包公开密钥数据;

使用至少钱包公开密钥数据生成要被转移给接收方的一定量的数字货币的货币公开密钥;以及

生成包括至少货币公开密钥数据和要被转移给第四实体的数字货币的量的值的转移数据。因此,数字货币的交易(即转移)可以被更有效地保证,因为交易的任一方或双方(支付方和/或接收方)可以使他们的细节或描述他们的信息被检查和验证。

根据另一方面,提供了一种用于记录描述第一实体的数据的方法,该数据由第二实体背书,该方法包括以下步骤:

第二实体确证描述第一实体的数据,其中,标识符与该数据相关联,该标识符是从第一实体的公开密钥生成的;

使用第二实体的至少私有密钥对与描述第一实体的数据对应的数据进行加密签名;以及

将包括经加密签名的数据的交易发布或公布到区块链。第一实体(例如个体客户)可以证明数据的特定项目是指他们(例如他们的年龄或地址),因为数据的标识符是从第一实体的公开密钥生成的并且他们持有相应的私有密钥。例如,这可以以与数字签名类似的方式工作。第二实体可以确证数据是正确的。这可以是预先的,可以已经发生或在进行其他步骤的同时被执行。例如,可以通过第二实体查看出生证明、护照、执行电子验证、从数据库检索数据或使用另一机制来执行确证、验证或确定数据。区块链的使用提供了至少几个益处。这些包括其公开性质,从而允许任何其他方或实体查看数据和由数字签名实现的数据的加密验证、区块链的散列和分层性质。交易是以可以被添加至区块链中的形式的完整的并且经验证的数据单元。交易将来自第二实体的信息传递给区块链。第二实体可以是用户权威机构。例如,由第二实体签名的数据可以是描述第一实体自身的数据或引用描述性数据的单独项目。可以避免进一步或重复的检查和工作,这可以提高计算机网络的效率。

优选地,该方法还可以包括第一实体公布或发布描述第一实体的数据的步骤。换句话说,第一实体可以公开地声明数据。这是可以使用标识符(来源于第一实体的公开密钥)来标识。第二实体读取这些数据,而不是直接从第一实体接收数据。这可以简化过程。

优选地,该方法还可以包括以下步骤:

确证描述第一实体的数据的第三实体;

第三实体使用第三实体的私有密钥对与描述第一实体的数据对应的数据进行加密签名;以及

发布包括由第三实体加密签名的数据的其他交易。第三实体优选地为与第二实体(和第一实体)不同的实体。因此,第三实体添加了他们自己的“印章”、批准或确证数据。这还加强了描述第一实体的数据(例如,要求或声明)的有效性。每个确证实体可以具有不同的权重或分数。例如,一些实体可以具有比其他实体更高的权重、分数、可信度或可信性。在一些实施方式中,为了使信息被认为是真实的或经充分确证的,则分数的总和可能需要超过特定阈值。因此,例如,可以存在由许多低得分实体确证的数据的有效性以及由单个(或较少)高得分实体确证的数据的有效性相等。

所需的得分水平可以取决于信息的目的。例如,如果数据是地址数据,则第二实体的相对低分数可以被接受以获取第一实体的目录卡。然而,如果银行要求提供地址证明以提供抵押,则可能需要更高的分数(和/或要求多于一个或最少数目的实体确证信息)。与第二实体一样,第三实体可以直接地对描述第一实体的数据签名,或优选地,他们可以通过向引用描述第一实体的数据的区块链生成新交易来添加他们对这些数据的批准或证明。这是特别灵活的,因为数据可以已经被“固定”在较早的区块内,因此不能被改变,但是新的交易可以被添加至后续区块。个别的证明可以被后续交易选择性地撤销。例如,确证实体的权限可以通过区块链上的更多交易来改变或撤销(实际上使他们的证明无效)。因此,特定的要求可以需要其他实体的确证,以将其分数提高到需要的阈值之上。

优选地,该方法还可以包括将包含一个或更多个发布的交易的区块添加至区块链的步骤。区块可以包括一个或更多个交易。

可选地,将区块添加至区块链的步骤还可以包括:对区块链的至少一部分和一个或更多个发布的交易进行散列。散列可以包括全部先前的区块。因此,这降低了篡改的风险。

优选地,将区块添加至区块链的步骤可以由第四实体执行。第四实体可以是引擎权威机构(engineauthority)。

优选地,该方法还可以包括第四实体将交易添加至包括第四实体的公开密钥的区块的步骤。

有利地,将区块添加至区块链的步骤还可以包括以默克尔树(merkletree)结构存储区块的步骤。这提供了更有效的存储结构,并且允许更容易地确证区块链。

优选地,区块链包括具有包括第二实体的公开密钥的交易的区块。换句话说,任何实体(例如第二实体)自身可以通过将他们的公开密钥添加至区块链中而被确证为授权实体。优选地,这将由更高的权威机构或管理该区块链的实体(例如,引擎权威机构)来执行。这种形式的实体授权也可以通过向区块链添加其他交易而被撤销或限制。这种特定类型的交易也可以被用来增加或修改实体的分数。

优选地,该方法还可以包括发布包含能够背书其他实体的数据的第五实体的公开密钥的其他交易的步骤。换句话说,可以以这种方式添加另外“第二”实体或用户权威机构。

可选地,数据的标识符还可以根据由第一实体生成的随机因子生成。这可以提供第一实体的隐私,因为信息可以被公开或至少以受限的方式分发,但是可能只有在被提供了随机因子时才可以识别第一实体。例如,该随机因子可以是多个或一系列符号。

可选地,该方法还可以包括在对数据进行加密签名之前对描述第一实体的数据的至少一部分进行散列的步骤。例如,第一实体的姓名可以被散列。这还可以改善隐私,因为散列数据可以被选择性地显示。

可选地,与描述第一实体的数据对应的数据可以包括描述第一实体的数据的标识符。这提供了关联第二(或后续)实体的数据和证明的方法。

可选地,可以通过将交易发布到区块链来存储描述第一实体的数据,该区块链可以与发布的包括由第二实体加密签名的数据的交易是分离的。换句话说,描述第一实体和加密签名证明的数据可以被分别存储在相同的区块中、不同的区块中或甚至不同的区块链中。

根据另一方面,提供了一种用于获取描述第一实体的数据的方法,该数据由第二实体背书,该方法包括以下步骤:

接收描述第一实体的数据的标识符;

基于所接收的标识符从区块链中检索条目;

使用第二实体的公开密钥来验证条目;以及

从所检索的条目中提取描述第一实体的数据。换句话说,第一实体可以向另一实体证明特定的声明、事实、数据或关于他们的其他信息。因为已识别的数据被存储在区块链中,因此信息可以被验证为由第二实体背书。该第二方面可以补充第一方面的方法。

优选地,该方法还可以包括使用第三实体的公开密钥来验证包含条目的区块链中的区块的步骤。该第三实体可以是将包含数据的区块添加至区块链的实体。

可选地,如果对区块链中的区块的验证成功,则该方法还可以包括执行交易的步骤。换句话说,交易(例如财务或其他)可以取决于授权。

优选地,描述第一实体的数据可以与从区块链中检索到的条目是(逻辑地或物理地)分离的。

有利地,描述第一实体的数据的至少一部分可以被遮掩。这可以通过散列、匿名化或加密地进行。然而,例如,数据可以由某些实体、组织或可信用户读取或解密以用于特定用途。

根据另一方面,提供了一种用于记录描述第一实体的数据的系统,所述数据由第二实体背书,该系统包括:

一个或更多个计算机处理器;以及

存储可执行指令的存储器,该可执行指令被配置成当由所述一个或更多个处理器执行时使系统:

由第二实体确证描述第一实体的数据,其中,标识符与数据相关联,标识符是从第一实体的公开密钥生成的;

使用第二实体的至少私有密钥来对数据进行加密签名;以及

将包括经加密签名的数据的交易发布到区块链。

可选地,可执行指令还可以使系统:

接收描述第一实体的数据的标识符;

基于所接收的标识符从区块链中检索条目;

使用第二实体的公开密钥来验证条目;以及

从所检索的条目中提取描述第一实体的数据。可替选地,可以存在一个(或更多个)用于记录或存储数据的系统以及用于检索和/或验证和提取数据的单独的系统(或多个系统)。

可选地,可执行指令还可以使系统在区块链中生成一个或更多个交易,以授权第三实体对描述第一实体的经确证的数据进行加密签名。

本公开内容提供了一种用于创建一定量的数字货币的方法,该方法包括:通过使用至少货币创建者秘密密钥对货币数据进行加密签名来生成货币创建签名;以及生成适于添加至数字货币账簿(例如区块链)的可验证的创建数据,其中,创建数据包括货币数据和货币创建签名,货币数据包括:新数字货币的量的值;以及至少部分地基于货币公开密钥的货币密钥数据,其中,货币公开密钥与一定量的数字货币对应。

因此,一定量的数字货币将能够通过数字货币密钥数据来标识。与货币公开密钥对应的货币秘密密钥可以由一定量的数字货币的所有者推导出来,使得他们可以在之后的时间使用一定量的数字货币(例如,转移或拆分或合并等一定量的数字货币)。该方法还可以包括生成与货币公开密钥对应的货币秘密密钥。

通过包括货币创建签名,货币数据可以由数字货币系统中的其他实体(例如,由验证者和/或用户实体等)验证。这可以提高数字货币系统和系统中的交易的安全性。

优选地,该方法还包括:输出创建数据以提供给验证实体,以使验证实体能够将创建数据添加至数字货币账簿。因此,验证实体可以使用与货币创建者秘密密钥对应的至少货币创建者公开密钥来验证货币创建签名,并且只有在验证成功时才将创建数据添加至数字货币账簿。

该方法还可以包括:生成包括创建数据的新区块;以及在数字货币账簿中添加新区块。这可以由验证实体或由生成创建数据的实体来执行(例如,在数字货币网络中只有一个实体能够生成创建数据的情况下,使得新区块在被添加至数字货币账簿之前不需要由单独实体验证)。

该方法还可以包括:生成货币公开密钥。也可以生成相应的货币秘密密钥。

优选地,货币密钥数据包括货币公开密钥的散列。

优选地,与货币创建者私有密钥对应的货币创建者公开密钥可以由验证实体(例如从密钥区块链和/或验证实体中的存储器中存储的软件)获取。

与货币创建者私有密钥对应的货币创建者公开密钥可以由数字货币实体的网络中的至少一个实体(例如用户实体)(例如,从密钥区块链和/或存储在实体中的存储器中的软件)获取。

本公开内容还提供了一种用于执行创建一定量的新数字货币的创建操作的电子设备,该电子设备包括:处理器;以及存储软件程序的存储器,其中,软件程序在由处理器执行时使处理器执行以上公开的方法。

本公开内容还提供了一种软件程序,其被配置成当在电子设备的处理器上执行该软件程序时执行以上公开的方法。

在本公开内容的另一方面中,提供了一种用于验证用于创建数字货币的创建数据的方法,创建数据包括货币数据和货币创建签名,该方法包括验证实体:获取货币创建者公开密钥;以及使用至少货币数据和货币创建者公开密钥来对货币创建签名执行验证过程。因此,可信验证可以检查创建数据在被添加至数字货币账簿之前已经由授权实体生成,从而提高系统和交易的安全性。

可以从密钥区块链或从验证实体中的存储器获取货币创建者公开密钥。

优选地,该方法还包括:如果验证过程的结果是对货币签名的肯定验证,则将创建数据添加至数字货币账簿;以及如果验证过程的结果是对货币签名的否定验证,则丢弃创建数据。

将创建数据添加至数字货币账簿可以包括:使用至少验证者秘密密钥生成验证者签名;生成包括验证实体的标识符和验证者签名的验证数据;生成包括创建数据和验证数据的新区块;以及将新区块添加在数字货币账簿中。

验证数据可以被包括在新区块的任何适合的部分中,例如在区块头中和/或作为新区块的操作数据的至少一部分。

通过将验证数据包括在新区块中,审查该区块的其他实体可以使用与验证者秘密密钥对应的至少验证者公开密钥来检查验证者签名,并且因此确保新区块中的数据已经由可信的验证者验证和批准。这可以减少时间和数字货币系统内的实体的数据负担,并且因此提高效率,因为不需要其他实体检查区块中的全部数据(检查区块中的全部数据可能需要仔细检查数字货币账簿中的大量历史数据)。因此,数字货币系统中的其他实体可以需要下载并审查较少数据以便满足区块中的创建数据是有效的。

生成验证者签名可以包括使用验证者秘密密钥对验证实体的至少标识符进行加密签名。

优选地,可以由数字货币实体的网络中的至少一个实体(例如从密钥区块链或从自实体中的存储器)获取与验证者私有密钥对应的验证者公开密钥。

本公开内容还提供了一种验证实体,其包括:处理器;以及存储软件程序的存储器,其中,软件程序在由处理器执行时使处理器执行以上公开的方法。

本公开内容还提供了一种软件程序,其被配置成当在验证实体的处理器上执行该软件程序时执行以上公开的方法。

本公开内容还提供了一种系统,包括:以上公开的用于执行创建一定量的新数字货币的创建操作的电子设备;以及以上公开的验证实体,其中,验证实体被配置成验证创建数据。

在本公开内容的另一方面中,提供了一种用于创建一定量的数字货币的方法,该方法包括:通过使用至少货币创建者秘密密钥对货币数据进行加密签名来生成货币创建签名;生成适于添加至数字货币账簿(例如区块链)的可验证创建数据,其中,该创建数据包括货币数据和货币创建签名,货币数据包括:新数字货币的量的值;以及至少部分地基于货币公开密钥的货币密钥数据,其中,货币公开密钥与一定量的数字货币对应;获取货币创建者公开密钥;使用至少货币数据和货币创建者公开密钥来对货币创建签名执行验证过程;以及如果验证过程成功通过,则将创建数据添加至数字货币账簿。

还提供了被配置成执行以上公开的方法的系统。

在本公开内容的另一方面中,提供了一种用于销毁一定量的数字货币的方法,该方法包括:通过使用至少货币销毁者秘密密钥对货币数据进行加密签名来生成货币销毁签名;以及生成适于添加至数字货币账簿(例如区块链)的可验证销毁数据,其中,销毁数据包括货币数据和货币销毁签名,并且其中,货币数据包括:货币密钥数据,其至少部分地基于与一定量的数字货币相关联的货币公开密钥。

因此,可以销毁数字货币系统中的一定量的数字货币,例如当识别出这些量与欺诈行为相关时,或当销毁量将显著地推进数字货币账簿中最早的活动区块时(例如,它将使数字货币账簿中的大量区块被丢弃,以不再有任何未使用/有效量的数字货币)。

通过包括货币销毁签名,销毁数据可以由数字货币系统中的其他实体验证(例如通过验证者和/或用户实体等)。这可以提高数字货币系统和系统中的交易的安全性。

优选地,该方法还包括:输出销毁数据以提供给验证实体,以使验证实体能够将销毁数据添加至数字货币账簿。

该方法还可以包括:生成包括销毁数据的新区块;以及将新区块添加在数字货币账簿中。这可以由验证实体或由生成销毁数据的实体来执行(例如,在数字货币网络中只有一个实体能够生成销毁数据的情况下,使得在将其添加至数字货币账簿之前不需要由单独实体验证)。

该方法还可以包括:记录数字货币的量的值和货币密钥数据。这可以在必要的情况下(例如,为了在数字货币账簿中“存档”区块,量已经被销毁的情况)使新的量能够达到在之后的日期创建的相同的值。

货币密钥数据可以包括货币公开密钥的散列。

优选地,可以由数字货币实体的网络(例如,从密钥区块链和/或在实体中的存储器中存储的软件)中的至少一个实体(例如验证实体和/或用户实体)获取与货币销毁者秘密密钥对应的货币销毁者公开密钥。

可以从公开密钥区块链中或从至少一个实体中的存储器中获取货币销毁者公开密钥。

本公开内容还提供了一种用于执行创建一定量的新数字货币的创建操作的电子设备,该电子设备包括:处理器;以及存储软件程序的存储器,其中,软件程序在由处理器执行时使处理器执行以上公开的方法。

本公开内容还提供了一种软件程序,其被配置成在电子设备的处理器上执行该软件程序时执行以上公开的方法。

在本公开内容的另一方面中,还提供了一种用于验证用于销毁一定量的数字货币的销毁数据的方法,销毁数据包括货币数据和货币销毁签名,该方法包括验证实体:获取货币销毁者公开密钥;以及使用至少货币数据和货币销毁者公开密钥对货币销毁签名执行验证过程。因此,可信验证可以在销毁数据被添加至数字货币账簿之前检查已经由授权实体生成销毁数据,从而提高系统和交易的安全性。

优选地,从密钥区块链或从验证实体中的存储器获取货币销毁者公开密钥。

该方法还可以包括:如果验证过程的结果是对货币销毁签名的肯定验证,则将销毁数据添加至数字货币账簿;以及如果验证过程的结果是对货币销毁签名的否定验证,则丢弃销毁数据。

将销毁数据添加至数字货币账簿还可以包括:使用至少验证者私有密钥生成验证者签名;生成包括验证实体的标识符和验证者签名的验证数据;生成包括销毁数据和验证数据的新区块;以及将新区块添加至数字货币账簿。

验证数据可以被包括在新区块的任何适合的部分中,例如在区块头中和/或作为新区块的操作数据的至少一部分。

通过将验证数据包括在新区块中,审查该区块的其他实体可以使用与验证者私有密钥对应的至少验证者公开密钥来检查验证者签名,并且因此确保新区块中的数据已经由可信的验证者验证和批准。这可以减少时间和数字货币系统内的实体的数据负担,并且因此提高效率,因为不需要其他实体检查区块中的全部数据(检查区块中的全部数据可能需要仔细检查数字货币账簿中的大量历史数据)。因此,数字货币系统中的其他实体可能需要下载并审查较少数据以便满足区块中的创建数据是有效的。

生成验证者签名可以包括使用验证者私有密钥对验证实体的至少标识符进行加密签名。

优选地,可以由数字货币实体的网络中的至少一个实体获取与验证者私有密钥对应的验证者公开密钥。

本公开内容还提供了一种验证实体,其包括:处理器;以及存储软件程序的存储器,其中,软件程序在由处理器执行时使处理器执行以上公开的方法。

本公开内容还提供了一种软件程序,其被配置成当在验证实体的处理器上执行该软件程序时执行以上公开的方法。

本公开内容还提供了一种系统,包括:以上公开的电子设备,其用于执行销毁一定量的数字货币的销毁操作;以及以上公开的验证实体,其中,验证实体被配置成验证销毁数据。

在本公开内容的另一方面中,还提供了一种用于销毁一定量的数字货币的方法,该方法包括:通过使用至少货币销毁者秘密密钥对货币数据进行加密签名来生成货币销毁签名;生成适于添加至数字货币账簿(例如区块链)的可验证销毁数据,其中,销毁数据包括货币数据和货币销毁签名,并且其中,货币数据包括:货币密钥数据,其至少部分地基于与一定量的数字货币相关联的货币公开密钥;获取货币销毁者公开密钥;使用至少货币数据和货币销毁者公开密钥对货币销毁签名执行验证过程;以及如果验证过程成功通过,则将销毁数据添加至数字货币账簿。

还提供了一种被配置成执行以上公开的方法的系统。

在本公开内容的另一方面中,提供了一种用于验证包括货币数据和至少部分地基于货币数据的签名的数字货币操作数据的方法,该方法包括验证实体执行以下步骤:使用至少签名对货币数据执行验证过程;以及如果验证过程的结果是肯定验证:生成包括验证者签名的验证数据;生成包括数字货币操作数据和验证者数据的新区块;以及将新区块添加至数字货币账簿。

货币数据可以包括标识至少一个输入量的数字货币和/或至少一个输出量的数字货币的输入数据和/或输出数据。验证过程可以包括使用签名和与货币数据相关联的公开密钥(例如,包括在货币数据和/或创建者公开密钥和/或销毁者公开密钥中的公开量密钥)来验证货币数据。

验证数据可以被包括在新区块的任何适合的部分中,例如在区块头中和/或作为新区块的操作数据的至少一部分。

通过将验证数据包括在新区块中,审查该区块的其他实体可以使用与验证者秘密密钥对应的至少验证者公开密钥来检查验证者签名,并且因此确保新区块中的数据已经由可信的验证者验证和批准。这可以减少时间和数字货币系统内的实体的数据负担,并且因此提高效率,因为不需要其他实体检查区块中的全部数据(检查区块中的全部数据可能需要仔细检查数字货币账簿中的大量历史数据)。

因此,数字货币系统中的其他实体可以需要下载并审查较少数据以便满足区块中的每组操作数据是有效的。

当数字货币操作数据是创建数据或销毁数据时,并且当与数字货币操作相关联的公开密钥是与生成数字货币操作数据的实体相关联的公开密钥时,优选地,该方法还包括:获取公开密钥,并且验证过程包括:使用至少公开密钥对签名进行解密;并且将解密的签名与数字货币操作数据进行比较。

可以从密钥区块链或从验证实体的存储器中获取公开密钥。

数字货币账簿可以包括至少一个历史区块,每个历史区块包括标识至少一个输出量的数字货币的历史数字货币操作数据,并且该方法还可以包括:在新区块中设置最早的活动区块标识符,其中,最早的活动区块标识符对具有标识至少一个输出量的数字货币的历史数字货币操作数据的最早的历史区块进行标识,该至少一个输出量的数字货币未在数字货币账簿中的任何后续区块中的数字货币操作数据中被标识。

比所标识的最早的活动区块早的全部区块将包括与非活动量的数字货币(即,由于在数字货币账簿中的后续区块的数字货币操作数据中被标识而已经被使用或花费的一定量的数字货币)相关的数字货币操作数据。因此,只有早在最早的活动区块时的数字货币账簿与活动量的数字货币相关。因此,数字货币网络中的实体只需要存储早在由最早的活动区块标识符标识的区块时的数字货币账簿,从而减少数据存储需求。此外,当新实体加入数字货币网络时,他们只需要下载早在由最早的活动区块标识符标识的区块时的数字货币账簿,从而减小数据下载的负担,并且提高加入数字货币网络的便利性和效率。

数字货币账簿可以包括至少一个历史区块,每个历史区块包括历史数字货币操作数据,并且该方法还可以包括:将至少一个历史区块的历史数字货币操作数据复制到新区块中。在历史区块是数字货币账簿中最早的活动数据区块的情况下,通过以这种方式复制历史数字货币操作数据(“存档”历史数字货币操作数据),可以使历史区块为不活动的,使得可以减小数字货币账簿的活动部分的大小。因此可以更进一步减小数据存储和数据下载负担。

数字货币账簿可以包括至少一个历史区块,每个历史区块包括历史数字货币操作数据,并且该方法还可以包括:销毁由数字货币账簿中的至少一个历史区块的至少一组历史数字货币操作数据标识的一定量的数字货币。在历史区块是数字货币账簿中最早的活动区块的情况下,通过以这种方式销毁一定量的数字货币操作数据(“存档”一定量的数字货币),可以使历史区块为不活动的,使得可以减小数字货币账簿的活动部分的大小。因此可以更进一步减小数据存储和数据下载负担。

在本公开内容的另一方面中,提供了一种用于维护数字货币账簿的方法,数字货币账簿包括至少一个历史区块,每个历史区块包括标识至少一个输出量的数字货币的历史数字货币操作数据,该方法还包括:确定最早的活动区块,其中,最早的活动区块是具有标识至少一个输出量的数字货币的历史数字货币操作数据的历史区块,该至少一个输出量的数字货币未在数字货币账簿中的任何后续区块中的数字货币操作数据中被标识;生成包括最早的活动区块标识符的新区块,其中,最早的活动区块对所确定的最早的活动区块进行标识;并且将新区块添加至数字货币账簿。

比所标识的最早的活动区块早的全部区块将包括与非活动量的数字货币(即,由于在数字货币账簿中的后续区块的数字货币操作数据中被标识而已经被使用或花费的一定量的数字货币)相关的数字货币操作数据。因此,只有早在最早的活动区块时的数字货币账簿与活动量的数字货币相关。因此,数字货币网络中的实体只需要存储早在由最早的活动区块标识符标识的区块时的数字货币账簿,从而减少数据存储需求。此外,当新实体加入数字货币网络时,他们只需要下载早在由最早的活动区块标识符标识的区块时的数字货币账簿,从而减小数据下载的负担,并且提高加入数字货币网络的便利性和效率。

该方法还可以包括:将所确定的最早的活动区块的历史数字货币操作数据复制到新区块中。通过以这种方式复制历史数字货币操作数据(“存档”历史数字货币操作数据),可以使历史区块为不活动的,使得可以减少数字货币账簿的活动部分的大小。因此可以更进一步减小数据存储和数据下载负担。

该方法还可以包括:销毁在所确定的最早的活动区块的历史数字货币操作数据中标识的至少一个量的数字货币。通过以这种方式销毁一定量的数字货币操作数据(“存档”一定量的数字货币),可以使历史区块为不活动的,使得可以减小数字货币账簿的活动部分的大小。因此可以更进一步减小数据存储和数据下载负担。

在本公开内容的另一方面中,提供了一种用于维护数字货币账簿的方法,数字货币账簿包括至少一个历史区块,每个历史区块包括标识至少一个输出量的数字货币的历史数字货币操作数据,该方法还包括:生成包括至少一个历史区块的历史数字货币操作数据的副本的新区块;以及将新区块添加至数字货币账簿。通过以这种方式复制历史数字货币操作数据(“存档”历史数字货币操作数据),可以使历史区块为不活动的,使得可以减小数字货币账簿的活动部分的大小。因此可以更进一步减小数据存储和数据下载负担。数字货币网络中的实体可以使用数字货币账簿中最新的区块中最早的活动区块标识符或通过审查和分析他们自己的数字货币账簿来标识最早的活动区块。

优选地,新区块包括最早的活动区块标识符,该方法还包括:确定最早的活动区块,其中,最早的活动区块是具有标识至少一个输出量的数字货币的历史数字货币操作数据的历史区块,该至少一个输出量的数字货币未在数字货币账簿中的任何后续区块中的数字货币操作数据中被标识;以及将最早的活动区块的标识符设置成对所确定的最早的活动区块进行标识。

本公开内容还提供了一种电子设备,包括:处理器;以及存储软件程序的存储器,其中,软件程序在由处理器执行时使处理器执行以上公开的方法中的任一个。

本公开内容还提供了一种软件程序,其被配置成在电子设备的处理器上执行该软件程序时执行以上公开的方法中的任一个。

在本公开内容的另一方面中,还提供了一种用于维护数字货币账簿的方法,数字货币账簿包括数字货币操作数据的至少一个区块,其中,至少一个区块中最新的区块包括最早的活动区块的标识符,该方法包括:将数字货币账簿的至少一部分传送到数字货币实体的网络,其中,数字货币账簿的至少一部分包括由最早的活动区块的标识符标识的区块以及每个后续区块。因此,只有数字货币账簿的活动部分可以被提供给希望获取数字货币账簿的任何实体,从而减小数据存储和数据下载负担并且提高效率。

将数字货币账簿的至少一部分传送到数字货币实体的网络可以包括将数字货币账簿的至少一部分存储在数字货币实体的网络可访问的位置。

本公开内容还提供了一种电子设备,包括:处理器;以及存储软件程序的存储器,其中,软件程序在由处理器执行时使处理器执行以上公开的方法。

本公开内容还提供了一种软件程序,其被配置成当在电子设备的处理器上执行该软件程序时执行以上公开的方法。

在本公开内容的另一方面中,还提供了一种用于获取数字货币账簿的方法,数字货币账簿包括数字货币操作数据的至少一个区块,其中,至少一个区块中最新的区块包括最早的活动区块的标识符,该方法包括:从数字货币实体的网络中的数字货币实体获取数字货币账簿的至少一部分,其中,数字货币账簿的至少一部分包括由最早的活动区块的标识符标识的区块以及每个后续区块。因此,希望获取数字货币账簿的任何实体只能获取数字货币账簿的活动部分,从而减小数据存储和数据下载负担并且提高效率。

从数字货币实体的网络中的数字货币实体获取数字货币账簿的至少一部分可以包括:获取数字货币账簿中的最新的区块;使用至少最早的活动区块的标识符来标识最早的活动区块;以及获取最早的活动区块和全部后续区块。

本公开内容还提供了一种电子设备,包括:处理器;以及存储软件程序的存储器,其中,软件程序在由处理器执行时使处理器执行以上公开的方法。

本公开内容还提供了一种软件程序,其被配置成当在电子设备的处理器上执行该软件程序时执行以上公开的方法。

在本公开内容的另一方面中,提供了一种用于从第一实体向第二实体转移数字货币的方法,该方法包括第一实体:获取(例如,通过从第一实体接收或通过在第一实体的存储器中查找或通过在数字货币实体的网络中公开的可访问的存储器位置中查找)与第二实体相关联的钱包公开密钥数据;使用至少钱包公开密钥数据生成要被转移给第二实体的一定量的数字货币的货币公开密钥;获取(例如接收或生成)接收方标识符;以及生成转移数据,该转移数据包括至少货币公开密钥数据、要被转移给第二实体的数字货币的量的值以及接收方标识符。通过将接收方标识符包括在转移数据中,转移的接收方可以更快地识别转移数据可能与他们相关,从而减少接收方在数字货币账簿中找到他们的转移数据所花费的时间。还可以减少接收方所需的数据处理,其中数字货币系统被配置成使得接收方至少部分地从货币公开密钥数据中得到货币秘密密钥,因为他们可以更加准确地识别数字货币账簿中的正确转移数据。

获取接收方标识符可以包括:至少部分地基于钱包公开密钥数据来生成接收方标识符。通过以这种方式生成接收方标识符,可以实现接收方的匿名性,同时仍然将接收方可能认为与他们相关的转移数据组的数目保持为最小。

优选地,通过截断钱包公开密钥数据来生成接收方标识符。

获取接收方标识符可以包括:从第二实体接收接收方标识符。通过以这种方式获取接收方标识符,第二实体(例如接收方)可以将接收方标识符设置成唯一但匿名的值,使得与他们相关的转移数据可以被唯一地标识而不危及匿名性。

该方法还可以包括:输出转移数据以提供给验证实体,以使验证实体能够将转移数据添加至数字货币账簿。

货币公开密钥数据可以包括货币公开密钥和/或货币公开密钥散列中的至少一个。

钱包公开密钥数据可以包括钱包公开密钥和/或钱包公开密钥散列中的至少一个。

本公开内容还提供了一种电子设备,包括:处理器;以及存储软件程序的存储器,其中,软件程序在由处理器执行时使处理器执行以上公开的方法。

本公开内容还提供了一种软件程序,其被配置成当在电子设备的处理器上执行该软件程序时执行以上公开的方法。

本公开内容还提供了一种系统,该系统包括如上所公开的电子设备和被配置成验证转移数据的验证实体。

在本公开内容的另一方面中,提供了一种用于从第一实体向第二实体转移数字货币的方法,该方法包括:获取(例如通过生成或从存储器中检索)接收方标识符(其可以可选地至少部分地基于钱包公开密钥数据);在数字货币账簿中标识包括接收方标识符的一组转移数据,其中,转移数据还包括货币公开密钥数据;以及使用至少货币公开密钥数据以及与钱包公开密钥数据对应的钱包秘密密钥数据来生成货币秘密密钥。

获取接收方标识符可以包括至少部分地基于钱包公开密钥数据来生成接收方标识符。

钱包秘密密钥数据可以包括钱包秘密密钥和/或钱包秘密密钥散列中的至少一个。

货币公开密钥数据可以包括货币公开密钥和/或货币公开密钥散列中的至少一个。

本公开内容还提供了一种电子设备,包括:处理器;以及存储软件程序的存储器,其中,软件程序在由处理器执行时使处理器执行以上公开的方法。

本公开内容还提供了一种软件程序,其被配置成当在电子设备的处理器上执行该软件程序时执行以上公开的方法。

在本公开内容的另一方面中,提供了一种用于从第一实体向第二实体转移数字货币的方法,该方法包括第一实体:获取与第二实体相关联的钱包公开密钥数据;使用至少钱包公开密钥数据生成要被转移给第二实体的一定量的数字货币的货币公开密钥;获取(例如接收或生成)接收方标识符;以及生成转移数据,该转移数据包括至少货币公开密钥数据、要被转移给第二实体的数字货币的量的值以及接收方标识符;将转移数据添加至数字货币账簿;以及第二实体:获取(例如生成或在存储器中查找)接收方标识符(其可以可选地至少部分地基于他们的钱包公开密钥数据);在数字货币账簿中标识包括接收方标识符的一组转移数据,其中,转移数据还包括货币公开密钥数据;以及使用至少货币公开密钥数据和与钱包公开密钥数据对应的钱包秘密密钥数据来生成货币秘密密钥。

还提供了一种系统,包括被配置成执行以上公开的方法的第一实体、第二实体和验证实体。

在本公开内容的另一方面中,提供了一种用于维护用于公开密钥的区块链的方法,该方法包括:生成公开密钥数据,密钥区块数据包括:与属于数字货币网络中的实体的私有密钥对应的公开密钥;以及数字货币网络中的实体的标识符;通过使用至少秘密主密钥对公开密钥数据进行加密签名来生成主签名;生成包括至少公开密钥数据和主签名的密钥区块数据;以及将密钥区块数据和主签名添加至区块链中。因此,验证操作数据所需的公开密钥可以由数字货币网络中的任何实体从区块链获取。区块链可以是例如密钥区块链或数字货币账簿。通过包括主签名,审查区块链的其他实体可以使用至少公开主密钥来检查主签名,并且因此确保公开密钥已经被授权实体(例如主要权威机构)发布。因此,可以增加公开密钥的安全性并且因此可以增加数字货币系统的安全性。

公开密钥数据可以包括公开密钥的失效日期。

公开密钥数据可以包括用于指示公开密钥的有效性的指示符,该方法还包括:设置指示符以指示公开密钥是无效的。

以这种方式,可以撤销公开密钥。指示符可以是失效日期,其可以被设置成过去的日期以指示公开密钥是无效的。

密钥区块数据还可以包括以下中的至少一个:区块编号、时间戳和/或区块链中的先前区块的散列。

还提供了一种电子设备,包括:处理器;以及存储软件程序的存储器,其中,软件程序在由处理器执行时使处理器执行以上公开的方法。

还提供了一种软件程序,其被配置成当在电子设备的处理器上执行该软件程序时执行以上公开的方法。

在本公开内容的另一方面中,提供了一种用于获取与数字货币系统中的实体相关联的公开密钥的方法,该方法包括:获取主公开密钥;从密钥区块链中获取密钥区块数据,密钥区块数据包括至少公开密钥数据和主签名;以及使用至少主签名和主公开密钥对公开密钥数据执行验证操作,其中,公开密钥数据包括数字货币系统中的实体的标识符和公开密钥。

公开密钥数据可以包括公开密钥的有效性的指示符,并且验证操作可以包括检查公开密钥的有效性的指示符。

还提供了一种电子设备,包括:处理器;以及存储软件程序的存储器,其中,软件程序在由处理器执行时使处理器执行以上公开的方法。

还提供了一种软件程序,其被配置成当在电子设备的处理器上执行该软件程序时执行以上公开的方法。

在本公开内容的另一方面中,提供了一种用于从第一实体向第二实体转移数字货币的方法,该方法包括第一实体:(例如,响应于返回向主要权威机构提供钱包公开密钥和相应的跟踪密钥从主要权威机构)获取一组秘密密钥;生成货币数据,其包括货币公开密钥数据和要被转移给第二实体的数字货币的量的值;通过使用第一实体已知的货币秘密密钥(例如与转移的一定输入量的数字货币对应的货币秘密密钥)对至少一部分的货币数据进行加密签名来生成转移签名;通过使用组秘密密钥对至少一部分的货币数据进行加密签名来生成组签名;以及生成转移数据,其包括用于添加至数字货币账簿的货币数据、转移签名和组签名。以这种方式,转移数据的验证者可以使用组签名来验证(生成货币数据的)第一实体是授权组的部分(例如,凭借向主要权威机构提供他们的钱包公开密钥和相应的跟踪密钥)。

优选地,货币公开密钥数据包括:与转移的一定输入量的数字货币相关联的货币公开密钥和与转移的一定输出量的数字货币相关联的货币公开密钥。

优选地,货币秘密密钥对应于与一定输入量的数字货币相关联的货币公开密钥。

该方法还可以包括:生成钱包公开密钥和相应的跟踪密钥;以及向主要权威机构提供钱包公开密钥和相应的跟踪密钥。

还提供了一种电子设备,包括:处理器;以及存储软件程序的存储器,其中,软件程序在由处理器执行时使处理器执行以上公开的方法。

还提供了一种软件程序,其被配置成当在电子设备的处理器上执行该软件程序时执行以上公开的方法。

在本公开内容的另一方面中,提供了一种管理数字货币系统的方法,该方法包括:从用户实体接收钱包公开密钥和相应的跟踪密钥;以及向用户实体提供组秘密密钥,用户实体使用该组秘密密钥可以生成组签名以被包括作为数字货币操作数据的部分。以这种方式,只有在向主要权威机构提供了其钱包公开密钥和相应的跟踪密钥之后,用户实体才可以接收用于生成组签名的组秘密密钥,为了在未来验证数字货币操作数据可能需要组秘密密钥。

该方法还可以包括将钱包公开密钥和相应的跟踪密钥与对应于用户实体的用户数据相关联地进行记录。用户数据可以包括以下中的至少一个:用户的姓名和/或地址、电话号码、电子邮件地址、银行账户号、银行分类代码等。

还提供了一种电子设备,包括:处理器;以及存储软件程序的存储器,其中,软件程序在由处理器执行时使处理器执行以上公开的方法。

还提供了一种软件程序,其被配置成当在电子设备的处理器上执行该软件程序时执行以上公开的方法。

还提供了一种系统,包括:被配置成执行管理以上公开的数字货币系统的方法的第一电子设备和被配置成以上公开的用于从第一实体向第二实体转移数字货币的方法的第二电子设备。

在本公开内容的另一方面中,提供了一种管理数字货币账簿的方法,包括:获取钱包公开密钥和相应的跟踪密钥;使用钱包公开密钥和跟踪密钥来在数字货币账簿中识别交易到和/或交易来自与钱包公开密钥相关联的数字货币钱包的至少一个一定量的数字货币;以及维护交易到和/或交易来自与钱包公开密钥相关联的数字货币钱包的一定量的数字货币的记录。

优选地,一条或一项信息或数据的第一实体或主体具有对数据以及对其公开的任何规则的控制(例如完全控制)(例如,何时可以使用它以及谁可以看见或使用它)。因此,可以保护第一实体或主体的匿名性和安全性。第一实体的身份可以被限制于持有者他们的跟踪(即私有)密钥。关于相同的主体不可能链接不同的事实或信息(除了跟踪密钥以外)。存在权威机构“担保”要求的概念,有利地,该方法可以包括之后添加其他证明或撤回出现的现有证明的能力。

要求或证明可以以各种形式发布在区块链上。他们可以作出关于用户的任何声明(或例如出生日期详情或健身房成员周围的信息)。在没有支持证明的情况下,这种信息本身可能是无价值的,然而一旦证明被公布,该要求就有价值(或是有效的),直到用户权威机构撤消证明为止。这可能需要用户权威机构持续地管理,以确保要求不超过其有效期。例如,超过18岁的用户的要求可以被永久支持,而关于某人的财务状况的声明则不应当。

为了管理这一点,在原始要求中可以包括业务规则、注意事项、其他规则的限制。例如,关于某人的信用状态的要求可以采取与以下类似的形式:

“基于2016年7月1日(或其他日期)进行的评估,该用户已经被视为信用值多达5000英镑(或其他量)的最高无担保贷款量,并且被认为有效期为30天(或其他期限)。

支持用户权威机构可以提交对可以被无限期保留的该声明的证明。不可能改变已公布的要求的标准,因此在不再满足标准之后证明会自动失去其价值(在上面的示例中尽管可能仍然有一定的价值,但是明显的是在指定的时间该用户具有很好的信誉值)。

要求定义可以以它们相互引用的方式创建,例如

要求123455—“该用户拥有高级驾驶执照”,由来自高级驾驶协会的证明支持。

要求123456—“只要要求123455仍然有效并且得到支持,该用户已经被视为有资格享有约定价值的汽车保险”,由xyz汽车保险支持。

换句话说,标准可以包括一个或更多个其他要求保持有效或具有有效证明的要求。

要求的概念可以被扩展(即超出钱包持有者明确声明的事物),以包括从活动或交易或不管怎样得到的其他信息中赚取或学到的事物。

例如,可以要求工作或家庭地址,并且然后由雇主或公用事业公司(或处于能够验证这一事实的位置的其他实体)验证。可替选地,可以从证明者可获得的其他信息得到地址。例如,特定小时之间的手持移动电话的存在位置主要是xxxxxx,并且然后在这些小时之间主要是yyyyyyy。这些数据可以指示家庭或工作场所的位置。例如,家庭可能在夜间(和/或周末)并且工作可能在白天。

在这两种情况下,系统可以假设关于其进行要求的人或钱包持有者实体是最终有责任的并且负责提供解密和/或读取和/或验证要求的必要密钥。

得到的要求的第二示例可以是客户花费的总和,以及针对特定类别的商品或服务计算“平均寿命时间价值”。再一次只有关于其进行要求的钱包持有者或实体将能够使该信息被第三方访问或处于其他情况下。得到的要求也可以被认为是徽章或奖项。

在其他示例中,第一实体(或钱包)可以不一定是人。例如,该实体可以是项目或对象(例如物联网项目)。示例可以包括需要库存或公用事业供应定价的自动售货机或其他。

还提供了一种电子设备,包括:处理器;以及存储软件程序的存储器,其中,软件程序在由处理器执行时使处理器执行以上公开的方法。

还提供了一种软件程序,其被配置成当在电子设备的处理器上执行该软件程序时执行以上公开的方法。

上述方法可以被实现为包括用于操作计算机的程序指令的计算机程序。该计算机程序可以被存储在计算机可读介质上。

计算机系统可以包括处理器例如中央处理单元(cpu)。处理器可以以软件程序的形式执行逻辑。计算机系统可以包括存储器,该存储器包括易失性存储介质和非易失性存储介质。计算机可读介质可以被包括来存储逻辑指令或程序指令。系统的不同部分可以使用网络(例如无线网络和有线网络)来连接。计算机系统可以包括一个或更多个接口。计算机系统可以包含适合的操作系统例如unix、windows(rtm)或linux。

应当注意,上述任何特征可以与本发明的任何特定方面或实施方式一起使用。此外,每个方面可以与任何一个或更多个其他方面组合。

附图说明

仅以举例的方式参照以下附图来描述本公开内容的方面,在附图中:

图1示出了仅以示例的方式给出的用于记录描述实体的数据的系统的示意图;

图2示出了用于存储、检索和确证数据的方法的流程图;

图3示出了用于记录描述实体的数据的方法的流程图;

图4示出了用于检索描述实体的数据的方法的流程图;

图5示出了仅以示例方式描述的数据结构的示意图;

图6示出了图5的部分填充有示例性数据的数据结构的示意图;

图7示出了图5的部分填充有示例性数据的数据结构的示意图;

图8示出了图5的部分填充有示例性数据的数据结构的示意图;

图9示出了图5的部分填充有示例性数据的数据结构;

图10示出了示例性交易;

图11示出了用于记录描述实体的数据的系统的部分的示意图;

图12示出了现有技术交易的表示;

图13示出了根据本公开内容的数字货币实体的网络的示意表示;

图14示出了要广播到图13的数字货币实体的网络的新区块的示意表示;

图15示出了图13的数字货币实体的网络中的数字货币的示例性使用;

图16示出了图13的数字货币实体的网络中的数字货币的另一示例性使用;

图17示出了图13的数字货币实体的网络中的数字货币的另一示例性使用;

图18示出了图13的数字货币实体的网络中的数字货币的另一示例性使用;

图19示出了图13的数字货币实体的网络使用的数字货币账簿中的操作数据的示例性示意表示;

图20示出了图13的数字货币实体的网络使用的数字货币账簿的示例性表示;

图21示出了图13的数字货币实体的网络使用的数字货币账簿和密钥区块链的另一示例性表示;以及

图22示出了用于记录描述实体的数据和数字货币账簿的系统的部分的示例性表示。

应当注意,附图是为了简单而示出的,并不一定按比例绘制。相同的特征被设置有相同的附图标记。

具体实施方式

区块链方案和安全操作过程允许一个或多个第三方单独地或共同地担保注册或其他支持用户(例如加密货币钱包持有者)的身份和/或信誉和/或其他属性(例如超过18、地址、可以驱动等)用于批准财务、通信或其他交易的目的。系统还提供了用于权衡意见和/或解决为他们的主要注册权威机构的假名的机制。

在一个示例性实现方式中,系统包括两个主要的相互依赖的成分:

1.用户权威机构使钱包持有者(个人或实体)参与,并且可以为他们的身份或描述他们的其他数据担保。

2.预期的钱包持有者或实体可以允许一方担保他们的身份,同时允许另一方持有他们的资金,并且将这些资金与假名相关联,而不是经验证的身份。

系统支持许多不同的操作,包括但不限于:

1.用户权威机构可以发布关于特定用户或实体的声明。

2.引擎权威机构可以确证声明并且将其接受到分布式记录中。

3.引擎权威机构可以管理用户权威机构,从而指定允许他们作出什么声明。

4.代理方可以响应于用户的要求而验证身份并且审查由用户权威机构作出的声明。

用户也可以发布后续通过用户权威机构声明进行验证的要求。

公布在结构上的数据可以包括:

1.关于特定用户id的声明或要求(“要求树”);

2.支持声明或要求的证明(“证明树”);

3.能够发布声明的批准权威机构(“权威机构树”);以及

4.能够将声明/权威机构更改执行到区块链上的区块的批准权威机构。

全部声明或要求、证明和对权威机构的状态的更改作为交易被公布,直至列入区块链中并且由批准的引擎权威机构并入公开的数据“树”中为止。

区块链和数据“树”可以是分布式的,并且优选地具有由多于一个的引擎权威机构持有的副本,并且在点对点网络上被不断同步。

图1示出了用于记录描述第一实体207(例如客户)的数据的系统107的示意图。第一实体207向第二实体307(例如用户权威机构)提供描述其自身的数据(例如声明、所有权或其他事实)。例如,描述第一实体的数据可以是数据本身或数据(或声明)的引用或标识符。第一实体207生成交易以将数据发布到数据存储607。第二实体或用户权威机构307通过执行某些检查来确证这些数据。例如,如果描述第一实体207的数据是他们的年龄,则第二实体307可以通过检查出生证明或护照来确证数据。例如,第二实体307可能已经了解第一实体207,并且因此可以不需要在此时进行信息的确证或验证,而是可以基于从单独的数据存储中检索确认信息。

描述第一实体207的声明或数据已经由第一实体207以区块链的形式发布或公布在数据存储的部分内。然而,为了说明的目的,这在图1中被示为数据存储607的逻辑分区(要求逻辑分区807)。可以由第二实体30检索和审查该要求。可以由第一实体或由另一实体执行数据的发布。

一旦描述第一实体的数据(例如一个或更多个声明或要求)已经被第二实体307确证,则第二实体307可以生成要求证明。这是通过第二实体或用户权威机构307生成包括引用第一实体的要求以及第二实体307的标识符的证明的其他交易(箭头357)来实现的。该其他交易被发布到数据存储607内存储的区块链(同样,在逻辑上在图1中示为数据存储607的用户权威机构逻辑分区857)。对数据的后续请求可以由验证引擎和处理器707处理。

能够确证声明的实体(例如第二实体307)和描述一个或更多个第一实体207的信息可以被添加至系统107或从系统107移除。这通过引擎权威机构507来实现,引擎权威机构507提交这些添加、编辑或删除,如箭头557所示。这些公认的权威机构被存储在数据存储607中存储的区块链内(在图1中被示为单独的公认权威机构逻辑分区907)。

当第一实体207需要证明声明时,则他们可以向另一实体(例如代理方407)呈现数据(例如,要求或声明)的引用或标识符。代理方407可以通过读取数据存储607内的区块链来检索引用的数据(如箭头457所示),并且由一个或更多个第二实体(用户权威机构)307通过检索任何相关联的证明来执行检查以确保数据已经被验证(或被充分验证)。

存储在数据存储607内的全部交易都作为一个或更多个区块链的部分以树结构被存储。例如,虽然图1的逻辑分区(807,907)被示为数据存储607的单独部分,但是这些可以作为更大的区块链的部分被一起存储。虽然数据存储607被示为具有单个位置,但是数据存储607可以是分散在许多不同位置(例如点对点网络或云计算环境)上的分布式数据存储。

图2示出了用于存储、检索和确证描述第一实体207的数据的方法1007的流程图和示意图。图2示出了关于数据存储607的数据结构的更多细节,并且还示出了用于以可以由其他实体确证的形式记录数据的区块链1107的高级逻辑结构。该区块链1107被存储在参照图1描述的数据存储607中。在该示例中,描述第一实体207的数据是用户声明或要求。这些要求是在“了解你的客户”(kyc)环境中使用的多条信息。要求作为交易1207被存储在区块链1107内。每个交易具有区块头1307。

数据优选地通过默克尔树(也可以使用其他格式)持续保留,具有对通过区块链1107上的操作或交易提交的数据的任何添加或更新。区块链1107内的要求树1407存储要求或声明(描述一个或更多个第一实体207的数据)。由一个或更多个用户权威机构(即一个或更多个第二实体307)确证描述每个实体207的数据。特定的第二实体307(例如,用户权威机构:ua1、ua2、ua3等)与他们已确证的数据项目相关联。每个用户权威机构307可以具有特定地位、分数或权重。例如,具有高地位的用户权威机构可以具有1007的分数。例如,低权重可以是457的分数。可以使用任何的任意范围、比例或许可,或每个用户权威机构可以具有相同的权重。这些分数可以随时间改变。用户声明可以由一个或更多个用户权威机构307来确证。每个用户权威机构对特定声明或要求进行确证(或担保)的分数之和可以表示该特定声明、事实、要求或数据项目的分数。

描述所述一个或更多个第一实体207的数据被存储为区块链1107(被构造成要求数据树1407)内的交易。在一个示例中,区块链、交易和头文件的结构与https://bitcoin.org/bitcoin.pdf中描述的那些相似。如参照图1所描述的,可以添加(或移除)用户权威机构。用户权威机构细节被持续为用户权威机构树1507。此外,权威机构树1507可以具有默克尔树的结构(或其他结构)并且被存储在区块链1107内。区块链1107内的交易1207(例如添加、删除或修改)记录用户权威机构的细节。在这种情况下,引擎权威机构507生成交易1207。

尽管要求已经被添加至区块链1107(并且可以被相应地检索和读取),但是这些要求不一定由任一个用户权威机构307来确证、检查或担保。一旦要求被用户权威机构307确认或确证,则他们可以在区块链内生成交易1207,以将其记录为证明。这些证明被持续为单独的证明树1607,其也采用默克尔树的形式(或其他形式)。

图3示出了用于记录描述第一实体207的数据的方法2007的流程图。在步骤2107处,数据由第二实体307确证。在步骤2207处,第二实体307对与描述第一实体的数据对应的数据进行签名。在步骤2307处,签名的数据被发布到区块链1107。在步骤2407处生成区块。该区块包括含有签名的和经确证的数据的一个或更多个交易。

图4示出了用于检索描述第一实体207的数据的方法3007的流程图。在步骤3107处接收数据的标识符。这可以是例如从第一实体207或其他地方接收。基于该接收的标识符,在步骤3207处检索来自区块链1107内的特定交易。可以使用密码技术例如审查包含交易的区块的散列以及作为区块的部分存储的任何数字签名来验证交易。验证还可以涉及从区块链1107对引用描述第一实体的数据并且已经由第二(或第三)实体签名的一个或更多个其他项目或交易进行检索。该验证在步骤3307处进行。在步骤3407处提取描述第一实体207的数据。这可以是纯文本数据或加密技术的简单提取,或可以使用散列来提取数据以提高隐私并且防止在第一实体207中描述的信息的更广泛的分布。

图5示出了要求树1407、证明树1607和权威机构树1507的数据结构的示意图。特别地,要求树(即各个要求)中的条目包含要求标识符和要求本身。权威机构树1507中的条目包含用户权威机构标识符以及可选地用于该标识的用户权威机构的权限。这些权限可以包括但不限于担保特定类型的要求(和/或第一实体)、与他们所做的任何证明或任何其他权限相关联的权重或分数的能力。证明树1607内的数据条目包括证明标识符和用户权威机构标识符。

以下描述了添加要求以及由用户权威机构307对要求进行确证或证明的工作示例。最初,可以不存在要求或证明。然而,特定的用户权威机构307(例如巴克莱银行)具有证明权利,如图6所示。用户(第一实体207)可以注册系统(例如通过下载特定的移动应用或使用浏览器注册)并且提供特定的注册数据。在该示例中,描述第一实体207的数据是他们的姓名、地址和出生日期(在该示例中是具有要求标识符1、2和3的三个单独项目)。这些细节在这一点上是未经验证的,但是仍然在要求树1407内被捕获,如图7所示。可以使用被提交和发布到区块链1107作为交易的创建要求操作来创建每个要求。将要求发布到区块链1107可以涉及将要求公布或广播为交易。例如,区块链1107被分布在点对点网络内然后将交易发布到区块链1107可以涉及向对等点中之一提供交易的副本,然后该副本被传播到其他对等点。使用用户提供的公开密钥(例如,该公开密钥可以在他们自己的设备上作为注册过程的部分生成)来提交要求。可以通过将包含特定交易的区块添加至区块链1107来“挖掘”交易。为了改善隐私,每个要求的具体细节可以进行散列或以其他方式被遮掩,但是在图7中示出的示例中,为了清楚起见,细节被示为纯文本。

图7示出了通过用户权威机构307确证或证明每个要求(1,2,3)的有效性而生成的数据。例如,证明者“巴克莱银行”可以已经获取了每个要求的有效性的特定证明。有关的个人可以提供证明他们的姓名、地址和过去的出生日期的证明文件作为较早过程的一部分,或可以在这个阶段这样做。然后用户权威机构307可以通过发布交易(即创建证明操作)将条目添加至证明表树,以在区块链1107内生成个别的交易,如图8所示。

注意,要求树1407中的每个要求具有在证明树1607中的每个证明内引用的标识符。此外,每个证明的特定证明还与他们的签名一起被记录在证明树中。证明者的特定签名和标识符被存储在权威机构树1507内。一旦证明交易已经被挖掘,则数据被有效地确认。

一旦描述实体的数据已经被发布和验证并且至少一个第二实体为其真实性担保,则其他实体可以使用系统107作为另外的过程的部分。例如,可以进行依赖于来自第一实体207的为正确的一个或更多个要求的财务交易。第一实体不需要执行他们自己的检查,因为已经进行过这些检查,正如可以从区块链1107证明的那样。

以下示例说明了如何依赖于特定的第一实体207的经验证的要求来进行交易。通过要求树1407中的要求3周围的框来在图9中突出显示该要求。要求3具有使用第一实体207的公开密钥生成的相关联的公开密钥p3。因此,第一实体207可以使用他们相应的私有密钥来证明要求3与他们相关(因为这取决于相应的私有密钥的占有)。在证明树1607中突出显示相应的证明。在权威机构树1507中突出显示特定的证明者。

图10示出了依赖于要求3的交易。该交易用于资金的转移,但是可以使用其他类型的交易(例如数据的转移)。交易是从客户到商家,但只有当客户对他们出生日期的要求是有效的时(例如,他们的年龄大到足以购买特定物品)才能完成。交易本身是由客户签名的,但要求的细节也被包括在内。特别地,包括了要求标识符及其公开密钥(p3),以便在必要的情况下可以随后验证此要求的证明。

图11示出了区块链110以及它如何填充要求、证明和权威机构(或权威机构更改)的示意图。每个交易形成区块链110内的多个可能操作中的一个操作。例如,操作可以涉及添加要求、向要求添加证明或改变(例如删除、改变权重、添加或移除权限等)用户权威机构30。可以进行操作以更新较早的交易或操作或创建新的数据项目或实体(例如添加新的用户权威机构30)。以这种方式,可以从最早的操作至最新的操作构建区块链110。

如本领域技术人员将理解的,在不脱离由所附权利要求限定的本发明的范围的情况下,可以改变以上实施方式的细节。

例如,虽然第一实体可以发布关于他们自己的要求,但是其他实体(例如权威机构)可以代表他们这样做。可替选地,要求可以被自动发布。例如,如果特定的交易或传送需要特定的要求类型,则该要求可以被自动地生成(使用第一实体的公开密钥)。也可以由用户权威机构来生成和发布要求。例如,如果用户权威机构已经验证了描述客户或其他实体的特定数据项目,则他们可以生成相应的要求。该用户权威机构(和/或其他)也可以生成证明,并且将二者作为单独的(或联合的)交易发布到区块链。

尽管只描述了一个引擎权威机构(挖掘区块和/或添加用户权威机构),但是可以授权多于一个引擎权威机构。这可以以与用发布到区块链的交易添加权威机构(例如作为权威机构树1507的部分)类似的方式来实现。在可替选的实现方式中,可以使用其他机制(例如通过使用与比特币类似的工作证明)来维护可信区块链。这可以根本不需要用户权威机构。

数据格式可以是标准化的,并且发布到区块链的交易可以包含另外的或不同的信息。

虽然以上提供的示例所涉及的实体是个人或公司(或其他组织),但是该实体也可以是物理对象。这样的对象可以具有一定的处理能力以及与其周围环境(例如通过传感器和通信接口)交互的能力。这些项目可以形成物联网的一部分并且可以与其他对象、所连接的设备和实体交换信息。实体或“物”可以是嵌有电子器件、软件或传感器的并且具有与其他所连接的设备交换数据的能力的物理对象。尽管每个项目或实体可以始终是通过其所嵌入的计算系统唯一可识别的,但是所描述的方法和系统可以提供下述附加功能:利用用作如起源标记的一个或更多个经签名的声明来进行识别以例如识别一些物与人或公司或银行账户之间的关系。实体可以持有使其能够证明要求的所有权的密钥,或者所有者或其他实体可以持有该密钥并使用其来证明要求的所有权。

在一个示例中,对象能够汇出或接收资金和/或可能需要有经验证的身份(例如,我们从中获得电力的电池是由我们正在向其支付资金的人所拥有的吗?)这样的问题可以如上所述通过使用验证技术来检查与对象相关的、由对象提及的或与对象相关联的各种要求的状态来回答。虽然已经被描述为用户权威机构,但是可以将其等同地称为属性权威机构(即除了确证用户以外扩展至验证任何类型的实体的属性)。

可以在成功验证交易任一方的信息(例如身份)之后或者依赖于此而进行任何特定的交易或转移(例如货币或信息)。涉及数字货币的交易具有特别的优点。本说明的以下部分包括可以用于执行这样的交易的示例性数字货币系统(和操作方法)。如果此系统被用来处理交易,那么通过这种特征组合可以实现安全性和系统效率的显著增强。例如,当事人不需要对对方进行额外的人工检查,并且不需要在彼此除此之外不需要或不了解的各方之间公开或传递机密信息。

图22示出了用于记录描述与用于数字货币交易(如下文中更详细描述)的数字货币账簿相结合的实体的数据的系统的一部分的示意图。在图22所示的示例中,密钥区块数据(其在下文中被更详细地描述)被包括作为数字货币账簿的一部分。然而,可以理解,密钥区块数据可以附加地或可替选地被包括在用户权威机构树1507中,用于(例如在身份链(daave)中)记录描述实体的数据,特别是在用户权威机构是具有对应公开密钥的实体的情况下(例如具有验证者公开密钥(pv)的验证实体20、或者拥有货币发行者公开密钥(pb)的货币发行者30、或者具有销毁者公开密钥(pd)的货币销毁者40)。

公布或发布(任何类型的)交易区块链可能涉及将该交易提供给(一个或数个)矿工。这可以例如通过直接通信或通过将交易存放在特定位置以供矿工采集来实现。

本公开内容提供了一种数字货币系统,其中,可以通过将合适的操作数据添加到数字货币账簿(例如区块链)来创建、销毁、拆分、合并或转移一定量的数字货币。在本公开内容中,“操作”可以被认为与其他数字货币系统(例如比特币)中的“交易”类似,但是经受此操作的数字货币不一定会改变所有权。因此,操作是数字货币动作。操作可以由实体通过生成可验证且适合于添加到数字货币账簿(例如区块链)的操作数据来执行。

根据以下描述将可以理解的是,一些操作(例如创建操作和销毁操作)可以仅由授权实体执行,并且其他操作(例如拆分操作、合并操作和转移操作)可以由持有或拥有将要对其执行该操作的一定量的数字货币的任何实体执行。操作数据可以被提供给可以验证操作数据是有效的至少一个可信的验证实体。如果操作数据被验证为有效,那么该可信的验证实体可以例如通过将新区块广播到数字货币实体的网络来向数字货币账簿(区块链)添加包括该操作数据的新区块。以这种方式,数字货币实体网络中的所有实体均可随意获取的数字货币账簿维护对活动/有效(例如未花费)的一定量的数字货币的记录。

图13示出了根据本公开内容的数字货币实体的网络200的高度示意性表示。网络200包括用户实体10、验证实体20、货币发行者实体30、货币销毁者实体40和主要权威机构实体50、所有这些实体利用点对点(p2p)网络对接。

网络200中的每个实体都可以使用被配置成存储并执行数字货币软件的任何合适的类型的电子设备在该网络上进行操作。例如,每个实体可以是台式计算机或膝上型计算机、诸如智能电话或平板电脑的移动设备、或者网络服务器等。每个实体可以包括可以存储数字货币软件的存储器以及可以在其上执行该软件的至少一个处理器。数字货币软件可以由主要权威机构50提供给希望加入网络200的实体。提供给每个不同类型的实体的数字货币软件可以不同(例如,可以存在针对用户实体10的用户软件、针对验证实体20的验证软件等)。每个实体可以包括至少一个用户输入装置,例如键盘、麦克风、触摸屏、诸如鼠标的追踪器设备等,操作员可以利用该输入装置向电子设备输入命令和/或指令。此外,每个实体可以包括至少一个用户输出装置,例如用于以视觉和/或触觉形式呈现信息的显示设备(例如,使用任何形式的显示技术的显示屏,诸如led、oled、tft、lcd、等离子、crt等)和/或用于以听觉形式输出信息的扬声器等。每个用户实体10还可以包括至少一个成像装置,例如至少一个相机和/或光学扫描仪,利用光学扫描仪可以扫描诸如qr码的光学码。

网络10中的所有实体经由p2p网络相互连接,使得数据可以从网络200中的任意实体传送至网络200中的任何其他的一个或更多个(或所有)实体。实体可以相互连接并以任何标准方式在彼此之间传送数据。网络200中的通信可以利用任何合适的通信架构和协议,并且每个实体可以利用相同或不同类型的数据连接。例如,网络200中的每个实体可以使用任何合适的通信技术(诸如以太网、wifi、wimax、gprs、edge、umts、lte等)连接到p2p网络。如果实体(例如验证实体20)向网络200广播数据(例如新区块),则该数据可有效地被网络200中的所有实体获取。该数据可以从实体(诸如用户实体10)被传送至网络200中的所有实体和/或网络200中的所有实体均可访问的中心位置。可替选地,特定类型的数据可以被传送给仅特定类型的实体,例如,可以将某些操作数据从用户实体10传送至仅验证实体20以及可选择地还传送至主要权威机构50。

每个用户实体10包括其自有的、唯一的钱包公开密钥(pw),钱包公开密钥是其数字货币的公开地址。每个用户实体10可以按照他们的意愿来分发其钱包公开密钥(pw)(例如,他们可以将其广播给整个网络200,或者将其提供给他们希望交易的任何实体等)。每个用户实体10还将包括与钱包公开密钥(pw)对应的钱包秘密密钥(sw)。因此,钱包公开密钥(pw)和钱包秘密密钥(sw)形成公私密钥对。用户实体10将对钱包秘密密钥(sw)保密,并且可以以任何合适的方式将其存储,例如使用诸如智能卡片(例如sim卡)的硬件设备、或者以软件形式或者写在纸上等。

可以在任何合适的时间例如当数字货币软件被提供给用户实体10时通过主要权威机构50向每个用户实体10提供他们的钱包公开密钥(pw)和钱包秘密密钥(sw),或者用户实体可以生成他们的钱包公开密钥(pw)和钱包秘密密钥(sw)。钱包公开密钥(pw)和钱包秘密密钥(sw)可以根据任何标准密码公-私密钥对密码系统(诸如椭圆曲线密码体制、rsa等)生成。

用户实体10拥有的每笔一定量的数字货币都具有对应的货币公开密钥(p)和货币秘密密钥(s)。货币公开密钥(p)(和/或货币公开密钥的散列)作为数字货币账簿上的操作数据中的输入和/或输出是可见的并且公开标识数字货币的量。只有拥有该笔一定量的数字货币的用户实体10才知道该货币秘密密钥(s)。因此,拥有货币秘密密钥(s)意味着拥有相应量的数字货币。再次强调,用户实体10可以以任何合适的方式存储与他们拥有的每笔一定量的数字货币对应的货币秘密密钥(s)。

操作

操作数据包括输入数据和输出数据(可以统称为货币数据)中的至少之一。操作数据还包括由操作数据的生成器生成的签名,其中,通过使用私有密钥对货币数据进行密码签名来生成签名。

在实体已经生成操作数据之后,该数据可以例如通过将其广播到网络200而被提供给至少一个验证实体20,或者仅将其传送至网络200中的验证实体20(并且可选地还传送至主要权威机构50)。然后,验证实体(或多个实体)可以验证该操作数据是有效的。这在“操作验证”一节中有更详细的描述。

下文阐述了操作的示例。

create(创建)操作

create(创建)操作由货币发行者30通过生成操作数据(针对此操作称其为创建数据)来执行。货币发行者30是持有货币发行者秘密密钥(sb)并因此有权创建一定量的数字货币的实体。其他实体无权执行create操作,因为它们未持有货币发行者秘密密钥。

可见,创建数据不包括任何输入数据。这是由于create操作是用于创建一定量的新的数字货币。

输出数据可以被称为“货币数据”并且包括货币公开密钥散列(p1h)(输出字段1)和值(v1)(输出字段2)。货币公开密钥散列(p1h)是货币公开密钥(p1)的散列。可以以任何合适的方式利用任何合适的类型的散列函数使货币公开密钥(p1)散列。

货币公开密钥(p1)是与正在被创建的一定量的数字货币相关联的公开密钥。其公开地标识正被创建的量并且将拥有货币发行者30已知的对应的货币私有或秘密密钥(s1)。货币秘密密钥(s1)可以随后用于对由create操作创建的数字货币量执行操作(参见下文)。货币公开密钥(p1)和货币秘密密钥(s1)可以使用任何标准的公-私密钥对生成技术来生成。

输出字段1可以被称为货币密钥数据并且在此示例中包括货币公开密钥散列(p1h)。然而,可以附加地或可替选地包括至少货币公开密钥(p1)。

值(v1)是正在被创建的一定量的数字货币的值。例如,值(v1)可以是1货币单元或8货币单元或40货币单元或0.2货币单元或0.43货币单元等。

可选地,create操作可以创建两个或更多个新的一定量的数字货币。每笔新的一定量的数字货币将具有对应的货币公开密钥、货币公开密钥散列和值。将按照以上所说明的来生成每个货币公开密钥,使得货币发行者将具有针对每笔新量的对应货币秘密密钥。每笔新量的数字货币的货币公开密钥散列和值将被包括在输出数据中,因此货币密钥数据将包括每笔新量的货币公开密钥散列。

货币发行者30通过使用货币发行者秘密密钥(sb)对货币数据(输出数据)进行密码签名来生成新货币签名(签名字段1)。验证实体20可以获得对应的货币发行者公开密钥(pb),使得他们能够验证货币发行者签名是由货币发行者使用其货币发行者秘密密钥(sb)正确创建的。货币数据还可以包括货币发行者30的标识符,数字货币网络200中的验证实体20和/或任何其他实体可以使用该货币发行者30的标识符来查找与生成创建数据的特定的货币发行者30对应的货币发行者公开密钥(pb)。这在下文“操作验证”和“密钥区块链”一节中有更详细的说明。

在执行create操作之后,货币发行者30可以通过下述方式将创建数据传送至验证实体20,例如通过将创建数据广播至网络200,或者通过将创建数据直接只传送给验证实体20,或者通过将创建数据放置在验证实体20可访问的位置处。如果创建数据被验证为有效,那么货币发行者30凭借其拥有货币秘密密钥(s)而将持有或拥有新创建的一定量的数字货币(参见下文)。

split(拆分)操作

split(拆分)操作由一定量的数字货币的所有者或持有者(即拥有或持有针对该一定量的数字货币的货币秘密密钥(s1)的实体)通过生成操作数据(针对此操作称其为拆分数据)来执行。所有者或持有者可以是用户实体10或货币发行者实体30。该操作是将单个输入的一定量的数字货币拆分成至少两笔输出的一定量的数字货币。因此,在实体拥有具有高值的一定量的数字货币并且该实体希望将该量拆分成均具有较小的值的至少两笔一定量的数字货币时,该方法可以是有用的。

输入数据和输出数据可以被统称为“货币数据”。输入数据包括货币公开密钥散列(p1h)(输入字段1)和与要拆分的一定量的数字货币对应的货币公开密钥(p1)(输入字段2)。

输出数据包括货币公开密钥散列(p2h)(输出字段1)、值(v2)(输出字段2)、货币公开密钥散列(p3h)(输出字段3)以及值(v3)(输出字段4)。货币公开密钥散列(p2h)是货币公开密钥(p2)的散列并且货币公开密钥散列(p3h)是货币公开密钥(p3)的散列。货币公开密钥p2和p3中的每一个与输出的一定量的数字货币对应。值v2和v3是每笔输出的一定量的数字货币的值。值v2和v3将被设置成使得v1=v2+v3。如果情况并非如此,则验证实体20可以认为拆分数据无效(如在下文的“操作验证”一节中更详细说明的)。

对输入量和输出量的所有权并不改变。优选地,根据在于2013年10月17日发布的由nicholasvansaberhagen所著的白皮书“cryptonotev2.0”(可在https://cryptonote.org/whitepaper.pdf上获得)的第4节中(特别是在第4.2.2节“terminology(术语)”、第4.3节“unlinkablepayments(不可链接的支付)”和第4.5节“standardcryptonotetransaction(标准cryptonote交易)”中)详细描述的密钥生成过程,基于输入量的所有者的钱包公开密钥(pw)来生成货币公开密钥散列(p2h)和货币公开密钥散列(p3h)。将被理解的是,可以使用任何合适的椭圆曲线。因此,可以由货币公开密钥散列p2h和钱包秘密密钥(sw)导出对应的货币秘密密钥(s2),并且由货币公开密钥散列p3h和钱包秘密密钥(sw)导出对应的货币秘密密钥(s3)。将被理解的是,虽然p2h和p3h二者均基于钱包公开密钥(pw),但是在p2h和p3h的生成过程中可以通过使用不同的随机数而使它们仍然是不同的值。

在替选方案中,由于执行split操作的实体将拥有输出的量,所以这些实体可以根据任何标准加密技术针对每个p2-s2对和p3-s3对简单地生成公-私密钥对。但是,如果这样做了,那么可能不再能操作“追踪密钥”(在下文中更详细地描述)。

可以使用任何合适的散列函数以任何合适的方式对货币公开密钥(p2)进行散列以生成货币公开密钥散列(p2h)。同样,可以使用任何合适的散列函数以任何合适的方式对货币公开密钥(p3)进行散列以生成货币公开密钥散列(p3h)。优选地,使用与p3相同的散列函数以相同的方式对p2进行散列,从而以类似的方式生成p2h和p3h。

拆分数据还包括通过使用货币秘密密钥(s1)对货币数据进行密码签名而生成的拆分签名(签名字段1)。验证实体20因此可以使用货币公开密钥(p1)来验证拆分数据由货币秘密密钥(s1)签名,并因此验证该拆分数据已经由输入量的所有者生成(如在下文“操作验证”一节中更详细地说明的)。

在此示例中,拆分数据包括仅两个输出货币量,各自由货币公开密钥散列(p2h)和货币公开密钥散列(p3h)分别表示。然而,将被理解的是,拆分数据可以包括各自具有对应的货币公开密钥散列和值的任何数目的(例如,三个或四个或七个或者十四个等)输出货币量。所有输出量的总值应等于输入量的值。

此外,在此示例中,拆分数据包括由货币公开密钥散列(p1h)表示的单个输入货币量。然而,将被理解的是,拆分数据可以包括两个或更多个输入量,每个输入量具有对应的货币公开密钥散列和货币公开密钥。该操作可以用于下述情况,实体拥有多笔一定量的数字货币,他们希望将这些数字货币的总值不等地分布成两笔或更多笔输出量。

以下操作可以被认为是join(合并)&split(拆分)操作。例如,一个实体可能拥有值为10单位的第一量和值为4单位的第二个量,并且可能希望拥有值分别为11单位、2单位和1单位的三个量。在这种情况下,操作数据将有两个输入量(值分别为10单位和4单位)和三个输出量(值分别为11单位、2单位和1单位)。输入量的数目可以等于、大于或小于输出量的数目,只要输入量的数目至少为二并且输出量的数目至少为二即可。从下面对join操作的描述中可以理解,操作数据可以包括与输入量的数目对应的多个签名。再次强调,所有输出量的总值应等于所有输入量的总值。

在生成拆分数据之后,它们可以被传送到验证实体20。如果拆分数据被验证为有效,则执行split操作的实体将凭借其拥有或能够导出对应的货币秘密密钥的事实而仍持有或拥有新创建的量的数字货币。

join(合并)操作

join操作由两笔或更多笔量的数字货币的所有者或持有者(即拥有或持有针对每笔输入量的数字货币的货币秘密密钥s1和s2的实体)通过生成操作数据(针对该操作将其称为合并数据)来执行。所有者或持有者可以是用户实体10或货币发行者实体30。该操作是将多笔输入量的数字货币组合为单个输出量的数字货币。因此,该操作用于下述情况,实体拥有两笔或更多笔独立量的数字货币但是希望将它们组合成单个量。

输入数据和输出数据可以被统称为“货币数据”。输入数据包括第一输入量的货币公开密钥散列(p1h)(输入字段1)、第一输入量的货币公开密钥(p1)(输入字段2)、第二输入量的货币公开密钥散列(p2h)(输入字段3)和第二输入量的货币公开密钥(p2)(输入字段4)。

输出数据包括货币公开秘钥散列(p3h)(输出字段1)和值(v3)(输出字段2)。货币公开密钥散列(p3h)是与输出量的数字货币对应的货币公开密钥(p3)的散列。值v3是输出量的数字货币的值。值v3将被设置成使其等于输入量的值(即v1+v2=v3)。如果情况并非如此,则验证实体20可以认为合并数据无效(如在下文“操作验证”一节中更详细地说明的)。

对输入量和输出量的所有权并不改变。优选地,根据在于2013年10月17日发布的由nicholasvansaberhagen所著的白皮书“cryptonotev2.0”(可在https://cryptonote.org/whitepaper.pdf上获得)的第4节中(特别是在第4.2.2节“terminology(术语)”、第4.3节“unlinkablepayments(不可链接的支付)”和第4.5节“standardcryptonotetransaction(标准cryptonote交易)”中)详细描述的密钥生成过程,基于输入量的所有者的钱包公开密钥(pw)来生成货币公开密钥散列(p3h)。将被理解的是,可以使用任何合适的椭圆曲线。因此,可以由货币公开密钥散列(p3h)和钱包秘密密钥(sw)导出对应的货币秘密密钥(s3)。

在替选方案中,由于执行join操作的实体将拥有输出的量,所以这些实体可以根据任何标准加密技术针对每个p2-s2对和p3-s3对简单地生成的公-私密钥对。但是,如果这样做了,那么可能不再能操作“追踪密钥”(在下文中更详细地描述)。

可以使用任何合适的散列函数以任何方式对货币公开密钥(p3)进行散列以生成货币公开密钥散列(p3h)。

可以通过使用货币秘密密钥(s1)对货币数据进行密码签名来生成合并签名1(签名字段1)。可以通过使用货币秘密密钥(s2)对货币数据进行密码签名来生成合并签名2(签名字段2)。验证实体20因此可以使用货币公开密钥p1和p2来验证货币数据是由用于创建合并签名的货币秘密密钥s1和s2签名的并因此验证合并数据有效。

在此示例中,合并数据包括仅两个输入量,各自由货币公开密钥散列(p1h)和货币公开密钥散列(p2h)分别表示。然而,将被理解的是,合并数据可以包括各自具有对应的货币公开密钥散列和货币公开密钥的多于两个的输入量(例如三个、五个、六个、十二个等)。所有输入量的数字货币的总值应等于输出量的数字货币的值。

此外,将被理解的是,合并数据可以包括两笔或更多笔输出量的数字货币。这样的操作可以被认为是在上文中更详细地描述的join(合并)&split(拆分)操作。

在生成合并数据之后,它们可以被传送到验证实体20。如果拆分数据被验证为有效,那么执行join操作的实体将凭借其拥有或能够导出对应的货币秘密密钥的事实而仍持有或拥有新创建的量的数字货币。

destroy(销毁)操作

destroy操作由货币销毁者40通过生成操作数据(针对该操作将其称为销毁数据)来执行。货币销毁者40是持有货币销毁者秘密密钥(sd)并因此有权销毁一定量的数字货币的实体。其他实体由于其未持有货币销毁者秘密密钥所以无权执行destroy操作。可选地,货币销毁者可以是与货币发行者30相同的实体。可选地,货币销毁者秘密密钥(sd)可以与货币发行者秘密密钥(sb)相同,在这种情况下货币销毁者公开密钥(pd)也将与货币发行者公开密钥(pb)相同。

可以看出,销毁数据不包括输出数据。这是因为destroy操作销毁了输入量的数字货币。

输入数据可以被称为“货币数据”并且包括待被销毁的量的数字货币的货币公开密钥散列(p1h)(输入字段1)。

可选地,destroy操作可以销毁两笔或更多笔量的数字货币。待被销毁的每笔量具有包括在输入数据中的对应的货币公开密钥散列。

货币销毁者40通过使用货币销毁者秘密密钥(sd)对货币数据进行密码签名来生成货币销毁签名(签名字段1)。验证实体可获得相应的货币销毁者公开密钥(pd)(类似于货币创建者公开密钥(pb)),使得他们能够验证货币销毁者签名是由货币销毁者40使用他们的货币销毁者秘密密钥(sd)正确创建的。货币数据还可以包括货币销毁者40的标识符,验证实体20和/或数字货币网络200中的任何其他实体可以利用该标识符来查找与生成销毁者数据的特定货币销毁者40对应的货币销毁者公开密钥(pd)。这在下文的“操作验证”和“密钥区块链”一节中有更详细的说明。

可以看出,由于货币销毁签名是利用货币销毁者秘密密钥(sd)生成,而不是利用与待被销毁的量对应的货币秘密密钥(s1)生成的,因此货币销毁者40不需要拥有待被销毁的量(即他们不需要知道s1)。因此,货币销毁者40可以销毁任意数字货币量。这可能会带来许多好处,例如,当识别出一定量的所有者通过欺诈或非法手段获得该量时、或者希望降低流通中的数字货币的总值时、或者当有助于将偏早的一定量的数字货币存档时(如下文所说明的)或者当一定量的所有者能够证明他们拥有该量但已经丢失了对应的货币秘密密钥时,在这些情况下货币销毁者40可以销毁该量并且货币发行者30可以创建新的量并将新量的所有权转移给所有者。

在生成销毁数据之后,其可以由货币销毁者40传送到验证实体20。如果销毁数据被验证为有效,则已销毁量不再存在,因此其被有效地从流通中去除。

transfer(转移)操作

transfer操作是由一定量的数字货币的所有者或持有者(即拥有或持有针对该一定量的数字货币的货币秘密密钥(s1)的实体)通过生成操作数据(针对该操作将其称为转移数据)来执行的。所有者或持有者可以是用户实体10或货币发行者实体30,并且可以被称为支付方。该操作是将一定量的数字货币的所有权转移给不同的实体(例如不同的用户实体10),从而使他们拥有或持有该笔一定量的数字货币。所述不同的实体可以被称为受付方或接收方。对一定量的所有权的转移要求转移与该量对应的货币秘密密钥的所有权。

输入数据和输出数据可以被称为“货币数据”。输入数据包括货币公开密钥散列(p1h)(输入字段1)和与支付方想要转移的量的数字货币对应的货币公开密钥(p1)(输入字段2)。

输出数据包括货币公开密钥散列(p2h)(输出字段1)、值(v2)(输出字段2)和接收方标志(rf)(输出字段3)。货币公开密钥散列(p2h)是与接收方因转移而将拥有的量的数字货币对应的货币公开密钥(p2)的散列。值(v2)是接收方因转移而将拥有的量的数字货币的值。值v2可以被设置为等于值v1,否则验证实体20可能认为转移数据无效(如在下文的“操作验证”一节中更详细描述的)。接收方标志(rf)是接收方可以使用其来识别转移数据可能与其相关的数据(如后文所说明的)。

货币公开密钥(p2)是以使得接收方能够导出对应的货币秘密密钥(s2)的方式来生成的。可以实现这一点的一个示例方式是支付方基于接收方的公开钱包密钥(pw)来生成货币公开密钥散列(p2h)。然后接收方可以由货币公开密钥散列(p2h)和他们的钱包秘密密钥(sw)导出对应的货币秘密密钥(s2)。在于2013年10月17日发布的由nicholasvansaberhagen所著的白皮书“cryptonotev2.0”(可从https://cryptonote.org/whitepaper.pdf获得)的第四节中详细描述了该密钥生成过程。特别是在第4.2.2节“terminology(术语)”、第4.3节“unlinkablepayments(不可链接的支付)”和第4.5节“standardcryptonotetransaction(标准cryptonote交易)”中有描述。将被理解的是,可以使用任何合适的椭圆曲线。

因此,只有接收方能够导出货币秘密密钥(s2),因此只有接收方将拥有或控制所转移的量的数字货币。

接收方标志(rf)可以是接收方可以使用其来识别数字货币账簿上的哪些转移数据可能与其相关的任何数据。特别地,在转移数据已被验证实体20验证并被添加到数字货币账簿之后,接收方可以检查数字货币账簿上的操作数据(其可能包括用于在不同实体之间转移不同量的数字货币的多组转移数据)并且使用接收方标志(rf)来识别出哪组转移数据与其相关。

可选地,转移数据可以不包括接收方标志(rf)。然而,在这种情况下,为了识别与其相关的一组转移数据并因此导出货币秘密密钥(s2),接收方将需要遍历数字货币账簿上的所有组交易数据,并且推测性地导出针对每组交易数据的每笔输出量的新秘密密钥。由于只有正确的转移接收方才能导出正确的货币秘密密钥(s2)(因为只有正确的接收方才拥有正确的钱包秘密密钥(sw)),所以他们将需要针对每个对应组的交易数据来尝试每个推测性地导出的秘密密钥,以确定哪组交易数据与其相关。这会给接收方造成很大的处理负担,特别是在接收方用户实体10正在使用具有低处理能力的电子设备(例如移动电子设备)和/或具有缓慢的数据连接(例如像edge的移动数据网络)时更是如此。因此,转移数据将优选地包括接收方标志(rf)。

接收方标志(rf)可以是钱包公开密钥(pw)和/或接收方的钱包公开密钥的散列。然而,识别钱包公开密钥(pw)和/或钱包公开密钥的散列将消除接收方的匿名性,因为任何实体都可以从转移输数据中识别接收方。因此,实体可以核查整个数字货币账簿并确定每个实体持有的数字货币的总值以及每个实体如何花费其一定量的数字货币。

因此,接收方标志(rf)优选地不会被设置为钱包公开密钥(pw)和/或钱包公开密钥的散列。相反,优选地将其设置为接收方可以认出与其相关但不会公开地识别出该接收方的值。例如,可以将接收方标志(rf)设置为公开钱包密钥(pw)的截断值或钱包公开密钥的散列的截断值,例如钱包公开密钥(pw)或钱包公开密钥的散列的第一位或最后n位(其中n是在1至pw的长度或pw的散列之间的任何合适的值,例如n=1或n=4或n=6或n=8或n=16或n=24等)。因此,一个用户实体10的接收方标志(rf)可能仍然与多个其他用户实体10的接收方标志相同(即冲突),使得接收方不是唯一标识的。

由于支付方知道公开钱包密钥(pw)或公开钱包密钥的散列,所以支付方可以以此方式自己生成接收方标志(rf)。因此,可以在接收方(受付方)向支付方发送支付请求(其中支付请求包括公开钱包密钥(pw)和/或公开钱包密钥的散列)的情况下,和主动提供支付的情况下(例如接收方使其公开钱包密钥(pw)和/或其公开钱包密钥的散列通常是公开可获得的并且未向支付方发送特定支付的情况下)由支付方生成接收方标志(rf)。可替选地,在接收方已经向支付方发送了支付请求的情况下,接收方可以由公开钱包密钥(pw)和/或公开钱包密钥的散列导出接收方标志(rf)并将其包括在支付请求中。

因此,转移的接收方可以扫描数字货币账簿中的所有组转移数据,以检查与其钱包公开密钥(pw)或其钱包公开密钥的散列的截断值匹配的任何接收方标志(rf)。然后,他们可以针对存在匹配的每组转移数据推测性地导出新的秘密密钥,并且针对对应组的转移数据尝试每个推测性推导出的秘密密钥以确定哪组转移数据与其相关。通过首先检查接收方标志(rf),对秘密密钥的推测性生成的数目应该大幅减少,从而大幅降低处理负担同时仍不能明确地识别出接收方(预期16位的接收方标志(rf)可以将处理负担减少为65,536分之一,同时仍然允许与其他用户实体10的接收方标志的足够数目的冲突以保持匿名性)。

在另一替选方案中,在接收方已经向支付方发送了支付请求的情况下,接收方可以以任何合适的方式推导出接收方标志(rf),例如其可以针对其发送给支付方的每个支付请求(例如通过生成nonce(随机单次值)并将接收方标志(rf)设置为该nonce标志)来生成唯一的接收方标志(rf)并将其包括在支付请求中。以这种方式,接收方可以在唯一接收方标志(rf)的存储器中保存记录,并且以后其可以扫描数字货币账簿中的所有组转移数据并找到包括其唯一接收方标志(rf)的一组转移数据。然后他们将能够针对该组转移数据导出货币秘密密钥(s2)。通过以这种方式唯一地识别该组转移数据,可以使接收方的数据处理负担最小化,从而简化处理并提高处理速度。此外,因为接收方可以针对其参与的每次转移导出不同的唯一接收方标志(rf),从而将不存在任何将数字货币账簿上的不同组转移数据公开链接到同一接收方,所以仍可以保留匿名性。

支付方通过使用货币秘密密钥(s1)对货币数据进行密码签名来生成转移签名(签名字段1)。验证实体20因此(如在下文的“操作验证”一节中更详细地说明的)可以使用货币公开密钥(p1)来验证货币数据是通过货币秘密密钥(s1)签名的并且因此验证转移数据由输入量的所有者生成。

在此示例中,货币数据包括由货币公开密钥散列(p1h)和货币公开密钥(p1)表示的仅一笔输入量的数字货币以及由货币公开密钥散列(p2h)表示的一笔输出量的数字货币。然而,将被理解的是,货币可以包括两笔或更多笔输入量和/或两笔或更多笔输出量。该操作可以用于下述情况,实体拥有想要转移给另一实体的多笔量的数字货币以及/或者实体想要将多笔量转移给两个或更多个不同实体(例如,其中一笔输出量被转移给受付方,而另一输出量作为找零被返还给支付方)。注意,对于任何正在被转移到支付方的输出量(即,该交易的找零),支付方仍将优选地根据上文所述的cryptonote技术使用钱包公开密钥(pw)或钱包公开密钥的散列来生成针对该量的货币公开密钥散列。以这种方式,追踪密钥将仍然能够操作以用于转移给支付方的输出量。

在存在一笔输入量和两笔或更多笔输出量的情况下,该操作可被认为是transfer(转移)&split(拆分)操作。在这种情况下,货币数据可以包括针对每笔输出量的货币公开密钥散列、值和接收方标志。

在存在两笔或更多笔输入量和一笔输出量的情况下,该操作可以被认为是transfer(转移)&join(合并)操作。在这种情况下,货币数据可以包括两个或更多个签名,每个签名使用与每个输入量对应的货币秘密密钥来生成(类似于上述join(合并)操作)。

在存在两笔或更多笔输入量和两笔或更多笔输出量的情况下,该操作可以被认为是transfer(转移)&join(合并)&split(拆分)操作。在这种情况下,货币数据可以包括针对每笔输出量的货币公开密钥散列、值和接收方标志以及两个或更多个签名,每个签名使用与每笔输入量对应的货币秘密密钥来生成。

在创建转移数据之后,可以由支付方将其传送给验证实体20。如果被验证为有效,则接收方将凭借其能够导出对应的货币秘密密钥的事实而持有或拥有该输出量的数字货币。

因此,可以看出,用户实体10可以拥有单个钱包公开密钥(pw),用户实体10可以使用该单个钱包公开密钥(pw)来从网络200中的不同实体接收多笔不同量的数字货币。因为操作数据使用对于一定量的数字货币本身是唯一的货币公开密钥和/或货币公开密钥散列来识别每笔输入和输出量的数字货币,所以保持了匿名性。货币公开密钥和/或货币公开密钥散列并不链接到该量的所有者,并且操作数据中不存在唯一识别出该量的所有者的其他数据。因此,用户实体不再需要针对其想要接收的每笔量的数字货币来生成新的公-私密钥对并保证每个私有密钥都安全。相反,用户实体只需要保持钱包秘密密钥(sw)安全,然后在其希望对一定量的数字货币执行操作时其可以利用钱包秘密密钥导出货币秘密密钥。

还可以看出,除销毁数据外,操作数据有效地创建了新的量的数字货币。这是因为多笔量的数字货币是通过货币公开密钥散列来识别的,并且每组操作数据将包括新的货币公开密钥散列。在输入数据中被标识的任何量的数字货币(即输入数据中的任何货币公开密钥散列)将通过该操作被有效地删除,因为在将操作数据添加到数字货币账簿之后,新的量(即输出量)被视为已经替换了旧量(即输入量)并且那些旧量将被视为已经被使用/花费(如下文所描述的)。因此,一定量的数字货币可以被认为是仅能使用一次的“一次性量”,之后它们变得无效且不相关。这使得数字货币账簿中的区块能够(如在下文“将操作数据添加到数字货币账簿”一节中可以看到的那样)只识别已使用/花费的量以将其安全地删除,因为那些量不再相关。

在进一步的变型中,可以由货币发行者30通过如上文“create操作”中所说明的那样生成操作数据,而不是通过使用标准公-私密钥对生成技术导出货币公开密钥(p1)和货币秘密密钥(s1)来执行create&transfer(创建&转移)操作,可以基于接收方的公开钱包密钥(pw)导出货币公开密钥(p1)。然后接收方可以由货币公开密钥散列(p1h)导出对应的货币秘密密钥(s1)和其钱包秘密密钥(sw)。在于2013年10月17日发布的由nicholasvansaberhagen所著的白皮书“cryptonotev2.0”(可从https://cryptonote.org/whitepaper.pdf获得)的第四节中详细描述了该密钥生成过程。特别是在第4.2.2节“terminology(术语)”、第4.3节“unlinkablepayments(不可链接的支付)”和第4.5节“standardcryptonotetransaction(标准cryptonote交易)”中有描述。将被理解的是,可以使用任何合适的椭圆曲线。

因此,货币发行者30不会“拥有”由创建&转移数据创建的一定量的数字货币——接收方将拥有由创建&转移数据创建的一定量的数字货币。

create&transfer操作可以包括两笔或更多笔量的数字货币,其各自具有其自己的货币公开密钥。可以基于接收方的公开钱包密钥(pw)来生成针对非货币发行者30的接收方的每笔量的货币公开密钥。可以使用标准公私密钥对生成技术来生成用于货币发行者30的每个量(即,将在货币发行者的控制下保持的量)的货币公开密钥。

操作验证

验证实体20可以是已经被提供有验证者私有或秘密密钥(sv)的任何实体。验证者秘密密钥(sv)将具有由网络200中的任何其他实体可获得的对应验证者公开密钥(pv)。

验证者秘密密钥(sv)和验证者公开密钥(pv)是公-私密钥对,并且可以由主要权威机构50使用任何合适的加密技术来生成。通过向验证实体20提供验证者秘密密钥(sv),主要权威机构50知晓该实体是可信的验证实体。可替选地,验证者秘密密钥(sv)和验证者公开密钥(pv)可以由验证实体20生成,并且主要权威机构可以通过将验证者公开密钥(pv)添加到密钥区块链和/或(例如通过将其包括为数字货币软件的至少一部分)将其提供给网络200中的实体来发信号表示该验证实体20是可信的实体。

验证者公开密钥(pv)可以被包括在网络200中的所有实体可公开获得的密钥区块链中(其可以是用于货币创建者公开密钥(pb)和/或货币销毁者公开密钥(pd)的同一密钥区块链,或者可以是不同的密钥区块链)。例如,其可以由主要权威机构50或网络200中的任何其他合适的实体来维护和提供。此外或可替选地,验证者公开密钥(pv)可以被包括为提供给网络200中的实体的数字货币软件的一部分。

因为操作数据被从用户实体10、货币发行者30或货币销毁者40发送到验证实体20(例如通过将其发送到验证实体的网络或仅单个验证实体20),或者通过从用户实体10、货币发行者30和/或货币销毁者40可能将操作数据发往的位置处(例如,由主要权威机构50代管的区域或者任何其他合适的实体)将其取回,所以验证实体20可以获得该数据。

在验证实体20已经获得由用户实体10、货币发行者30或货币销毁者40创建的操作数据之后,其可以执行验证过程。该验证过程包括检查数据中的签名以及在必要情况下检查数据中的值。

可以通过下述方式来检查操作数据中的签名,使用相关的公开密钥对签名进行解密并检查解密后的数据与该操作的货币数据(即输入和/或输出数据)是否匹配。

对于创建数据,验证实体20可以例如从公开密钥区块链或者从验证实体20中的存储器获得货币发行者公开密钥(pb)(在货币创建者公开密钥(pb)被包括作为提供给验证实体20的数字货币软件的一部分的情况下,或者先前已经从公开密钥区块链中获得了货币创建者公开密钥(pb)并且然后将其保存在存储器中的情况下)。然后,新的货币签名可以被解密并且与创建数据中的货币数据(即输出数据)进行比较。

类似地,对于销毁数据,验证实体20可以以与获得货币创建者公开密钥(pb)类似的方式来获得货币销毁者公开密钥(pd)。然后,货币销毁签名可以被解密并且与销毁数据中的货币数据(即输入数据)进行比较。

对于拆分数据,验证实体20将使用货币公开密钥(p1)对拆分签名进行解密并将解密后的数据与拆分数据中的货币数据(即输入数据和输出数据)进行比较。对于合并数据,验证实体20将使用货币公开密钥(p1)来对合并签名1进行解密并将解密后的数据与拆分数据中的货币数据进行比较,并且使用货币公开密钥(p2)对合并签名2进行解密并将解密后的数据与拆分操作中的货币数据进行比较。类似地,对于来自split&join操作的操作数据,验证实体20将使用货币公开密钥(p1)对合并签名1进行解密并将解密后的数据与货币数据(即输入数据和输出数据)进行比较,并且使用货币公开密钥(p2)对合并签名2进行解密并将解密后的数据与货币数据进行比较。

对于转移数据或来自transfer&split操作的操作数据,验证实体20将使用货币公开密钥(p1)对转移签名进行解密并将解密后的数据与货币数据(即输入数据和输出数据)进行比较。对于来自transfer&join操作或transfer&join&split操作的数据,验证实体20将使用货币公开密钥(p1)对转移签名1进行解密并将解密后的数据与货币数据进行比较,并且使用货币公开密钥(p2)对转移签名2进行解密并将解密后的数据与货币数据进行比较。

如果解密后的数据与货币数据匹配,则签名被验证为正确。

如果解密后的数据与货币数据不匹配,这可能是由于下述缘故:未经授权的实体或者未拥有输入量的数字货币的实体(即,没有正确货币秘密密钥的实体)则在创建签名时,该签名被识别为不正确。在识别出不正确的签名时,该验证过程被认为具有否定的验证结果,并且验证实体20可丢弃该操作数据以使其不被添加到数字货币账簿。因此将不会发生期望的数字货币动作(例如转移一定量的数字货币或拆分一定量的数字货币等)。

除创建数据和销毁数据外,验证实体20还将检查输入值和输出值以确保其符合要求。该要求可以是总输入值等于总输出值。可替选地,该要求可以是总输出值等于或小于总输入值。在这种情况下,验证实体20可以将输出值和输入值之间的任何差值作为验证佣金。

在操作数据的输出数据中标识输出值。每笔输入量的数字货币的值可以通过检查数字货币账簿以识别输出该量的一组操作数据来确定(例如,通过使用货币公开密钥散列(p1h)来查找在货币公开密钥散列(p1h)出现在输出数据中时先前的一组操作数据并从该组操作数据中读取值(v1))。

可选地,验证实体20还可以检查创建数据和/或销毁数据以确保输入值或输出值(视情况而定)符合要求。在这种情况下,该要求可以是存在可以被创建或销毁的最大值。

如果总的输入值和输出值符合要求,则操作数据中的值被验证为正确。

如果输入值和输出值不符合要求,则验证过程被认为具有否定的验证结果,并且验证实体20可丢弃该操作数据以使其不被添加到数字货币账簿。因此将不会发生期望的数字货币动作。

最后,验证实体20可以检查任何输入量的数字货币是否仍然“活动/有效”(例如,其尚未被使用/花费)。为此,验证实体20可以检查数字货币账簿(例如,通过检查在数字货币账簿中的任何一组操作数据的输入数据中没有出现量公开密钥散列(p1h))以确保操作数据中的每笔输入量之前未被用作数字货币账簿中的任何一组操作数据的输入。

如果操作数据中的每笔输入量均为活动/有效的,则输入量将被验证为正确。

如果操作数据中的任何输入量不是活动/有效的(例如,其已被用作数字货币账簿中的一组操作数据中的输入量),则验证过程被认为具有否定的验证结果,并且验证实体20可以丢弃该操作数据以使其不被添加到数字货币账簿。因此将不会发生期望的数字货币动作。因此,可以防止同一量的重复花费。

如果成功通过验证过程的所有步骤,则该验证过程被认为具有肯定的验证结果,并且验证实体20可以将操作数据添加到数字货币账簿。

将操作数据添加到数字货币账簿

为了将验证的操作数据添加到数字货币账簿,验证实体20将该操作数据添加到新的区块。在一定时间段内已被肯定地验证的所有组操作数据都被添加到新区块,并且在该时间段结束时验证实体20将该新区块添加到数字货币账簿。

图14示出了新区块300的示例性表示。新区块300包括区块头310和操作数据集320。

一旦验证实体已经创建新区块300,就可以以多种不同的方式将其添加到数字货币账簿。例如,可以使用p2p网络将其广播至网络200中的所有实体。因此,网络200中的所有实体将拥有新区块300以添加到其数字货币账簿的副本。附加地或可替选地,实体(例如主要权威机构50)可以保存数字货币账簿的公开可用副本。因此新区块300可以被提供给该实体,然后该实体可以将其添加到数字货币账簿的公开可用副本。

区块头310包括区块编号311、在数字货币账簿中出现的最新的前一个区块的散列312、时间戳314以及可选地数字货币账簿中最早的活动区块的标识符313。区块头310可选地还可以包括操作数据集的散列的默克尔树的默克尔根和/或在区块300中包含的操作数据集的数目。区块编号311将唯一地标识新区块300并且可以被设置为比数字货币账簿中最新的前一个区块大一的值。数字货币账簿中最新的前一个区块的散列312被用于将新区块300与最新的前一个区块相连(即,将其链接在一起)。时间戳314指示该新区块300何时被创建。下文更详细地描述了数字货币账簿中最早的活动区块的可选标识符313。

操作数据集320包括在该时间段内已被验证的每组操作数据321、322、323…。该操作数据集320还包括验证数据330。验证数据330由验证实体20创建以发出信号表示其已经验证了每组操作数据321、322、323…。验证数据330包括例如验证实体20的标识符的背书数据以及由验证实体20使用其验证者秘密密钥(sv)通过对背书数据进行密码签名而生成的验证签名。通过在新区块300中包括验证数据330,在新区块300被添加到数字货币账簿之后,网络200中的任何实体可以(例如通过使用验证实体20的标识符在密钥区块链上进行查找或从实体中的存储器中)获得验证者公开密钥(pv)并且验证该验证签名已被正确生成。如果验证签名未被正确生成,则可(例如由主要权威机构50)采取动作从数字货币账簿中删除新区块300,或者其他验证实体20可以简单地忽略此新区块并继续致力于要被添加到数字货币账簿的其自己的新区块。如果签名已被正确生成,则其他验证实体20可以通过开始致力于将会包括新区块300的散列的另一新区块(因此将另一新区块链接到区块300)来发出信号表示其接受新区块300。

除了将验证数据330包括在操作数据集320中之外或作为其替选方案,验证数据330可以被包括在新区块300的任何其他合适的部分中,例如区块头310中。此外,验证签名可以通过使用验证者秘密密钥(sv)对新区块300中的任何数据进行密码签名来生成。在这种情况下,验证数据可以包括或者可以不包括验证实体20的标识符。

网络200中的一些或所有验证实体20(以及可选地还有主要权威机构50)可以使用一致性算法来监视验证实体20的行为。如果一致性算法识别出验证实体20之一没有正确运行(例如,其确证了无效的操作数据组,或者其没有正确地生成其验证签名等),则可以针对该验证实体20采取动作,例如从密钥区块链中移除其公开密钥和/或移除其与验证秘密密钥(sv)对应的证书,使得该验证实体20不再能验证操作。一致性算法可以采取任何合适的形式,例如n-from-n方案。在一个特定示例中,只有最小数目的验证签名被包括在新区块中,该新区块才可以被数字货币网络200中的实体接受。例如,一个验证实体20可以检查该区块并用其签名对其进行广播。然后,第二验证实体20可以检查该区块并且如果其也对该区块进行验证,则将其签名添加到该区块并对其进行重新广播。这可持续进行直到不同的验证实体已经添加了最小可接受签名数目(例如,3或4等)为止,此时该区块将被网络200中的实体接受并且可以开始致力于下一个区块。在另一示例中,一个验证实体可以作为主要签名者,并且一个或更多个其他验证实体可以作为次要签名者。网络200可以被配置成使得新区块300只有其包括来自主要实体和至少一个次要签名者的签名才被这些实体接受。

以这种方式,可以识别来自验证实体20的不当行为(例如,在实际上应该丢弃操作数据时将该操作数据验证为正确)并采取合适的动作(例如,从密钥区块链中移除其公开密钥等)。以这种方式,可以保护网络200免于习惯性创建无效区块300的被盗用的、恶意的或实现得不好的验证实体20的影响。

作为创建新区块300的一部分,验证实体20可选地还可以为数字货币账簿中最早的活动区块的标识符313设置值。标识符313将识别数字货币账簿中具有识别至少一笔“活动/有效”输出量的数字货币的至少一组操作数据的最早的区块,(即,在数字货币账簿中的任何后续区块的操作数据中未出现的货币公开密钥散列)。所标识的区块之前的所有区块将不识别任何活动/有效的输出量的数字货币,因此不再具有任何“关联”。

验证实体20可以使用区块编号311和/或时间戳314来辨别数字货币账簿中的区块的时间顺序。验证实体20可以通过查看数字货币账簿中最新的前一个区块的区块头中标识的最早的活动区块来设置新区块300中的标识符313。如果该区块中的操作数据集320不再识别任何活动/有效量的数字货币,即,如前文所说明的(例如,因为在该区块的输出数据中的所有货币公开密钥散列已经出现在后续区块的操作数据中和/或新区块300的操作数据集320中)在该区块中被标识的所有量已被使用或花费,验证实体20将核查数字货币账簿以识别下一个最早的活动区块并相应地设置标识符313。因此,随着偏早量的数字货币被使用/花费,标识符313可以被更新以使得最早的活动区块总是被标识。

作为该过程的一部分,可选地,可以保存用于“已存档”区块(即,比最早的活动区块更早的区块)的区块头的链。因此,数字货币账簿可以包括该数字货币账簿的“活动”部分(即最早的活动区块和所有后续区块)以及比最早的活动区块更早的区块的历史(已存档)的区块头。在保存对已被添加到数字货币账簿的所有区块的一些记录的同时仍能将数字货币账簿的大小保持为最小(因为每个区块中的区块头的大小通常仅是该区块中的操作数据的数据大小的一小部分)。

因为验证实体20是可信的实体并且可以使用验证数据330和验证者公开密钥(pv)快速认证由验证实体20添加的区块,所以标识符313可以被其他实体信任。

附加地或可替选地,标识符313可以在区块的任何合适的部分中,例如作为专用标识符操作数据集的一部分和/或作为验证数据330的一部分等处于操作数据集320中。

图15示出了数字货币账簿中区块的示例性表示。这些区块按时间顺序以最早的区块在最左边且最新的区块在最右边进行表示。可以看出,在最早的区块中示出了两笔量的数字货币(量1和量2)。量1被拆分以创建量3和量4。因此量1不再活动/有效。然后量2与量3合并以创建量5。因此量2和量3不再活动/有效。因此,可以看出,最早的区块不再标识有任何活动/有效量的数字货币,因此成为冗余区块。下一个区块仍然标识有活动/有效量的数字货币(量4),因此是最早的活动区块。因此标识符313可以被设置以将该区块标识为最早的活动区块。

因此,当实体正在核查数字货币账簿以验证操作数据和新区块时,其可以查看数字货币账簿上最新的区块中的标识符313,然后仅核查被标识符313标识的区块之后的数字货币账簿。这是因为由于数字货币的“一次性”性质(如前文所说明的),已使用/花费的量是无关的,所以只需要考虑活动/有效量。因此,验证实体20的验证过程以及网络200中的任何其他实体对新区块的检查可以实现更有效且更少的数据密集度,因为不必核查整个数字货币账簿。可选地,如果实体保留数字货币账簿的本地副本,则其可以丢弃在被标识符313标识的区块之前的所有区块,从而减少其必须存储的数据量。

此外,当新实体加入网络200时,其只需下载被标识符313标识的区块之后的数字货币账簿。例如,如果其试图从网络200中的实体获得数字货币账簿那么该实体可以仅仅仅向其提供在被标识符313标识的区块之后的数字货币账簿(并且可选地将历史(已存档的)区块头作为数字货币账簿的一部分)。类似地,如果主要权威机构50保留数字货币账簿的公开可用副本,则其可丢弃被标识符313标识的区块之前的所有区块(并且可选地相应地更新历史(已存档的)区块头),从而减小公开可用的数字货币账簿的大小。这减少了必须下载的数据量,从而使得新实体加入网络200更加直接,特别是当新实体与网络200具有低带宽连接和/或新实体正在以低处理能力操作设备时(如移动设备)更是如此。

作为该过程的一部分,验证实体20可以可选地将早的一定量的数字货币存档。例如,验证实体20可以辨认出数字货币账簿中最早的活动区块仅标识少量活动量的数字货币,并且如果这些量已被存档,则最早的活动区块将向前移动大量的区块(即可从数字货币账簿中丢弃大量区块)。验证实体20可以通过取得与每个偏早的量有关的偏早的操作数据集并将其复制到新区块300的操作集320中以将偏早量的数字货币存档。由于在偏早的操作数据集中标识的输出量的数字货币随后将作为新区块300中的操作数据集320的输出量出现,所以偏早的量将不再是活动/有效的。因此,数字货币账簿中最早的活动区块将向前移动(即,其现在将是更近的区块),并且验证实体20可以相应地设置标识符313。

附加地或者可替选地,货币销毁者40可以帮助将较早的量存档。货币销毁者40可以识别偏早量的数字货币并通过生成销毁数据(如上文所述)来将其销毁。然后销毁数据将被传送到验证实体20,验证实体20将将其包括在新区块300的操作数据集320中并相应地设置标识符313。

可选地,可以使用创建数据来重新创建销毁量的数字货币,以创建与销毁量相同的值的数字货币,然后使用转移数据将其转移到销毁量的所有者处(例如,在货币销毁者40也是货币创建者30的情况下)。该所有者将能够辨认出与其相关的转移数据(例如使用接收方标识符(rf))并根据转移数据导出与输出量的数字货币对应的货币秘密密钥,从而维护对具有与被销毁量相同值的量的数字货币的所有权。可替选地,货币销毁者40可以保存对销毁量的数字货币的记录,并且在所有者需要时重新创建相同值的量并将其转移给销毁量的所有者(例如,当所有者向主要权威机构50提交请求时)。或者其可以将销毁的量捐赠给慈善机构(例如,在销毁量较低的情况下)。或者其可以将销毁的量保留为利润(例如,在销毁量较低的情况下)。货币销毁者40如何将较早的量存档可以取决于网络200的配置和策略。

当设置标识符313时,验证实体20可以考虑操作数据集320中的操作数据(使得对偏早量的数字货币的操作将立即对标识符313产生作用),或者其可以仅考虑已经在数字货币账簿中的区块中的操作数据(使得在创建下一个区块时,对偏早量的数字货币的操作将仅对标识符313产生作用)。

通过以这种方式将较早的量存档,数字货币账簿中最早的活动区块可以更快地向前移动(即,成为更近的区块),从而更进一步地减小数字货币账簿的大小。这可以更进一步地提高验证操作数据和新区块的效率,并且可以更进一步地减少新实体的数据下载负担,从而使网络200更易于被新实体访问。

在新区块300不包括标识符313的替选方案中,网络200中的任何实体仍然可以自行核查数字货币账簿以识别最早的活动区块,然后丢弃其数字货币账簿副本中所有最早的区块。以这样的方式,可以减小其必须存储的数字货币账簿的大小。因此,即使当新区块300不包括标识符313时,如上文所说明的将较早量的数字货币存档仍可能是有益的,因为这可以使得能够进一步减小网络200中的实体存储的数字货币账簿的大小。

密钥区块链

至少一个密钥区块链可用于分配和管理货币发行者公开密钥(pb)、货币销毁者公开密钥(pd)和/或验证者公开密钥(pv)。单个密钥区块链可以用于所有不同类型的公开密钥,或者不同密钥区块链可以用于数字货币系统所需的每种不同类型的公开密钥。

主要权威机构50可以凭借秘密主密钥的所有权来管理密钥区块链。凭借主要权威机构50为新的公开密钥创建密钥区块数据并将其添加到密钥区块链中,可以将新的公开密钥(例如,新的货币发行者公开密钥(pb))添加到密钥区块链中。

密钥区块数据包括公开密钥数据和通过用秘密主密钥对公开密钥数据进行密码签名而生成的主签名。公开密钥数据可以包括公开密钥(例如货币销毁者公开密钥(pd))和与该公开密钥对应的实体的标识符(例如与货币销毁者公开密钥(pd)对应的货币销毁者40)。因此,为了检查创建数据、销毁数据或验证数据中的签名,实体可以使用在创建数据、销毁数据或验证数据中包括的标识符,以在密钥区块链中查找对应的公开密钥,从而验证签名。

主签名被包括在密钥区块数据中以证明公开密钥数据来自主要权威机构50因而是值得信任的。可以通过任何合适的方法例如通过将其包括作为数字货币软件的至少一部分或者通过认证授权等来分配与秘密主密钥对应的公开主密钥或使其可用于网络200。因此每当实体从密钥区块链中检索公开密钥时,可以使用主签名和公开主密钥来检查公开密钥数据以验证该公开密钥数据是来自主要权威机构50的。

公开密钥数据还可以包括公开密钥的失效日期,当从密钥区块链中检索公开密钥时可以检查该失效日期以验证该公开密钥仍然有效。

可以以与向数字货币账簿添加操作数据类似的方式将密钥区块数据添加到密钥区块链中。例如,可以创建包括密钥区块数据(以及主要权威机构50希望放置在密钥区块链上的任何其他公开密钥的密钥区块数据)和区块头的区块。区块头可以包括区块编号、密钥区块链中前一区块的散列和/或时间戳中的至少之一。然后可以通过下述方式将区块添加到密钥区块链中,例如使用p2p网络将其广播到网络200中的所有实体、将该区块存储在网络200中的实体已知且可由其访问的位置中、和/或将该区块添加到其密钥区块链的副本中,然后该副本将其提供给请求该区块的任何实体等。

可选地,主要权威机构50可以执行密钥撤销操作以撤销已经发布给实体的密钥。例如,可能认识到属于货币发行者30、货币销毁者40或验证实体20的秘密密钥已经被破坏,或者货币发行者30、货币销毁者40或验证实体20可能希望离开数字货币系统,在这种情况下应使对应的公开密钥失效。以这种方式,据称由相关实体签名的任何签名都不能被认证,因为在密钥区块链中其对应的公开密钥会被标记为被撤销。密钥撤销操作生成密钥撤销数据,其可以采取与密钥区块数据相同的形式,但是还包括用于指示该公开密钥已经被撤销因而现在无效的标志。在一个示例中,可以通过将公开密钥数据中的失效日期设置为过去的日期来指示该公开密钥已被撤销因而现在无效。由于网络200中的其他实体可以被配置为仅考虑密钥区块链中标识有特定公开密钥的最新的区块并忽略标识有相同公开密钥的所有较靠前的区块,因此其将认为该公开密钥是无效的并因此是被撤销的。这样,失效日期可以用作指示公开密钥已经被撤销的标志。在另一示例中,公开密钥数据可以包括另外的数据字段,其可以被主要权威机构50设置为指示公开密钥数据中的公开密钥已经被撤销的值。可以以与密钥区块数据相同的方式将密钥撤销数据添加到密钥区块链中。

在替选方案中,不仅是有权向密钥区块链添加新密钥(和/或撤销已经在密钥区块链中的密钥)的主要权威机构50,财团也可以向密钥区块链中添加新的密钥。该系统可以被配置为具有两个或更多个平等的对等体的财团,其可以对添加新密钥进行投票,例如要求5个对等体中的4个在密钥区块链接受新密钥之前批准该新密钥。可以以任何合适的方式实现这样的布置,例如通过要求对等体在对等体中被指定的一个对等体将密钥区块数据(和/或密钥撤销数据)添加到密钥区块链之前在其自身范围内进行投票,或者通过每个对等体向密钥区块链中添加密钥区块数据(和/或密钥撤销数据)并且网络200中的其他实体只有密钥区块数据(和/或密钥撤销数据)在密钥区块链中出现所要求的次数时才将其视为有效,等。

在另一替选方案中,不使用单独的密钥区块链,而是可以向数字货币账簿添加密钥区块数据和/或密钥撤销数据。例如,在区块被添加到数字货币账簿之前,密钥区块数据和/或密钥撤销数据可作为另外的数据集被包括在块300的操作数据320中。

附加地或可替选地,密钥区块数据可以被包括在权威机构树1507中,例如在用户权威机构被授权作为验证实体20的情况下,其对应的验证者公开密钥(pv)可以被包括作为用户权威机构标识符和/或用户权威机构权限的一部分。

除密钥区块链之外或作为其替选方案,可以通过任何其他合适的方式(例如经由认证授权和/或通过向数字货币软件发布更新等)使公开密钥可用。

图20示出了数字货币账簿的示例性表示。可以看出,此示例中的数字货币账簿包括用于该数字货币账簿的已存档区块(如前文所述)的区块头的链和“活动”区块链(即如前文所述的数字货币账簿的“活动”部分)。在该示例中,操作数据和密钥区块数据二者都被包括在数字货币账簿的区块中,使得密钥区块链实际上是数字货币账簿的一部分。

图21示出了数字货币账簿和独立的密钥区块链的另一示例性表示。数字货币账簿与图20中所示的数字货币账簿非常相似,但只有操作数据被包括在数字货币账簿的区块中。密钥区块数据被包括在独立区块链——密钥区块链的区块中。

追踪密钥

用户实体20可以根据在于2013年10月17日发布的由nicholasvansaberhagen所著的白皮书“cryptonotev2.0”(可在https://cryptonote.org/whitepaper.pdf上获得)的第4节中(特别是在第4.2.2节“terminology(术语)”、第4.3节“unlinkablepayments(不可链接的支付)”和第4.5节“standardcryptonotetransaction(标准cryptonote交易)”中)详细描述的密钥生成过程来生成其钱包公开密钥(pw)、钱包秘密密钥(sw)和对应的追踪密钥。将被理解的是,可以使用任何合适的椭圆曲线。

用户实体20可以向主要权威机构50提供钱包公开密钥(pw)(和/或钱包公开密钥的散列)和对应的追踪密钥。知晓追踪密钥和钱包公开密钥(pw)(和/或钱包公开密钥(pw)的散列)使得主要权威机构50能够从数字货币账簿中识别转入或转出该用户实体的钱包的所有量的数字货币并将其链接到一起。因此,主要权威机构50可以保留对用户实体20所拥有的所有量的数字货币的记录。然而,由于主要权威机构50将不知道与这些量的数字货币中的任何一笔对应的量秘密密钥,所以主要权威机构50将无法拥有对这些量的数字货币中的任何一笔数字货币的控制。此外,数字货币账簿将仍然不公开地将这些量中的任何一笔链接到特定用户实体20,使得只有主要权威机构20能够链接这些量并且仍然为用户实体20保留公开匿名性。

主要权威机构50可以保留对下述内容的记录:追踪密钥和钱包公开密钥(pw)(和/或钱包公开密钥的散列)以及与用户实体20有关的任何其他合适的信息,例如下述至少之一:名称、地址、银行账户明细、电子邮件地址、电话号码、用户实体20使用的电子设备的设备标识符(诸如imsi、msisdn、mac地址等)等。

在下述情况下追踪密钥可能特别有用:主要权威机构50是可信实体(例如银行),其可以由法律和/或银行业行为准则等要求而保持对用户交易的追踪(例如,为了帮助防止金融犯罪等)。追踪密钥对于用户实体20也可能有用,就像如果用户实体丢失了他们的量秘密密钥中的至少一个(例如,因为他们丢失了在其上存储密钥的设备等),那么他们可以请求主要权威机构50,主要权威机构可以使用追踪密钥来验证用户实体20拥有哪些量的数字货币、销毁它们(利用destroy操作)、创建相同值的新量(利用create操作)并将该量转回给用户实体20(利用transfer操作)。因此,用户实体20将不会因为其丢失了其量秘密密钥(s)而丢失这些量。

在存在两个或更多个主要权威机构50的情况下,每个用户实体20可以仅注册一个主要权威机构,该机构可以保留对追踪密钥和钱包公开密钥(pw)(和/或钱包公开密钥的散列)的记录。钱包公开密钥(pw)的至少一部分(例如前三位数字)可以标识针对用户保留对该追踪密钥和该钱包公开密钥(pw)(和/或钱包公开的散列)的记录的主要权威机构50。

可选地,数字货币系统可以被配置成要求每个用户实体10在他们可以成功执行任何数字货币操作之前注册他们的追踪密钥和钱包公开密钥(pw)(和/或钱包公开密钥的散列)。在一个示例中,在用户实体10已经向主要权威机构50注册了他们的追踪密钥和钱包公开密钥(pw)(和/或钱包公开密钥的散列)之后,主要权威机构50可以向用户实体10提供一组秘密密钥。用户实体10可以存储该组秘密密钥并且可以被配置成将一组签名包括在其将来生成的任何操作数据中。该组签名可以通过使用该组秘密密钥对操作数据中的货币数据的至少一部分进行加密签名来生成。因此,提供给验证实体20的操作数据将包括至少两个签名——该组签名和转移/拆分/合并签名。除了上述验证过程之外,验证实体20还可以获得与一组私有密钥(例如来自密钥区块链或来自其数字货币软件的)对应的一组公开密钥并验证该组签名。只有在操作数据中的所有签名都被验证的情况下,验证实体20才将操作数据包括在新区块中。以这种方式,如果用户实体10没有向主要权威机构50注册并获得一组私有密钥,则其不能执行任何操作。

在以上替选方案中,主要权威机构50可以生成追踪密钥、钱包公开密钥(pw)和钱包秘密密钥(sw),并将这些(可选地使用一组私有密钥)提供给用户实体20。然而,这可能并非是优选的,因为主要权威机构50将知道钱包秘密密钥(sw)并且因此可以导出针对转移到用户实体20的钱包的量的量秘密密钥。

在另一替选方案中,追踪密钥可能根本不会被生成或被用作数字货币系统的一部分。

使用场景示例

以下仅以示例的方式描述了本公开内容中的数字货币的一些用途。

图15示出了客户(支付方)21想要从商家(受付方)22购买产品的示例。在这种情况下,客户21和商家22是网络200中的不同的用户实体20。

商家22可能需要在交易发生之前验证关于客户21的某些信息。例如,可能需要验证客户21的年龄和/或确认其地址等。为了在不必执行人工检查的情况下验证这些信息,可选地,商家22可以首先执行参照图4描述的方法。在其他示例中,客户21可以附加地或可替选地执行类似的过程以在执行交易之前验证与商家22有关的信息。

该验证依赖于如参照图7至图9描述的经确证的信息。

在步骤s410中,商家22将其公开钱包密钥(pw)以及想要转移给客户的数字货币的值传送给客户21。根据购买情况可以以任何合适的方式传送该信息。例如,如果客户21在商家的商店22中,则商家可以使用任何合适的通信技术(例如蓝牙、nfc、sms消息、电子邮件、红外(ir)通信)通过在商家的电子设备上显示以供客户的电子设备扫描的qr码(或任何其他形式的可视代码)等将信息从商家的电子设备的信息传送到客户的电子设备。可替选地,如果该购买是基于互联网的购买,则商家22可以在其网站的结算页面上通过qr码、或者经由电子邮件、或者经由结算页面中的数字货币支付门户等来传送信息。

一旦接收到该信息,在步骤s420中客户21执行必要的操作。例如,信息可以被导入在客户的电子设备上操作的数字货币软件中(例如,因为客户21已经使用其软件扫描了qr码,或者因为该信息被设置成随着信息被导入而启动数字货币软件)并且可以如上所述创建操作数据。数字货币软件可以根据客户21所拥有的量的数字货币以及将被转移到商家22的量的值来根据需要执行transfer操作、或transfer&split操作、或transfer&join操作、或transfer&join&split操作。

在步骤s430中,如上所述,操作数据被传送到网络200中的至少一个验证实体20。在步骤s440中,验证实体20执行如上所述的验证。如果操作数据得到肯定验证,则在步骤s450中验证实体20将新区块300添加到数字货币账簿,其中新区块300包括操作数据。

在步骤s460中,商家22可以检查数字货币账簿以查看操作数据是否已被包括在区块中。如果操作数据包括接收方标志(rf),则商家22可以利用接收方标志(rf)以用于该目的。因为操作数据将会被添加到由可信验证者认可的区块中的数字货币账簿,所以商家22可以非常快地使其自身确信操作数据已经被添加到数字货币账簿并且可以通过区块中的验证数据330而被信赖。因此,与其他数字货币系统不同,不必为了信任包括操作数据的区块而将大量后续区块添加到数字货币账簿(可能需要约一小时),从而大大节省了完成交易的时间。此外,商家22不必为其自身检查操作数据的有效性,这又节省了大量时间并减少了数据处理需求,因为其不需要核查整个数字货币账簿。此外,因为操作数据仅能由可信的验证者正确验证,从而消除了流氓矿工验证不应被验证的交易的风险,所以可以提高安全性。

如果商家22确信操作数据在数字货币账簿中使得转账已经发生,则其可以向客户21确认交易已经发生(例如通过在线交易中显示成功页面或者通过在面对面购买的情况下进行听觉确认等)并且向客户21提供产品(例如通过运送或通过交付产品)。可选地,客户21还可以自行检查数字货币账簿以检查该转账是否已经发生。

图16示出了客户(支付方)21想要从商家(受付方)22购买产品的另一示例。该示例与图15的示例非常相似,但是在该示例中客户21未连接到网络200(例如,因为其在商家的商店中并且其电子设备上没有数据连接)。

如上所述执行步骤s410和s420。在执行操作之后,因为客户21不能连接到网络200,所以在步骤510中,客户使用对于商家的电子设备的任何合适的本地数据连接(例如,经由蓝牙、nfc、显示例如qr码的可视代码、ir等)来向商家22传送操作数据。在步骤s520中,商家22将操作数据传送到网络200中的至少一个验证实体20,如上所述。

如上所述执行步骤s440、s450和s460。可选地,客户21还可以自行检查数字货币账簿以检查转账是否已经发生。

图17示出了客户21“兑现”的示例。在该示例中,客户21可能希望获得一定量的数字货币以向兑换实体23提供一些其他货币(例如法定货币)的交换。兑换实体23可以是银行或货币转换实体,或者是拥有一些数字货币并希望兑换一些其他货币的普通人。可以通过向客户转移数字货币(例如,在兑换实体是拥有一些数字货币的用户实体10的情况下)或者通过使用创建数据创建数字货币(例如,在兑换实体23是例如银行的货币发行者30的情况下)来向客户21提供数字货币。

在步骤s610中,客户21将其公开钱包密钥(pw)以及可选地将其想要的数字货币的值传送给兑换实体23。可以根据情况以任何合适的方式传送该信息。例如,如果客户21在兑换实体的经营场址中,则客户21可以使用任何合适的通信技术(例如蓝牙、nfc、sms消息、电子邮件,红外(ir)通信)通过在客户的电子设备上显示以供兑换实体的电子设备扫描的qr码(或任何其他形式的可视代码)等将信息从客户的电子设备传送到兑换实体的电子设备。可替选地,如果该兑换是基于互联网的兑换,则客户21可以通过qr码、或者经由电子邮件、或者经由数字货币门户或者基于安全网页的数据转移等来传送信息。

在步骤s620中,类似于上述步骤s420,兑换实体23执行必要的操作(例如create操作或transfer操作)以生成所需的操作数据。在步骤s630中,类似于上述步骤s430,将操作数据传送至验证实体20。

如上所述执行步骤s440和s450。在步骤s640中,如果操作数据包括接收方标志(rf),则客户21可以例如通过利用接收方标志(rf)来检查数字货币账簿以查看操作数据是否已被包括在区块中。再次强调,因为操作数据将会被添加到由可信的验证者认可的区块中的数字货币账簿,所以客户可以非常快速并且以最少的数据处理使其自身确信操作数据已被添加到数字货币账簿并且可以通过认证该区块中的验证数据330而被信赖。

如果客户21确信操作数据在数字货币账簿中,则其可以向兑换实体23转移其他货币(例如通过执行银行转账或交付现金等)。可选地,兑换实体23还可以检查数字货币账簿以检查转账是否已经发生。

图18示出了客户21“变现”的示例。在该示例中,客户21可能希望从兑换实体23处用一定量的数字货币兑换一些其他货币(例如法定货币)。兑换实体23可以是银行或货币兑换实体,或者是拥有其他货币并希望兑换一些数字货币的普通人。客户的数字货币可能被销毁(例如在兑换实体23是诸如银行的货币销毁者34的情况下)或者被转移到兑换实体23(例如在兑换实体是拥有一些数字货币的用户实体10的情况下)。

在步骤s710中,兑换实体23将其公开钱包密钥(pw)传送给客户21。可以根据情况以任何合适的方式传送该信息。例如,如果客户21在兑换实体的经营场址中,则兑换实体23可以使用任何合适的通信技术(例如蓝牙、nfc、sms消息、电子邮件、红外(ir)通信)通过在兑换实体的电子设备上显示以供客户的电子设备扫描的qr码(或任何其他形式的可视代码)等将信息从兑换实体的电子设备的信息传送到客户的电子设备。可替选地,如果该兑换是基于互联网的兑换,则兑换实体23可以通过结算页面上的qr码、或者经由电子邮件、或者经由结算页面中的数字货币支付门户等来传送信息。

一旦接收到该信息,在步骤s720中客户21执行必要的操作。例如,信息可以被导入在客户的电子设备上操作的数字货币软件中(例如,因为客户21已经使用其软件扫描了qr码,或者因为信息被设置成随着该信息被导入而启动数字货币软件等)并且可以如上所述创建操作数据。数字货币软件可以根据客户21所拥有的量的数字货币以及其想要“变现”的值来根据需要执行transfer、或transfer&split操作、或transfer&join操作、或transfer&join&split操作。

在步骤s730中,如上所述将操作数据传送到网络200中的至少一个验证实体20。在替选方案中,操作数据可以被传送回兑换实体23,兑换实体23又可以将操作数据传送给验证实体20(类似于以上关于图16所述的过程)。如上所述执行步骤s440和s450。

在步骤s740中,兑换实体23可以检查数字货币账簿以查看操作数据是否已被包括在区块中。如果操作数据包括接收方标志(rf),则兑换实体23可以利用接收方标志(rf)以用于此目的。再次强调,因为操作数据将会被添加到由可信的验证者认可的区块中的数字货币账簿,所以兑换实体23可以非常快速并且以最少的数据处理使其自身确信操作数据已被添加到数字货币账簿并且可以通过认证该区块中的验证数据330而被信赖。

如果兑换实体23确信操作数据在数字货币账簿中使得转账已经发生,则其可以向客户21确认交易已经发生(例如通过在线交易中显示成功页面或者在面对面购买的情况下通过听觉确认等)并且向客户21提供其他数字货币(例如执行银行转账或交付现金等)。可选地,客户21还可以自行检查数字货币账簿以检查该转账是否已经发生。

一旦兑换实体23拥有该一定量的数字货币,其可以保持持有该量,或者如果其是货币销毁者40则其可以销毁该一定量的数字货币。

根据以上描述将理解的是,数字货币的单位可以被设置为任何形式的货币单位(例如,其可以被设置为法定货币的单位,例如美元、欧元、英镑等)使得数字货币代表了持有和花费法定货币的替选方案。这可能具有以下优点:数字货币将不会针对其被设置的法定货币而在价值上波动。这也意味着当用户对数字货币系统进行“变现”时(例如,其在不同的货币系统(例如现金系统)中用其一定量的数字货币兑换一定量的法定货币时),银行可以如上所述为其执行兑换然后销毁该一定量的数字货币系统。以这种方式,总是可以保持数字货币系统中的货币总价值与其他货币系统中的货币总价值之间的平衡(即,所有货币系统中的总价值可以保持不变)。

可以容易地理解上述各方面的各种替选方案。

例如,网络200可以包括用户实体10和主要权威机构50。主要权威机构可以有权创建和销毁数字货币并且验证来自用户实体10的操作数据(即,主要权威机构50将是货币创建者、货币销毁者和验证者)。这可以适用于下述情况,例如银行的实体希望对整个数字货币系统实施完全控制。可选地,网络200还可以包括货币创建者30、货币销毁者40和验证实体20中至少之一(例如,在主要权威机构50希望将那些权力委托给至少一个其他实体的情况下)。

可以存在多于一个的主要权威机构50,每个主要权威机构负责管理特定的一组用户实体10和/或货币发行者20和/或货币销毁者30和/或验证实体40。每个示例、每个主要权威机构50可以是不同的银行,每个银行负责管理在该银行存款的用户实体10(例如,维护其追踪密钥并监视进入和离开其钱包的量和/或处理用户查询等)。所有主要权威机构可以拥有相同的权限,或者不同的主要权威机构可以拥有不同的权限使得其被授权执行不同的活动。

如果存在仅一个货币发行者30和/或货币销毁者40和/或验证实体20(例如因为主要权威机构50是能够执行那些操作的仅有的实体),则可能不需要在其生成的操作数据中包括货币发行者30和/或货币销毁者40和/或验证实体20的标识符。这是因为将存在仅一个发行者公开密钥(pb)和/或销毁者公开密钥(pd)和/或验证者公开密钥(pv),所以将不需要货币发行者30和/或货币销毁者40和/或验证实体20的标识符以查找正确的密钥。在上文中,网络200被配置成作为p2p网络来操作。在这种情况下,可以借助于p2p共享来维护数字货币账簿(例如向整个p2p网络广播操作数据和/或新区块)。然而,可以以任何合适的方式来配置网络200。例如,可以将来自用户实体10的所有操作数据传送给主要权威机构50。然后,主要权威机构50可以验证该操作数据并将其添加到数字货币账簿或将其转发给验证实体20,然后验证实体20可以对其进行验证并通过将其传递回主要权威机构50或将其广播到网络200来将其添加到数字货币账簿。因此,主要权威机构50可以自行保留和更新数字货币账簿,并且通过广播该账簿或者将其保持在网络200中的公开的可访问位置而简单地使其可用于网络200中的其他实体。

网络200中的任何实体都可以被配置成能够执行多种功能。例如,一个实体可以被配置成货币创建者、货币销毁者和验证实体,或者另一实体可以被配置成货币创建者和验证实体等。网络200可以包括任意数目的不同实体,其中每个实体都可以被配置成执行上述功能中的一个或更多个。在这种情况下,如果一个实体被配置成执行两个或更多个功能,那么其公开密钥可以用于验证其针对任一功能生成的操作数据(例如,可以使用单个公开密钥来验证由被配置成执行创建功能和销毁功能的实体生成的创建数据和销毁数据)。

任意数目的公开密钥可以被包括在数字货币软件中和/或通过更新的方式被添加到数字货币软件中。在这种情况下,可以将每个公开密钥与相关联的标识符一起存储到与该公开密钥相关的实体中,使得操作该软件的实体可以查找正确的公开密钥以对操作数据执行验证。

操作数据可以包括与其相关的操作类型的标识符(例如,create操作或transfer操作等)。可替选地,其可以不包括这样的标识符。在这种情况下,可以从操作数据的内容中识别出其与哪种类型的操作有关(例如,如果没有输入数据,则其与destroy操作有关,或者如果存在接收方标志(rf),则其是transfer操作等)。

将被理解的是,所描述的方法已经被示为以特定顺序执行的各个步骤。然而,技术人员将理解,可以在仍能实现期望的结果的情况下对这些步骤进行组合或以不同的顺序执行这些步骤。

将被理解的是,可以使用各种不同的信息处理系统来实现本发明的实施方式。特别地,尽管附图及其讨论提供了示例性计算系统和方法,但是提出这些仅用于在讨论本发明的各个方面时提供有用的参考。将被理解的是,逻辑块之间的边界仅是说明性的,并且替选实施方式可以合并逻辑块或元素,或者可以对各种逻辑块或元素施加对功能的替代分解。

将被理解的是,以上提及的功能可以被实现为一个或更多个对应的软件模块或组件。在本文中包含的流程图中实现的或如上所述的方法步骤均可以通过对应的各个模块来实现;在本文中包含的流程图中实现的或如上所述的多个方法步骤可以由单个模块一起实现。

将被理解的是,在由软件(或计算机程序)来实现本发明的实施方式的情况下,则由存储介质和承载该计算机程序的传输介质来形成本发明的各个方面。计算机程序可以具有一个或更多个程序指令或程序代码,当由计算机执行该计算机程序时实施了本发明的实施方式。在本文中使用的术语“程序”或“软件”可以是被设计用于在计算机系统上执行的指令序列,并且可以包括子例程、函数、程序、模块、对象方法、对象实现、可执行应用、小应用程序、小服务程序、源代码、目标代码、共享库、动态链接库和/或被设计用于在计算机系统上执行的其他指令序列。存储介质可以是磁盘(如硬盘或软盘)、光盘(如cd-rom、dvd-rom或bluray盘)或存储器(如rom、ram、eeprom、eprom、闪存或便携式/可移动存储器设备)等。传输介质可以是两个或更多个计算机之间的通信信号、数据广播、通信链路等。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1