Plugin for Embark and library to flatten and verify contracts on Etherscan.
In your Embark dapp directory:
npm install embark-etherscan-verifier --save
or
yarn add embark-etherscan-verifier
then add embark-etherscan-verifier to the plugins section in embark.json:
"plugins": {
"embark-etherscan-verifier": {}
}In the console, type flatten or flatten ContractName(s)
flatten: Flattens all contractsflatten ContractName(s): Flattens the specified contract(s). For multiple contracts, separate them using a comma.- Example:
flatten SimpleStorage,Token
You can also automatically verify on a valid network (mainnet, ropsten, rinkeby, kovan)
In the console:
verify <API_KEY> <contractName>: Verifies the specified contract (flattens if it was not done before)- You need an Etherscan API key. You can find a simple tutorial here
- Example:
verify YOUR_KEY SimpleStorage
- Embark 4.0.0 or higher
You can use the flattener and verifier standalone.
import FlattenerVerifier from 'embark-etherscan-verifier/lib/FlattenerVerifier`;
const flattenerVerifier = new FlattenerVerifier({
optimize: true,
optimizeRuns: 200,
contractsFiles: [...],
solcVersion: '0.5.2',
getWeb3DeployObject: (contract, cb) => {},
getAllContracts: (cb) => {},
getContractByName: (contractName, cb) => {},
getNetworkId: (cb) => {}
});
optimize: bool: if the contract is optimizedoptimizeRuns: int: Number of optimize passescontractsFiles: Array of contract files objects. Must contain:originalPath: Original path to the contract (relative path)path: Absolute path to the contract objectimportRemappings: Array of remapping objects (for imports). Must contain:target: Absolute path to the imported contract
solcVersion: string: solc version used to compilegetWeb3DeployObject: Function to get a web3 deploy objectgetAllContracts: Function that returns all contract objects. Contract object must contain: linkReferences(from solc output contract.evm.bytecode.linkReferences)}className: string: Class name of the contractoriginalFilename: string: Original file name of the file (relative path)filename: string: Complete absolute file pathdeployedAddress: string: Address where the contract is deployedlinkReferences: object: Library link references. You can get it from the solc output ascontract.evm.bytecode.linkReferences
getContractByName: Function to get a contract object by name. Contains the same as all contracts abovegetNetworkId: Function that returns the current networkId