外部怎么调用eth智能合约的public变量,public方法

调用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

 

你可能感兴趣的:(区块链)