鹅厂之区块链(6)-智能合约调用(实例化)

标签: 合约调用

智能合约的部署之后需要记住abi合约地址,方便以后调用。

定义合约的abi

var abi = [ { "constant": false, "inputs": [ { "name": "s", "type": "uint256" } ], "name": "getSum", "outputs": [ { "name": "Sum", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "payable": false, "stateMutability": "nonpayable", "type": "constructor" } ]
定义合约地址:(注:此处需要 “” 号);
var address = “0x8926f6d1f56c66f80ceda0a89930dff5aa2b3928

实例化合约:

var contract = eth.contract(abi).at(address);

此处可能需要解锁账户地址:(注:需要加 “” 号)

personal.unlockAccount("0x8926f6d1f56c66f80ceda0a89930dff5aa2b3928");

至此,智能合约实例化完毕。


调用智能合约有两种方式:

contract.getSum.call()

.call()用call被调用的时候,功能在以太坊虚拟机被本地执行,功能返回值和功能一起返回。用这种方式进行的调用不会记录在区块链上,因此也不会改变合约内部状态。这种调用方式被称为恒定功能调用。

contract.getSum.sendTranstaction(参数,{from:"0x12345555"})

.sendTransaction()当用sendTransaction被调用的时候,功能调用通过发送交易来执行。需要花费以太币来发送,调用会永久记录在区块链上。用这种方式进行的调用返回值是交易散表。

原文链接:加载失败,请重新获取