发起交易
Delegate
可通过 execTransaction()
或 execTransactions()
发起调用。
以 execTransaction()
为例,其参数是一个 CallData
结构体。
结构体各个字段表示如下:
flag 表示合约调用的类型,使用
0
表示call
,1
表示delegatecall
。需要注意两种 call 形式对应的授权管理通常是独立的。to 表示调用的目标合约
value 表示合约调用时转账的 ETH 数量
data 表示合约调用的 calldata 数据,是合约调用的
abi.encode
后的结果hint 字段用于提示 Authorizer 使用的检查规则,当设置了
hint
字段后,可以在进行权限检查时执行快速路径,从而节约一定 gas。
hint
字段不需要用户自行计算,可通过以 eth_call
的形式发起一次未设置 hint
的交易, execTransaction()
返回的 TransactionResult
的 hint
即为本次交易的 hint
,此时再次进行合约调用即可。
上述过程被封装到 CoboSafe SDK 中,使用 Javascript CoboSafe SDK 与 CoboSafe 合约进行交互示例如下:
Cobo Safe
提供了 Python 和 Javascript SDK,更多 SDK 使用可参考 https://github.com/coboglobal/
Last updated