本文探讨了比特币脚本中工作量证明(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 谜题可以通过哈希原像实现。 挑战者给证明者一个谜题承诺。证明者必须暴力破解哪个哈希序列导致了这个承诺。我们使用 "7-bit Integer commitments(7 位整数承诺)" 中的机制并反转它。挑战者承诺一个原像和哈希承诺。证明者需要暴力破解所有可能的哈希值,以找到从原像到承诺的路径。谜题解决方案的知识证明就是这个整数。 这是一个示例交易。
挑战者使用两个哈希函数创建一个 N-bit 承诺。密钥是一个私钥。N 是难度。他资助相应的地址。他发布地址和前像。
Alice 向 Bob 发起工作量证明挑战。
我们使用两个不同的哈希函数 H1
和 H0
。
C
。C
大约是 32 字节。N
的随机位串 x
。例如 x = 110101
。X
。在我们的例子中 C = H1(H1(H0(H1(H0(H1( x ))))))
。C
就开始比赛。N
中是恒定的。我们可以将零知识证明附加到谜题上,以证明解决方案的存在。 使用Bulletproofs "SHA256 原像证明为 1.4 KB,验证需要 750 毫秒",并且它是无需信任的。
为了增加我们方案中的比特数,我们可以以不同的顺序使用多个哈希函数。 这有助于为低熵的承诺值增加熵。
OP_RIPEMD160
OP_SHA1
OP_SHA256
OP_HASH160
OP_HASH256
以下脚本允许所有人花费; 你的签名越短,你就可以越早花费。
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 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!