solidity Dapp 多重签名合约 —— 他好,你也好

    建立一个多重签名合约,这个合约可以有多个账户。每次通过这个合约转出ETH时,就需要一定数量的账户同意(例如总共有3个用户,可以设置需要2个同意)。这个应用场景也比较明显,例如公司的一份文件经常需要几个单位或部门分别签名才有效,多重签名技术就是在网络环境里解决这类问题的一种方法,用于同一文档必须经过多人的签名才有效的情形。在推广一下,个人合资创业也是一样,防止其中某个人卷钱跑路。

    我们先来简单的说一下,原理和框架。

   创建合约之后,我们先添加多个账号,每个人都可以向账户里存钱以及把账户的钱转到其他账户。如果有人想转账,我们先构建一笔交易,放入pending队列中;其他账户可以通过函数接口观察pending队列里的所有交易;如果他认为可行就对认可的交易进行签名,当一笔处于pending状态的交易被规定的人数认可之后,这笔交易就可以发送出去了;这是整个多重签名的过程。

   

     看了上图理解起来,应该更简单了。所有人都可以创建交易,然后交易发送到pending队列里,然后所有人都可以进行签名,如果一笔交易达到了签名数量的要求,这笔交易就会被发送出去了。

   

   只介绍一下,创建交易和签名两部分;

  创建交易,

    比较简单,就是把你要发送的交易,进行解析,放入pendingTransactions中,然后等待签名就好了;这里不需要考虑什么nonce值,因为nonce值在你发送这笔交易的时候已经消耗了。

    签名也很简单,这里的签名并不是密码学里的签名,只是一个确认;签名的时候你需要制定签名的交易ID,如果这笔交易签名的数量达到要求了,就可以认为这笔交易被认可里,可以发送里。签名之后,需要对pendingTransactions里的交易进行更新,把已经完成的交易进行删除。

    怎么样,是不是很简单。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

0xweb3q

有钱的捧个钱场,没钱的捧个人场

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

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

打赏作者

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

抵扣说明:

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

余额充值