AlphaWallet / AlphaWallet/alpha-wallet-android
Use ERC721Enumerable Interface if available
- Lingua principale
- Java
- Stelle
- 646
- Fork
- 579
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
- Create a new ERC721 type, ERC721_Enumerable (in ```ContractType```).
- Check if the ERC721 contract has the Enumerable interface (```TokenRepository```, find the correct value for ```INTERFACE_ERC721ENUMERABLE```). ```bytes4 private constant _INTERFACE_ID_ERC721_ENUMERABLE = 0x780e9d63;```
- Label the ERC721 which we now know is an Enumerable as ERC721_Enumerable, when we do the ```determineCommonType()```
- ~~Inherit the ```ERC721Token``` class and override the ```updateBalance``` method to create the class.~~
Instead of needing to trawl event history we can fetch full TokenId balance with only two calls.
First calling the ```balanceOf(address)``` - which is already done by the default ERC721 balance update before ```updateBalance``` is called, then crawling the indices {0 -> balance count} up to the balance count by calling the contract function:
```uint256 tokenOfOwnerByIndex({wallet address}, index)```
This function returns the TokenId at the index eg.
Balance of NFT is 3 tokens, check tokenOfOwnerByIndex for 0,1,2 ->
0 -> 2556
1 -> 3456
2 -> 4431
Then we have all the TokenIds owned by the wallet without needing to trawl the event list, in only 1 extra call.
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Valutazione
Questa issue non è ancora stata valutata.