首页 / 专利库 / 银行与财务事项 / 数字货币 / 加密货币 / 比特币 / 基于未确定数据保护区块链交易

基于未确定数据保护链交易

阅读:1031发布:2020-05-23

专利汇可以提供基于未确定数据保护链交易专利检索,专利查询,专利分析的服务。并且描述了一种用于基于未确定数据来 锁 定 区 块 链 交易的计算机实现的方法。本 发明 使用区块链网络来实现。这例如可以是 比特币 区块链。锁定 节点 可以包括 区块链交易 中的用于锁定数字资产的锁定脚本。锁定脚本包括用于确定数据源的公钥和使得执行锁定脚本的验证节点以下述方式验证解锁脚本中提供的数据源的指令:a)基于用于确定数据源的公钥并基于解锁脚本中定义的数据来生成 修改 的公钥;b)基于修改的公钥评估解锁脚本中的加密签名。包含锁定脚本的区块链交易由锁定节点发送至区块链网络。可以使用从基于数据修改的私钥生成的加密签名来移除锁。,下面是基于未确定数据保护链交易专利的具体信息内容。

1.一种计算机实现的方法,包括:
链网络中的节点包括区块链交易中的定脚本,以锁定与所述区块链交易相关联的数字资产,所述锁定脚本包括用于确定数据源的公钥,并且包括使得执行所述锁定脚本的验证节点以下述方式验证解锁脚本中提供的所述数据的来源的指令:a)基于用于所述确定数据源的所述公钥并基于所述解锁脚本中定义的数据来生成修改的公钥;b)基于所述修改的公钥评估所述解锁脚本中的加密签名;以及
由所述节点将所述区块链交易发送至所述区块链网络。
2.根据权利要求1所述的计算机实现的方法,其中,所述锁定脚本还定义一个或更多个数据约束,并且其中,所述锁定脚本还包括使所述验证节点在所述数据不满足所述一个或更多个数据约束时使包括所述解锁脚本的区块链交易无效的指令。
3.根据权利要求2所述的计算机实现的方法,其中,所述一个或更多个数据约束定义一个或更多个值以及基于所述数据和所述一个或更多个值执行比较的比较函数。
4.根据权利要求1至3中的任一项所述的计算机实现的方法,其中,将所述验证节点配置成基于所述修改的公钥来评估所述解锁脚本中的所述加密签名的所述指令被配置为使得所述验证节点在没有使用与所述确定数据源相关联的修改的私钥生成所述加密签名时使包括所述解锁脚本的所述区块链交易无效,并且其中,所述修改的私钥由所述确定数据源基于用于所述确定数据源的私钥并基于所述数据来生成。
5.根据权利要求4所述的计算机实现的方法,其中,所述指令将所述验证节点配置为通过执行与用于生成所述修改的私钥的操作相对应的操作来生成所述修改的公钥。
6.根据权利要求4或5中的任一项所述的计算机实现的方法,其中,所述修改的私钥是已经通过基于所述数据和用于所述确定数据源的所述私钥执行有限域算术运算而生成的密钥。
7.根据权利要求6所述的计算机实现的方法,其中,所述指令被配置为使得执行所述锁定脚本的所述验证节点通过基于所述数据和用于所述确定数据源的所述公钥执行椭圆曲线有限域算术运算来生成所述修改的公钥。
8.根据权利要求7所述的计算机实现的方法,其中,所述椭圆曲线有限域算术运算以标量执行椭圆曲线乘法。
9.根据权利要求1至8中的任一项所述的计算机实现的方法,其中,所述锁定脚本还被配置为包括用于在定义的时间段之后由所述节点移除所述数字资产上的锁的指令。
10.一种计算机可读存储介质,包括计算机可执行指令,所述计算机可执行指令在被执行时将处理器配置为执行根据权利要求1至9中的任一项所述的方法。
11.一种电子设备,包括:
接口设备;
处理器,所述处理器连接至所述接口设备;以及
存储器,所述存储器连接至所述处理器,所述存储器上存储有计算机可执行指令,所述计算机可执行指令在被执行时将所述处理器配置为执行根据权利要求1至9中的任一项所述的方法。
12.一种计算机实现的方法,包括:
由节点基于数据和私钥生成修改的私钥;
使用所述修改的私钥为引用由锁定脚本锁定的数字资产的区块链交易生成加密签名;
将所述加密签名和所述数据添加至所述区块链交易;以及
将所述区块链交易传递给另一节点。
13.根据权利要求12所述的计算机实现的方法,其中,生成修改的私钥包括对所述数据和所述私钥执行有限域算术运算。
14.根据权利要求12或13中的任一项所述的计算机实现的方法,其中,所述有限域算术运算执行乘法。
15.根据权利要求12至14中的任一项所述的计算机实现的方法,其中,所述锁定脚本指定用于确定数据源的公钥,并且包括用于使得执行所述锁定脚本的验证节点通过下述方式评估解锁脚本提供的数据的来源的指令:a)基于用于所述确定数据源的所述公钥并基于所述解锁脚本中定义的数据生成修改的公钥;b)根据所述修改的公钥评估所述解锁脚本中的加密签名。

说明书全文

基于未确定数据保护链交易

技术领域

[0001] 本发明总体上涉及数字,更具体地涉及用于基于来自确定数据源(determined data source)的未确定数据(undetermined data)来锁定数字资产的方法和系统。本发明特别适合,但不限于,用于基于锁定方在锁定数字资产时不可用的数据提供对区块链网络上的数字资产的条件解锁。

