En mi contacto tengo múltiples importaciones y desplegué exitosamente mi contrato. Esta es mi dirección de contrato0xc2d4d839001f9d985618a22b89155ea8d6550ae6
¿Cómo puedo obtener el abi de mis contratos?
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 {
Intenté esto:
var compiled = web3.eth.compile.solidity(contractaddress);
var code = compiled.code;
var abi = compiled.info.abiDefinition;
var contract = web3.eth.contract(abi);
Pero no está funcionando. ¿Cómo puedo obtener el abi de mi contrato inteligente?
Guarde su código fuente en un archivo y use el compilador solidity para generar el ABI.
Puedes instalarlo con
npm install -g solc
o
yarn global add solc
y luego ejecutarlo contra su código fuente
solcjs --abi contract.sol
Generará el ABI en su directorio actualcontract_sol_[ContractName].abi
La solución simple para obtener el ABI es usar Remix :
Por ejemplo, si modifico tu código ligeramente para que sea el siguiente
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 {
}
Luego puede obtener el ABI en la sección de detalles de la pestaña de compilación siguiendo estos sencillos pasos:
Sin embargo, notará que hay dos diferencias entre mis declaraciones de importación y las suyas:
Parece que el código que tiene es de un proyecto Truffle , en cuyo caso, cuando llame truffle compile
, se creará un archivo DeveloperCrowdsale.json en el directorio ../build/contracts. Este JSON contendrá la ABI.
chirag maliwal
chirag maliwal