当前位置:   article > 正文

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));
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
抽奖合约源代码

实际运用

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

结论

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


[1] 姚的百万富翁问题

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/159648
推荐阅读
相关标签
  

闽ICP备14008679号