比特币脚本中的工作量证明

  • coins_
  • 发布于 2023-05-26 17:30
  • 阅读 10

本文探讨了比特币脚本中工作量证明(PoW)的几种实现方法,包括基于签名长度的PoW、使用哈希原像挑战的交互式PoW以及基于私钥的PoW。这些方法各有优缺点,例如,基于签名长度的PoW粒度较粗,而哈希原像挑战需要可信的挑战者。基于私钥的PoW可以实现任意PoW算法,但同样需要可信的dealer。文章还提到了零知识证明(ZKP)可用于解决可信dealer问题。

比特币脚本中的工作量证明

签名长度

签名的长度可以用作对输出的工作量证明。以下是关于单次显示签名Maxwell等人想法的描述。

OP_SIZE 57 OP_LESSTHANOREQUAL OP_VERIFY <P> OP_CHECKSIGVERIFY

使用该 <r> 值可以揭示密钥p:p = (2s - h)/r (mod O(g)).

同样的机制可以用于验证脚本中的工作量证明。

局限性

  • PoW 在 ECDSA 中
  • 难度粒度是字节大小的步长

哈希原像挑战

交互式 PoW 谜题可以通过哈希原像实现。 挑战者给证明者一个谜题承诺。证明者必须暴力破解哪个哈希序列导致了这个承诺。我们使用 "7-bit Integer commitments(7 位整数承诺)" 中的机制并反转它。挑战者承诺一个原像和哈希承诺。证明者需要暴力破解所有可能的哈希值,以找到从原像到承诺的路径。谜题解决方案的知识证明就是这个整数。 这是一个示例交易。

特点

  • 难度粒度是比特大小

局限性

  • 需要可信的挑战者
  • 挑战者可以通过提供无法解决的难题作弊。
    • 然而,证明者可以通过暴力破解所有可能性来证明挑战者作弊
    • ZKP 可能会帮助证明解决方案的存在。
  • 操作码随着难度线性增长
  • 最大难度为 30 比特 ~ 5 字节

私钥中的 PoW

挑战者使用两个哈希函数创建一个 N-bit 承诺。密钥是一个私钥。N 是难度。他资助相应的地址。他发布地址和前像。

Alice 向 Bob 发起工作量证明挑战。 我们使用两个不同的哈希函数 H1H0

  1. Alice 随机选择一个承诺 CC 大约是 32 字节。
  2. Alice 选择一个长度为 N 的随机位串 x。例如 x = 110101
  3. Alice 导出一个密钥 X。在我们的例子中 C = H1(H1(H0(H1(H0(H1( x ))))))
  4. Alice 导出相应的公钥并广播一个资助交易。
  5. Bob 一旦得知 C 就开始比赛。

特点

  • 难度的粒度是比特大小
  • 没有操作码。完全链下。
  • 实际上不需要哈希链。 它只是以前想法的遗留物。只需像比特币的 PoW 中一样使用 nonce。验证时间在 N 中是恒定的。
  • 可以使用任何工作量证明算法。
  • 如果算法对每个新挑战都发生巨大变化,则可以实现 ASIC 抗性。

局限性

  • 需要可信的交易对手。他可以通过提供无法解决的难题作弊。

零知识证明

我们可以将零知识证明附加到谜题上,以证明解决方案的存在。 使用Bulletproofs "SHA256 原像证明为 1.4 KB,验证需要 750 毫秒",并且它是无需信任的。

多个哈希函数

为了增加我们方案中的比特数,我们可以以不同的顺序使用多个哈希函数。 这有助于为低熵的承诺值增加熵。

    OP_RIPEMD160
    OP_SHA1
    OP_SHA256
    OP_HASH160
    OP_HASH256

比特币脚本中的工作量证明 2

以下脚本允许所有人花费; 你的签名越短,你就可以越早花费。

OP_SIZE
OP_CHECKSEQUENCEVERIFY OP_DROP

OP_CHECKSIGVERIFY

R = 1/2 G 具有已知的最小 x 坐标--x = 0x3b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63。如果选择公钥 P = 1 G,则 ECDSA 签名变为 s=2(H(m)+x)。因此,H(m) 越小,s 越小(只要它大于 x ~ 2^165)。因此,上述输出可以由挖掘最低 TX 哈希的矿工花费另见此处的讨论

相关工作

  • 原文链接: github.com/coins/bitcoin...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
coins_
coins_
江湖只有他的大名,没有他的介绍。