背景技术

[0002] 在本文中,我们使用‘区块链’一词来包括所有形式的电子的、基于计算机的分布式分类账。这些包括,但不限于,区块链和交易链技术、许可和未经许可的分类帐、共享分类账及其变体。尽管也提出和开发了其他区块链实施方式,但是区块链技术最广为人知的应用是比特币分类账。虽然出于方便和说明的目的,在本文提及了比特币,但是应当注意,本发明不限于与比特币区块链一起使用,替代的区块链实现和协议落入本发明的范围内。例如,本发明可以用于在签名验证方面具有与比特币类似的限制的其他区块链实施方案中。
[0003] 区块链是基于共识的电子分类帐,该电子分类帐被实现为基于计算机的、去中心化的分发式系统,由区块构成,而区块又由交易和其他信息组成。在比特币的情况下,每个交易对区块链系统参与者之间的数字资产的控制权进行转移,并且包括至少一个输入和至少一个输出。每个区块都包含前一个区块的散列,这样区块就会链接在一起,以创建自区块链创建以来写入区块链的所有交易的永久的、不可更改的记录。交易包含称为脚本的小程序,这些小程序嵌入到其输入和输出中,这些小程序指定了如何以及由谁来访问交易的输出。在比特币平台上,使用基于堆栈的脚本语言编写这些脚本。
[0004] 为了将交易写入区块链,必须对其进行“验证”。有效性由节点基于大多数具有区块生成能的节点使用的公共规则集来确定。例如,在比特币协议中,一些网络节点作为矿工并且执行工作以通过从网络中拒绝无效交易来确保每个交易都是有效的。例如,安装在节点上的软件客户端通过执行锁定和解锁脚本对未花费的交易(UTXO)执行验证工作。验证可以通过执行其锁定和解锁脚本来执行。如果执行锁定及解锁脚本的计算结果为正确的(TRUE),并且如果某些其他条件被满足,则交易是有效的并且交易可以被写入区块链。因此,为了将交易写入区块链,必须i)由接收交易的节点验证——如果验证通过,该节点将其中继给网络中的其他节点;ii)添加到由矿工建造的新区块中;并且iii)挖掘,即,添加到过去交易的公共分类账中。当向区块链添加足够数量的区块以使交易实际上不可逆时,认为交易被确认。
[0005] 交易输出包括数字资产诸如比特币和锁定脚本,锁定脚本也可以被称为障碍(encumbrance)或锁。锁定脚本通过指定为了花费输出所需要满足的条件来锁定数字资产。例如,锁定脚本可能要求在解锁脚本中提供某些数据以解锁相关的数字资产。要求锁定方提供数据以解锁数字资产的传统技术涉及将数据的散列嵌入锁定脚本内。然而,这种锁定和解锁技术要求在创建锁定脚本时数据是确定的(即,是已知的且固定的)。
[0006] 因此,希望提供在这些方面中的一个或更多个方面改进区块链技术的改进的方法和设备。

发明内容

