4. Compliance
Currently, the functionalities implemented and the interfaces defined by ERC-1000 are compliant with ERC-20 and ERC-721 standards, specifically as follows:
4.1 ERC-20 Compliance
No.
Item
Description
Status
1.
name()
Is declared as a public view function
✓
Returns a string, for example “Tether USD”
✓
2.
symbol()
Is declared as a public view function
✓
Returns the symbol by which the token contract should be known, for example “USDT”. It is usually 3 or 4 characters in length
✓
3.
Decimals()
Is declared as a public view function
✓
Returns decimals, which refers to how divisible a token can be, from 0 (not at all divisible) to 18 (divisible) and even higher if required
✓
4.
totalSupply()
Is declared as a public view function
✓
Returns the number of total supplied tokens, including the total minted tokens (minus the total burned tokens) ever since the deployment
✓
5.
balanceOf()
Is declared as a public view function
✓
Anyone can query any addresses’ balance as all data on the blockchain is public
✓
6.
allowance()
Is declared as a public view function
✓
Returns the amount which the spender is still allowed to withdraw from the owner
✓
7.
transfer()
Is declared as a public function
✓
Returns a boolean value which accurately reflects the token transfer status
✓
Reverts if the caller does not have enough tokens to spend
✓
Allows zero amount transfers
✓
Emits Transfer() event when tokens are transferred successfully (include 0 amount transfers)
✓
Reverts while transferring to zero address
✓
8.
transferFrom()
Is declared as a public function
✓
Returns a boolean value which accurately reflects the token transfer status
✓
Reverts if the spender does not have enough token allowances to spend
✓
Updates the spender’s token allowances when tokens are transferred successfully
✓
Reverts if the from address does not have enough tokens to spend
✓
Allows zero amount transfers
✓
Emits Transfer() event when tokens are transferred successfully (including zero amount transfers)
✓
Is declared as a public function
✓
Reverts while transferring from zero address
✓
9..
approve()
Is declared as a public function
✓
Returns a boolean value which accurately reflects the token approval status
✓
Emits Approval() event when tokens are approved successfully
✓
Reverts while approving to zero address
✓
10.
Transfer()event
Is emitted when tokens are transferred, including zero value transfers
✓
Is emitted with the from address set to 𝑎𝑑𝑑𝑟𝑒𝑠𝑠(0𝑥0) when new tokens are generated
✓
11.
Approval()event
Is emitted on any successful call to approve()
✓
5.2 ERC-721 Compliance
No.
Item
Description
Status
1.
balanceOf()
Is declared as a public view function
✓
Anyone can query any addresses’ balance as all data on the blockchain is public
✓
2.
ownerOf()
Is declared as a public view function
✓
Returns the address of the owner of the NFT
✓
3.
getApproved()
Is declared as a public view function
✓
Reverts while ‘_tokenId’ does not exist
✓
Returns the approved address for this NFT
✓
4.
isApprovedForAll()
Is declared as a public view function
✓
Returns a boolean value which check ‘_operator’ is an approved operator
✓
5.
safeTransferFrom()
Is declared as a public function
✓
Reverts while ‘to’ refers to a smart contract and not implement IERC721Receiver-onERC721Received
✓
Reverts unless ‘msg.sender’ is the current owner, an authorized operator, or the approved address for this NFT
✓
Reverts while ‘_tokenId’ is not a valid NFT
✓
Reverts while ‘_from’ is not the current owner
✓
Reverts while transferring to zero address
✓
Emits Transfer() event when tokens are transferred successfully
✓
6.
transferFrom()
Is declared as a public function
✓
Reverts unless ‘msg.sender’ is the current owner, an authorized operator, or the approved address for this NFT
✓
Reverts while ‘_tokenId’ is not a valid NFT
✓
Reverts while ‘_from’ is not the current owner
✓
Reverts while transferring to zero address
✓
Emits Transfer() event when tokens are transferred successfully
✓
7.
approve()
Is declared as a public function
✓
Reverts unless ‘msg.sender’ is the current owner, an authorized operator, or the approved address for this NFT
✓
Emits Approval() event when tokens are approved successfully
✓
Reverts while approving to zero address
✓
8.
setApprovalForAll()
Is declared as a public function
✓
Reverts while not approving to caller
✓
Emits ApprovalForAll() event when tokens are approved successfully
✓
9.
Transfer()event
Is emitted when tokens are transferred`
✓
10.
Approval()event
Is emitted on any successful call to approve()
✓
11.
ApprovalForAll()event
Is emitted on any successful call to setApprovalForAll()
✓
Last updated