• 两种Multisig Wallet的实现


    在以太坊中,Multisig Wallet往往是一个智能合约,而合约要实现多签管理,有两大种路径分别对应

    Ownbit Multisig Wallet使用持签授权法:用你的私钥对相应的花费(金额、目标地址等等)进行签名,并给出签名结果

    Gnosis Multisig Wallet使用交易授权法:用你的私钥发送一笔以太坊交易,去调用某个特定接口,并给予特定参数;

    Gnosis的早期版本实现V1版

    1、Gnosis 多签执行任意交易的流程

    整体分成4个阶段:初始化阶段→提案阶段→投票阶段→执行阶段

    初始化阶段:定义若干管理员_owners,后续的交易仅这些地址可调用

    提案阶段:任意管理员之一通过submitTransaction方法提交交易,得到一个交易号transactionId,提交的交易需要携带destination,value,data这三个参数

    投票阶段:其余管理员通过提交 ETH 交易来投票,调用合约的confirmTransaction方法

    执行阶段:当confirm的人数达到最低要求,executeTransaction的内部逻辑将被触发,

    最终合约通过call远程调用执行任意操作

    2、为何可以执行任意操作?

    因为其中destination是目标地址,value是金额,data是交易附带的参数

    在一笔以太坊交易中,Data字段是交易的附带信息,有明确的规则控制,比如下图是最常规的ERC20转账交易,其在Etherscan解析后的展示逻辑如下,而其实交易解析前的原文是

    其解析的原理是,依据前8位对应合约的ABI文件可以得知对应的函数名与参数列表,后续每64位按不同参数类型做不同转换做解析

    所以,对于提案,只需要清晰的规定,目标地址、金额、交易附带参数,即可执行任意操作

    3、逐步改版成类Ownbit的形式

    核心的GnosisV1版本实现逻辑,其实后来他已经逐步改版成类Ownbit的形式,采用持签验签的模式了

    主要原因是

    用发送交易代表提案和投票,有着简单易懂规避了复杂签名计算,且全程线上实现任何时候追溯都有据可查等优势,但是缺点也很显著

    一次提案需要多人交易成本高昂

    最后投票者gas费更高,即成本不平衡

    再交易实际逻辑在data字段中,难以阅读理解

    所以用户利弊成本权衡,最终放弃了交易确认法,让他走向持签验签的模式。

  • 相关阅读:
    mysql查询导出binlog文件命令
    新浪财经行情中心的对象 Market_Center
    远距离双目视觉测量系统获得较高精度测量结果
    Vue自动生成二维码并可下载二维码
    nSoftware SecureBlackbox 2022 Python 22.0.8 Crack
    g++模板显式实例化big file例子
    leetcode221.最大正方形
    nginx做负载均衡服务器,配置动静分离
    Qt Designer UI设计布局小结
    错误的方向,加上自学就相当于是在自己慢性自杀。
  • 原文地址:https://blog.csdn.net/FENGQIYUNRAN/article/details/127458132