[0007] 因此,根据本发明,提供了如所附权利要求中定义的方法。
[0008] 如下面将更详细描述的,计算机实现的方法和电子设备用于基于未确定数据锁定交易。
[0009] 因此,根据本发明,可以提供一种计算机实现的方法(和相应的系统)。该方法可以被描述为安全和/或控制方法。该方法可以用于控制区块链交易(TX)中的输出如何和/或由谁经由区块链网络解锁和花费。输出的花费使得加密货币的转移成为可能。本发明可以提供一种方法(和相应的系统),该方法(和相应的系统)用于利用在另一交易的解锁脚本中提供的未确定数据来修改嵌入区块链交易(Tx)的锁定脚本中的加密公钥。本发明可以允许基于未确定数据来保护区块链交易。也就是说,本发明可以允许基于在将锁应用于区块链交易时不可用但是预期将来可用的数据来锁定区块链交易。
[0010] 根据本发明的实施方式的方法可以包括:i)由区块链网络中的节点包括交易(即,区块链交易)中的用于阻断(即,锁定)与交易(即,区块链交易)相关联的数字资产的锁定脚本,锁定脚本包括用于确定数据源的公钥,并且包括使得执行锁定脚本的验证节点以下述方式验证解锁脚本中提供的数据源的指令:a)基于用于确定数据源的公钥并基于解锁脚本中定义的数据来生成修改的公钥;b)基于修改的公钥来评估解锁脚本中的签名(即,加密签名);以及ii)由节点将交易(即,区块链交易)发送至区块链网络。
[0011] 在一些实施方式中,锁定脚本还定义一个或更多个数据约束(data constraint),并且锁定脚本还包括指令,该指令使验证节点在数据不满足一个或更多个数据约束时使包括解锁脚本的交易(即,区块链交易)无效。在一些实施方案中,一个或更多个数据约束定义一个或更多个值以及基于数据和一个或更多个值执行比较的比较函数。
[0012] 在一些实施方案中,将验证节点配置为基于修改的公钥来评估解锁脚本中的签名(即,加密签名)的指令用于使得验证节点在没有使用与确定数据源相关联的修改的私钥生成签名(即,加密签名)时使包括解锁脚本的交易(即,区块链交易)无效。修改的私钥可以由确定数据源基于用于确定数据源的私钥并基于该数据来生成。
[0013] 在一些实施方案中,锁定脚本用于使得验证节点通过执行与用于生成修改的私钥的操作相对应的操作来生成修改的公钥。
[0014] 在一些实施方案中,修改的私钥是通过基于数据和用于确定数据源的私钥执行有限域算术运算(finite field arithmetic operation)而生成的密钥。
[0015] 在一些实施方案中,指令用于使得执行锁定脚本的验证节点通过基于数据和用于确定数据源的公钥执行椭圆曲线有限域算术运算(elliptic curve finite field arithmetic operation)来生成修改的公钥。在一些实施方案中,椭圆曲线有限域算术运算以标量执行椭圆曲线乘法。
[0016] 在一些实施方式中,锁定脚本还被配置为包括用于在定义的时间段之后由节点移除数字资产上的障碍(即,锁)的指令。
[0017] 根据本发明,可以提供一种计算机实现的方法,该方法包括:a)由节点基于数据和私钥生成修改的私钥;b)使用修改的私钥为引用由锁定脚本阻断(即,锁定)的数字资产的交易生成签名(即,加密签名);c)将(加密)签名和数据添加至(区块链)交易;以及d)将(区块链)交易传递给另一节点。
[0018] 在一些实施方案中,生成修改的私钥包括对数据和私钥执行有限域算术运算。在一些实施方案中,有限域算术运算执行乘法。
[0019] 在一些实施方式中,锁定脚本指定用于确定数据源的公钥,并且包括使得执行锁定脚本的验证节点通过以下方式评估解锁脚本中提供的数据源的指令:a)基于用于确定数据源的公钥并基于解锁脚本中定义的数据来生成修改的公钥;b)基于修改的公钥来评估解锁脚本中的签名(即,加密签名)。
[0020] 根据本发明,可以提供一种电子设备。该电子设备包括接口设备、连接至接口设备的处理器、和连接至处理器的存储器。存储器上存储有计算机可执行指令,这些计算机可执行指令在被执行时配置处理器以执行本文中所描述的方法。
[0021] 根据本发明,可以提供一种计算机可读存储介质。该计算机可读存储介质包括计算机可执行指令,计算机可执行指令在被执行时配置处理器以执行本文中所描述的方法。
[0022] 根据本发明,可以提供一种计算机可读存储介质,该计算机可读存储介质包括锁定脚本,该锁定脚本包括计算机可执行指令,计算机可执行指令在被执行时配置处理器以执行本文中所描述的锁定脚本的功能。附图说明
[0023] 本发明的这些和其他方面将参考本文中所描述的实施方式变得明显并得以阐明。现在将仅通过示例的方式且参照附图对本发明的实施方式进行描述,在附图中:
[0024] 图1示出了示例区块链网络的框图
[0025] 图2示出了可以用作区块链网络中的节点的示例电子设备的框图。
[0026] 图3是利用锁定脚本配置交易的示例方法的流程图
[0027] 图4是利用由锁定脚本要求的签名配置所提议的交易的示例方法的流程图。
[0028] 图5是验证与由锁定脚本锁定的数字资产相关联的交易的示例方法的流程图。

具体实施方式

