在我的联系人中有多个导入并成功地部署了我的合同。这是我的合同地址0xc2d4d839001f9d985618a22b89155ea8d6550ae6
如何才能得到我的合同的abi:
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 {我试过这个:
var compiled = web3.eth.compile.solidity(contractaddress);
var code = compiled.code;
var abi = compiled.info.abiDefinition;
var contract = web3.eth.contract(abi);但这不管用。我怎样才能得到我的智能合同的abi?
发布于 2018-03-13 12:32:46
将源代码保存在文件中,并使用solidity编译器生成ABI。
你可以用
npm install -g solc或
yarn global add solc然后对源代码运行它。
solcjs --abi contract.sol它将在当前目录contract_sol_[ContractName].abi中生成ABI。
发布于 2018-03-13 13:21:41
获取ABI的简单解决方案是使用混炼:
例如,如果我稍微修改您的代码如下
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:

但是,您将注意到,我的导入语句与您的导入语句有两个不同之处:
看起来,您拥有的代码来自一个松露项目,在这种情况下,当您调用truffle compile时,DeveloperCrowdsale.json文件将在../DeveloperCrowdsale.json/contracts目录中创建。这个JSON将包含ABI。
https://ethereum.stackexchange.com/questions/42600
复制相似问题