Adding to @Harshad answer.
These are things you should check:
(1) Compiler version as @Harshad saying.
(2) Optimization is enabled or not. If you are using remix, then you will find in compile section.
(3) If you are using any libraries (which it does not seems you are, from your code. But just to double confirm), then you should input those libraries as well.
(4) Lastly, the solidity code must be exact code which you used to compile ;)
Good luck!
There's an infinite number of ways in which an ERC-20/ BEP-20 contract can be implemented.
In your case, the token contract has two modifiers set on the transfer
function:
function transfer(address to, uint256 value)
external
override
validRecipient(to)
initialDistributionLock
returns (bool)
{
_transferFrom(msg.sender, to, value);
return true;
}
Your contract call passes the first modifier validRecipient
because that checks only whether the recipient is not the zero address. But the second modifier initialDistributionLock
...
modifier initialDistributionLock() {
require(
initialDistributionFinished ||
isOwner() ||
allowTransfer[msg.sender]
);
_;
}
initialDistributionFinished
is a storage boolean that is currently set to false
. And since 0x82a55de9d15b13eb6db1b6526d9e6e2e25397903
is neither the owner of the contract nor it has enabled transfers by being set in the allowTransfer
mapping, the contract call is reverted.
Therefore, transfers are disabled during the "initial distribution" phase. If you have access to the owner account, you should be able to set this flag to true
and make your transfer.
Best Answer
It is a warning, Etherscan is looking for the
Transfer(sender,recipient,amount)
event and it can't find it because ERC223 uses slightly different eventTransfer(sender,recipient,amount,data)
.It shouldn't be a problem. Perhaps a wallet that is not aware of ERC223 tokens will not update the balance correctly, but the balance should be correct on the blockchain.