This task is about building a ETH/ERC20/ERC721 balance tracker for all addresses that happened on Ethereum Mainnet.
We would start with by tracking all ETH/ERC20/ERC721 events and build up a Substreams that emit K/V operations to make that possible. A series of custom gRPC API would be made available to query token balance information for address/contract, for list of token + balance for a given user.
We would leave aside for now metadata information (ERC20 contract's name & symbol) as it's not easy to do it properly in all cases.
We could also decide to start only with ETH and ERC20, but since we have already here and there code for ERC721, shouldn't be a problem to unify it all.
Sub-Objective
One goal of doing this work will be to also design the perfect "live" system for substreams-sink-kv, issue to come.
This task is about building a ETH/ERC20/ERC721 balance tracker for all addresses that happened on Ethereum Mainnet.
We would start with by tracking all ETH/ERC20/ERC721 events and build up a Substreams that emit K/V operations to make that possible. A series of custom gRPC API would be made available to query token balance information for address/contract, for list of token + balance for a given user.
We would leave aside for now metadata information (ERC20 contract's name & symbol) as it's not easy to do it properly in all cases.
We could also decide to start only with ETH and ERC20, but since we have already here and there code for ERC721, shouldn't be a problem to unify it all.
Sub-Objective
One goal of doing this work will be to also design the perfect "live" system for
substreams-sink-kv
, issue to come.From Previous Issue
func userBalance(user, tokenContract) -> balance
func usersBalance(tokenContract) -> []{"bob": 123}
func userBalances(user) -> []{"0x123": 123, "0x456": 456}