无合约的合约

我们发明了一种称为无合约合约的技术,以忠实地执行常规支付 (P2PKH) 交易中的任何智能合约。当多方合作时,它极大地提高了任意多方智能合约的隐私和效率。

无合约的合约

我们将说明无合约的合约是如何在两方之间运作的。它可以简单地扩展到多方。在典型的两方合约中,工作流程如下:

在这里插入图片描述

图1: 合约工作流程:之前

Alice 和 Bob 各自存入合约。合约执行后,它会根据合约的逻辑1将输出拆分给 Alice 和 Bob。例如,可以通过释放哈希原像、签名或由预言机签名的体育比赛的结果来触发合约执行。

我们修改工作流程如下:

在这里插入图片描述

图2: 合约工作流程:之后

我们不是直接存入合约,而是先存入一个联合地址,只有双方签字才能解锁。之后,共同基金被锁定在合约中。

乍一看,这个额外的步骤似乎是多余的,只会增加复杂性。关键思想是合约交易 (tx2) 不会被 Alice 和 Bob 广播并保持在链下。合约在链下执行。如果 Alice 和 Bob 就结果达成一致,他们都可以签署新的交易 tx2’ 并花费 tx1。

在这里插入图片描述

图3: 合约工作流程:合作签约

就 Alice 和 Bob 收到的 BSV 数量而言,这与广播 tx2 和 tx3 的效果相同,但有两个好处。

隐私: 所有交易(tx1 和 tx2’)看起来与常规支付(P2PKH)交易相同。外部方甚至不知道有一个隐藏的潜在合约的存在。

效率: 无论合约多么复杂和庞大,只有两笔支付交易最终在区块链上,节省了大量的矿工费用。

不合作场景

当任何一方不合作并拒绝签署 tx2’ 时,另一方始终可以广播预先签署的 tx2 并在 tx3 中终止合约。追索权激励各方合作。

Threshold 签名

在 tx1 中,我们使用 2-of -2 Threshold 签名方案 (TSS):

  • 生成联合公钥
  • 要解锁它,Alice 和 Bob 都必须分别签名。结合两个签名的联合签名对联合公钥有效。

从外部看,联合公钥和签名看起来与常规公钥和签名相同。令人惊奇的是,联合公钥对应的私钥在签名时不必存在,避免了单点故障。

在这里插入图片描述

图4: 门限签名方案 原图来自: nakasendo SDK

TSS 如何在 ECDSA2 上工作的详细说明超出了本文的范围。有兴趣的读者可以阅读 nChain 的 白皮书 和 这份资料

TSS 已在此处进行了演示,并广泛用于 HandCashVolt 等生产钱包。

Nakamoto 签名协议

遵循图 2 中的工作流程的一种简单方法是让 Alice 和 Bob 依次签名和广播 tx0/tx0’、tx1 和 tx2。但是,有几个问题。 Bob 得到 Alice 部分签名的 tx1 后,他可以:

  • 将资金重定向到另一份合约
  • 或签名并广播 tx1,但稍后拒绝签名。爱丽丝的资金会被锁住

为了克服这些问题,我们受中本聪的启发,分两步设置合约,我们称之为 Nakamoto 签名协议。

  1. Alice 和 Bob 交换 tx0 和 tx0’ 的 txid,这足以创建和签署 tx1 和 tx2。但是他们还没有相互共享原始交易 tx0 和 tx0’ 并让它们保持在链下。

  2. Alice 检查 tx1 和 tx2 都已签名,并且它们的输出包含预期的联合地址和合约。如果是,她广播 tx0。如果没有,她会终止。Bob 做同样的事情。

合约只有在双方都没有中止时才会继续进行,因为 tx1 需要 tx0 和 tx0’ 都有效。

与合作合约相比

无合约合约类似于我们之前介绍的合作合约,当各方就最终输出达成一致时,走捷径。它比后者更私密、更高效:

  • 在后者中,整个智能合约始终暴露在链上,而在前者中,如果各方合作,则不会暴露。
  • 在后者中,当各方合作签名时,解锁交易需要所有签名,而前者只需要一个签名。

[1] 存款和拆分金额都可以为零,即只有一方存款和赎回。

[2] 与许多人的想法相反,Schnorr 签名不需要将多个签名聚合为一个。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sCrypt Web3应用开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值