EOS体系下的多签Multisig 实现。
首先我们需要知道EOS的账户体系 是由钱包地址与对应的权限表组合而成的。
例如一个普通的地址 eosalice 对应了2个不同的密钥对, 一个是 owner ,一个是active , 分别对应了类似 EOS8gywijiNKo75ZkXYKW4LiavJjz3VxDpfL7r6C9fSkpbjzrQnuZ 这样格式的一个公钥,权重Weight 分别是1 , 然后这个账户的所有者能够通过set account 指令(updateauth) 将 权限表做变更(转移),如果新的权限表也是单一的公钥,那么仅是更换了一个密钥对 (Key pairs ) 而已;如果新的权限表(permission table) 是总权重>1 ,例如由2个账户组合而成的 active 2 : (alice@active 1, bob@active 1 ) 那么这个账户新的active 权限表对应的action 执行的时候需要用到eosio.msig 合约, 举个例子, 这是一个众筹的地址 kol.crowd , 它对应的权限表是 ( alice@active1 , bob@active 1 ,victor@active 1 ) , 现在kol.crowd 的余额是 1000.0000 EOS, 需要转账到一个地址 teacher ,金额是100.0000 EOS , 那么需要用到多签合约的流程, 先做提案proposal , 之后由权限表里的各个用户执行签名approve , 签名收集齐了后,由任意一个地址再发起一币交易exec 这个提案, 这个时候账户kol.crowd 才会真正执行一个transfer 交易,转账到teacher 账户,金额是按照提案里设定的100.0000 EOS.
这里前后需要用到的cleos 指令包括:
cleos