您现在的位置是:首页 > 文章详情

以太坊中如何获取另外一个智能合约部署的合约地址?

日期:2018-07-16点击:498

如何获取另外一个智能合约部署的合约地址?

我正试图从另一个工厂合约中签智能合约,然后重新部署新智能合约的地址。然而,它返回的地址是交易哈希值而不是合约地址。我相信这是因为当地址被返回时合约尚未开采。当我使用Web3部署智能合约时,它似乎一直等到智能合约被部署完成后才输出合约地址。

工厂合约如下:

contract Factory { mapping(uint256 => Contract) deployedContracts; uint256 numContracts; function Factory(){ numContracts = 0; } function createContract (uint32 name) returns (address){ deployedContracts[numContracts] = new Contract(name); numContracts++; return deployedContracts[numContracts]; }}

下面是调用createContract函数的方法:

factory.createContract(2,function(err, res){ if (err){ console.log(err) }else{ console.log(res) } });

可以参考下面的例子,有很多方式可以获得智能合约地址:

contract Object { string name; function Object(String _name) { name = _name } } contract ObjectFactory { function createObject(string name) returns (address objectAddress) { return address(new Object(name)); } }

1.存储地址并在需要的时候返回:

将智能合约中的地址作为属性存储并使用普通的getter方法检索。

contract ObjectFactory { Object public theObj; function createObject(string name) returns (address objectAddress) { theObj = address(new Object(name)); return theObj; } }

2.在交易前调用:

你可以在发生交易之前进行调用:

var address = web3.eth.contract(objectFactoryAbi) .at(contractFactoryAddress) .createObject.call("object");

一旦这个合约地址执行交易那么:

var txHash = web3.eth.contract(objectFactoryAbi) .at(contractFactoryAddress) .createObject("object", { gas: price, from: accountAddress });

3.计算未来的合约地址
你也可以像下面这样计算将来的智能合约地址:

var ethJsUtil = require('ethereumjs-util'); var futureAddress = ethJsUtil.bufferToHex(ethJsUtil.generateAddress( contractFactoryAddress, await web3.eth.getTransactionCount(contractFactoryAddress)));

原文《以太坊常见问题和错误》中的:
http://cw.hubwiz.com/card/c/ethereum-FAQ/1/1/7/

另外推荐一些之前的教程:

  • python以太坊,主要是针对python围绕web3.py进行区块链以太坊应用开发的讲解。
  • web3j,主要是针对java和android程序员围绕web3j库进行区块链以太坊开发的讲解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。
  • 以太坊开发,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • 以太坊教程,主要介绍智能合约与dapp应用开发,适合入门。
原文链接:https://yq.aliyun.com/articles/617044
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章