在以太坊中,我如何与区块链上的合同进行交互?

当我使用编译器的输出发布新合同时,我得到一个 javascript对象“somecontract”,我可以像这样调用方法:“somecontract.doSomething();”

但是,我如何与过去某个时刻发布到区块链的合同进行互动?

解决方法

如果您已经拥有合同地址,请跳至下面的代码段.如果没有,你需要找到它.

>在etherchain.org上查找合同发布的帐户
>查找用于创建合同的交易.它将成为“新合同”行之一.
>最后,在geth内,获取交易收据,合同地址将是收据的“contractAddress”属性.

要获得abi,请重新编译您的合同(通常在这里https://chriseth.github.io/browser-solidity/).既然您已获得abi和合同地址,那么您已准备好重新获得合同.

var abi = <cut and paste the contract abi here>;
var contract = web3.eth.contract(abi).at(<contract address>);
contract.functionname();
contract.functionname.sendTransaction(...);

这是来自https://github.com/fivedogit/solidity-baby-steps/blob/master/contracts/05_greeter.sol的样本abi

[{"constant":false,"inputs":[],"name":"kill","outputs":[],"type":"function"},{"constant":true,"name":"getBlockNumber","outputs":[{"name":"","type":"uint256"}],{"constant":false,"inputs":[{"name":"_newgreeting","type":"string"}],"name":"setGreeting","name":"greet",{"inputs":[{"name":"_greeting","type":"constructor"}]

相关文章

文章浏览阅读903次。文章主要介绍了收益聚合器Beefy协议在币...
文章浏览阅读952次。比特币的主要思路是,构建一个无中心、去...
文章浏览阅读2.5k次。虚拟人从最初的不温不火,到现在步入“...
文章浏览阅读1.3k次,点赞25次,收藏13次。通过调查和分析用...
文章浏览阅读1.7k次。这个智能合约安全系列提供了一个广泛的...
文章浏览阅读1.3k次。本文描述了比特币核心的编译与交互方法...