ape-etherscan icon indicating copy to clipboard operation
ape-etherscan copied to clipboard

publish on deploy not working: Invalid constructor arguments provided. Please verify that they are in ABI-encoded format

Open martinkrung opened this issue 1 year ago • 3 comments

Environment information

  • OS: linux
  • Python 3.10.12
$ ape --version
0.7.0
Installed Plugins
  alchemy      0.7.0
  arbitrum     0.7.0
  ens          0.7.0
  etherscan    0.7.0
  foundry      0.7.0
  hardhat      0.7.0
  infura       0.7.0
  solidity     0.7.0
  template     0.7.0
  tokens       0.7.0
  vyper        0.7.0
  • Contents of your ape-config.yaml
  - name: solidity
  - name: vyper
  - name: foundry
  - name: infura
  - name: tokens
  - name: etherscan
  - name: arbitrum



# require OpenZepplin Contracts
dependencies:
  - name: openzeppelin
    github: OpenZeppelin/openzeppelin-contracts
    version: 4.8.1
  - name: openzeppelin-upgradeable
    github: OpenZeppelin/openzeppelin-contracts-upgradeable
    version: 4.8.1
  - name: vault
    github: yearn/yearn-vaults
    version: 0.4.5

solidity:
  import_remapping:
    - "@openzeppelin/contracts=openzeppelin/v4.8.1"
    - "@openzeppelin/contracts-upgradeable=openzeppelin-upgradeable/v4.8.1"

default_ecosystem: ethereum

ethereum:
  default_network: mainnet-fork
  mainnet:
    default_provider: infura
  mainnet_fork:
    default_provider: foundry

arbitrum:
  default_network: mainnet-fork
  mainnet:
    default_provider: infura
  mainnet_fork:
    default_provider: foundry

compile:
  exclude:
   - "*.json"

What went wrong?

Command

    # deploy vlToken    
    vl_token = project.VoteLockToken.deploy(ARBITRUM_BASE_TOKEN_ADDRESS, ARBITRUM_TREASURY_ADDRESS, ARBITRUM_COLLECTOR_ADDRESS, sender=account, publish=True)


  • full output of the error you received Its sepolia, not arbitrum:
INFO: Submitted https://sepolia.etherscan.io/tx/0x61b295b69a376a07da2ffb9e347a6a73b9543f35cc6af701821c9083ccb78364
Confirmations (2/2): 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:28<00:00, 14.30s/it]
INFO: Confirmed 0x61b295b69a376a07da2ffb9e347a6a73b9543f35cc6af701821c9083ccb78364 (total fees paid = 108361164676040472)
SUCCESS: Contract 'VoteLockToken' deployed to: 0xF0B636adD8eaFB85860E383E48c20668A6Ea133F
INFO: Publishing and verifying contract using 'etherscan'.

  File "/home/m/dev/points/vlToken/scripts/deploy.py", line 31, in deploy_vl_token
    vl_token = project.VoteLockToken.deploy(ARBITRUM_BASE_TOKEN_ADDRESS, ARBITRUM_TREASURY_ADDRESS, ARBITRUM_COLLECTOR_ADDRESS, sender=account, publish=True)

ERROR: (EtherscanResponseError) Response indicated failure: Invalid constructor arguments provided. Please verify that they are in ABI-encoded format


How can it be fixed?

No idea

martinkrung avatar Dec 21 '23 21:12 martinkrung

Na, maybe the source of this problem is this

    return self._accessor.open(self, mode, buffering, encoding, errors,
FileNotFoundError: [Errno 2] No such file or directory: '/home/m/dev/points/vlToken/contracts/vyper/interfaces/ERC20.json'

I generated a that with vyper -f abi from an ERC20.vy and put it at that place, so maybe this is a little reckless and not how this should be done.

martinkrung avatar Dec 21 '23 21:12 martinkrung

I don't think Vyper is supported yet for programmatic Etherscan verification. For example, look at the part of the API docs: https://docs.etherscan.io/contract-verification/verifying-contracts-programmatically#id-4.-configuring-source-code-parameters

It says the supported values for the compilerversion field is on this list: https://etherscan.io/solcversions And all of those are Solidity.

I would like to get Vyper verification working, maybe there is a way!

antazoey avatar Feb 02 '24 15:02 antazoey