我们想探讨一下最简单的多重签名合约。在该合约下,秘钥持有者应能够聚集起来转移资金,但为了保持其简单性,我们不想要更高级的功能,比如支付限制或更新签名者等。
这个灵感来源于Bitcoin的多重签名方式,这种方式中,脚本语言的OP_CHECKMULTISIG操作码可以直接支持多重签名。据我所知,迄今为止,由于错误的Bitcoin多重签名脚本而致使Bitcoin被盗或丢失的事件还从未发生过。
最后我们得到的是一个将多数逻辑踢下链(即仅运用少数逻辑)的合约,在此合约中,多重签名的每一个所有者都负责创建授权交易的签名,然后利用单个函数向合约提交所有签名以完成验证。我们使用的是ERC191规范,该规范旨在促进签名格式的标准化。同时,我们还采用单一整数随机数来防止重放攻击。
在用户界面方面,我们的想法是多重签名的秘钥持有者都有用户界面,他们可以在此输入自己想要发送(最好在离线计算机上)的交易详情。随后,“操作员”将在一台在线计算机上收集持有者的所有签名,并将包含所有签名的实际交易发送出去。该操作员不需要对资金进行任何实际控制,持有多重签名秘钥的人才是最终有权执行交易的人。