首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获得合同的abi

获得合同的abi
EN

Ethereum用户
提问于 2018-03-13 12:06:54
回答 2查看 6.5K关注 0票数 5

在我的联系人中有多个导入并成功地部署了我的合同。这是我的合同地址0xc2d4d839001f9d985618a22b89155ea8d6550ae6

如何才能得到我的合同的abi:

代码语言:javascript
复制
pragma solidity ^0.4.18;

import './DeveloperToken.sol';
import 'zeppelin-solidity/contracts/crowdsale/CappedCrowdsale.sol';
import 'zeppelin-solidity/contracts/crowdsale/RefundableCrowdsale.sol';

contract DeveloperCrowdsale is CappedCrowdsale, RefundableCrowdsale {

我试过这个:

代码语言:javascript
复制
var compiled = web3.eth.compile.solidity(contractaddress);

var code = compiled.code;
var abi = compiled.info.abiDefinition;

var contract = web3.eth.contract(abi);

但这不管用。我怎样才能得到我的智能合同的abi?

EN

回答 2

Ethereum用户

回答已采纳

发布于 2018-03-13 12:32:46

将源代码保存在文件中,并使用solidity编译器生成ABI。

你可以用

代码语言:javascript
复制
npm install -g solc

代码语言:javascript
复制
yarn global add solc

然后对源代码运行它。

代码语言:javascript
复制
solcjs --abi contract.sol

它将在当前目录contract_sol_[ContractName].abi中生成ABI。

票数 7
EN

Ethereum用户

发布于 2018-03-13 13:21:41

获取ABI的简单解决方案是使用混炼

例如,如果我稍微修改您的代码如下

代码语言:javascript
复制
pragma solidity ^0.4.18;

import 'https://github.com/OpenZeppelin/zeppelin-solidity/contracts/token/ERC20/ERC20.sol';
import 'https://github.com/OpenZeppelin/zeppelin-solidity/contracts/crowdsale/validation/CappedCrowdsale.sol';
import 'https://github.com/OpenZeppelin/zeppelin-solidity/contracts/crowdsale/distribution/RefundableCrowdsale.sol';

contract DeveloperToken is ERC20 {

}   

contract DeveloperCrowdsale is CappedCrowdsale, RefundableCrowdsale {
}

然后,您可以通过以下简单步骤在编译选项卡的details部分获得ABI:

但是,您将注意到,我的导入语句与您的导入语句有两个不同之处:

  1. 混合需要一个到github帐户的URL。
  2. 您使用的是过时版本的OpenZeppelin库。

看起来,您拥有的代码来自一个松露项目,在这种情况下,当您调用truffle compile时,DeveloperCrowdsale.json文件将在../DeveloperCrowdsale.json/contracts目录中创建。这个JSON将包含ABI。

票数 4
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/42600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档