公钥生成方法技术

技术编号:35257127 阅读:16 留言:0更新日期:2022-10-19 10:14
一种使用区块链事务基于第一公钥生成第二公钥的计算机实现的方法。所述方法由第一方执行并且包括:生成第一区块链事务的输出脚本。所述输出脚本包括公钥导出脚本,所述公钥导出脚本被配置为在与第二区块链事务的输入脚本一起执行时基于所述第一公钥生成所述第二公钥。所述第二区块链事务的所述输入脚本包括所述第一公钥。所述方法还包括:将所述第一区块链事务传输到区块链网络的一个或更多个节点以用以包含在所述区块链中。节点以用以包含在所述区块链中。节点以用以包含在所述区块链中。

【技术实现步骤摘要】
【国外来华专利技术】公钥生成方法


[0001]本公开涉及一种使用区块链事务生成公钥的方法。

技术介绍

[0002]区块链是指一种分布式数据结构形式,其中在点对点(P2P)网络中的多个节点中的每个节点处维护区块链副本。区块链包括一系列数据区块,其中每个区块包括一个或更多个事务(transaction)。每个事务都可以回指序列中的先前事务,其可以扩展一个或更多区块。事务可以通过提交到网络包括在新区块中。新区块的创建过程称为“挖掘”,该过程涉及多个挖掘节点中的每个挖掘节点争相执行“工作量证明”,即基于等待包括在区块中的未决事务池解决加密难题。
[0003]区块链中的事务通常用于传递数字资产,即用作价值储存手段的数据。但是也可利用区块链实现区块链上的分层附加功能。例如,区块链协议可允许在事务输出中存储附加用户数据。现代区块链在单一事务中可储存的最大数据容量在不断增加,从而能够并入更复杂的数据。例如,这可用于在区块链中存储电子文档,甚至音频或视频数据。
[0004]网络中的每个节点可以具有以下三个角色中的任何一个、两个或全部:转发、挖掘和存储。转发节点在整个网络节点中传播事务。挖掘节点将事务挖掘到区块中。存储节点各自对区块链中的已挖掘区块存储自己的副本。为了将事务记录在区块链中,一方将该事务发送到网络中的节点中的一个节点进行传播。接收该事务的挖掘节点可以争相将该事务挖掘到新区块中。每个节点被配置为遵守相同的节点协议,该协议将包括用于确认事务有效的一个或更多个条件。无效事务将不会传播或挖掘到区块中。假定事务已经核实有效,从而在区块链上被接受,则该事务(包括任何用户数据)将因此作为不可改变的公共记录,继续存储在P2P网络中的各个节点处。
[0005]成功解决工作量证明难题以创建最新区块的矿工通常被奖励一个称为“区块创始事务”的新事务,该事务会生成新的数字资产数额。工作量证明激励矿工不要欺骗系统,在他们的区块中包括双重花费事务,因为挖掘区块需要大量计算资源,而包括试图双重花费的区块很可能不会被其他节点接受。
[0006]在“基于输出的”模型(有时称为基于UTXO的模型)中,给定事务的数据结构包括一个或更多个输入以及一个或更多个输出。任何可花费输出包括指定数字资产数额的元素,有时称为UTXO(“未花费的事务输出”)。该输出还可以包括指定用于赎回该输出的条件的锁定脚本。每个输入包括指向先前事务中的此类输出的指针,并且还可以包括解锁脚本以用于解锁指向输出的锁定脚本。因此,考虑一对事务,将其称为第一事务和第二事务(或“目标”事务)。第一事务包括指定数字资产数额的至少一个输出,并且包括定义解锁该输出的一个或更多个条件的锁定脚本。第二事务(目标事务)包括至少一个输入和解锁脚本,该至少一个输入包括指向第一事务的输出的指针;该解锁脚本用于解锁第一事务的输出。
[0007]在此类模型中,当第二事务(目标事务)被发送到P2P网络以在区块链中传播和记录时,在每个节点处应用的有效性准则之一将是:解锁脚本满足在第一事务的锁定脚本中
定义的一个或更多个条件中的所有条件。另一条件将是:第一事务的输出尚未被另一早期有效事务赎回。根据这些条件中的任何一个条件发现目标事务无效的任何节点都不会传播该事务,也不会包括该事务以便挖掘到要记录在区块链中的区块中。

