BSV 上的安全多方计算

安全多方计算 (MPC) 协议使多方能够联合各方的输入,共同计算一个函数,同时保持这些输入的私密性。例如,两位百万富翁决定谁更富有,应该为晚餐买单,而不透露他们的实际财富1。或者一组员工可以在不披露个人工资的情况下计算该组的平均工资。

MPC 的一个基本限制是它不能强迫各方遵守约定。在百万富翁的例子中,一个人可以在发现自己更富有后拒绝付款。

我们使用基于智能合约的方法来解决这一挑战²,通过使用 sCrypt 智能合约将 MPC 的结果与真实交易联系起来。

我们通过在无受信任的第三方的情况下实现去中心化抽奖来证明这一点。

去中心化抽奖

N 个玩家中的每一个选择一个随机数并提交给合约。在他们透露他们的秘密号码后,将选出一名获胜者并拿走所有 N 个 BSV 。每个玩家获胜的概率相同。


   
// a fair secure multiparty lottery
// each player i chooses a random number n_i and the winner is the w-th player
// where w = (n_0 + n_1 + .. + n_(N-1)) mod N
contract Lottery {
    // number of players
    static const int N = 5;
    // players identified by their addresses
    PubKey[N] players;
    // commitments: the hash of their random numbers
    Sha256[N] nonceHashes;

    public function reveal(int[N] nonces, Sig sig) {
        int i = 0;
        int sum = 0;
        loop (N) {
            // open commit
            require(hash256(pack(nonces[i])) == this.nonceHashes[i]);
            sum += nonces[i];
            i++;
        }

        PubKey winner = this.players[sum % N];

        require(checkSig(sig, winner));
    }
}
抽奖合约源代码

实际运用

在实践中,可以采取措施防止玩家不揭示他们的秘密号码。 一种方法是使用定时承诺2,如果玩家在截止日期前没有透露,他将失去他的抵押 BSV。

结论

我们以去中心化抽奖为例,展示了如何执行 MPC 规则。相同的技术可以推广到其他 MPC 协议,例如抛硬币心理扑克


[1] 姚的百万富翁问题

[2] Bitcoin 上的安全多方计算

  • 0
    点赞
  • 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、付费专栏及课程。

余额充值