也许这是个愚蠢的问题。但我想知道是否有可能在以太坊的一个事务中放置2个(或更多)智能合约方法调用。
单个事务中一个函数调用的代码部分:
var data = self.MyContract.MyFunc1.getData(
param1);
const options = {
gasPrice: gasPrice,
gasLimit: gasLimit,
nonce,
data,
to: addressContract,
};
const tx = new Tx(options);
tx.sign(new Buffer(private_key, 'hex'));
const rawTx = `0x${tx.serialize().toString('hex')}`;
self.web3.eth.sendRawTransaction(rawTx, (err, result) => {
if (err)
reject(err);
resolve(result);
});
它工作得很好。我尝试通过以下方式向数据变量添加另一个函数调用:
var data = self.MyContract.MyFunc1.getData(
param1);
var data2 = self.MyContract.MyFunc2.getData(
param2);
data += data2;
const options = {
gasPrice: gasPrice,
gasLimit: gasLimit,
nonce,
data,
to: addressContract,
};
const tx = new Tx(options);
tx.sign(new Buffer(private_key, 'hex'));
const rawTx = `0x${tx.serialize().toString('hex')}`;
self.web3.eth.sendRawTransaction(rawTx, (err, result) => {
if (err)
reject(err);
resolve(result);
});
此时间事务失败,原因如下(根据etherscan.io info):已还原。
那么我做错了什么?或者一个事务中可能只有一个合同函数调用?