current position:Home>When verifying the smart contract in Etherscan, the ABI error is always prompted
When verifying the smart contract in Etherscan, the ABI error is always prompted
2022-02-03 23:16:51 【Q & A of Denglian community】
adopt https://remix.ethereum.org/ Compile the contract , Then when it is deployed to the test network , Want to go etherscan Verify contract ,abi Directly from remix Copy , When verifying , Always prompt for this error :Error! Invalid constructor arguments provided. Please verify that they are in ABI-encoded format
contract Address :https://ropsten.etherscan.io/address/0xf1f763436a7cb1cbaad968957b444f263406bdd2#code
contract code is following:
pragma solidity ^0.5.17;contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor () internal { } // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; }}library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; }}interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value);}contract ERC20 is Context, IERC20 { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; string public constant name = "QEEE"; string public constant symbol = "QEEE"; uint8 public constant decimals = 0; uint public totalSupply = 10000; uint256 public currBlkNum = block.number; uint256 public Additional = 20; event onAdditional(uint256 blkNum, uint256 num); function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal { // check role // require(account != address(0), "ERC20: mint to the zero address"); totalSupply = totalSupply.add(amount); _balances[account] = _balances[account].add(amount); currBlkNum = block.number; emit Transfer(address(0), account, amount); emit onAdditional(block.number,amount); } function _burn(address account, uint256 amount) internal { require(account != address(0), "ERC20: burn from the zero address"); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); totalSupply = totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve(address owner, address spender, uint256 amount) internal { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _burnFrom(address account, uint256 amount) internal { _burn(account, amount); _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance")); } function mint() public { // check role uint256 enough = (block.number - currBlkNum) * Additional; // safeMath _mint(address(0), enough); }}
abi
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"blkNum","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"num","type":"uint256"}],"name":"onAdditional","type":"event"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"Additional","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currBlkNum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]
Other answers 1:
Other answers 2:
Other answers 3:
copyright notice
author[Q & A of Denglian community],Please bring the original link to reprint, thank you.
https://en.netfreeman.com/2022/02/202202032316483847.html
The sidebar is recommended
- How to find blockchain teachers?
- In solidity_ What do you mean?
- Can flutter be used
- Learning aggregate signature information
- Can a solid contract implement a method at a fixed point in time every day
- Excuse me? How does Ethereum obtain a certain number of transactions
- Use openzeppelin to deploy contracts that can be upgraded. How do you see the address of your contract after deployment? You can only see the contracts of openzeppelin systems in the browser?
- After calling mycontract methods. myfunction(a,b). Send() reports an error
- What does the public key of the transaction in the blockchain mean?
- How to build an etc node
guess what you like
-
Can the solidness contract be debugged in one step like ordinary code?
-
How to implement the GSN method that users can execute the contract without handling charges
-
Real project, pay for help: want to learn how to get money on decentralized exchanges such as uniswap!
-
An error occurs when truffle compiles sol files
-
Truffle compilation error type (c) Creationcode compilation failed
-
How does smart contract use oracle
-
The execution process of smart contract is too long
-
Error: invalid JSON RPC response: typeerror: t is not a function
-
Use the openzeppelin part to see an upgradeable contract. In the business contract part, NPX oz Verigy has always failed to verify. It has been successful before. By comparison, it can only be caused by a large amount of code,
-
web3. How to handle the cross domain of JS link test chain
Random recommended
- How does Ethereum keep sending transactions
- Deploying scalable contracts with openzeppelin doesn't consume much gas limit in repsten network. Why is it so high in mainnet? It has failed all the time
- Truffle cannot download the version specified by the Solc compiler
- How to develop Ethereum smart wallet?
- Is there a way for golang to monitor eth transfer?
- Address (uint160 (users [beneficial_eth_finish]) is executed in the smart contract An error is reported when transfer() transfers eth to an address
- The gas limit for deploying smart contract has been set to 800W, which is the largest. What should I do if it is insufficient,
- The problem of transferring eth to other contracts in the contract?
- Using for loop in smart contract may consume gas, but is there a better one
- How can such a set in the contract need so many gas?
- The gas limit is not enough for the problem that the contract is transferred to eth
- How does Ethereum call deployed contracts within a contract?
- Help ~ ~ ~ uniswap submit issue
- Eth contract
- There is a very long array to be traversed in the contract, such as 10 million data, but it may be changed to two in practice. Then execute this method. Will gas limit out of
- How to obtain the pending transaction of Ethereum network in real time??
- Can't the method in the contract be transferred into eth at the same time
- VM error : Invalid opcode. How to solve it
- EOS sending transaction problem
- About the code that is executed only once a day in the course time of the series of solid courses
- It involves the transfer of different public chain assets, for example, from BTC public chain to EOS smart contract. Why should we issue a non BTS relay contract in the middle of a BTS relay contract? Is it a smart contract that can't accommodate so many
- Can an eth contract method be implemented?
- ERROR: 1.13.4 is required to build Fabric and you are using . Please update go
- How do languages other than JS interact with smart contracts?
- Copy the contract code that has been deployed on the chain. When Remix deploys again, it will prompt eip170. How is the original contract deployed?
- Open a defi project with demo. Why can't you automatically connect to the wallet and get the wallet assets
- Fabric 2.0, peer lifecycle chaincode approveformyorg: error: timed out waiting for txid on all peers!
- How to parse the input data of the transaction generated when eth deploys the contract?
- ethers. The problem of token transaction in JS
- Installing the extendermint installation tool and relying on error reporting
- How to customize the currency circulation and reward mechanism based on Ethereum private chain
- How to calculate the gap velocity
- ethers. JS could not detect network (event ='nonetwork ') appears on the real machine debugging of uniapp
- How to calculate uniswap initcode hash
- Uniswap and truffle build local test chain
- How to get Merkle proof of Ethereum log
- How to calculate the value of LP token in uniswap.
- Is Remix ide not working?
- 'Migrations' -- Returned error: invalid transaction v, r, s values. Does anyone know how to solve this problem?
- The packages I downloaded directly from the truss unbox webpack cannot be deployed successfully. Do you know what the problem is