我有一份智能合约MyContract,它由multisig钱包(Gnosis)拥有。当我从multisig钱包上的web3 / testrpc提交事务以使用其参数从MyContract执行函数,并确认事务时,它是MyContract的最终执行的回退函数。因此,似乎将作为原始数据传递给Gnosis submitTransaction方法的函数调用没有得到很好的解释。我已经尝试了两种获取交易数据的方法,两者都给出了相同的结果:
MyContract中我希望通过Multisig在mycontract2实例上执行的函数:
function setTransferOperator(address newOperator)
使用ethereumjs-abi lib生成的数据:
var data = abi.methodID('setTransferOperator', ['address']).toString('hex') + abi.rawEncode(['address'], [accounts[8]]).toString('hex');
return gnosiswallet.submitTransaction(mycontract2.address, 0, data, {from: accounts[0]});
使用松露生成相同的数据:
var data2 = mycontract2.setTransferOperator.request(accounts[8]);
当mycontract2归标准帐户所有时,带有数据的事务在一个简单的情况下成功