关于使用sendTransaction方法的问题?
发布于 5 天前 作者 mysql2017 52 次浏览 来自 以太坊

调用sendTransaction方法,有两种方式

假设有如下合约

pragma solidity ^0.4.18;

contract Calc {
    
    function add(uint a, uint b) public returns (uint) {
        return a + b;
    }
}

想要调用这个合约的add方法,则有如下两种方法

方法一:

var contract = web3.eth.contract(合约编译后的abi);
var inst = contract.at(合约地址);
inst.add.sendTransaction("1","2",{from: web3.eth.accounts[0]},function(err,res){
console.log(res);
})

方法二:

var txdata = {
from: web3.eth.accounts[0],
gas: 88888,
to: 合约的地址,
data: {}
};
web3.eth.sendTransaction(txdata, function(err,res) {
console.log(res);
});

现在问题来了。 使用方法一,则需要知道合约的地址和合约的ABI,而合约的ABI非常长,调用起来非常不方便。 方法二,不需要知道合约的ABI。但是,txdata对象的data要怎么传?怎么构造?

回到顶部