Flatten Truffle Solidity Contracts para la característica `Verify Contract Code` de Etherscan

Etherscan.io tiene una Verify Contract Codecaracterística que toma las entradas Solidity Contract Codey Constructor Arguments ABI-encoded.

Pregunta: ¿Existe una herramienta para aplanar sus contratos de solidez (escritos junto con el uso de Truffle) y tal vez incluso generar los argumentos del constructor codificados en ABI, para acelerar el uso de la función de verificación de contratos de Etherscan?

Intenté el script de python de Blockcat solidity-flattenerpero nunca pude hacerlo funcionar. Con la esperanza de descubrir un nuevo método alternativo.

Mi código se compila, pero todavía no puedo crear un archivo plano. ¿Alguna sugerencia? <pre> user@eth:/code/myproject$ truffle compile user@eth:/code/myproject$ touch contracts/CtdToken.sol user@eth:/code/myproject$ truffle compile Compilando ./contracts/CtdToken.sol.. Compilando ./contracts/InterfaceUpgradeAgent.sol... Compilando ./contracts/UpgradableToken.sol... Compilando ./contracts/Withdrawable.sol... Compilando zeppelin-solidity/contracts/lifecycle/Pausable.sol... Compilando zeppelin-solidity/contracts/math/SafeMath.sol... Compilando zeppelin-solidity/contracts/ownership/Ownable.sol... Compilando zeppelin-s

Respuestas (6)

He usado este en el pasado, con muy buenos resultados y una configuración mínima: https://github.com/oraclesorg/oracles-combine-solidity

git clone https://github.com/oraclesorg/oracles-combine-solidity
cd oracles-combine-solidity
npm install
npm start "path_to_not_flat_contract_definition_file.sol"
Opción mucho más rápida

Uso este que está diseñado para trabajar específicamente con Truffle y funciona muy bien, aunque está en una etapa temprana de su desarrollo: https://github.com/alcuadrado/truffle-flattener

Tratar de usar

--solc-paths=zeppelin-solidity=$(pwd)/node_modules/zeppelin-solidity/

Aquí hay un ejemplo de mi caso.

solidity_flattener contracts/MyTicketSale.sol --solc-paths=zeppelin-solidity=$(pwd)/node_modules/zeppelin-solidity/ --output result.sol

Espero que esto ayude

Usé esta opción y funciona.
¿Cómo se determina el punto de entrada? por ejemplo , etherscan.io/dirección/…

Acabo de lanzar un Solidity Flattener fácil de instalar: https://github.com/bokkypoobah/SolidityFlattener

Si, como yo, probó el aplanador de solidez de Blockcat y no pudo hacerlo funcionar, pruebe esta herramienta. ¡Realmente funciona!

Aplanador de trufas

Sí, existe truffle-flattener( https://github.com/nomiclabs/truffle-flattener/ ) que combina todos sus archivos de contratos inteligentes en uno. Y funciona bien con Trufa. Aquí está cómo usarlo:

1) Instalar globalmente:

npm install -g truffle-flattener

2) Úselo, por ejemplo, para aplanar su contrato inteligente 'SimpleToken.sol' de esta manera:

truffle-flattener contracts/SimpleToken.sol > FlattenedSimpleToken.sol

(Tutorial simple paso a paso para usar el aplanador de trufas y verificar su código manualmente en etherscan.io: https://www.sitepoint.com/flattening-contracts-debugging-remix/ )


Verificar con OpenZeppelin SDK

Sin embargo, si desea realizar una verificación de etherscan.io totalmente automatizada, hay openzeppelin verifyY aquí se explica cómo usarlo: https://forum.openzeppelin.com/t/verify-with-openzeppelin-sdk/1206

Lo creé truffle-plugin-verifypara automatizar la verificación de contratos de Truffle en Etherscan.


  1. Instale el complemento con npm
npm install truffle-plugin-verify
  1. Agregue el complemento a su archivo truffle.jsotruffle-config.js
module.exports = {
  /* ... rest of truffle-config */

  plugins: [
    'truffle-plugin-verify'
  ]
}
  1. Genere una clave API en su cuenta de Etherscan (consulte el sitio web de Etherscan )
  2. Agregue su clave API de Etherscan a su configuración de trufas
module.exports = {
  /* ... rest of truffle-config */

  api_keys: {
    etherscan: 'MY_API_KEY'
  }
}

Después de migrar su contrato de contrato a una red pública, puede verificarlo en Etherscan ejecutando:

truffle run verify ContractName [--network networkName]

Se puede encontrar más información en el repositorio o en mi artículo Verificar automáticamente los contratos inteligentes de Truffle en Etherscan .