技术实现思路

[0008]区块链的一个主要安全特征是,在给定公钥的情况下计算私钥在计算上是不可行的。所述私钥用作控制区块链事务的输出的手段,难以绕过,并且可以链接到拥有所述私钥的一方的身份。正因为如此(即,难以仅从所述公钥获得私钥),给定事务的锁定输出可以仅由拥有私钥

公钥对的一方解锁。为了解锁使用某个公钥的散列值锁定的锁定脚本(也称为输出脚本),必须提供使用对应的私钥创建的签名。所述事务中与这些锁定脚本和解锁脚本对应的字段是采用脚本语言编写的。例如,一种特定的区块链协议使用一种称为“脚本”(大写S)的特定语言。希望能够使用所述锁定脚本和所述解锁脚本来计算链上的公钥。
[0009]根据本文公开的一个方面,提供了一种使用区块链事务基于第一公钥生成第二公钥的计算机实现的方法,其中所述方法由第一方执行并且包括:生成第一区块链事务的输出脚本,其中所述输出脚本包括公钥导出脚本,所述公钥导出脚本被配置为在与第二区块链事务的输入脚本一起执行时基于所述第一公钥生成所述第二公钥,其中所述第二区块链事务的所述输入脚本包括所述第一公钥;以及将所述第一区块链事务传输到区块链网络的一个或更多个节点以使所述第一区块链事务包含在所述区块链中。
[0010]所述第一方生成所述第一事务的所述输出脚本。所述第一方还可以生成所述第一事务;或者,所述第一方可以获取所述第一事务,即所述第一事务可以是事务模板,所述第一方可以向所述事务模板添加附加输出(在一些示例中,添加附加输入)。所述输出脚本(下文也称为锁定脚本)包括称为“公钥导出脚本”(PKD脚本)的脚本的一部分。应当注意的是,这仅仅是被配置为执行所定义函数的所述输出脚本的一部分的标签。所述输出脚本可以包括除所述PKD脚本之外的脚本的一个或更多个附加部分。所述第一方生成所述PKD脚本,使得当向所述PKD脚本提供来自第二(即,后一个)事务的输入脚本的输入时,所述PKD脚本将基于先前公钥生成新公钥。这会将所述新公钥链接到所述先前公钥。然后,所述第一方将所述第一事务传输到所述区块链网络,或者将所述第一事务转发给一方以传输到所述区块链网络。应当注意的是,在生成并传输所述第一区块链时,所述第二事务尚未传输到所述区块链网络。
[0011]本专利技术在脚本中生成所述新公钥,即所述新公钥可以使用所述区块链事务的输出(锁定)和输入(解锁)字段来计算。所述脚本可以采用所述脚本语言编写,所述脚本语言由称为操作码的预定义函数组成。
[0012]在链上显式导出密钥的一个好处在于,一方可以证明他们拥有的两个公钥之间的链接,因此存在关于该证明的不可变记录。这在公钥基础设施(PKI)的上下文中尤其有用,其中可以对单个公钥进行认证。例如,一方可以证明用于签署事务的公钥链接到经认证的公钥。借助关于链接位于链上的该证明,可以通过扩展对相关公钥进行认证。
[0013]在链上计算新公钥(下文也称为子公钥)的另一个好处在于,该子公钥可以用于签署事务,但从不显式存储在链上。因此,如果攻击者搜索包含给定子公钥的事务,他们不会找到使用该方法的事务,从而增加了隐私度。
附图说明
[0014]为了帮助理解本公开的实施例并示出如何实施此类实施例,现将仅通过举例的方式参考附图进行说明,其中:
[0015]图1是一种用于实现区块链的系统的示意性框图;
[0016]图2示意性地示出了可记录在区块链中的事务的一些示例;
[0017]图3是另一种用于实现区块链的系统的示意性框图;
[0018]图4A是客户端应用程序的示意性框图;
[0019]图4B是可由图4A的客户端应用程序表示的示例性用户界面的示意性模型;
[0020]图5示出了用于处理事本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种使用区块链事务基于第一公钥生成第二公钥的计算机实现的方法,其中所述方法由第一方执行并且包括:生成第一区块链事务的输出脚本,其中所述输出脚本包括公钥导出脚本,所述公钥导出脚本被配置为在与第二区块链事务的输入脚本一起执行时基于所述第一公钥生成所述第二公钥,其中所述第二区块链事务的所述输入脚本包括所述第一公钥;以及将所述第一区块链事务传输到区块链网络的一个或更多个节点以用以包含在所述区块链中。2.根据权利要求1所述的方法,其中所述公钥导出脚本包括散列脚本,并且其中所述散列脚本被配置为至少对所述第一公钥应用散列函数以生成散列结果,并且其中所述公钥导出脚本被配置为基于所述第一公钥和所述散列结果生成所述第二公钥。3.根据权利要求2所述的方法,其中所述散列脚本是散列消息认证码HMAC脚本,所述HMAC脚本被配置为至少对所述第一公钥应用所述散列函数以生成包括所述第一公钥的消息的HMAC,其中所述散列结果是所述消息的所述HMAC或基于所述消息的所述HMAC生成。4.根据权利要求3所述的方法,其中所述第一公钥和所述第二公钥处于各层级公钥的层级结构内的相应层级,每个层级包括一个或更多个公钥的序列,其中所述第二区块链事务的所述输入脚本包括:(i)定义所述第一公钥的相应层级的链码,和/或(ii)定义所述第二公钥在所述第二公钥的相应层级的相应公钥序列内的位置的索引,并且其中所述HMAC脚本被配置为至少对所述第一公钥和所述索引应用所述散列函数以生成所述消息的所述HMAC,所述消息包括:所述第一公钥,和(i)所述链码和/或(ii)所述索引中的至少一个。5.根据权利要求3所述的方法,其中所述第一公钥和所述第二公钥处于各层级公钥的层级结构内的相应层级,每个层级包括一个或更多个公钥的序列,其中所述HMAC脚本包括:(i)定义所述第一公钥的相应层级的链码,和/或(ii)定义所述第二公钥在所述第二公钥的相应层级的相应公钥序列内的位置的索引,并且其中所述HMAC脚本被配置为至少对所述第一公钥应用所述散列函数以生成所述消息的所述HMAC,所述消息包括:所述第一公钥,和(i)所述链码和/或(ii)所述索引中的至少一个。6.根据权利要求4或5所述的方法,其中所述HMAC脚本进一步被配置为生成所述散列结果作为所述消息的所述HMAC的预定数量的字节,其中所述预定数量的字节少于所述消息的所述HMAC的总字节数。7.根据前述任一项权利要求所述的方法,其中所述公钥导出脚本包括被配置为生成第二数据值的点标量乘法脚本,其中所述第二数据值是对第一数据值与椭圆曲线的预定生成点执行点乘法的结果,并且其中所述公钥导出脚本被配置为基于所述第一公钥和所述第二数据值生成所述第二公钥。8.根据从属于权利要求2至6中任一项的权利要求7所述的方法,其中所述第一数据值是所述散列结果。9.根据权利要求7或8所述的方法,其中所述第一数据值以二进制表示,并且其中所述点标量乘法脚本被配置为生成所述第二数据值,所述第二数据值以二...

【专利技术属性】
技术研发人员:克雷格
申请(专利权)人:区块链许可股份公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1