From 804b5b43b49f5561d6049553a5233c42c754f134 Mon Sep 17 00:00:00 2001 From: IvanBelyakoff Date: Tue, 14 Mar 2023 20:33:05 +0300 Subject: [PATCH] feat(Wallet): implement token list from Uniswap (#3273) Fixes #8807 --- services/wallet/token/token.go | 101 +- services/wallet/token/token_test.go | 123 +- services/wallet/token/tokenstore.go | 3336 ++++++++++--------- services/wallet/token/uniswap_tokenstore.go | 54 + 4 files changed, 1920 insertions(+), 1694 deletions(-) create mode 100644 services/wallet/token/uniswap_tokenstore.go diff --git a/services/wallet/token/token.go b/services/wallet/token/token.go index b40b2f8bc..b33a29f69 100644 --- a/services/wallet/token/token.go +++ b/services/wallet/token/token.go @@ -5,6 +5,7 @@ import ( "database/sql" "errors" "math/big" + "strconv" "sync" "time" @@ -49,6 +50,9 @@ type Manager struct { db *sql.DB RPCClient *rpc.Client networkManager *network.Manager + stores []store + tokenList []*Token + tokenMap storeMap } func NewTokenManager( @@ -56,49 +60,52 @@ func NewTokenManager( RPCClient *rpc.Client, networkManager *network.Manager, ) *Manager { - tokenManager := &Manager{db, RPCClient, networkManager} - - overrideTokensInPlace(networkManager.GetConfiguredNetworks(), tokenStore) + defaultStore := newDefaultStore() + // Order of stores is important when merging token lists. The former prevale + tokenManager := &Manager{db, RPCClient, networkManager, []store{newUniswapStore(), defaultStore}, nil, nil} return tokenManager } // overrideTokensInPlace overrides tokens in the store with the ones from the networks // BEWARE: overridden tokens will have their original address removed and replaced by the one in networks -func overrideTokensInPlace(networks []params.Network, store map[uint64]map[common.Address]*Token) { +func overrideTokensInPlace(networks []params.Network, tokens []*Token) { for _, network := range networks { if len(network.TokenOverrides) == 0 { continue } - // Map from original address to overridden address - overriddenMap := make(map[common.Address]common.Address, len(network.TokenOverrides)) - tokensMap, ok := store[network.ChainID] - if !ok { - continue - } for _, overrideToken := range network.TokenOverrides { - for _, token := range tokensMap { + for _, token := range tokens { if token.Symbol == overrideToken.Symbol { - overriddenMap[token.Address] = overrideToken.Address + token.Address = overrideToken.Address } } } - for originalAddress, newAddress := range overriddenMap { - newToken := *tokensMap[originalAddress] - tokensMap[newAddress] = &newToken - newToken.Address = newAddress + } +} - delete(tokensMap, originalAddress) +func mergeTokenLists(sliceLists [][]*Token) []*Token { + allKeys := make(map[string]bool) + res := []*Token{} + for _, list := range sliceLists { + for _, token := range list { + key := strconv.FormatUint(token.ChainID, 10) + token.Address.String() + if _, value := allKeys[key]; !value { + allKeys[key] = true + res = append(res, token) + } } } + return res } func (tm *Manager) inStore(address common.Address, chainID uint64) bool { if address == nativeChainAddress { return true } - tokensMap, ok := tokenStore[chainID] + + tokensMap, ok := tm.tokenMap[chainID] if !ok { return false } @@ -107,6 +114,31 @@ func (tm *Manager) inStore(address common.Address, chainID uint64) bool { return ok } +func (tm *Manager) areTokensFetched() bool { + for _, store := range tm.stores { + if !store.areTokensFetched() { + return false + } + } + + return true +} + +func (tm *Manager) fetchTokens() []*Token { + result := make([]*Token, 0) + for _, store := range tm.stores { + tokens, err := store.GetTokens() + if err != nil { + log.Error("can't fetch tokens from store: %s", err) + continue + } + + result = mergeTokenLists([][]*Token{result, tokens}) + } + + return result +} + func (tm *Manager) FindToken(network *params.Network, tokenSymbol string) *Token { if tokenSymbol == network.NativeCurrencySymbol { return tm.ToToken(network) @@ -130,12 +162,12 @@ func (tm *Manager) FindToken(network *params.Network, tokenSymbol string) *Token } func (tm *Manager) FindSNT(chainID uint64) *Token { - tokensMap, ok := tokenStore[chainID] - if !ok { + tokens, err := tm.GetTokens(chainID) + if err != nil { return nil } - for _, token := range tokensMap { + for _, token := range tokens { if token.Symbol == "SNT" || token.Symbol == "STT" { return token } @@ -163,25 +195,27 @@ func (tm *Manager) GetAllTokensAndNativeCurrencies() ([]*Token, error) { } func (tm *Manager) GetAllTokens() ([]*Token, error) { - result := make([]*Token, 0) - for _, tokens := range tokenStore { - for _, token := range tokens { - result = append(result, token) - } + if tm.areTokensFetched() { + return tm.tokenList, nil } + tm.tokenList = tm.fetchTokens() + tokens, err := tm.GetCustoms() if err != nil { - return nil, err + log.Error("can't fetch custom tokens: %s", err) } - result = append(result, tokens...) + tm.tokenList = append(tm.tokenList, tokens...) + tm.tokenMap = toTokenMap(tm.tokenList) - return result, nil + overrideTokensInPlace(tm.networkManager.GetConfiguredNetworks(), tm.tokenList) + + return tm.tokenList, nil } func (tm *Manager) GetTokens(chainID uint64) ([]*Token, error) { - tokensMap, ok := tokenStore[chainID] + tokensMap, ok := tm.tokenMap[chainID] if !ok { return nil, errors.New("no tokens for this network") } @@ -348,7 +382,12 @@ func (tm *Manager) GetVisible(chainIDs []uint64) (map[uint64][]*Token, error) { } found := false - for _, token := range tokenStore[chainID] { + tokens, err := tm.GetTokens(chainID) + if err != nil { + continue + } + + for _, token := range tokens { if token.Address == address { rst[chainID] = append(rst[chainID], token) found = true diff --git a/services/wallet/token/token_test.go b/services/wallet/token/token_test.go index 067b42ce1..7b4fa58c3 100644 --- a/services/wallet/token/token_test.go +++ b/services/wallet/token/token_test.go @@ -1,6 +1,7 @@ package token import ( + "reflect" "testing" "github.com/stretchr/testify/require" @@ -14,7 +15,7 @@ import ( func setupTestTokenDB(t *testing.T) (*Manager, func()) { db, err := appdatabase.InitializeDB(":memory:", "wallet-token-tests", 1) require.NoError(t, err) - return &Manager{db, nil, nil}, func() { + return &Manager{db, nil, nil, nil, nil, nil}, func() { require.NoError(t, db.Close()) } } @@ -74,35 +75,103 @@ func TestTokenOverride(t *testing.T) { }, }, } - testTokenStore := map[uint64]map[common.Address]*Token{ - 1: { - common.Address{1}: { - Address: common.Address{1}, - Symbol: "SNT", - }, - common.Address{2}: { - Address: common.Address{2}, - Symbol: "TNT", - }, + + tokenList := []*Token{ + &Token{ + Address: common.Address{1}, + Symbol: "SNT", + ChainID: 1, }, - 2: { - common.Address{3}: { - Address: common.Address{3}, - Symbol: "STT", - }, - common.Address{4}: { - Address: common.Address{4}, - Symbol: "TTT", - }, + &Token{ + Address: common.Address{2}, + Symbol: "TNT", + ChainID: 1, + }, + &Token{ + Address: common.Address{3}, + Symbol: "STT", + ChainID: 2, + }, + &Token{ + Address: common.Address{4}, + Symbol: "TTT", + ChainID: 2, }, } - overrideTokensInPlace(networks, testTokenStore) - _, found := testTokenStore[1][common.Address{1}] + testStore := &DefaultStore{ + tokenList, + false, + } + + overrideTokensInPlace(networks, testStore.tokenList) + tokens, err := testStore.GetTokens() + require.NoError(t, err) + tokenMap := toTokenMap(tokens) + _, found := tokenMap[1][common.Address{1}] require.False(t, found) - require.Equal(t, common.Address{11}, testTokenStore[1][common.Address{11}].Address) - require.Equal(t, common.Address{2}, testTokenStore[1][common.Address{2}].Address) - _, found = testTokenStore[2][common.Address{3}] + require.Equal(t, common.Address{11}, tokenMap[1][common.Address{11}].Address) + require.Equal(t, common.Address{2}, tokenMap[1][common.Address{2}].Address) + _, found = tokenMap[2][common.Address{3}] require.False(t, found) - require.Equal(t, common.Address{33}, testTokenStore[2][common.Address{33}].Address) - require.Equal(t, common.Address{4}, testTokenStore[2][common.Address{4}].Address) + require.Equal(t, common.Address{33}, tokenMap[2][common.Address{33}].Address) + require.Equal(t, common.Address{4}, tokenMap[2][common.Address{4}].Address) +} + +func TestMergeTokenLists(t *testing.T) { + tokenList1 := []*Token{ + &Token{ + Address: common.Address{1}, + Symbol: "SNT", + ChainID: 1, + }, + } + tokenList1Copy := []*Token{ + &Token{ + Address: common.Address{1}, + Symbol: "SNT", + ChainID: 1, + }, + } + tokenList2 := []*Token{ + &Token{ + Address: common.Address{3}, + Symbol: "STT", + ChainID: 2, + }, + &Token{ + Address: common.Address{4}, + Symbol: "TTT", + ChainID: 2, + }, + } + tokenList1Plus2 := []*Token{ + &Token{ + Address: common.Address{1}, + Symbol: "SNT", + ChainID: 1, + }, + &Token{ + Address: common.Address{3}, + Symbol: "STT", + ChainID: 2, + }, + &Token{ + Address: common.Address{4}, + Symbol: "TTT", + ChainID: 2, + }, + } + tokenListEmpty := []*Token{} + + mergedList := mergeTokenLists([][]*Token{tokenListEmpty, tokenListEmpty}) + require.Equal(t, 0, len(mergedList)) + + mergedList = mergeTokenLists([][]*Token{tokenListEmpty, tokenList1}) + require.True(t, reflect.DeepEqual(mergedList, tokenList1)) + + mergedList = mergeTokenLists([][]*Token{tokenList1, tokenList1Copy}) + require.True(t, reflect.DeepEqual(mergedList, tokenList1)) + + mergedList = mergeTokenLists([][]*Token{tokenList1, tokenList2}) + require.True(t, reflect.DeepEqual(mergedList, tokenList1Plus2)) } diff --git a/services/wallet/token/tokenstore.go b/services/wallet/token/tokenstore.go index 52adccd39..4a813846c 100644 --- a/services/wallet/token/tokenstore.go +++ b/services/wallet/token/tokenstore.go @@ -1,6 +1,21 @@ package token -import "github.com/ethereum/go-ethereum/common" +import ( + "encoding/json" + "errors" + + "github.com/xeipuuv/gojsonschema" + + "github.com/ethereum/go-ethereum/common" +) + +type addressTokenMap = map[common.Address]*Token +type storeMap = map[uint64]addressTokenMap + +type store interface { + GetTokens() ([]*Token, error) + areTokensFetched() bool +} var tokenPeg = map[string]string{ "aUSDC": "USD", @@ -23,1639 +38,1688 @@ func GetTokenPegSymbol(symbol string) string { return tokenPeg[symbol] } -var tokenStore = map[uint64]map[common.Address]*Token{ - 1: { - common.HexToAddress("0x6b175474e89094c44da98b954eedeac495271d0f"): &Token{ - Address: common.HexToAddress("0x6b175474e89094c44da98b954eedeac495271d0f"), - Name: "Dai Stablecoin", - Symbol: "DAI", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359"): &Token{ - Address: common.HexToAddress("0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359"), - Name: "Sai Stablecoin v1.0", - Symbol: "SAI", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2"): &Token{ - Address: common.HexToAddress("0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2"), - Name: "MKR", - Symbol: "MKR", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0"): &Token{ - Address: common.HexToAddress("0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0"), - Name: "EOS", - Symbol: "EOS", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xd26114cd6ee289accf82350c8d8487fedb8a0c07"): &Token{ - Address: common.HexToAddress("0xd26114cd6ee289accf82350c8d8487fedb8a0c07"), - Name: "OMGToken", - Symbol: "OMG", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xd4fa1460f537bb9085d22c7bccb5dd450ef28e3a"): &Token{ - Address: common.HexToAddress("0xd4fa1460f537bb9085d22c7bccb5dd450ef28e3a"), - Name: "Populous Platform", - Symbol: "PPT", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0x1985365e9f78359a9b6ad760e32412f4a445e862"): &Token{ - Address: common.HexToAddress("0x1985365e9f78359a9b6ad760e32412f4a445e862"), - Name: "Reputation", - Symbol: "REP", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x595832f8fc6bf59c85c527fec3740a1b7a361269"): &Token{ - Address: common.HexToAddress("0x595832f8fc6bf59c85c527fec3740a1b7a361269"), - Name: "PowerLedger", - Symbol: "POWR", - Color: "#f8f8f8", - Decimals: 6, - ChainID: 1, - }, - common.HexToAddress("0xb97048628db6b661d4c2aa833e95dbe1a905b280"): &Token{ - Address: common.HexToAddress("0xb97048628db6b661d4c2aa833e95dbe1a905b280"), - Name: "TenX Pay Token", - Symbol: "PAY", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x92e78dae1315067a8819efd6dca432de9dcde2e9"): &Token{ - Address: common.HexToAddress("0x92e78dae1315067a8819efd6dca432de9dcde2e9"), - Name: "Veros", - Symbol: "VRS", - Color: "#f8f8f8", - Decimals: 6, - ChainID: 1, - }, - common.HexToAddress("0xa74476443119a942de498590fe1f2454d7d4ac0d"): &Token{ - Address: common.HexToAddress("0xa74476443119a942de498590fe1f2454d7d4ac0d"), - Name: "Golem Network Token", - Symbol: "GNT", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x4156d3342d5c385a87d264f90653733592000581"): &Token{ - Address: common.HexToAddress("0x4156d3342d5c385a87d264f90653733592000581"), - Name: "Salt", - Symbol: "SALT", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0xb8c77482e45f1f44de1745f52c74426c631bdd52"): &Token{ - Address: common.HexToAddress("0xb8c77482e45f1f44de1745f52c74426c631bdd52"), - Name: "BNB", - Symbol: "BNB", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x0d8775f648430679a709e98d2b0cb6250d2887ef"): &Token{ - Address: common.HexToAddress("0x0d8775f648430679a709e98d2b0cb6250d2887ef"), - Name: "Basic Attention Token", - Symbol: "BAT", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xdd974d5c2e2928dea5f71b9825b8b646686bd200"): &Token{ - Address: common.HexToAddress("0xdd974d5c2e2928dea5f71b9825b8b646686bd200"), - Name: "Kyber Network Crystal", - Symbol: "KNC", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xb683D83a532e2Cb7DFa5275eED3698436371cc9f"): &Token{ - Address: common.HexToAddress("0xb683D83a532e2Cb7DFa5275eED3698436371cc9f"), - Name: "BTU Protocol", - Symbol: "BTU", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xe0b7927c4af23765cb51314a0e0521a9645f0e2a"): &Token{ - Address: common.HexToAddress("0xe0b7927c4af23765cb51314a0e0521a9645f0e2a"), - Name: "Digix DAO", - Symbol: "DGD", - Color: "#f8f8f8", - Decimals: 9, - ChainID: 1, - }, - common.HexToAddress("0x5ca9a71b1d01849c0a95490cc00559717fcf0d1d"): &Token{ - Address: common.HexToAddress("0x5ca9a71b1d01849c0a95490cc00559717fcf0d1d"), - Name: "Aeternity", - Symbol: "AE", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xf230b790e05390fc8295f4d3f60332c93bed42e2"): &Token{ - Address: common.HexToAddress("0xf230b790e05390fc8295f4d3f60332c93bed42e2"), - Name: "Tronix", - Symbol: "TRX", - Color: "#f8f8f8", - Decimals: 6, - ChainID: 1, - }, - common.HexToAddress("0x255aa6df07540cb5d3d297f0d0d4d84cb52bc8e6"): &Token{ - Address: common.HexToAddress("0x255aa6df07540cb5d3d297f0d0d4d84cb52bc8e6"), - Name: "Raiden Token", - Symbol: "RDN", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x744d70fdbe2ba4cf95131626614a1763df805b9e"): &Token{ - Address: common.HexToAddress("0x744d70fdbe2ba4cf95131626614a1763df805b9e"), - Name: "Status Network Token", - Symbol: "SNT", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xaec2e87e0a235266d9c5adc9deb4b2e29b54d009"): &Token{ - Address: common.HexToAddress("0xaec2e87e0a235266d9c5adc9deb4b2e29b54d009"), - Name: "SingularDTV", - Symbol: "SNGLS", - Color: "#f8f8f8", - Decimals: 0, - ChainID: 1, - }, - common.HexToAddress("0x6810e776880c02933d47db1b9fc05908e5386b96"): &Token{ - Address: common.HexToAddress("0x6810e776880c02933d47db1b9fc05908e5386b96"), - Name: "Gnosis Token", - Symbol: "GNO", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xb64ef51c888972c908cfacf59b47c1afbc0ab8ac"): &Token{ - Address: common.HexToAddress("0xb64ef51c888972c908cfacf59b47c1afbc0ab8ac"), - Name: "StorjToken", - Symbol: "STORJ", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0x4470bb87d77b963a013db939be332f927f2b992e"): &Token{ - Address: common.HexToAddress("0x4470bb87d77b963a013db939be332f927f2b992e"), - Name: "AdEx", - Symbol: "ADX", - Color: "#f8f8f8", - Decimals: 4, - ChainID: 1, - }, - common.HexToAddress("0x419d0d8bdd9af5e606ae2232ed285aff190e711b"): &Token{ - Address: common.HexToAddress("0x419d0d8bdd9af5e606ae2232ed285aff190e711b"), - Name: "FunFair", - Symbol: "FUN", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0x41e5560054824ea6b0732e656e3ad64e20e94e45"): &Token{ - Address: common.HexToAddress("0x41e5560054824ea6b0732e656e3ad64e20e94e45"), - Name: "Civic", - Symbol: "CVC", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0x888666ca69e0f178ded6d75b5726cee99a87d698"): &Token{ - Address: common.HexToAddress("0x888666ca69e0f178ded6d75b5726cee99a87d698"), - Name: "ICONOMI", - Symbol: "ICN", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xb7cb1c96db6b22b0d3d9536e0108d062bd488f74"): &Token{ - Address: common.HexToAddress("0xb7cb1c96db6b22b0d3d9536e0108d062bd488f74"), - Name: "Walton Token", - Symbol: "WTC", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xcb97e65f07da24d46bcdd078ebebd7c6e6e3d750"): &Token{ - Address: common.HexToAddress("0xcb97e65f07da24d46bcdd078ebebd7c6e6e3d750"), - Name: "Bytom", - Symbol: "BTM", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0xe41d2489571d322189246dafa5ebde1f4699f498"): &Token{ - Address: common.HexToAddress("0xe41d2489571d322189246dafa5ebde1f4699f498"), - Name: "0x Protocol Token", - Symbol: "ZRX", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c"): &Token{ - Address: common.HexToAddress("0x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c"), - Name: "Bancor Network Token", - Symbol: "BNT", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xf433089366899d83a9f26a773d59ec7ecf30355e"): &Token{ - Address: common.HexToAddress("0xf433089366899d83a9f26a773d59ec7ecf30355e"), - Name: "Metal", - Symbol: "MTL", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0xc42209accc14029c1012fb5680d95fbd6036e2a0"): &Token{ - Address: common.HexToAddress("0xc42209accc14029c1012fb5680d95fbd6036e2a0"), - Name: "PayPie", - Symbol: "PPP", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x514910771af9ca656af840dff83e8264ecf986ca"): &Token{ - Address: common.HexToAddress("0x514910771af9ca656af840dff83e8264ecf986ca"), - Name: "ChainLink Token", - Symbol: "LINK", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x818fc6c2ec5986bc6e2cbf00939d90556ab12ce5"): &Token{ - Address: common.HexToAddress("0x818fc6c2ec5986bc6e2cbf00939d90556ab12ce5"), - Name: "Kin", - Symbol: "KIN", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x960b236a07cf122663c4303350609a66a7b288c0"): &Token{ - Address: common.HexToAddress("0x960b236a07cf122663c4303350609a66a7b288c0"), - Name: "Aragon Network Token", - Symbol: "ANT", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x40395044ac3c0c57051906da938b54bd6557f212"): &Token{ - Address: common.HexToAddress("0x40395044ac3c0c57051906da938b54bd6557f212"), - Name: "MobileGo Token", - Symbol: "MGO", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0xb63b606ac810a52cca15e44bb630fd42d8d1d83d"): &Token{ - Address: common.HexToAddress("0xb63b606ac810a52cca15e44bb630fd42d8d1d83d"), - Name: "Monaco", - Symbol: "MCO", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0xbbbbca6a901c926f240b89eacb641d8aec7aeafd"): &Token{ - Address: common.HexToAddress("0xbbbbca6a901c926f240b89eacb641d8aec7aeafd"), - Name: "LoopringCoin V2", - Symbol: "LRC", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x7a41e0517a5eca4fdbc7fbeba4d4c47b9ff6dc63"): &Token{ - Address: common.HexToAddress("0x7a41e0517a5eca4fdbc7fbeba4d4c47b9ff6dc63"), - Name: "Zeus Shield Coin", - Symbol: "ZSC", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x0cf0ee63788a0849fe5297f3407f701e122cc023"): &Token{ - Address: common.HexToAddress("0x0cf0ee63788a0849fe5297f3407f701e122cc023"), - Name: "Streamr (old)", - Symbol: "XDATA", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xf970b8e36e23f7fc3fd752eea86f8be8d83375a6"): &Token{ - Address: common.HexToAddress("0xf970b8e36e23f7fc3fd752eea86f8be8d83375a6"), - Name: "Ripio Credit Network Token", - Symbol: "RCN", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x667088b212ce3d06a1b553a7221e1fd19000d9af"): &Token{ - Address: common.HexToAddress("0x667088b212ce3d06a1b553a7221e1fd19000d9af"), - Name: "WINGS", - Symbol: "WINGS", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x08711d3b02c8758f2fb3ab4e80228418a7f8e39c"): &Token{ - Address: common.HexToAddress("0x08711d3b02c8758f2fb3ab4e80228418a7f8e39c"), - Name: "Edgeless", - Symbol: "EDG", - Color: "#f8f8f8", - Decimals: 0, - ChainID: 1, - }, - common.HexToAddress("0xbeb9ef514a379b997e0798fdcc901ee474b6d9a1"): &Token{ - Address: common.HexToAddress("0xbeb9ef514a379b997e0798fdcc901ee474b6d9a1"), - Name: "Melon Token", - Symbol: "MLN", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x51db5ad35c671a87207d88fc11d593ac0c8415bd"): &Token{ - Address: common.HexToAddress("0x51db5ad35c671a87207d88fc11d593ac0c8415bd"), - Name: "Moeda Loyalty Points", - Symbol: "MDA", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xe3818504c1b32bf1557b16c238b2e01fd3149c17"): &Token{ - Address: common.HexToAddress("0xe3818504c1b32bf1557b16c238b2e01fd3149c17"), - Name: "PILLAR", - Symbol: "PLR", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x697beac28b09e122c4332d163985e8a73121b97f"): &Token{ - Address: common.HexToAddress("0x697beac28b09e122c4332d163985e8a73121b97f"), - Name: "QRL", - Symbol: "QRL", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0x957c30ab0426e0c93cd8241e2c60392d08c6ac8e"): &Token{ - Address: common.HexToAddress("0x957c30ab0426e0c93cd8241e2c60392d08c6ac8e"), - Name: "Modum Token", - Symbol: "MOD", - Color: "#f8f8f8", - Decimals: 0, - ChainID: 1, - }, - common.HexToAddress("0xe7775a6e9bcf904eb39da2b68c5efb4f9360e08c"): &Token{ - Address: common.HexToAddress("0xe7775a6e9bcf904eb39da2b68c5efb4f9360e08c"), - Name: "Token-as-a-Service", - Symbol: "TAAS", - Color: "#f8f8f8", - Decimals: 6, - ChainID: 1, - }, - common.HexToAddress("0x12b19d3e2ccc14da04fae33e63652ce469b3f2fd"): &Token{ - Address: common.HexToAddress("0x12b19d3e2ccc14da04fae33e63652ce469b3f2fd"), - Name: "GRID Token", - Symbol: "GRID", - Color: "#f8f8f8", - Decimals: 12, - ChainID: 1, - }, - common.HexToAddress("0x7c5a0ce9267ed19b22f8cae653f198e3e8daf098"): &Token{ - Address: common.HexToAddress("0x7c5a0ce9267ed19b22f8cae653f198e3e8daf098"), - Name: "SANtiment network token", - Symbol: "SAN", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x983f6d60db79ea8ca4eb9968c6aff8cfa04b3c63"): &Token{ - Address: common.HexToAddress("0x983f6d60db79ea8ca4eb9968c6aff8cfa04b3c63"), - Name: "SONM Token", - Symbol: "SNM", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x8f8221afbb33998d8584a2b05749ba73c37a938a"): &Token{ - Address: common.HexToAddress("0x8f8221afbb33998d8584a2b05749ba73c37a938a"), - Name: "Request Token", - Symbol: "REQ", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x12480e24eb5bec1a9d4369cab6a80cad3c0a377a"): &Token{ - Address: common.HexToAddress("0x12480e24eb5bec1a9d4369cab6a80cad3c0a377a"), - Name: "Substratum", - Symbol: "SUB", - Color: "#f8f8f8", - Decimals: 2, - ChainID: 1, - }, - common.HexToAddress("0x0f5d2fb29fb7d3cfee444a200298f468908cc942"): &Token{ - Address: common.HexToAddress("0x0f5d2fb29fb7d3cfee444a200298f468908cc942"), - Name: "Decentraland MANA", - Symbol: "MANA", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x27054b13b1b798b345b591a4d22e6562d47ea75a"): &Token{ - Address: common.HexToAddress("0x27054b13b1b798b345b591a4d22e6562d47ea75a"), - Name: "AirSwap Token", - Symbol: "AST", - Color: "#f8f8f8", - Decimals: 4, - ChainID: 1, - }, - common.HexToAddress("0x48f775efbe4f5ece6e0df2f7b5932df56823b990"): &Token{ - Address: common.HexToAddress("0x48f775efbe4f5ece6e0df2f7b5932df56823b990"), - Name: "R token", - Symbol: "R", - Color: "#f8f8f8", - Decimals: 0, - ChainID: 1, - }, - common.HexToAddress("0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc7"): &Token{ - Address: common.HexToAddress("0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc7"), - Name: "FirstBlood Token", - Symbol: "1ST", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x12fef5e57bf45873cd9b62e9dbd7bfb99e32d73e"): &Token{ - Address: common.HexToAddress("0x12fef5e57bf45873cd9b62e9dbd7bfb99e32d73e"), - Name: "Cofoundit", - Symbol: "CFI", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xf0ee6b27b759c9893ce4f094b49ad28fd15a23e4"): &Token{ - Address: common.HexToAddress("0xf0ee6b27b759c9893ce4f094b49ad28fd15a23e4"), - Name: "Enigma", - Symbol: "ENG", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0x4dc3643dbc642b72c158e7f3d2ff232df61cb6ce"): &Token{ - Address: common.HexToAddress("0x4dc3643dbc642b72c158e7f3d2ff232df61cb6ce"), - Name: "Amber Token", - Symbol: "AMB", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x90528aeb3a2b736b780fd1b6c478bb7e1d643170"): &Token{ - Address: common.HexToAddress("0x90528aeb3a2b736b780fd1b6c478bb7e1d643170"), - Name: "XPlay Token", - Symbol: "XPA", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x881ef48211982d01e2cb7092c915e647cd40d85c"): &Token{ - Address: common.HexToAddress("0x881ef48211982d01e2cb7092c915e647cd40d85c"), - Name: "Open Trading Network", - Symbol: "OTN", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xcb94be6f13a1182e4a4b6140cb7bf2025d28e41b"): &Token{ - Address: common.HexToAddress("0xcb94be6f13a1182e4a4b6140cb7bf2025d28e41b"), - Name: "Trustcoin", - Symbol: "TRST", - Color: "#f8f8f8", - Decimals: 6, - ChainID: 1, - }, - common.HexToAddress("0xaaaf91d9b90df800df4f55c205fd6989c977e73a"): &Token{ - Address: common.HexToAddress("0xaaaf91d9b90df800df4f55c205fd6989c977e73a"), - Name: "Monolith TKN", - Symbol: "TKN", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0x168296bb09e24a88805cb9c33356536b980d3fc5"): &Token{ - Address: common.HexToAddress("0x168296bb09e24a88805cb9c33356536b980d3fc5"), - Name: "RHOC", - Symbol: "RHOC", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0xac3da587eac229c9896d919abc235ca4fd7f72c1"): &Token{ - Address: common.HexToAddress("0xac3da587eac229c9896d919abc235ca4fd7f72c1"), - Name: "Target Coin", - Symbol: "TGT", - Color: "#f8f8f8", - Decimals: 1, - ChainID: 1, - }, - common.HexToAddress("0xf3db5fa2c66b7af3eb0c0b782510816cbe4813b8"): &Token{ - Address: common.HexToAddress("0xf3db5fa2c66b7af3eb0c0b782510816cbe4813b8"), - Name: "Everex", - Symbol: "EVX", - Color: "#f8f8f8", - Decimals: 4, - ChainID: 1, - }, - common.HexToAddress("0x014b50466590340d41307cc54dcee990c8d58aa8"): &Token{ - Address: common.HexToAddress("0x014b50466590340d41307cc54dcee990c8d58aa8"), - Name: "ICOS", - Symbol: "ICOS", - Color: "#f8f8f8", - Decimals: 6, - ChainID: 1, - }, - common.HexToAddress("0x0abdace70d3790235af448c88547603b945604ea"): &Token{ - Address: common.HexToAddress("0x0abdace70d3790235af448c88547603b945604ea"), - Name: "district0x Network Token", - Symbol: "DNT", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x08d32b0da63e2c3bcf8019c9c5d849d7a9d791e6"): &Token{ - Address: common.HexToAddress("0x08d32b0da63e2c3bcf8019c9c5d849d7a9d791e6"), - Name: "Dentacoin", - Symbol: "DCN", - Color: "#f8f8f8", - Decimals: 0, - ChainID: 1, - }, - common.HexToAddress("0xced4e93198734ddaff8492d525bd258d49eb388e"): &Token{ - Address: common.HexToAddress("0xced4e93198734ddaff8492d525bd258d49eb388e"), - Name: "Eidoo Token", - Symbol: "EDO", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x29d75277ac7f0335b2165d0895e8725cbf658d73"): &Token{ - Address: common.HexToAddress("0x29d75277ac7f0335b2165d0895e8725cbf658d73"), - Name: "BitDice", - Symbol: "CSNO", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0xb2f7eb1f2c37645be61d73953035360e768d81e6"): &Token{ - Address: common.HexToAddress("0xb2f7eb1f2c37645be61d73953035360e768d81e6"), - Name: "Cobinhood Token", - Symbol: "COB", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c"): &Token{ - Address: common.HexToAddress("0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c"), - Name: "Enjin Coin", - Symbol: "ENJ", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x0d88ed6e74bbfd96b831231638b66c05571e824f"): &Token{ - Address: common.HexToAddress("0x0d88ed6e74bbfd96b831231638b66c05571e824f"), - Name: "AVENTUS", - Symbol: "AVT", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x6531f133e6deebe7f2dce5a0441aa7ef330b4e53"): &Token{ - Address: common.HexToAddress("0x6531f133e6deebe7f2dce5a0441aa7ef330b4e53"), - Name: "Chronobank TIME", - Symbol: "TIME", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0xd4c435f5b09f855c3317c8524cb1f586e42795fa"): &Token{ - Address: common.HexToAddress("0xd4c435f5b09f855c3317c8524cb1f586e42795fa"), - Name: "Cindicator Token", - Symbol: "CND", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x006bea43baa3f7a6f765f14f10a1a1b08334ef45"): &Token{ - Address: common.HexToAddress("0x006bea43baa3f7a6f765f14f10a1a1b08334ef45"), - Name: "Stox", - Symbol: "STX", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x4df812f6064def1e5e029f1ca858777cc98d2d81"): &Token{ - Address: common.HexToAddress("0x4df812f6064def1e5e029f1ca858777cc98d2d81"), - Name: "Xaurum", - Symbol: "XAUR", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0x2c974b2d0ba1716e644c1fc59982a89ddd2ff724"): &Token{ - Address: common.HexToAddress("0x2c974b2d0ba1716e644c1fc59982a89ddd2ff724"), - Name: "Vibe", - Symbol: "VIB", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x7728dfef5abd468669eb7f9b48a7f70a501ed29d"): &Token{ - Address: common.HexToAddress("0x7728dfef5abd468669eb7f9b48a7f70a501ed29d"), - Name: "PRG", - Symbol: "PRG", - Color: "#f8f8f8", - Decimals: 6, - ChainID: 1, - }, - common.HexToAddress("0x6c2adc2073994fb2ccc5032cc2906fa221e9b391"): &Token{ - Address: common.HexToAddress("0x6c2adc2073994fb2ccc5032cc2906fa221e9b391"), - Name: "Delphy Token", - Symbol: "DPY", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x2fe6ab85ebbf7776fee46d191ee4cea322cecf51"): &Token{ - Address: common.HexToAddress("0x2fe6ab85ebbf7776fee46d191ee4cea322cecf51"), - Name: "CoinDash Token", - Symbol: "CDT", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x08f5a9235b08173b7569f83645d2c7fb55e8ccd8"): &Token{ - Address: common.HexToAddress("0x08f5a9235b08173b7569f83645d2c7fb55e8ccd8"), - Name: "Tierion Network Token", - Symbol: "TNT", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0x9af4f26941677c706cfecf6d3379ff01bb85d5ab"): &Token{ - Address: common.HexToAddress("0x9af4f26941677c706cfecf6d3379ff01bb85d5ab"), - Name: "DomRaiderToken", - Symbol: "DRT", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0x42d6622dece394b54999fbd73d108123806f6a18"): &Token{ - Address: common.HexToAddress("0x42d6622dece394b54999fbd73d108123806f6a18"), - Name: "SPANK", - Symbol: "SPANK", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x80046305aaab08f6033b56a360c184391165dc2d"): &Token{ - Address: common.HexToAddress("0x80046305aaab08f6033b56a360c184391165dc2d"), - Name: "Berlin Coin", - Symbol: "BRLN", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"): &Token{ - Address: common.HexToAddress("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"), - Name: "USD Coin", - Symbol: "USDC", - Color: "#f8f8f8", - Decimals: 6, - ChainID: 1, - }, - common.HexToAddress("0x58b6a8a3302369daec383334672404ee733ab239"): &Token{ - Address: common.HexToAddress("0x58b6a8a3302369daec383334672404ee733ab239"), - Name: "Livepeer Token", - Symbol: "LPT", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x2c4e8f2d746113d0696ce89b35f0d8bf88e0aeca"): &Token{ - Address: common.HexToAddress("0x2c4e8f2d746113d0696ce89b35f0d8bf88e0aeca"), - Name: "Simple Token", - Symbol: "ST", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"): &Token{ - Address: common.HexToAddress("0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"), - Name: "Wrapped BTC", - Symbol: "WBTC", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0x107c4504cd79c5d2696ea0030a8dd4e92601b82e"): &Token{ - Address: common.HexToAddress("0x107c4504cd79c5d2696ea0030a8dd4e92601b82e"), - Name: "Bloom Token", - Symbol: "BLT", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x4575f41308EC1483f3d399aa9a2826d74Da13Deb"): &Token{ - Address: common.HexToAddress("0x4575f41308EC1483f3d399aa9a2826d74Da13Deb"), - Name: "Orchid", - Symbol: "OXT", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x96a65609a7b84e8842732deb08f56c3e21ac6f8a"): &Token{ - Address: common.HexToAddress("0x96a65609a7b84e8842732deb08f56c3e21ac6f8a"), - Name: "Centra token", - Symbol: "Centra", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x2e071d2966aa7d8decb1005885ba1977d6038a65"): &Token{ - Address: common.HexToAddress("0x2e071d2966aa7d8decb1005885ba1977d6038a65"), - Name: "DICE", - Symbol: "ROL", - Color: "#f8f8f8", - Decimals: 16, - ChainID: 1, - }, - common.HexToAddress("0x9b11efcaaa1890f6ee52c6bb7cf8153ac5d74139"): &Token{ - Address: common.HexToAddress("0x9b11efcaaa1890f6ee52c6bb7cf8153ac5d74139"), - Name: "Attention Token of Media", - Symbol: "ATM", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0x99ea4dB9EE77ACD40B119BD1dC4E33e1C070b80d"): &Token{ - Address: common.HexToAddress("0x99ea4dB9EE77ACD40B119BD1dC4E33e1C070b80d"), - Name: "Quantstamp Token", - Symbol: "QSP", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x80fB784B7eD66730e8b1DBd9820aFD29931aab03"): &Token{ - Address: common.HexToAddress("0x80fB784B7eD66730e8b1DBd9820aFD29931aab03"), - Name: "EthLend Token", - Symbol: "LEND", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xA15C7Ebe1f07CaF6bFF097D8a589fb8AC49Ae5B3"): &Token{ - Address: common.HexToAddress("0xA15C7Ebe1f07CaF6bFF097D8a589fb8AC49Ae5B3"), - Name: "Pundi X Token", - Symbol: "NPXS", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xA4e8C3Ec456107eA67d3075bF9e3DF3A75823DB0"): &Token{ - Address: common.HexToAddress("0xA4e8C3Ec456107eA67d3075bF9e3DF3A75823DB0"), - Name: "LoomToken", - Symbol: "LOOM", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x0e0989b1f9B8A38983c2BA8053269Ca62Ec9B195"): &Token{ - Address: common.HexToAddress("0x0e0989b1f9B8A38983c2BA8053269Ca62Ec9B195"), - Name: "Po.et", - Symbol: "POE", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0x5732046A883704404F284Ce41FfADd5b007FD668"): &Token{ - Address: common.HexToAddress("0x5732046A883704404F284Ce41FfADd5b007FD668"), - Name: "Bluzelle Token", - Symbol: "BLZ", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xFA1a856Cfa3409CFa145Fa4e20Eb270dF3EB21ab"): &Token{ - Address: common.HexToAddress("0xFA1a856Cfa3409CFa145Fa4e20Eb270dF3EB21ab"), - Name: "IOSToken", - Symbol: "IOST", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671"): &Token{ - Address: common.HexToAddress("0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671"), - Name: "Numeraire", - Symbol: "NMR", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x8E870D67F660D95d5be530380D0eC0bd388289E1"): &Token{ - Address: common.HexToAddress("0x8E870D67F660D95d5be530380D0eC0bd388289E1"), - Name: "Pax Dollar", - Symbol: "USDP", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xEA26c4aC16D4a5A106820BC8AEE85fd0b7b2b664"): &Token{ - Address: common.HexToAddress("0xEA26c4aC16D4a5A106820BC8AEE85fd0b7b2b664"), - Name: "QuarkChain Token", - Symbol: "QKC", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x45804880De22913dAFE09f4980848ECE6EcbAf78"): &Token{ - Address: common.HexToAddress("0x45804880De22913dAFE09f4980848ECE6EcbAf78"), - Name: "Paxos Gold", - Symbol: "PAXG", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x865ec58b06bF6305B886793AA20A2da31D034E68"): &Token{ - Address: common.HexToAddress("0x865ec58b06bF6305B886793AA20A2da31D034E68"), - Name: "Moss Coin", - Symbol: "MOC", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x408e41876cCCDC0F92210600ef50372656052a38"): &Token{ - Address: common.HexToAddress("0x408e41876cCCDC0F92210600ef50372656052a38"), - Name: "Republic Token", - Symbol: "REN", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x607F4C5BB672230e8672085532f7e901544a7375"): &Token{ - Address: common.HexToAddress("0x607F4C5BB672230e8672085532f7e901544a7375"), - Name: "iEx.ec Network Token", - Symbol: "RLC", - Color: "#f8f8f8", - Decimals: 9, - ChainID: 1, - }, - common.HexToAddress("0x8400D94A5cb0fa0D041a3788e395285d61c9ee5e"): &Token{ - Address: common.HexToAddress("0x8400D94A5cb0fa0D041a3788e395285d61c9ee5e"), - Name: "UniBright", - Symbol: "UBT", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0x4f3AfEC4E5a3F2A6a1A411DEF7D7dFe50eE057bF"): &Token{ - Address: common.HexToAddress("0x4f3AfEC4E5a3F2A6a1A411DEF7D7dFe50eE057bF"), - Name: "Digix Gold Token", - Symbol: "DGX", - Color: "#f8f8f8", - Decimals: 9, - ChainID: 1, - }, - common.HexToAddress("0xEA38eAa3C86c8F9B751533Ba2E562deb9acDED40"): &Token{ - Address: common.HexToAddress("0xEA38eAa3C86c8F9B751533Ba2E562deb9acDED40"), - Name: "Fuel Token", - Symbol: "FUEL", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x00000100F2A2bd000715001920eB70D229700085"): &Token{ - Address: common.HexToAddress("0x00000100F2A2bd000715001920eB70D229700085"), - Name: "TrueCAD", - Symbol: "TCAD", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x6710c63432A2De02954fc0f851db07146a6c0312"): &Token{ - Address: common.HexToAddress("0x6710c63432A2De02954fc0f851db07146a6c0312"), - Name: "SyncFab Smart Manufacturing Blockchain", - Symbol: "MFG", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf"): &Token{ - Address: common.HexToAddress("0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf"), - Name: "DAOstack", - Symbol: "GEN", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x0E8d6b471e332F140e7d9dbB99E5E3822F728DA6"): &Token{ - Address: common.HexToAddress("0x0E8d6b471e332F140e7d9dbB99E5E3822F728DA6"), - Name: "ABYSS", - Symbol: "ABYSS", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xB62132e35a6c13ee1EE0f84dC5d40bad8d815206"): &Token{ - Address: common.HexToAddress("0xB62132e35a6c13ee1EE0f84dC5d40bad8d815206"), - Name: "Nexo", - Symbol: "NEXO", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x0000000000085d4780B73119b644AE5ecd22b376"): &Token{ - Address: common.HexToAddress("0x0000000000085d4780B73119b644AE5ecd22b376"), - Name: "TrueUSD", - Symbol: "TUSD", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xD0a4b8946Cb52f0661273bfbC6fD0E0C75Fc6433"): &Token{ - Address: common.HexToAddress("0xD0a4b8946Cb52f0661273bfbC6fD0E0C75Fc6433"), - Name: "Storm Token", - Symbol: "STORM", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xaF4DcE16Da2877f8c9e00544c93B62Ac40631F16"): &Token{ - Address: common.HexToAddress("0xaF4DcE16Da2877f8c9e00544c93B62Ac40631F16"), - Name: "Monetha", - Symbol: "MTH", - Color: "#f8f8f8", - Decimals: 5, - ChainID: 1, - }, - common.HexToAddress("0x00000000441378008EA67F4284A57932B1c000a5"): &Token{ - Address: common.HexToAddress("0x00000000441378008EA67F4284A57932B1c000a5"), - Name: "TrueGBP", - Symbol: "TGBP", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xbf2179859fc6D5BEE9Bf9158632Dc51678a4100e"): &Token{ - Address: common.HexToAddress("0xbf2179859fc6D5BEE9Bf9158632Dc51678a4100e"), - Name: "ELF Token", - Symbol: "ELF", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x9992eC3cF6A55b00978cdDF2b27BC6882d88D1eC"): &Token{ - Address: common.HexToAddress("0x9992eC3cF6A55b00978cdDF2b27BC6882d88D1eC"), - Name: "Polymath", - Symbol: "POLY", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x20F7A3DdF244dc9299975b4Da1C39F8D5D75f05A"): &Token{ - Address: common.HexToAddress("0x20F7A3DdF244dc9299975b4Da1C39F8D5D75f05A"), - Name: "Sapien Network", - Symbol: "SPN", - Color: "#f8f8f8", - Decimals: 6, - ChainID: 1, - }, - common.HexToAddress("0x1a7a8BD9106F2B8D977E08582DC7d24c723ab0DB"): &Token{ - Address: common.HexToAddress("0x1a7a8BD9106F2B8D977E08582DC7d24c723ab0DB"), - Name: "AppCoins", - Symbol: "APPC", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xdAC17F958D2ee523a2206206994597C13D831ec7"): &Token{ - Address: common.HexToAddress("0xdAC17F958D2ee523a2206206994597C13D831ec7"), - Name: "Tether USD", - Symbol: "USDT", - Color: "#f8f8f8", - Decimals: 6, - ChainID: 1, - }, - common.HexToAddress("0xa3d58c4E56fedCae3a7c43A725aeE9A71F0ece4e"): &Token{ - Address: common.HexToAddress("0xa3d58c4E56fedCae3a7c43A725aeE9A71F0ece4e"), - Name: "Metronome", - Symbol: "MET", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x6f259637dcD74C767781E37Bc6133cd6A68aa161"): &Token{ - Address: common.HexToAddress("0x6f259637dcD74C767781E37Bc6133cd6A68aa161"), - Name: "HuobiToken", - Symbol: "HT", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"): &Token{ - Address: common.HexToAddress("0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"), - Name: "Wrapped Ether", - Symbol: "WETH", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x8f3470A7388c05eE4e7AF3d01D8C722b0FF52374"): &Token{ - Address: common.HexToAddress("0x8f3470A7388c05eE4e7AF3d01D8C722b0FF52374"), - Name: "Veritaseum", - Symbol: "VERI", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x00006100F7090010005F1bd7aE6122c3C2CF0090"): &Token{ - Address: common.HexToAddress("0x00006100F7090010005F1bd7aE6122c3C2CF0090"), - Name: "TrueAUD", - Symbol: "TAUD", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x66497A283E0a007bA3974e837784C6AE323447de"): &Token{ - Address: common.HexToAddress("0x66497A283E0a007bA3974e837784C6AE323447de"), - Name: "PornToken", - Symbol: "PT", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xB24754bE79281553dc1adC160ddF5Cd9b74361a4"): &Token{ - Address: common.HexToAddress("0xB24754bE79281553dc1adC160ddF5Cd9b74361a4"), - Name: "RIALTO", - Symbol: "XRL", - Color: "#f8f8f8", - Decimals: 9, - ChainID: 1, - }, - common.HexToAddress("0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F"): &Token{ - Address: common.HexToAddress("0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F"), - Name: "Synthetix Network Token", - Symbol: "SNX", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x07e3c70653548B04f0A75970C1F81B4CBbFB606f"): &Token{ - Address: common.HexToAddress("0x07e3c70653548B04f0A75970C1F81B4CBbFB606f"), - Name: "Delta", - Symbol: "DLT", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x8207c1FfC5B6804F6024322CcF34F29c3541Ae26"): &Token{ - Address: common.HexToAddress("0x8207c1FfC5B6804F6024322CcF34F29c3541Ae26"), - Name: "OriginToken", - Symbol: "OGN", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x554C20B7c486beeE439277b4540A434566dC4C02"): &Token{ - Address: common.HexToAddress("0x554C20B7c486beeE439277b4540A434566dC4C02"), - Name: "Decision Token", - Symbol: "HST", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x286BDA1413a2Df81731D4930ce2F862a35A609fE"): &Token{ - Address: common.HexToAddress("0x286BDA1413a2Df81731D4930ce2F862a35A609fE"), - Name: "WaBi", - Symbol: "WaBi", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xE5a3229CCb22b6484594973A03a3851dCd948756"): &Token{ - Address: common.HexToAddress("0xE5a3229CCb22b6484594973A03a3851dCd948756"), - Name: "RAE Token", - Symbol: "RAE", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x24692791Bc444c5Cd0b81e3CBCaba4b04Acd1F3B"): &Token{ - Address: common.HexToAddress("0x24692791Bc444c5Cd0b81e3CBCaba4b04Acd1F3B"), - Name: "UnikoinGold", - Symbol: "UKG", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xD46bA6D942050d489DBd938a2C909A5d5039A161"): &Token{ - Address: common.HexToAddress("0xD46bA6D942050d489DBd938a2C909A5d5039A161"), - Name: "Ampleforth", - Symbol: "AMPL", - Color: "#f8f8f8", - Decimals: 9, - ChainID: 1, - }, - common.HexToAddress("0xA4Bdb11dc0a2bEC88d24A3aa1E6Bb17201112eBe"): &Token{ - Address: common.HexToAddress("0xA4Bdb11dc0a2bEC88d24A3aa1E6Bb17201112eBe"), - Name: "StableUSD", - Symbol: "USDS", - Color: "#f8f8f8", - Decimals: 6, - ChainID: 1, - }, - common.HexToAddress("0xB98d4C97425d9908E66E53A6fDf673ACcA0BE986"): &Token{ - Address: common.HexToAddress("0xB98d4C97425d9908E66E53A6fDf673ACcA0BE986"), - Name: "ArcBlock", - Symbol: "ABT", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x81c9151de0C8bafCd325a57E3dB5a5dF1CEBf79c"): &Token{ - Address: common.HexToAddress("0x81c9151de0C8bafCd325a57E3dB5a5dF1CEBf79c"), - Name: "Datum Token", - Symbol: "DAT", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xa6a840E50bCaa50dA017b91A0D86B8b2d41156EE"): &Token{ - Address: common.HexToAddress("0xa6a840E50bCaa50dA017b91A0D86B8b2d41156EE"), - Name: "EchoLink", - Symbol: "EKO", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x4a57E687b9126435a9B19E4A802113e266AdeBde"): &Token{ - Address: common.HexToAddress("0x4a57E687b9126435a9B19E4A802113e266AdeBde"), - Name: "Flexacoin", - Symbol: "FXC", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xC86D054809623432210c107af2e3F619DcFbf652"): &Token{ - Address: common.HexToAddress("0xC86D054809623432210c107af2e3F619DcFbf652"), - Name: "SENTINEL PROTOCOL", - Symbol: "UPP", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x5Af2Be193a6ABCa9c8817001F45744777Db30756"): &Token{ - Address: common.HexToAddress("0x5Af2Be193a6ABCa9c8817001F45744777Db30756"), - Name: "Voyager", - Symbol: "VGX", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0x69b148395ce0015c13e36bffbad63f49ef874e03"): &Token{ - Address: common.HexToAddress("0x69b148395ce0015c13e36bffbad63f49ef874e03"), - Name: "Data Token", - Symbol: "DTA", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x57Ab1ec28D129707052df4dF418D58a2D46d5f51"): &Token{ - Address: common.HexToAddress("0x57Ab1ec28D129707052df4dF418D58a2D46d5f51"), - Name: "Synth sUSD", - Symbol: "sUSD", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643"): &Token{ - Address: common.HexToAddress("0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643"), - Name: "Compound Dai", - Symbol: "cDAI", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 1, - }, - common.HexToAddress("0xba11d00c5f74255f56a5e366f4f77f5a186d7f55"): &Token{ - Address: common.HexToAddress("0xba11d00c5f74255f56a5e366f4f77f5a186d7f55"), - Name: "BandToken", - Symbol: "BAND", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xa7fc5d2453e3f68af0cc1b78bcfee94a1b293650"): &Token{ - Address: common.HexToAddress("0xa7fc5d2453e3f68af0cc1b78bcfee94a1b293650"), - Name: "Spiking", - Symbol: "SPIKE", - Color: "#f8f8f8", - Decimals: 10, - ChainID: 1, - }, - common.HexToAddress("0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984"): &Token{ - Address: common.HexToAddress("0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984"), - Name: "Uniswap", - Symbol: "UNI", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xc00e94cb662c3520282e6f5717214004a7f26888"): &Token{ - Address: common.HexToAddress("0xc00e94cb662c3520282e6f5717214004a7f26888"), - Name: "Compound", - Symbol: "COMP", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xba100000625a3754423978a60c9317c58a424e3d"): &Token{ - Address: common.HexToAddress("0xba100000625a3754423978a60c9317c58a424e3d"), - Name: "Balancer", - Symbol: "BAL", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x8ab7404063ec4dbcfd4598215992dc3f8ec853d7"): &Token{ - Address: common.HexToAddress("0x8ab7404063ec4dbcfd4598215992dc3f8ec853d7"), - Name: "Akropolis", - Symbol: "AKRO", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x9ba00d6856a4edf4665bca2c2309936572473b7e"): &Token{ - Address: common.HexToAddress("0x9ba00d6856a4edf4665bca2c2309936572473b7e"), - Name: "Aave Interest bearing USDC", - Symbol: "aUSDC", - Color: "#f8f8f8", - Decimals: 6, - ChainID: 1, - }, - common.HexToAddress("0xc944e90c64b2c07662a292be6244bdf05cda44a7"): &Token{ - Address: common.HexToAddress("0xc944e90c64b2c07662a292be6244bdf05cda44a7"), - Name: "Graph Token", - Symbol: "GRT", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x7DD9c5Cba05E151C895FDe1CF355C9A1D5DA6429"): &Token{ - Address: common.HexToAddress("0x7DD9c5Cba05E151C895FDe1CF355C9A1D5DA6429"), - Name: "Golem Network Token", - Symbol: "GLM", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0x23b608675a2b2fb1890d3abbd85c5775c51691d5"): &Token{ - Address: common.HexToAddress("0x23b608675a2b2fb1890d3abbd85c5775c51691d5"), - Name: "Unisocks Edition 0", - Symbol: "SOCKS", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xEEF9f339514298C6A857EfCfC1A762aF84438dEE"): &Token{ - Address: common.HexToAddress("0xEEF9f339514298C6A857EfCfC1A762aF84438dEE"), - Name: "Hermez Network Token", - Symbol: "HEZ", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd"): &Token{ - Address: common.HexToAddress("0xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd"), - Name: "ETH 2x Flexible Leverage Index", - Symbol: "ETH2x-FLI", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xba5BDe662c17e2aDFF1075610382B9B691296350"): &Token{ - Address: common.HexToAddress("0xba5BDe662c17e2aDFF1075610382B9B691296350"), - Name: "SuperRare", - Symbol: "RARE", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72"): &Token{ - Address: common.HexToAddress("0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72"), - Name: "Ethereum Name Service", - Symbol: "ENS", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - common.HexToAddress("0xDd1Ad9A21Ce722C151A836373baBe42c868cE9a4"): &Token{ - Address: common.HexToAddress("0xDd1Ad9A21Ce722C151A836373baBe42c868cE9a4"), - Name: "Universal Basic Income", - Symbol: "UBI", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 1, - }, - }, - 3: { - common.HexToAddress("0xc55cf4b03948d7ebc8b9e8bad92643703811d162"): &Token{ - Address: common.HexToAddress("0xc55cf4b03948d7ebc8b9e8bad92643703811d162"), - Name: "Status Test Token", - Symbol: "STT", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 3, - }, - common.HexToAddress("0xdee43a267e8726efd60c2e7d5b81552dcd4fa35c"): &Token{ - Address: common.HexToAddress("0xdee43a267e8726efd60c2e7d5b81552dcd4fa35c"), - Name: "Handy Test Token", - Symbol: "HND", - Color: "#f8f8f8", - Decimals: 0, - ChainID: 3, - }, - common.HexToAddress("0x703d7dc0bc8e314d65436adf985dda51e09ad43b"): &Token{ - Address: common.HexToAddress("0x703d7dc0bc8e314d65436adf985dda51e09ad43b"), - Name: "Lucky Test Token", - Symbol: "LXS", - Color: "#f8f8f8", - Decimals: 2, - ChainID: 3, - }, - common.HexToAddress("0xe639e24346d646e927f323558e6e0031bfc93581"): &Token{ - Address: common.HexToAddress("0xe639e24346d646e927f323558e6e0031bfc93581"), - Name: "Adi Test Token", - Symbol: "ADI", - Color: "#f8f8f8", - Decimals: 7, - ChainID: 3, - }, - common.HexToAddress("0x2e7cd05f437eb256f363417fd8f920e2efa77540"): &Token{ - Address: common.HexToAddress("0x2e7cd05f437eb256f363417fd8f920e2efa77540"), - Name: "Wagner Test Token", - Symbol: "WGN", - Color: "#f8f8f8", - Decimals: 10, - ChainID: 3, - }, - common.HexToAddress("0x57cc9b83730e6d22b224e9dc3e370967b44a2de0"): &Token{ - Address: common.HexToAddress("0x57cc9b83730e6d22b224e9dc3e370967b44a2de0"), - Name: "Modest Test Token", - Symbol: "MDS", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 3, - }, - }, - 4: { - common.HexToAddress("0x6ba7dc8dd10880ab83041e60c4ede52bb607864b"): &Token{ - Address: common.HexToAddress("0x6ba7dc8dd10880ab83041e60c4ede52bb607864b"), - Name: "Moksha Coin", - Symbol: "MOKSHA", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 4, - }, - common.HexToAddress("0x7d4ccf6af2f0fdad48ee7958bcc28bdef7b732c7"): &Token{ - Address: common.HexToAddress("0x7d4ccf6af2f0fdad48ee7958bcc28bdef7b732c7"), - Name: "WIBB", - Symbol: "WIBB", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 4, - }, - common.HexToAddress("0x43d5adc3b49130a575ae6e4b00dfa4bc55c71621"): &Token{ - Address: common.HexToAddress("0x43d5adc3b49130a575ae6e4b00dfa4bc55c71621"), - Name: "Status Test Token", - Symbol: "STT", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 4, - }, - }, - 5: { - common.HexToAddress("0x3d6afaa395c31fcd391fe3d562e75fe9e8ec7e6a"): &Token{ - Address: common.HexToAddress("0x3d6afaa395c31fcd391fe3d562e75fe9e8ec7e6a"), - Name: "Status Test Token", - Symbol: "STT", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 5, - }, - common.HexToAddress("0x98339d8c260052b7ad81c28c16c0b98420f2b46a"): &Token{ - Address: common.HexToAddress("0x98339d8c260052b7ad81c28c16c0b98420f2b46a"), - Name: "USD Coin", - Symbol: "USDC", - Color: "#f8f8f8", - Decimals: 6, - ChainID: 5, - }, - common.HexToAddress("0x022e292b44b5a146f2e8ee36ff44d3dd863c915c"): &Token{ - Address: common.HexToAddress("0x022e292b44b5a146f2e8ee36ff44d3dd863c915c"), - Name: "Xeenus 💪", - Symbol: "XEENUS", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 5, - }, - common.HexToAddress("0xc6fde3fd2cc2b173aec24cc3f267cb3cd78a26b7"): &Token{ - Address: common.HexToAddress("0xc6fde3fd2cc2b173aec24cc3f267cb3cd78a26b7"), - Name: "Yeenus 💪", - Symbol: "YEENUS", - Color: "#f8f8f8", - Decimals: 8, - ChainID: 5, - }, - common.HexToAddress("0x1f9061b953bba0e36bf50f21876132dcf276fc6e"): &Token{ - Address: common.HexToAddress("0x1f9061b953bba0e36bf50f21876132dcf276fc6e"), - Name: "Zeenus 💪", - Symbol: "ZEENUS", - Color: "#f8f8f8", - Decimals: 0, - ChainID: 5, - }, - common.HexToAddress("0xf4B2cbc3bA04c478F0dC824f4806aC39982Dce73"): &Token{ - Address: common.HexToAddress("0xf4B2cbc3bA04c478F0dC824f4806aC39982Dce73"), - Name: "Tether USD", - Symbol: "USDT", - Color: "#f8f8f8", - Decimals: 6, - ChainID: 5, - }, - common.HexToAddress("0xf2edF1c091f683E3fb452497d9a98A49cBA84666"): &Token{ - Address: common.HexToAddress("0xf2edF1c091f683E3fb452497d9a98A49cBA84666"), - Name: "DAI Stablecoin", - Symbol: "DAI", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 5, - }, - }, - 10: { - common.HexToAddress("0x7f5c764cbc14f9669b88837ca1490cca17c31607"): &Token{ - Address: common.HexToAddress("0x7f5c764cbc14f9669b88837ca1490cca17c31607"), - Name: "USD Coin", - Symbol: "USDC", - Color: "#f8f8f8", - Decimals: 6, - ChainID: 10, - }, - }, - 100: { - common.HexToAddress("0x3e50bf6703fc132a94e4baff068db2055655f11b"): &Token{ - Address: common.HexToAddress("0x3e50bf6703fc132a94e4baff068db2055655f11b"), - Name: "buffiDai", - Symbol: "BUFF", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 100, - }, - }, - 420: { - common.HexToAddress("0xcb4ceefce514b2d910d3ac529076d18e3add3775"): &Token{ - Address: common.HexToAddress("0xcb4ceefce514b2d910d3ac529076d18e3add3775"), - Name: "USD Coin", - Symbol: "USDC", - Color: "#f8f8f8", - Decimals: 6, - ChainID: 420, - }, - }, - 42161: { - common.HexToAddress("0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9"): &Token{ - Address: common.HexToAddress("0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9"), - Name: "Tether USD", - Symbol: "USDT", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 42161, - }, - common.HexToAddress("0xff970a61a04b1ca14834a43f5de4533ebddb5cc8"): &Token{ - Address: common.HexToAddress("0xff970a61a04b1ca14834a43f5de4533ebddb5cc8"), - Name: "USD Coin", - Symbol: "USDC", - Color: "#f8f8f8", - Decimals: 6, - ChainID: 42161, - }, - common.HexToAddress("0xda10009cbd5d07dd0cecc66161fc93d7c9000da1"): &Token{ - Address: common.HexToAddress("0xda10009cbd5d07dd0cecc66161fc93d7c9000da1"), - Name: "DAI Stablecoin", - Symbol: "DAI", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 42161, - }, - common.HexToAddress("0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f"): &Token{ - Address: common.HexToAddress("0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f"), - Name: "Wrapped BTC", - Symbol: "WBTC", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 42161, - }, - common.HexToAddress("0xfa7f8980b0f1e64a2062791cc3b0871572f1f7f0"): &Token{ - Address: common.HexToAddress("0xfa7f8980b0f1e64a2062791cc3b0871572f1f7f0"), - Name: "Uniswap", - Symbol: "UNI", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 42161, - }, - common.HexToAddress("0xf97f4df75117a78c1a5a0dbb814af92458539fb4"): &Token{ - Address: common.HexToAddress("0xf97f4df75117a78c1a5a0dbb814af92458539fb4"), - Name: "ChainLink Token", - Symbol: "Link", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 42161, - }, - common.HexToAddress("0x17fc002b466eec40dae837fc4be5c67993ddbd6f"): &Token{ - Address: common.HexToAddress("0x17fc002b466eec40dae837fc4be5c67993ddbd6f"), - Name: "Frax", - Symbol: "FRAX", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 42161, - }, - common.HexToAddress("0x4d15a3a2286d883af0aa1b3f21367843fac63e07"): &Token{ - Address: common.HexToAddress("0x4d15a3a2286d883af0aa1b3f21367843fac63e07"), - Name: "True USD", - Symbol: "TUSD", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 42161, - }, - common.HexToAddress("0x23a941036ae778ac51ab04cea08ed6e2fe103614"): &Token{ - Address: common.HexToAddress("0x23a941036ae778ac51ab04cea08ed6e2fe103614"), - Name: "Graph Token", - Symbol: "GRT", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 42161, - }, - common.HexToAddress("0x680447595e8b7b3aa1b43beb9f6098c79ac2ab3f"): &Token{ - Address: common.HexToAddress("0x680447595e8b7b3aa1b43beb9f6098c79ac2ab3f"), - Name: "Decentralized USD", - Symbol: "USDD", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 42161, - }, - common.HexToAddress("0x11cdb42b0eb46d95f990bedd4695a6e3fa034978"): &Token{ - Address: common.HexToAddress("0x11cdb42b0eb46d95f990bedd4695a6e3fa034978"), - Name: "Curve DAO Token", - Symbol: "CRV", - Color: "#f8f8f8", - Decimals: 18, - ChainID: 42161, - }, - }, - 421613: { - common.HexToAddress("0x17078F231AA8dc256557b49a8f2F72814A71f633"): &Token{ - Address: common.HexToAddress("0x17078F231AA8dc256557b49a8f2F72814A71f633"), - Name: "USD Coin", - Symbol: "USDC", - Color: "#f8f8f8", - Decimals: 6, - ChainID: 421613, - }, - common.HexToAddress("0x265B25e22bcd7f10a5bD6E6410F10537Cc7567e8"): &Token{ - Address: common.HexToAddress("0x265B25e22bcd7f10a5bD6E6410F10537Cc7567e8"), - Name: "Tether USD", - Symbol: "USDT", - Color: "#f8f8f8", - Decimals: 6, - ChainID: 421613, - }, - }, +func validateDocument(doc string, schemaURL string) (bool, error) { + schemaLoader := gojsonschema.NewReferenceLoader(schemaURL) + docLoader := gojsonschema.NewStringLoader(doc) + + result, err := gojsonschema.Validate(schemaLoader, docLoader) + if err != nil { + return false, err + } + + if !result.Valid() { + return false, errors.New("Token list does not match schema") + } + + return true, nil +} + +func bytesToTokens(tokenListData []byte) ([]*Token, error) { + var objmap map[string]json.RawMessage + err := json.Unmarshal(tokenListData, &objmap) + if err != nil { + return nil, err + } + + var tokens []*Token + err = json.Unmarshal(objmap["tokens"], &tokens) + if err != nil { + return nil, err + } + + return tokens, nil +} + +func toTokenMap(tokens []*Token) storeMap { + tokenMap := storeMap{} + + for _, token := range tokens { + addTokMap := tokenMap[token.ChainID] + if addTokMap == nil { + addTokMap = make(addressTokenMap) + } + + addTokMap[token.Address] = token + tokenMap[token.ChainID] = addTokMap + } + + return tokenMap +} + +type DefaultStore struct { + tokenList []*Token + tokensFetched bool +} + +func newDefaultStore() *DefaultStore { + return &DefaultStore{ + tokenList: []*Token{ + &Token{ + Address: common.HexToAddress("0x6b175474e89094c44da98b954eedeac495271d0f"), + Name: "Dai Stablecoin", + Symbol: "DAI", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359"), + Name: "Sai Stablecoin v1.0", + Symbol: "SAI", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2"), + Name: "MKR", + Symbol: "MKR", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0"), + Name: "EOS", + Symbol: "EOS", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xd26114cd6ee289accf82350c8d8487fedb8a0c07"), + Name: "OMGToken", + Symbol: "OMG", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xd4fa1460f537bb9085d22c7bccb5dd450ef28e3a"), + Name: "Populous Platform", + Symbol: "PPT", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x1985365e9f78359a9b6ad760e32412f4a445e862"), + Name: "Reputation", + Symbol: "REP", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x595832f8fc6bf59c85c527fec3740a1b7a361269"), + Name: "PowerLedger", + Symbol: "POWR", + Color: "#f8f8f8", + Decimals: 6, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xb97048628db6b661d4c2aa833e95dbe1a905b280"), + Name: "TenX Pay Token", + Symbol: "PAY", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x92e78dae1315067a8819efd6dca432de9dcde2e9"), + Name: "Veros", + Symbol: "VRS", + Color: "#f8f8f8", + Decimals: 6, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xa74476443119a942de498590fe1f2454d7d4ac0d"), + Name: "Golem Network Token", + Symbol: "GNT", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x4156d3342d5c385a87d264f90653733592000581"), + Name: "Salt", + Symbol: "SALT", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xb8c77482e45f1f44de1745f52c74426c631bdd52"), + Name: "BNB", + Symbol: "BNB", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x0d8775f648430679a709e98d2b0cb6250d2887ef"), + Name: "Basic Attention Token", + Symbol: "BAT", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xdd974d5c2e2928dea5f71b9825b8b646686bd200"), + Name: "Kyber Network Crystal", + Symbol: "KNC", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xb683D83a532e2Cb7DFa5275eED3698436371cc9f"), + Name: "BTU Protocol", + Symbol: "BTU", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xe0b7927c4af23765cb51314a0e0521a9645f0e2a"), + Name: "Digix DAO", + Symbol: "DGD", + Color: "#f8f8f8", + Decimals: 9, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x5ca9a71b1d01849c0a95490cc00559717fcf0d1d"), + Name: "Aeternity", + Symbol: "AE", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xf230b790e05390fc8295f4d3f60332c93bed42e2"), + Name: "Tronix", + Symbol: "TRX", + Color: "#f8f8f8", + Decimals: 6, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x255aa6df07540cb5d3d297f0d0d4d84cb52bc8e6"), + Name: "Raiden Token", + Symbol: "RDN", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x744d70fdbe2ba4cf95131626614a1763df805b9e"), + Name: "Status Network Token", + Symbol: "SNT", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xaec2e87e0a235266d9c5adc9deb4b2e29b54d009"), + Name: "SingularDTV", + Symbol: "SNGLS", + Color: "#f8f8f8", + Decimals: 0, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x6810e776880c02933d47db1b9fc05908e5386b96"), + Name: "Gnosis Token", + Symbol: "GNO", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xb64ef51c888972c908cfacf59b47c1afbc0ab8ac"), + Name: "StorjToken", + Symbol: "STORJ", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x4470bb87d77b963a013db939be332f927f2b992e"), + Name: "AdEx", + Symbol: "ADX", + Color: "#f8f8f8", + Decimals: 4, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x419d0d8bdd9af5e606ae2232ed285aff190e711b"), + Name: "FunFair", + Symbol: "FUN", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x41e5560054824ea6b0732e656e3ad64e20e94e45"), + Name: "Civic", + Symbol: "CVC", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x888666ca69e0f178ded6d75b5726cee99a87d698"), + Name: "ICONOMI", + Symbol: "ICN", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xb7cb1c96db6b22b0d3d9536e0108d062bd488f74"), + Name: "Walton Token", + Symbol: "WTC", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xcb97e65f07da24d46bcdd078ebebd7c6e6e3d750"), + Name: "Bytom", + Symbol: "BTM", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xe41d2489571d322189246dafa5ebde1f4699f498"), + Name: "0x Protocol Token", + Symbol: "ZRX", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c"), + Name: "Bancor Network Token", + Symbol: "BNT", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xf433089366899d83a9f26a773d59ec7ecf30355e"), + Name: "Metal", + Symbol: "MTL", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xc42209accc14029c1012fb5680d95fbd6036e2a0"), + Name: "PayPie", + Symbol: "PPP", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x514910771af9ca656af840dff83e8264ecf986ca"), + Name: "ChainLink Token", + Symbol: "LINK", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x818fc6c2ec5986bc6e2cbf00939d90556ab12ce5"), + Name: "Kin", + Symbol: "KIN", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x960b236a07cf122663c4303350609a66a7b288c0"), + Name: "Aragon Network Token", + Symbol: "ANT", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x40395044ac3c0c57051906da938b54bd6557f212"), + Name: "MobileGo Token", + Symbol: "MGO", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xb63b606ac810a52cca15e44bb630fd42d8d1d83d"), + Name: "Monaco", + Symbol: "MCO", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xbbbbca6a901c926f240b89eacb641d8aec7aeafd"), + Name: "LoopringCoin V2", + Symbol: "LRC", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x7a41e0517a5eca4fdbc7fbeba4d4c47b9ff6dc63"), + Name: "Zeus Shield Coin", + Symbol: "ZSC", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x0cf0ee63788a0849fe5297f3407f701e122cc023"), + Name: "Streamr (old)", + Symbol: "XDATA", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xf970b8e36e23f7fc3fd752eea86f8be8d83375a6"), + Name: "Ripio Credit Network Token", + Symbol: "RCN", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x667088b212ce3d06a1b553a7221e1fd19000d9af"), + Name: "WINGS", + Symbol: "WINGS", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x08711d3b02c8758f2fb3ab4e80228418a7f8e39c"), + Name: "Edgeless", + Symbol: "EDG", + Color: "#f8f8f8", + Decimals: 0, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xbeb9ef514a379b997e0798fdcc901ee474b6d9a1"), + Name: "Melon Token", + Symbol: "MLN", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x51db5ad35c671a87207d88fc11d593ac0c8415bd"), + Name: "Moeda Loyalty Points", + Symbol: "MDA", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xe3818504c1b32bf1557b16c238b2e01fd3149c17"), + Name: "PILLAR", + Symbol: "PLR", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x697beac28b09e122c4332d163985e8a73121b97f"), + Name: "QRL", + Symbol: "QRL", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x957c30ab0426e0c93cd8241e2c60392d08c6ac8e"), + Name: "Modum Token", + Symbol: "MOD", + Color: "#f8f8f8", + Decimals: 0, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xe7775a6e9bcf904eb39da2b68c5efb4f9360e08c"), + Name: "Token-as-a-Service", + Symbol: "TAAS", + Color: "#f8f8f8", + Decimals: 6, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x12b19d3e2ccc14da04fae33e63652ce469b3f2fd"), + Name: "GRID Token", + Symbol: "GRID", + Color: "#f8f8f8", + Decimals: 12, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x7c5a0ce9267ed19b22f8cae653f198e3e8daf098"), + Name: "SANtiment network token", + Symbol: "SAN", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x983f6d60db79ea8ca4eb9968c6aff8cfa04b3c63"), + Name: "SONM Token", + Symbol: "SNM", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x8f8221afbb33998d8584a2b05749ba73c37a938a"), + Name: "Request Token", + Symbol: "REQ", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x12480e24eb5bec1a9d4369cab6a80cad3c0a377a"), + Name: "Substratum", + Symbol: "SUB", + Color: "#f8f8f8", + Decimals: 2, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x0f5d2fb29fb7d3cfee444a200298f468908cc942"), + Name: "Decentraland MANA", + Symbol: "MANA", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x27054b13b1b798b345b591a4d22e6562d47ea75a"), + Name: "AirSwap Token", + Symbol: "AST", + Color: "#f8f8f8", + Decimals: 4, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x48f775efbe4f5ece6e0df2f7b5932df56823b990"), + Name: "R token", + Symbol: "R", + Color: "#f8f8f8", + Decimals: 0, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc7"), + Name: "FirstBlood Token", + Symbol: "1ST", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x12fef5e57bf45873cd9b62e9dbd7bfb99e32d73e"), + Name: "Cofoundit", + Symbol: "CFI", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xf0ee6b27b759c9893ce4f094b49ad28fd15a23e4"), + Name: "Enigma", + Symbol: "ENG", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x4dc3643dbc642b72c158e7f3d2ff232df61cb6ce"), + Name: "Amber Token", + Symbol: "AMB", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x90528aeb3a2b736b780fd1b6c478bb7e1d643170"), + Name: "XPlay Token", + Symbol: "XPA", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x881ef48211982d01e2cb7092c915e647cd40d85c"), + Name: "Open Trading Network", + Symbol: "OTN", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xcb94be6f13a1182e4a4b6140cb7bf2025d28e41b"), + Name: "Trustcoin", + Symbol: "TRST", + Color: "#f8f8f8", + Decimals: 6, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xaaaf91d9b90df800df4f55c205fd6989c977e73a"), + Name: "Monolith TKN", + Symbol: "TKN", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x168296bb09e24a88805cb9c33356536b980d3fc5"), + Name: "RHOC", + Symbol: "RHOC", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xac3da587eac229c9896d919abc235ca4fd7f72c1"), + Name: "Target Coin", + Symbol: "TGT", + Color: "#f8f8f8", + Decimals: 1, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xf3db5fa2c66b7af3eb0c0b782510816cbe4813b8"), + Name: "Everex", + Symbol: "EVX", + Color: "#f8f8f8", + Decimals: 4, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x014b50466590340d41307cc54dcee990c8d58aa8"), + Name: "ICOS", + Symbol: "ICOS", + Color: "#f8f8f8", + Decimals: 6, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x0abdace70d3790235af448c88547603b945604ea"), + Name: "district0x Network Token", + Symbol: "DNT", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x08d32b0da63e2c3bcf8019c9c5d849d7a9d791e6"), + Name: "Dentacoin", + Symbol: "DCN", + Color: "#f8f8f8", + Decimals: 0, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xced4e93198734ddaff8492d525bd258d49eb388e"), + Name: "Eidoo Token", + Symbol: "EDO", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x29d75277ac7f0335b2165d0895e8725cbf658d73"), + Name: "BitDice", + Symbol: "CSNO", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xb2f7eb1f2c37645be61d73953035360e768d81e6"), + Name: "Cobinhood Token", + Symbol: "COB", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c"), + Name: "Enjin Coin", + Symbol: "ENJ", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x0d88ed6e74bbfd96b831231638b66c05571e824f"), + Name: "AVENTUS", + Symbol: "AVT", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x6531f133e6deebe7f2dce5a0441aa7ef330b4e53"), + Name: "Chronobank TIME", + Symbol: "TIME", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xd4c435f5b09f855c3317c8524cb1f586e42795fa"), + Name: "Cindicator Token", + Symbol: "CND", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x006bea43baa3f7a6f765f14f10a1a1b08334ef45"), + Name: "Stox", + Symbol: "STX", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x4df812f6064def1e5e029f1ca858777cc98d2d81"), + Name: "Xaurum", + Symbol: "XAUR", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x2c974b2d0ba1716e644c1fc59982a89ddd2ff724"), + Name: "Vibe", + Symbol: "VIB", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x7728dfef5abd468669eb7f9b48a7f70a501ed29d"), + Name: "PRG", + Symbol: "PRG", + Color: "#f8f8f8", + Decimals: 6, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x6c2adc2073994fb2ccc5032cc2906fa221e9b391"), + Name: "Delphy Token", + Symbol: "DPY", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x2fe6ab85ebbf7776fee46d191ee4cea322cecf51"), + Name: "CoinDash Token", + Symbol: "CDT", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x08f5a9235b08173b7569f83645d2c7fb55e8ccd8"), + Name: "Tierion Network Token", + Symbol: "TNT", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x9af4f26941677c706cfecf6d3379ff01bb85d5ab"), + Name: "DomRaiderToken", + Symbol: "DRT", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x42d6622dece394b54999fbd73d108123806f6a18"), + Name: "SPANK", + Symbol: "SPANK", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x80046305aaab08f6033b56a360c184391165dc2d"), + Name: "Berlin Coin", + Symbol: "BRLN", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"), + Name: "USD Coin", + Symbol: "USDC", + Color: "#f8f8f8", + Decimals: 6, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x58b6a8a3302369daec383334672404ee733ab239"), + Name: "Livepeer Token", + Symbol: "LPT", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x2c4e8f2d746113d0696ce89b35f0d8bf88e0aeca"), + Name: "Simple Token", + Symbol: "ST", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"), + Name: "Wrapped BTC", + Symbol: "WBTC", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x107c4504cd79c5d2696ea0030a8dd4e92601b82e"), + Name: "Bloom Token", + Symbol: "BLT", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x4575f41308EC1483f3d399aa9a2826d74Da13Deb"), + Name: "Orchid", + Symbol: "OXT", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x96a65609a7b84e8842732deb08f56c3e21ac6f8a"), + Name: "Centra token", + Symbol: "Centra", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x2e071d2966aa7d8decb1005885ba1977d6038a65"), + Name: "DICE", + Symbol: "ROL", + Color: "#f8f8f8", + Decimals: 16, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x9b11efcaaa1890f6ee52c6bb7cf8153ac5d74139"), + Name: "Attention Token of Media", + Symbol: "ATM", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x99ea4dB9EE77ACD40B119BD1dC4E33e1C070b80d"), + Name: "Quantstamp Token", + Symbol: "QSP", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x80fB784B7eD66730e8b1DBd9820aFD29931aab03"), + Name: "EthLend Token", + Symbol: "LEND", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xA15C7Ebe1f07CaF6bFF097D8a589fb8AC49Ae5B3"), + Name: "Pundi X Token", + Symbol: "NPXS", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xA4e8C3Ec456107eA67d3075bF9e3DF3A75823DB0"), + Name: "LoomToken", + Symbol: "LOOM", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x0e0989b1f9B8A38983c2BA8053269Ca62Ec9B195"), + Name: "Po.et", + Symbol: "POE", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x5732046A883704404F284Ce41FfADd5b007FD668"), + Name: "Bluzelle Token", + Symbol: "BLZ", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xFA1a856Cfa3409CFa145Fa4e20Eb270dF3EB21ab"), + Name: "IOSToken", + Symbol: "IOST", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671"), + Name: "Numeraire", + Symbol: "NMR", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x8E870D67F660D95d5be530380D0eC0bd388289E1"), + Name: "Pax Dollar", + Symbol: "USDP", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xEA26c4aC16D4a5A106820BC8AEE85fd0b7b2b664"), + Name: "QuarkChain Token", + Symbol: "QKC", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x45804880De22913dAFE09f4980848ECE6EcbAf78"), + Name: "Paxos Gold", + Symbol: "PAXG", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x865ec58b06bF6305B886793AA20A2da31D034E68"), + Name: "Moss Coin", + Symbol: "MOC", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x408e41876cCCDC0F92210600ef50372656052a38"), + Name: "Republic Token", + Symbol: "REN", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x607F4C5BB672230e8672085532f7e901544a7375"), + Name: "iEx.ec Network Token", + Symbol: "RLC", + Color: "#f8f8f8", + Decimals: 9, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x8400D94A5cb0fa0D041a3788e395285d61c9ee5e"), + Name: "UniBright", + Symbol: "UBT", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x4f3AfEC4E5a3F2A6a1A411DEF7D7dFe50eE057bF"), + Name: "Digix Gold Token", + Symbol: "DGX", + Color: "#f8f8f8", + Decimals: 9, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xEA38eAa3C86c8F9B751533Ba2E562deb9acDED40"), + Name: "Fuel Token", + Symbol: "FUEL", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x00000100F2A2bd000715001920eB70D229700085"), + Name: "TrueCAD", + Symbol: "TCAD", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x6710c63432A2De02954fc0f851db07146a6c0312"), + Name: "SyncFab Smart Manufacturing Blockchain", + Symbol: "MFG", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf"), + Name: "DAOstack", + Symbol: "GEN", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x0E8d6b471e332F140e7d9dbB99E5E3822F728DA6"), + Name: "ABYSS", + Symbol: "ABYSS", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xB62132e35a6c13ee1EE0f84dC5d40bad8d815206"), + Name: "Nexo", + Symbol: "NEXO", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x0000000000085d4780B73119b644AE5ecd22b376"), + Name: "TrueUSD", + Symbol: "TUSD", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xD0a4b8946Cb52f0661273bfbC6fD0E0C75Fc6433"), + Name: "Storm Token", + Symbol: "STORM", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xaF4DcE16Da2877f8c9e00544c93B62Ac40631F16"), + Name: "Monetha", + Symbol: "MTH", + Color: "#f8f8f8", + Decimals: 5, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x00000000441378008EA67F4284A57932B1c000a5"), + Name: "TrueGBP", + Symbol: "TGBP", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xbf2179859fc6D5BEE9Bf9158632Dc51678a4100e"), + Name: "ELF Token", + Symbol: "ELF", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x9992eC3cF6A55b00978cdDF2b27BC6882d88D1eC"), + Name: "Polymath", + Symbol: "POLY", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x20F7A3DdF244dc9299975b4Da1C39F8D5D75f05A"), + Name: "Sapien Network", + Symbol: "SPN", + Color: "#f8f8f8", + Decimals: 6, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x1a7a8BD9106F2B8D977E08582DC7d24c723ab0DB"), + Name: "AppCoins", + Symbol: "APPC", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xdAC17F958D2ee523a2206206994597C13D831ec7"), + Name: "Tether USD", + Symbol: "USDT", + Color: "#f8f8f8", + Decimals: 6, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xa3d58c4E56fedCae3a7c43A725aeE9A71F0ece4e"), + Name: "Metronome", + Symbol: "MET", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x6f259637dcD74C767781E37Bc6133cd6A68aa161"), + Name: "HuobiToken", + Symbol: "HT", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"), + Name: "Wrapped Ether", + Symbol: "WETH", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x8f3470A7388c05eE4e7AF3d01D8C722b0FF52374"), + Name: "Veritaseum", + Symbol: "VERI", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x00006100F7090010005F1bd7aE6122c3C2CF0090"), + Name: "TrueAUD", + Symbol: "TAUD", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x66497A283E0a007bA3974e837784C6AE323447de"), + Name: "PornToken", + Symbol: "PT", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xB24754bE79281553dc1adC160ddF5Cd9b74361a4"), + Name: "RIALTO", + Symbol: "XRL", + Color: "#f8f8f8", + Decimals: 9, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F"), + Name: "Synthetix Network Token", + Symbol: "SNX", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x07e3c70653548B04f0A75970C1F81B4CBbFB606f"), + Name: "Delta", + Symbol: "DLT", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x8207c1FfC5B6804F6024322CcF34F29c3541Ae26"), + Name: "OriginToken", + Symbol: "OGN", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x554C20B7c486beeE439277b4540A434566dC4C02"), + Name: "Decision Token", + Symbol: "HST", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x286BDA1413a2Df81731D4930ce2F862a35A609fE"), + Name: "WaBi", + Symbol: "WaBi", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xE5a3229CCb22b6484594973A03a3851dCd948756"), + Name: "RAE Token", + Symbol: "RAE", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x24692791Bc444c5Cd0b81e3CBCaba4b04Acd1F3B"), + Name: "UnikoinGold", + Symbol: "UKG", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xD46bA6D942050d489DBd938a2C909A5d5039A161"), + Name: "Ampleforth", + Symbol: "AMPL", + Color: "#f8f8f8", + Decimals: 9, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xA4Bdb11dc0a2bEC88d24A3aa1E6Bb17201112eBe"), + Name: "StableUSD", + Symbol: "USDS", + Color: "#f8f8f8", + Decimals: 6, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xB98d4C97425d9908E66E53A6fDf673ACcA0BE986"), + Name: "ArcBlock", + Symbol: "ABT", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x81c9151de0C8bafCd325a57E3dB5a5dF1CEBf79c"), + Name: "Datum Token", + Symbol: "DAT", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xa6a840E50bCaa50dA017b91A0D86B8b2d41156EE"), + Name: "EchoLink", + Symbol: "EKO", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x4a57E687b9126435a9B19E4A802113e266AdeBde"), + Name: "Flexacoin", + Symbol: "FXC", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xC86D054809623432210c107af2e3F619DcFbf652"), + Name: "SENTINEL PROTOCOL", + Symbol: "UPP", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x5Af2Be193a6ABCa9c8817001F45744777Db30756"), + Name: "Voyager", + Symbol: "VGX", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x69b148395ce0015c13e36bffbad63f49ef874e03"), + Name: "Data Token", + Symbol: "DTA", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x57Ab1ec28D129707052df4dF418D58a2D46d5f51"), + Name: "Synth sUSD", + Symbol: "sUSD", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643"), + Name: "Compound Dai", + Symbol: "cDAI", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xba11d00c5f74255f56a5e366f4f77f5a186d7f55"), + Name: "BandToken", + Symbol: "BAND", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xa7fc5d2453e3f68af0cc1b78bcfee94a1b293650"), + Name: "Spiking", + Symbol: "SPIKE", + Color: "#f8f8f8", + Decimals: 10, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984"), + Name: "Uniswap", + Symbol: "UNI", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xc00e94cb662c3520282e6f5717214004a7f26888"), + Name: "Compound", + Symbol: "COMP", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xba100000625a3754423978a60c9317c58a424e3d"), + Name: "Balancer", + Symbol: "BAL", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x8ab7404063ec4dbcfd4598215992dc3f8ec853d7"), + Name: "Akropolis", + Symbol: "AKRO", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x9ba00d6856a4edf4665bca2c2309936572473b7e"), + Name: "Aave Interest bearing USDC", + Symbol: "aUSDC", + Color: "#f8f8f8", + Decimals: 6, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xc944e90c64b2c07662a292be6244bdf05cda44a7"), + Name: "Graph Token", + Symbol: "GRT", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x7DD9c5Cba05E151C895FDe1CF355C9A1D5DA6429"), + Name: "Golem Network Token", + Symbol: "GLM", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0x23b608675a2b2fb1890d3abbd85c5775c51691d5"), + Name: "Unisocks Edition 0", + Symbol: "SOCKS", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xEEF9f339514298C6A857EfCfC1A762aF84438dEE"), + Name: "Hermez Network Token", + Symbol: "HEZ", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd"), + Name: "ETH 2x Flexible Leverage Index", + Symbol: "ETH2x-FLI", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xba5BDe662c17e2aDFF1075610382B9B691296350"), + Name: "SuperRare", + Symbol: "RARE", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72"), + Name: "Ethereum Name Service", + Symbol: "ENS", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xDd1Ad9A21Ce722C151A836373baBe42c868cE9a4"), + Name: "Universal Basic Income", + Symbol: "UBI", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 1, + }, + &Token{ + Address: common.HexToAddress("0xc55cf4b03948d7ebc8b9e8bad92643703811d162"), + Name: "Status Test Token", + Symbol: "STT", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 3, + }, + &Token{ + Address: common.HexToAddress("0xdee43a267e8726efd60c2e7d5b81552dcd4fa35c"), + Name: "Handy Test Token", + Symbol: "HND", + Color: "#f8f8f8", + Decimals: 0, + ChainID: 3, + }, + &Token{ + Address: common.HexToAddress("0x703d7dc0bc8e314d65436adf985dda51e09ad43b"), + Name: "Lucky Test Token", + Symbol: "LXS", + Color: "#f8f8f8", + Decimals: 2, + ChainID: 3, + }, + &Token{ + Address: common.HexToAddress("0xe639e24346d646e927f323558e6e0031bfc93581"), + Name: "Adi Test Token", + Symbol: "ADI", + Color: "#f8f8f8", + Decimals: 7, + ChainID: 3, + }, + &Token{ + Address: common.HexToAddress("0x2e7cd05f437eb256f363417fd8f920e2efa77540"), + Name: "Wagner Test Token", + Symbol: "WGN", + Color: "#f8f8f8", + Decimals: 10, + ChainID: 3, + }, + &Token{ + Address: common.HexToAddress("0x57cc9b83730e6d22b224e9dc3e370967b44a2de0"), + Name: "Modest Test Token", + Symbol: "MDS", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 3, + }, + &Token{ + Address: common.HexToAddress("0x6ba7dc8dd10880ab83041e60c4ede52bb607864b"), + Name: "Moksha Coin", + Symbol: "MOKSHA", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 4, + }, + &Token{ + Address: common.HexToAddress("0x7d4ccf6af2f0fdad48ee7958bcc28bdef7b732c7"), + Name: "WIBB", + Symbol: "WIBB", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 4, + }, + &Token{ + Address: common.HexToAddress("0x43d5adc3b49130a575ae6e4b00dfa4bc55c71621"), + Name: "Status Test Token", + Symbol: "STT", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 4, + }, + &Token{ + Address: common.HexToAddress("0x3d6afaa395c31fcd391fe3d562e75fe9e8ec7e6a"), + Name: "Status Test Token", + Symbol: "STT", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 5, + }, + &Token{ + Address: common.HexToAddress("0x98339d8c260052b7ad81c28c16c0b98420f2b46a"), + Name: "USD Coin", + Symbol: "USDC", + Color: "#f8f8f8", + Decimals: 6, + ChainID: 5, + }, + &Token{ + Address: common.HexToAddress("0x022e292b44b5a146f2e8ee36ff44d3dd863c915c"), + Name: "Xeenus 💪", + Symbol: "XEENUS", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 5, + }, + &Token{ + Address: common.HexToAddress("0xc6fde3fd2cc2b173aec24cc3f267cb3cd78a26b7"), + Name: "Yeenus 💪", + Symbol: "YEENUS", + Color: "#f8f8f8", + Decimals: 8, + ChainID: 5, + }, + &Token{ + Address: common.HexToAddress("0x1f9061b953bba0e36bf50f21876132dcf276fc6e"), + Name: "Zeenus 💪", + Symbol: "ZEENUS", + Color: "#f8f8f8", + Decimals: 0, + ChainID: 5, + }, + &Token{ + Address: common.HexToAddress("0xf4B2cbc3bA04c478F0dC824f4806aC39982Dce73"), + Name: "Tether USD", + Symbol: "USDT", + Color: "#f8f8f8", + Decimals: 6, + ChainID: 5, + }, + &Token{ + Address: common.HexToAddress("0xf2edF1c091f683E3fb452497d9a98A49cBA84666"), + Name: "DAI Stablecoin", + Symbol: "DAI", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 5, + }, + &Token{ + Address: common.HexToAddress("0x7f5c764cbc14f9669b88837ca1490cca17c31607"), + Name: "USD Coin", + Symbol: "USDC", + Color: "#f8f8f8", + Decimals: 6, + ChainID: 10, + }, + &Token{ + Address: common.HexToAddress("0x3e50bf6703fc132a94e4baff068db2055655f11b"), + Name: "buffiDai", + Symbol: "BUFF", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 100, + }, + &Token{ + Address: common.HexToAddress("0xcb4ceefce514b2d910d3ac529076d18e3add3775"), + Name: "USD Coin", + Symbol: "USDC", + Color: "#f8f8f8", + Decimals: 6, + ChainID: 420, + }, + &Token{ + Address: common.HexToAddress("0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9"), + Name: "Tether USD", + Symbol: "USDT", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 42161, + }, + &Token{ + Address: common.HexToAddress("0xff970a61a04b1ca14834a43f5de4533ebddb5cc8"), + Name: "USD Coin", + Symbol: "USDC", + Color: "#f8f8f8", + Decimals: 6, + ChainID: 42161, + }, + &Token{ + Address: common.HexToAddress("0xda10009cbd5d07dd0cecc66161fc93d7c9000da1"), + Name: "DAI Stablecoin", + Symbol: "DAI", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 42161, + }, + &Token{ + Address: common.HexToAddress("0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f"), + Name: "Wrapped BTC", + Symbol: "WBTC", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 42161, + }, + &Token{ + Address: common.HexToAddress("0xfa7f8980b0f1e64a2062791cc3b0871572f1f7f0"), + Name: "Uniswap", + Symbol: "UNI", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 42161, + }, + &Token{ + Address: common.HexToAddress("0xf97f4df75117a78c1a5a0dbb814af92458539fb4"), + Name: "ChainLink Token", + Symbol: "Link", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 42161, + }, + &Token{ + Address: common.HexToAddress("0x17fc002b466eec40dae837fc4be5c67993ddbd6f"), + Name: "Frax", + Symbol: "FRAX", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 42161, + }, + &Token{ + Address: common.HexToAddress("0x4d15a3a2286d883af0aa1b3f21367843fac63e07"), + Name: "True USD", + Symbol: "TUSD", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 42161, + }, + &Token{ + Address: common.HexToAddress("0x23a941036ae778ac51ab04cea08ed6e2fe103614"), + Name: "Graph Token", + Symbol: "GRT", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 42161, + }, + &Token{ + Address: common.HexToAddress("0x680447595e8b7b3aa1b43beb9f6098c79ac2ab3f"), + Name: "Decentralized USD", + Symbol: "USDD", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 42161, + }, + &Token{ + Address: common.HexToAddress("0x11cdb42b0eb46d95f990bedd4695a6e3fa034978"), + Name: "Curve DAO Token", + Symbol: "CRV", + Color: "#f8f8f8", + Decimals: 18, + ChainID: 42161, + }, + &Token{ + Address: common.HexToAddress("0x17078F231AA8dc256557b49a8f2F72814A71f633"), + Name: "USD Coin", + Symbol: "USDC", + Color: "#f8f8f8", + Decimals: 6, + ChainID: 421613, + }, + &Token{ + Address: common.HexToAddress("0x265B25e22bcd7f10a5bD6E6410F10537Cc7567e8"), + Name: "Tether USD", + Symbol: "USDT", + Color: "#f8f8f8", + Decimals: 6, + ChainID: 421613, + }, + }, + tokensFetched: false, + } +} + +func (ts *DefaultStore) GetTokens() ([]*Token, error) { + ts.tokensFetched = true + return ts.tokenList, nil +} + +func (ts *DefaultStore) areTokensFetched() bool { + return ts.tokensFetched } diff --git a/services/wallet/token/uniswap_tokenstore.go b/services/wallet/token/uniswap_tokenstore.go new file mode 100644 index 000000000..615abe44b --- /dev/null +++ b/services/wallet/token/uniswap_tokenstore.go @@ -0,0 +1,54 @@ +package token + +import ( + "io/ioutil" + "net/http" + "time" +) + +type uniswapStore struct { + client *http.Client + tokensFetched bool +} + +const uniswapTokensURL = "https://gateway.ipfs.io/ipns/tokens.uniswap.org" // nolint:gosec +const tokenListSchemaURL = "https://uniswap.org/tokenlist.schema.json" // nolint:gosec + +func newUniswapStore() *uniswapStore { + return &uniswapStore{client: &http.Client{Timeout: time.Minute}, tokensFetched: false} +} + +func (ts *uniswapStore) doQuery(url string) (*http.Response, error) { + return ts.client.Get(url) +} + +func (ts *uniswapStore) areTokensFetched() bool { + return ts.tokensFetched +} + +func (ts *uniswapStore) GetTokens() ([]*Token, error) { + resp, err := ts.doQuery(uniswapTokensURL) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + // In an unlikely case when token list is fetched fine, + // but fails to validate against the schema, we don't want + // to refetch the tokens on every GetTokens call as it will + // still fail but will be wasting CPU cycles until restart, + // so lets keep tokensFetched before validate() call + ts.tokensFetched = true + + _, err = validateDocument(string(body), tokenListSchemaURL) + if err != nil { + return nil, err + } + + return bytesToTokens(body) +}