[0029] 首先参照图1,图1以框图形式示出了与区块链相关联的示例区块链网络100。运行区块链协议——区块链网络100在该区块链协议下运转——的实例的分布式电子设备可以参与到区块链网络100中。这种分布式电子设备可以被称为节点102。区块链协议例如可以是比特币协议。
[0030] 运行区块链协议并形成区块链网络100的节点102的电子设备可以是各种类型的,包括,例如,诸如台式计算机、膝上型计算机、平板计算机之类的计算机,服务器,诸如智能电话的移动设备,诸如智能手表可穿戴计算机,或其他电子设备。
[0031] 区块链网络100的节点102使用合适的通信技术而彼此连接,所述通信技术可以包括有线通信技术和无线通信技术。这种通信遵守与区块链相关联的协议。例如,在区块链是比特币区块链的情况下,可以使用比特币协议。
[0032] 节点102维护区块链上所有交易的全局分类账。因此,全局分类账是分布式分类账。每个节点102可以存储全局分类账的完整副本或部分副本。由影响全局分类账的节点102进行的交易由其他节点102进行验证,使得全局分类账的有效性得以维护。当区块链是基于工作量证明(proof-of-work)的区块链时,还通过对与区块一起提交的工作量证明进行检查来验证区块。
[0033] 节点102中的至少一些节点作为区块链网络100的矿工104运转。图1的区块链网络100是工作量证明区块链,在该工作量证明区块链中,矿工104执行昂贵的计算以促进区块链上的交易。例如,工作量证明区块链可能需要矿工来解决加密问题。在比特币中,矿工104找到现时标志(nonce)时,使得区块头部用双SHA-256散列到小于由当前难度定义的值的数。工作量证明算法所需的散列能力意味着:在已经在交易顶部挖掘了一定数量的区块之后交易实际上被认为是不可逆的。解决加密问题的矿工104为区块链创建新区块并且将该新区块广播到其他节点102。其他节点102验证了:矿工104实际上已经解决了加密问题并且因此在接受区块应当被添加至区块链之前已经证明了足够的工作量证明。在接受应该将区块添加至区块链之前,其他节点102还验证区块本身是有效的(例如,区块的交易和区块头部是有效的)。通过节点102的共识将区块添加至区块链(即,添加至分布式全局分类账)。
[0034] 由矿工104创建的区块包括已由节点102广播到区块链的交易。例如,区块可以包括从与节点102中的一个节点相关联的地址至与节点102中的另一节点相关联的地址的交易。以这种方式,区块用作从一个地址至另一地址的交易的记录。请求将交易包括在区块中的一方通过使用与其公钥相对应的私钥对请求进行签名来证明他们被授权发起转移(例如,在比特币的情况下,花费比特币)。如果请求被有效签名,则仅将转移添加至区块。
[0035] 在比特币的情况下,在公钥与地址之间存在一一对应。也就是说,每个公钥与单个地址相关联。因此,本文中对将数字资产转移到公钥或从该公钥转移数字资产(例如,支付到公钥)以及将数字资产转移到与该公钥相关联的地址或从该地址转移数字资产的任何引用都是指共同的操作。
[0036] 节点102中的一些节点可以不作为矿工运转而是可以作为验证节点参与。交易的验证可以涉及检查签名(本文中也可以称为加密签名)或锁定脚本中指定的其他条件、确认对有效UTXO的引用等。
[0037] 图1的示例包括五个节点102,所述五个节点102中的两个节点作为矿工104参与。在实践中,节点102的数量或矿工104的数量可以是不同的。在许多区块链网络中,节点102的数量和矿工104的数量可以远大于图1中示出的数量。
[0038] 图2是示出了可以用作点对点(peer-to-peer)区块链网络100(图1)中的节点102(图1)的示例电子设备200的部件的框图。示例电子设备200也可以称为处理设备。电子设备可以采取各种形式,包括,例如,台式计算机、膝上型计算机、平板计算机、服务器、诸如智能电话的移动设备、诸如智能手表的可穿戴计算机、或另一类型的形式。
[0039] 电子设备200包括处理器210、存储器220和接口设备230。这些部件可以直接或间接地彼此连接并且可以彼此通信。例如,处理器210、存储器220和接口设备230可以经由总线240彼此通信。存储器220存储计算机软件程序,该计算机软件程序包括用于执行本文中所描述的功能的机器可读指令和数据。例如,存储器可以包括处理器可执行指令,该处理器可执行指令在由处理器210执行时使电子设备执行本文中所描述的方法。处理器可执行指令可以包括指令,该指令在由处理器210执行时使电子设备实现与区块链网络100(图1)相关联的协议。例如,指令可以包括用于实现比特币协议的指令。
[0040] 存储器220可以存储区块链网络100(图1)的全局分类账或其一部分。也就是说,存储器220可以存储区块链的所有区块或区块的一部分,比如最近的区块或一些区块中的信息的一部分。
[0041] 虽然在图2中用单个框示出了存储器220,但是实际上电子设备200可以包括多个存储器部件。存储器部件可以是各种类型的,包括,例如随机存取存储器(RAM)、硬盘驱动器(HDD)、固态硬盘(SSD)、闪存驱动器(flash drives)等。不同类型的存储器可以适合于不同的目的。此外,虽然存储器220被示出为与处理器210分离,但是处理器210可以包括嵌入式存储器。
[0042] 本发明可以提供一种方法(和相应的系统),该方法(和相应的系统)用于使用另一交易的解锁脚本中提供的未确定数据来修改嵌入区块链交易(Tx)的锁定脚本中的加密公钥。当与例如使用交易字节码(bytecode)作为消息(Message)的比特币协议(例如,OP_CHECKSIG)中的签名检查操作码(signature checking opcode)结合使用时,交易和数据两者都需要来自公钥所有者的批准或授权。这可以防止交易和数据两者改变。因此,本发明提供了与安全性、加密术、授权和传输控制有关的益处。
[0043] 现在参照图3,示出了将数字资产锁定在区块链网络上的方法300。方法300可以由区块链网络100(图1)的节点102执行,以基于安全的未确定数据锁定数字资产。数据是未确定的,因为在配置锁时该数据无需为配置锁的节点所知,并且数据是安全的,因为锁被配置为使得未授权方对数据的任何修改将导致交易的无效。为了便于引用,执行方法300的节点102在本文中可以称为锁定节点。锁定节点可以配置有处理器可执行指令,处理器可执行指令在由锁定节点的处理器执行时执行方法300。
[0044] 因此,用于锁定数字资产的未确定数据可以是锁定时尚不为锁定节点所知的数据。该数据可以是尚未创建的数据(例如预期将来创建但尚未创建的数据)或另一节点已知但尚不为锁定节点可用的数据。然而,该数据是来自确定数据源预期(当前或将来)可用的数据。数据源是确定的,因为在生成锁定脚本时已知数据源的标识。在锁定脚本被配置为依赖于来自单个数据源的数据的一些实施方案中(这与锁定脚本将接受来自多个数据源的数据并确定将依赖哪些数据源的实施方案相反),该数据源可以被称为可信数据源。
[0045] 方法300包括:在操作302处,准备锁定脚本以基于未确定数据锁定数字资产。锁定脚本是计算机可执行代码或指令形式的障碍(encumbrance),置于指定为了将来花费输出所必须满足的条件的交易的输出上。更具体地,锁定脚本被配置为接受来自解锁脚本的数据并基于数据执行某些操作,使得验证节点可以确定解锁脚本是否成功将锁定脚本解锁。
[0046] 锁定脚本可以定义一个或更多个数据约束。数据约束是解锁脚本中提供的数据为了成功评估锁定脚本所必须满足的要求(例如,在比特币的情况下评估为TRUE)。因此,锁定脚本可以,在操作302处,被配置为具有使得执行锁定脚本的验证节点针对数据约束评估在解锁脚本中提供的数据的指令。锁定脚本的数据约束可以定义阈值或值以及数据与定义的值或阈值之间的必要关系。比较功能可以用于使基于解锁脚本中提供的数据执行锁定脚本的验证节点基于数据和一个或更多个值来执行比较。作为示例,数据约束可能要求数据等于锁定脚本中指定的值、大于锁定脚本中指定的值、小于锁定脚本中指定的值、不等于锁定脚本中指定的值等。还可以定义许多其他可能的数据约束。
[0047] 作为示例,在比特币中,以下是可以包括在锁定脚本的数据约束部分中以检查数据是否满足某些条件的一些可能的示例操作代码。应当指出的是,其他操作也是可能的,并且脚本可以在使用以下比较功能中的一种功能之前以某种方式修改数据(例如,通过乘法、减法、除法、加法或其他运算)。
[0048] ·OP_GREATERTHAN,在堆栈中的第二项大于堆栈中的顶部项时,返回真(TRUE)值。
[0049] ·OP_LESSTHANOREQUAL,在堆栈中的第二项小于或等于顶部项时,返回真(TRUE)值。
[0050] ·OP_GREATERTHANOREQUAL,在堆栈中的第二项大于或等于顶部项时,返回真(TRUE)值。
[0051] ·OP_WITHIN,在堆栈中的第三项在第二项与第一项之间时,返回真(TRUE)值。
[0052] ·OP_NUMEQUAL,在堆栈中的顶部项是相等的数字时,返回真(TRUE)值。
[0053] ·OP_NUMNOTEQUAL,在前两项不是相等的数字时,返回真(TRUE)值。
[0054] ·OP_LESSTHAN,在堆栈中的第二项小于顶部项时,返回真(TRUE)值。
[0055] 锁定脚本还可以包括诸如验证功能之类的指令,如果数据不满足数据约束,则该指令使包含意在将锁定脚本解锁的解锁脚本的交易无效。作为示例,在区块链网络是比特币的情况下,可以在比较功能之后包括OP_VERIFY操作代码。OP_VERIFY代码检查堆栈的顶部,如果堆栈的顶部的值不为TRUE,则暂停并使交易无效。
[0056] 因此,在至少一些实施方式中,锁定脚本的数据约束部分可以采用以下格式:
[0057] <检查约束的脚本(Script to Check Constraints)>OP_VERIFY,[0058] 其中,<检查约束的脚本(Script to Check Constraints)>是评估解锁脚本中的数据是否满足一个或更多个定义的约束并且基于这样的评估返回真(TRUE)或假(FALSE)的任何脚本。
[0059] 锁定脚本还可以包括计算机可执行指令,计算机可执行指令使得执行锁定脚本的验证节点评估数据的来源。例如,锁定脚本可能要求数据由确定数据源例如确定节点提供,而不被其他节点篡改。也就是说,锁定脚本被配置为使得任何这样的篡改将使意在将锁定脚本解锁的交易无效。
[0060] 锁定脚本可以使得执行锁定脚本的验证节点使用椭圆曲线有限域运算来验证数据的来源(由意在将锁定脚本解锁的解锁脚本中提供)。更具体地,锁定脚本可以被配置为在被执行时使得节点基于数据和由锁定节点包括在锁定脚本中的确定数据源的公钥来执行椭圆曲线有限域运算。也就是说,锁定脚本可以被配置为使得执行锁定脚本的节点基于用于锁定脚本中定义的确定数据源的公钥和基于在解锁脚本中定义的数据来为确定数据源生成修改的公钥。通过基于被嵌入锁定脚本中的用于确定数据源的公钥并且基于解锁脚本中提供的数据执行椭圆曲线有限域算术运算来确定修改的公钥。还可以使用多种运算(例如,数据×数据×公钥等)来确定修改的公钥。
[0061] 为了将锁定脚本解锁,确定数据源必须通过基于数据源的私钥和数据执行有限域算术运算来获得修改的私钥。更具体地,对私钥执行的操作对应于锁定脚本被配置为对公钥执行的操作。与公钥一样,可以对私钥执行多种运算以获得修改的私钥(例如,数据×数据×私钥等)。确定数据源使用修改的私钥来生成可以包括在解锁脚本中的签名。此签名在本文中可称为来自修改的私钥的签名。
[0062] 为了理解如何类似地利用数据修改私钥和公钥允许验证数据源,考虑私钥与公钥之间的关系是有用的。更具体地,椭圆曲线公钥计算如下:
[0063] D=d×G,
[0064] 其中,d是私钥,D是对应的公钥,并且G是椭圆曲线有限域发生器元素。
[0065] 由于私钥与公钥之间的关系,当用数据对公钥进行改变时,需要对私钥进行相应的改变。可以使用任意数量的方法来修改私钥和公钥,只要操作可以分解为有限域加法即可。
[0066] 作为示例,如果d是原始私钥,d'是修改的私钥,D是原始公钥,并且D'是修改的公钥,则修改的公钥和修改的私钥可以被确定为:
[0067] d'=d×数据
[0068] D'=d'×G=d×数据×G=数据×D
[0069] 或者,修改的公钥和修改的私钥可以被确定为:
[0070] d'=d+数据
[0071] D'=d'×G=(d+数据)×G=D+DATA,
[0072] 其中,DATA是椭圆曲线点。
[0073] 虽然一些现有的区块链网络可能不包括用于执行椭圆曲线有限域算术运算的特定操作代码,但是可以在控制区块链网络100(图1)的运转的协议中提供操作代码以提供这样的操作。作为示例,可以定义操作代码OP_ECPMULT,其采用编码的椭圆曲线点和数字并且以标量执行椭圆曲线乘法。该操作代码将结果输出为编码的椭圆曲线点。
[0074] 为了进行椭圆曲线有限域算法,可以使用两个特定的椭圆曲线运算:
[0075] ·点加法(P+Q)用于计算椭圆曲线上的新点,作为曲线交点的否定(negation)。这可以描述为R=P+Q。
[0076] ·点加倍(P+P)使用点加法来计算P的点倍(point double)。这可以描述为R=P+P=2P。
[0077] 这些运算可以表示如下。
[0078] x3=s2-x1-x2mod p
[0079] y3=s(x1-x3)-y1mod p
[0080] 其中,
[0081]
[0082] 这些运算可以在任意数字上使用以导出椭圆曲线算术,例如以标量进行的椭圆曲线点乘法。
[0083] 因此,在方法300的操作302处准备的锁定脚本可以被配置为使得执行锁定脚本的验证节点检查相应的解锁脚本中提供的数据是否已经由确定数据源通过使用上述技术获得用于数据源的修改的公钥提供。锁定脚本可以被配置为使得验证节点随后评估来自修改的私钥的签名(即,从基于数据已经修改的私钥生成的签名)。更具体地,签名检查操作代码可以包括在锁定脚本中,该锁定脚本检查来自修改的私钥的签名是否对应于修改的公钥并且因此是有效签名。作为示例,可以使用OP_CHECKSIG操作代码。OP_CHECKSIG从堆栈中弹出公钥和签名,并验证用于交易的散列数据的签名。如果值匹配,则OP_CHECKSIG返回TRUE。因此,锁定脚本中的将验证节点配置为基于修改的公钥来评估解锁脚本中的签名的指令可以被配置为使得验证节点在尚未使用与确定数据源关联的修改的私钥生成包含于解锁脚本中的签名时使包括解锁脚本的交易无效。也就是说,如果没有使用由确定数据源基于用于确定数据源的私钥并基于数据生成的修改的私钥生成签名,则包含所意图的解锁脚本的交易被验证节点无效。
[0084] 作为示例,OP_CHECKSIG可以与锁定脚本中的椭圆曲线有限域算术运算以如下方式结合使用:
[0085] OP_ECPMULT OP_CHECKSIG
[0086] 其中,PubKey D是要提供数据的确定数据源的公钥。
[0087] 将成功地验证锁定脚本的这一部分的解锁脚本的相应部分将是:
[0088]
[0089] 其中,是数据,并且是由修改的私钥(即,由已经基于数据修改的私钥)生成的签名。
[0090] 锁定脚本的数据约束部分和锁定脚本的数据源检查部分的顺序可以颠倒。例如,锁定脚本可以在考虑数据是否满足数据约束之前首先使验证节点确认数据是由确定数据源提供的。
[0091] 除了上面提到的那些之外,锁定脚本还可以包括其他锁定特征。例如,锁定脚本还可能需要添加另一个节点的签名。例如,锁定脚本可能要求交易的接收者(即,要接收与交易相关联的数字资产的一方)提交有效签名以将锁定脚本解锁。例如,锁定脚本可以包括:
[0092] OP_CHECKSIG,
[0093] 其中,PubKey B是作为由锁定脚本阻碍的数字资产的接收者的节点的公钥。
[0094] 锁定脚本还可以被配置为在锁定脚本可以验证为TRUE之前需要添加与锁定节点本身相关联的签名,使得数字资产不再受锁定脚本的阻碍。例如,锁定脚本可以包括:
[0095] OP_CHECKSIGVERIFY
[0096] 其中,PubKey A是作为由锁定脚本阻碍的数字资产的接收者的节点的公钥。OP_CHECKSIGVERIFY类似于OP_CHECKSIG进行运算,但如果OP_CHECKSIG未评估为TRUE,则OP_CHECKSIGVERIFY将使用OP_VERIFY来暂停。
[0097] 此外,在操作302处准备的锁定脚本可以被配置为包括用于在限定的时间段之后通过锁定脚本移除置于数字资产上的障碍的指令。也就是说,锁定脚本可以配置有一个或更多个允许锁定方在某些条件下回收数字资产的条件。例如,如果数据,在被确定以后,无法满足锁定脚本所需的数据约束,则锁定脚本可以允许锁定节点回收数字资产。例如,如果数字资产在锁定脚本中指定的时间段期间未被以其他方式取得,则锁定脚本可以被配置为允许锁定节点(或由其公钥指定的任何其他方)在该时间段之后取得数字资产。
[0098] 作为示例,锁定脚本可以包括条件分支,其包括:
[0099] OP_CHECKSEQUENCEVERIFY
[0100] OP_CHECKSIG
[0101] 其中,是嵌入锁定脚本中的时间段,并且OP_CHECKSEQUENCEVERIFY是仅在所花费的输出至少与指定时间段一样长时才允许执行特定路径的操作代码。例如,如果设置为十(10)天,则锁定节点(该锁定节点具有与公钥对应的私钥)可以通过提供利用用于锁定节点的私钥签署的签名在经过10天之后将输出回收。
[0102] 因此,锁定脚本可以包括许多必须满足以进行解锁的条件。虽然锁定脚本可能采用多种形式,但以下是可能使用的可能脚本的示例:
[0103] OP_IF
[0104] OP_CHECKSIGVERIFY
[0105] OP_DUP<90>OP_GREATERTHAN OP_VERIFY
[0106] OP_ECPMULT OP_CHECKSIGVERIFY
[0107] OP_CHECKSIG
[0108] OP_ELSE
[0109] <10 Days>OP_CHECKSEQUENCEVERIFY
[0110] OP_CHECKSIG
[0111] OP_ENDIF示例的锁定脚本允许锁定节点A要求来自确定数据源C的数据大于90。此外,锁定脚本要求确定数据源通过提供从修改的私钥(即,从基于数据修改的私钥)生成的签名来证明数据源。示例锁定脚本还要求锁定节点A和另一节点B(该另一节点B可以是传输中的数字资产的接收者)两者都在解锁脚本中提供有效签名。
[0112] 示例锁定脚本包括多个分支,如果在10天内没有另外声明,则其中一个分支允许锁定节点A回收由锁定脚本阻碍的数字资产。
[0113] 例如,示例锁定脚本可以由与一方相关联的锁定节点A使用以奖励与另一方相关联的另一节点B,从而在确定数据源C提供超过90的数据时,奖励该节点B。数据可以例如是标记或等级形式的测试结果,并且确定数据源可以是教员。在这种情况下,节点B可以与接收到讨论中的标记或等级的一方相关联,并且节点A可以与在满意该标记或等级的情况下希望对接收到该标记或等级的一方进行奖励的一方相关联。
[0114] 在操作302处准备的锁定脚本由锁定节点包括在区块链交易中。也就是说,锁定节点可以将锁定脚本嵌入到区块链交易的输出中(在方法300的操作304处)以阻止(即,锁定)与交易相关联的数字资产。锁定节点将交易发送至区块链网络100(图1)。也就是说,包括锁定脚本的交易可以被广播至区块链网络100(图1)。假设满足某些标准,例如包括足够的采矿费,则将交易(可以称为第一交易或第一区块链交易)添加至区块链网络100(图1)上的由矿工104(图1)生成的区块。锁定节点可以等待,直到区块被挖掘到区块链上并被确认为止。
[0115] 在操作306处,锁定节点可以为另一区块链交易(其可以被称为第二交易或第二区块链交易)准备交易输入,该另一区块链交易花费作为输出包括在第一交易中的数字资产。也就是说,交易可以包括与第一交易相关联的UTXO作为第二交易的输入。锁定节点可以基于锁定节点的私钥生成签名,并且可以在第二交易的解锁脚本中包括该签名。锁定节点还可以包括作为交易的输入的分支触发器,分支触发器用于触发锁定脚本中的条件分支中的特定一个条件分支的操作。例如,上述示例锁定脚本包括两个条件分支:第一条件分支允许另一方B取得第一个交易中涉及的数字资产,并且第二条件分支允许锁定节点在这些数字资产没有在指定时间段内由B以其他方式取得的情况下回收这些数字资产。为了使第二交易的解锁脚本触发第一分支而不是第二分支,锁定节点可以包括“1”作为交易的输入,使得OP_IF评估为TRUE,从而导致第一分支被执行。
[0116] 用于锁定节点的签名以允许其他节点添加至交易而不需要锁定节点的批准的方式添加。例如,签名可以添加为SIGHASH_NONE|SIGHASH_ANYONECANPAY。SIGHASH_ANYONECANPAY是一种仅对当前输入进行签署的签名哈希类型,而SIGHASH_NONE是仅对输入进行签署以允许任何人在不需要锁定节点许可的情况下更改输出的签名哈希类型。
[0117] 因此,在操作306处,锁定节点可以生成签名并将签名添加至交易,将交易配置为允许另一方添加输入和输出,并且向交易添加分支触发器以触发锁定脚本的特定条件分支的操作。
[0118] 锁定节点可以(在操作308处)将在操作306处准备的第二交易提供给另一方,比如B方,的另一节点或提供给确定数据源C。
[0119] 现在参照图4,示出了便于解锁区块链网络上的数字资产的方法400。方法400可以由区块链网络100(图1)的节点102执行,或者由可以不参与区块链网络100的另一电子设备执行。执行方法400的节点102可以被称为确定数据源。确定数据源可以配置有处理器可执行指令,处理器可执行指令在由确定数据源的处理器执行时执行方法400。
[0120] 在操作402处,确定数据源可以接收所提议的交易,所提议的交易可以是由锁定节点在方法300的操作306处准备的交易。即,该交易是引用一个或更多个由锁定脚本阻止(即锁定)的数字资产的交易。
[0121] 在操作404处,确定数据源基于用于确定数据源的私钥和将由区块链交易中的确定数据源提供的数据来生成修改的私钥。使用上述技术生成修改的私钥。例如,通过下述方式生成修改的私钥:使用与锁定脚本中定义的操作相对应的操作利用数据修改私钥以生成修改的私钥。因此,操作404可以是上面参照图3描述的类型。例如,可以通过对私钥和数据执行有限域算术运算来确定修改的私钥。例如,有限域算术运算可以执行乘法。
[0122] 在操作406处,使用修改的私钥生成用于所提议的交易的签名。在操作408中,将该签名与数据本身一起添加至交易。可以以允许其他节点添加至交易而不需要来自确定数据源的批准的方式添加签名。例如,签名可以添加为SIGHASH_NONE|SIGHASH_ANYONECANPAY。
[0123] 在操作410处,确定数据源将交易传递给另一节点。例如,确定数据源可以将所提议的交易传递至与交易的解锁脚本试图解锁的锁定脚本中指定的公钥相关联的另一节点B。该另一节点可以添加基于用于该另一节点的私钥生成的另一签名,并且还可以添加指定如何花费与该交易相关联的数字资产的输出。该另一节点可以将交易(可以称为第二交易)广播至区块链网络100(图1)。
[0124] 对于要添加被接收到区块链中的区块的区块链交易(可以被称为第二交易),包括交易的解锁脚本的交易的输入必须成功将第一交易(即,在方法300的操作304处准备的交易)的锁定脚本解锁。
[0125] 现在参照图5,图5以流程图的形式示出了可以由区块链网络100的节点102执行的示例方法500。执行该方法的节点可以被称为验证节点,因为该节点验证区块链交易(即,第二交易,其是包含意在将第一交易的锁定脚本解锁的解锁脚本的交易),以确定是否应该将交易添加至区块链分布式分类账。验证节点可以是矿工104,或者验证节点可以是不挖掘但仅验证矿工104提出的区块或尚未挖掘到区块中的交易的验证节点。
[0126] 验证节点与对应的锁定脚本(在第一交易中定义)一起执行解锁脚本(在第二交易中定义)以确定区块链交易(即,第二交易)是否有效。更具体地,交易的每个输入中的解锁脚本可以与锁定脚本一起执行,以确定解锁脚本是否满足由锁定脚本定义的花费条件。
[0127] 例如,可以首先使用堆栈执行引擎来执行解锁脚本。当解锁脚本成功执行而没有错误时,主堆栈可以由验证节点复制,然后可以执行锁定脚本。如果解锁脚本评估为TRUE,则解锁脚本已满足由锁定脚本定义的花费条件。然后确定区块链交易是有效的,并且如果满足某些其他条件(例如足以使矿工在新区块中包括交易的采矿费),则可以将交易写入区块链。
[0128] 因此,方法500的操作由锁定脚本中的计算机可执行指令定义。因此,方法500可以包括上述锁定脚本的任何特征。
[0129] 在操作502处,验证节点评估解锁脚本中提供的数据以确定数据是否满足锁定脚本中定义的一个或更多个约束。上文参照图3描述了示例数据约束。
[0130] 如果验证节点确定数据不满足必要的数据约束,则在操作504处,验证节点确定解锁脚本不是锁定脚本的有效解决方案。然后,验证节点用于防止包含解锁脚本的区块链交易(即,第二交易)被添加至区块链。例如,如果节点是矿工104(图1),则该节点从由该矿工104准备的下一区块中排除该交易。
[0131] 在操作506处,验证节点评估数据的来源。更具体地,由验证节点执行的锁定脚本使得节点确定用于确定数据源的修改的公钥。通过对嵌入锁定脚本中的确定数据源的公钥执行椭圆曲线有限域算术运算并且还基于解锁脚本中提供的数据来确定修改的公钥。然后,调用签名检查功能以确定修改的公钥是否对应于基于修改的私钥生成的签名。以上在锁定脚本的描述中更详细地描述了该操作。签名在解锁脚本中提供。如果确定签名无效,则在操作504处,验证节点确定解锁脚本不是锁定脚本的有效解决方案。
[0132] 如果确定数据满足数据约束并且如果确定数据有效(即,如果确定数据由确定数据源生成或由确定数据源提供而没有随后的篡改),则交易可以在操作508处确定为有效(假设还满足锁定脚本的任何其他可能要求)。然后可以将交易挖掘到区块链上。
[0133] 尽管图5的方法500示出了通常确认数据满足一个或更多个定义的约束并且数据未被篡改的验证方法,但是验证方法可以包括在锁定脚本评估为TRUE之前(即,在确定交易有效之前)评估的其他标准。
[0134] 可以执行其他操作,诸如在上面论述的示例锁定脚本中描述的那些操作。例如,验证节点可以确定与锁定脚本中指定的公钥相关联的其他节点是否已经有效地签署了包括解锁脚本的锁定交易。如上面在图4的论述中所指出的,这些其他节点可以是例如锁定节点(即,生成锁定脚本的节点)、接收节点(即,意在成为包括锁定脚本的交易中引用的数字资产的接收者的节点)、或其他节点。这些验证操作中的任何验证操作的任何失败都会导致验证失败。
[0135] 方法500还可以包括:在执行操作502和506之前,确定分支触发器已被包括在解锁脚本中,分支触发器触发定义操作502和506的锁定脚本的分支。操作502和506可以仅在由分支触发器触发时执行。
[0136] 还可以指出的是,操作502和506的顺序可以颠倒。也就是说,可以在确认数据满足定义的约束之前由验证节点确认数据的来源。
[0137] 应当注意,上述实施例说明而不是限制本发明,并且本领域技术人员将能够在不脱离由所附权利要求限定的本发明的范围的情况下设计许多替代实施例。在权利要求中,括号中的任何附图标记不应被解释为对权利要求的限制。词语“包括(comprising)”和“包括(comprises)”等不排除任何权利要求或说明书整体中列出的元件或步骤之外的元件或步骤的存在。在本说明书中,“包括(comprises)”是指“包括(includes)或者由……组成(consists of)”,而“包括(comprising)”是指“包括(including)或者由……组成(consisting of)”。元件的单数引用不排除这些元件的复数引用,反之亦然。本发明可以通过包括几个不同元件的硬件以及通过适当编程的计算机来实现。在列举了几个装置的设备权利要求中,这些装置中的几个可以由同一个硬件来实现。在相互不同的从属权利要求中引用某些措施这一事实并不表示这些措施的组合不能有利地使用。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