调用public变量:eth.call方法,非交易型方法, 不创建交易,不消耗gas
// 调用合约0x8c0ee7e23af6226cbf264f209ed20d8517545202中的totalExchange变量
// 创建合约实例
var MyContract = web3.eth.contract(abiArray);
var contractInstance = MyContract.at("0x8c0ee7e23af6226cbf264f209ed20d8517545202");
// 获取变量sha值
var dataHash = contractInstance.totalExchange.getData().substring(0, 10);
// 用call方法获取
var totalExchangeVal = web3.eth.call({
to: subChainAddress, // 合约地址
data: dataHash // "0xb8697fe2"
}, 'latest');
调用合约public方法(1. 直接调用如下 2. eth.call方法如上)
// 调用合约0x8c0ee7e23af6226cbf264f209ed20d8517545202中的getBoardlist(uint status)方法
// 创建合约实例
var MyContract = web3.eth.contract(abiArray);
var contractInstance = MyContract.at("0x8c0ee7e23af6226cbf264f209ed20d8517545202"); // 直接调用,传参1
contractInstance.getBoardlist(1,function(err, result){
console.log(result);
});
调用合约的交易方法:需要发送交易,消耗gas的,用sendRawTransaction,交易的data还是要通过合约实例调用方方法getData(),例如 data = contractInstance.sellMintToken.getData(amount);
可参考:http://web3.tryblockchain.org/Web3.js-api-refrence.html#toc_46