Flatten Truffle Solidity Contracts für Etherscans „Verify Contract Code“-Funktion

Etherscan.io hat eine Verify Contract CodeFunktion, die die Eingaben Solidity Contract Codeund Constructor Arguments ABI-encoded.

Frage: Gibt es ein Tool, mit dem Sie Ihre (in Verbindung mit der Verwendung von Truffle geschriebenen) Soliditätsverträge glätten und vielleicht sogar die ABI-codierten Konstruktorargumente generieren können, um Ihre Nutzung der Vertragsüberprüfungsfunktion von Etherscan zu beschleunigen?

Versuchte das Python-Skript von Blockcat solidity-flattener, konnte es aber nie zum Laufen bringen. In der Hoffnung, eine neue alternative Methode zu entdecken.

Mein Code wird kompiliert, aber ich kann immer noch keine Flatfile erstellen. Irgendwelche Vorschläge? <pre> user@eth:/code/myproject$ Truffle Compiler user@eth:/code/myproject$ Touch Contracts/CtdToken.sol user@eth:/code/myproject$ Truffle Compiling Kompilieren von ./contracts/CtdToken.sol.. Kompilieren von ./contracts/InterfaceUpgradeAgent.sol... Kompilieren von ./contracts/UpgradableToken.sol... Kompilieren von ./contracts/Withdrawable.sol... Kompilieren von zeppelin-solidity/contracts/lifecycle/Pausable.sol... Kompilieren zeppelin-solidity/contracts/math/SafeMath.sol... Compiling zeppelin-solidity/contracts/ownership/Ownable.sol... Compiling zeppelin-s

Antworten (6)

Ich habe dieses in der Vergangenheit mit sehr guten Ergebnissen und minimalem Setup verwendet: 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"
Viel schnellere Option

Ich verwende dies, das speziell für die Arbeit mit Truffle entwickelt wurde, und es funktioniert großartig, obwohl es sich noch in der Entwicklung befindet: https://github.com/alcuadrado/truffle-flattener

Versuchen zu benutzen

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

Hier ist ein Beispiel aus meinem Fall

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

Hoffe das hilft

Ich habe diese Option verwendet und es funktioniert.
Wie bestimmen Sie den Einstiegspunkt? zB etherscan.io/adresse/…

Ich habe gerade einen einfach zu installierenden Solidity Flattener veröffentlicht – https://github.com/bokkypoobah/SolidityFlattener

Wenn Sie, wie ich, den Solidity-Flattener von Blockcat ausprobiert und ihn nicht zum Laufen gebracht haben, versuchen Sie es mit diesem Tool. Es funktioniert wirklich!

Trüffel-Flattener

Ja, es gibt truffle-flattener( https://github.com/nomiclabs/truffle-flattener/ ), das alle Ihre Smart-Contracts-Dateien zu einer kombiniert. Und es funktioniert gut mit Trüffel. So verwenden Sie es:

1) Global installieren:

npm install -g truffle-flattener

2) Verwenden Sie es zum Beispiel, um Ihren Smart Contract 'SimpleToken.sol' so zu glätten:

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

(Einfache Schritt-für-Schritt-Anleitung zur Verwendung von Truffle Flattener und zur manuellen Überprüfung Ihres Codes auf etherscan.io: https://www.sitepoint.com/flattening-contracts-debugging-remix/ )


Verifizierung mit OpenZeppelin SDK

Wenn Sie jedoch eine vollautomatische etherscan.io-Verifizierung durchführen möchten, gibt es openzeppelin verifyUnd hier ist, wie man es verwendet: https://forum.openzeppelin.com/t/verify-with-openzeppelin-sdk/1206

Ich habe erstellt truffle-plugin-verify, um die Truffle-Vertragsüberprüfung auf Etherscan zu automatisieren.


  1. Installieren Sie das Plugin mit npm
npm install truffle-plugin-verify
  1. Fügen Sie das Plugin zu Ihrer truffle.jsoder truffle-config.js-Datei hinzu
module.exports = {
  /* ... rest of truffle-config */

  plugins: [
    'truffle-plugin-verify'
  ]
}
  1. Generieren Sie einen API-Schlüssel in Ihrem Etherscan-Konto (siehe Etherscan-Website )
  2. Fügen Sie Ihren Etherscan-API-Schlüssel zu Ihrer Truffle-Konfiguration hinzu
module.exports = {
  /* ... rest of truffle-config */

  api_keys: {
    etherscan: 'MY_API_KEY'
  }
}

Nachdem Sie Ihren Vertragsvertrag in ein öffentliches Netzwerk migriert haben, können Sie ihn auf Etherscan überprüfen, indem Sie Folgendes ausführen:

truffle run verify ContractName [--network networkName]

Weitere Informationen finden Sie im Repository oder in meinem Artikel Truffle Smart Contracts auf Etherscan automatisch verifizieren .