В моем контакте есть несколько импортов и успешно развернут мой контракт. Это мой контрактный адрес0xc2d4d839001f9d985618a22b89155ea8d6550ae6
Как получить аби моих контрактов:
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 моего смарт-контракта?
Сохраните исходный код в файле и используйте компилятор Solidity для создания ABI.
Вы можете установить его с помощью
npm install -g solc
или
yarn global add solc
а затем запустите его против вашего исходного кода
solcjs --abi contract.sol
Он сгенерирует ABI в вашем текущем каталоге.contract_sol_[ContractName].abi
Простое решение для получения ABI — использовать Remix :
Например, если я немного изменю ваш код, чтобы он был следующим
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 {
}
Затем вы можете получить ABI в разделе сведений на вкладке компиляции, выполнив следующие простые шаги:
Однако вы заметите, что между моими операторами импорта и вашими есть два отличия:
Похоже, что у вас есть код из проекта Truffletruffle compile
, и в этом случае, когда вы вызываете файл DeveloperCrowdsale.json, он будет создан в каталоге ../build/contracts. Этот JSON будет содержать ABI.
Чираг Маливал
Чираг Маливал