diff --git a/exchanges/Makefile b/exchanges/Makefile new file mode 100644 index 000000000..b7e6dfc35 --- /dev/null +++ b/exchanges/Makefile @@ -0,0 +1,12 @@ +.PHONY: regen fetch test + +regen: + go run cmd/main.go --from-json-file=exchanges.json + gofmt -w exchanges.go + +fetch: + go run cmd/main.go + gofmt -w exchanges.go + +test: + go test -v -cover ./... diff --git a/exchanges/cmd/exchanges.txt b/exchanges/cmd/exchanges.txt new file mode 100644 index 000000000..500aa52f5 --- /dev/null +++ b/exchanges/cmd/exchanges.txt @@ -0,0 +1,89 @@ +package exchanges + +/*--------------------------------+ +| Code generated by exchanges | +| DO NOT EDIT | ++--------------------------------*/ + +import ( + "fmt" + + "github.com/ethereum/go-ethereum/common" +) + +type Exchange struct { + code string + name string + symbol string + logo string + addresses []common.Address +} + +func (e *Exchange) Code() string { return e.code } + +func (e *Exchange) Name() string { return e.name } + +func (e *Exchange) Symbol() string { return e.symbol } + +func (e *Exchange) Logo() string { return e.logo } + +func (e *Exchange) Addresses() []common.Address { return e.addresses } + +// Get returns an exchange struct if the provided +// code is contained within the valid codes. Otherwise +// an error will be returned +func GetCentralizedExchangeWithCode(code string) (*Exchange, error) { + if Valid(code) { + val, ok := centralizedExchangesByCode[code] + if ok { + return val, nil + } + } + return nil, fmt.Errorf("exchange: could not find exchange with code: %q", code) +} + +// Get returns an exchange struct which owns the given +// address. If the address does not belong to any exchange, +// nil will be returned +func GetCentralizedExchangeWithAddress(address common.Address) (*Exchange) { + return centralizedExchangesByAddress[address.String()] +} + +// Valid checks if a provided code is contained +// inside the provided ValidCodes slice +func Valid(code string) bool { + for _, c := range ValidCodes { + if c == code { + return true + } + } + return false +} + +// Following are all the structs containing exchange data +var ( + {{ range $k, $v := . -}} + // {{$v.Code}} Exchange struct + {{toVariableName $v.Code}} = Exchange{ code: "{{$v.Code}}", name: "{{$v.Name}}", symbol: "{{$v.Symbol}}", logo: "{{$v.Logo}}", addresses: []common.Address{ {{addressesJoin $v.Addresses}} } } + {{ end }} +) + +var centralizedExchangesByCode = map[string]*Exchange{ + {{ range $k, $v := . -}} + "{{$v.Code}}": &{{toVariableName $v.Code}}, + {{ end }} +} + +var centralizedExchangesByAddress = map[string]*Exchange{ + {{ range $k, $v := . -}} + {{ range $i, $a := $v.Addresses}} + "{{$a}}": &{{toVariableName $v.Code}}, + {{ end }} + {{ end }} +} + +var ValidCodes = []string{ + {{ range $k, $v := . -}} + "{{$v.Code}}", + {{ end }} +} diff --git a/exchanges/cmd/main.go b/exchanges/cmd/main.go new file mode 100644 index 000000000..09c6ed485 --- /dev/null +++ b/exchanges/cmd/main.go @@ -0,0 +1,351 @@ +package main + +import ( + "bytes" + "encoding/json" + "flag" + "fmt" + "go/format" + "io" + "io/ioutil" + "log" + "net/http" + "net/url" + "os" + "strconv" + "strings" + "text/template" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/status-im/status-go/exchanges/cmd/scaffold" +) + +const ( + templateFile = "cmd/exchanges.txt" // must include the cmd prefix because this code is called from the Makefile + outputGoFile = "exchanges.go" + outputJsonFile = "exchanges.json" + + baseUrl = "https://sapi.coincarp.com/api" + walletUrl = baseUrl + "/v1/market/walletscreen/coin/wallet" + walletAddressUrl = baseUrl + "/v1/market/walletscreen/coin/walletaddress" + iconBaseUrl = "https://s1.coincarp.com" + + ethereumCode = "ethereum" + mainnetChainType = "" + initialPageSize = 30 + + maxRetries = 10 + + requestWaitTime = 1000 * time.Millisecond + requestTimeout = 5 * time.Second + + zeroAddress = "0x0000000000000000000000000000000000000000" +) + +func main() { + log.SetFlags(log.Lshortfile | log.LstdFlags) + + var fromJsonFile string + + flag.StringVar(&fromJsonFile, "from-json-file", "", "Path to JSON file to use instead of remote source") + flag.Parse() + + var exchangesData []exchangeData + if fromJsonFile == "" { + log.Println("Fetching from external service...") + exchangesData = getExchangesData() + } else { + log.Println("Fetching from JSON file...") + exchangesData = loadExchangesDataFromJson(fromJsonFile) + } + + log.Println("Generating files...") + for _, gen := range generators { + gen(exchangesData) + } +} + +func doRequest(url string) ([]byte, error) { + req, err := http.NewRequest(http.MethodGet, url, nil) + if err != nil { + return nil, err + } + + req.Header.Set("Content-Type", "application/json") + req.Header.Set("User-Agent", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0") + + // Ensure wait time between requests + time.Sleep(requestWaitTime) + + client := http.Client{ + Timeout: requestTimeout, + } + + res, err := client.Do(req) + if err != nil { + log.Fatal(err) + } + + statusCode := res.StatusCode + if statusCode != http.StatusOK { + err := fmt.Errorf("unsuccessful request: %s - %d %s", url, statusCode, http.StatusText(statusCode)) + log.Fatal(err) + } + + b, err := ioutil.ReadAll(res.Body) + if err != nil { + log.Fatal(err) + } + defer res.Body.Close() + + var dataInfo scaffold.DataInfo + if err = json.Unmarshal(b, &dataInfo); err != nil { + fmt.Println("unmarshall error: ", url) + log.Fatal(err) + } + + if dataInfo.Code != http.StatusOK { + err := fmt.Errorf("inconsistent response: %s - %d %s", url, dataInfo.Code, dataInfo.Msg) + return nil, err + } + + return b, nil +} + +func getExchangesData() []exchangeData { + log.Println("Fetching exchanges list...") + exchanges, err := getLatestExchangeList() + if err != nil { + log.Fatalf("could not get list of exchanges: %v", err) + } + + exchangesData := make([]exchangeData, 0, 128) + for _, exchange := range exchanges { + log.Println("Fetching address list for exchange:", exchange.Name) + addresses, err := getLatestExchangeAddresses(exchange.Code) + if err != nil { + log.Fatalf("could not get list of addresses: %v", err) + } + exchangeData := buildExchangeData(exchange, addresses) + exchangesData = append(exchangesData, exchangeData) + } + + if len(exchangesData) == 0 { + log.Fatalf("could not build exchanges list") + } + + return exchangesData +} + +func loadExchangesDataFromJson(filePath string) []exchangeData { + file, err := ioutil.ReadFile(filePath) + if err != nil { + log.Fatal(err) + } + + var data []exchangeData + err = json.Unmarshal(file, &data) + if err != nil { + log.Fatalf("cannot unmarshal data: %v", err) + } + + return data +} + +func getLatestExchangeList() ([]*scaffold.Exchange, error) { + page := 1 + pageSize := initialPageSize + retries := 0 + exchanges := make([]*scaffold.Exchange, 0, 128) + + for { + queryParams := url.Values{ + "code": {ethereumCode}, + "chainType": {mainnetChainType}, + "page": {strconv.Itoa(page)}, + "pageSize": {strconv.Itoa(pageSize)}, + "isexchange": {"false"}, + "lang": {"en-US"}, + } + + url := walletUrl + "?" + queryParams.Encode() + + b, err := doRequest(url) + if err != nil { + fmt.Println("request error:", err) + if retries < maxRetries { + page = 1 + pageSize++ + retries++ + exchanges = nil + fmt.Println("retry", retries) + continue + } + log.Fatal(err) + } + + var data scaffold.ExchangesData + if err = json.Unmarshal(b, &data); err != nil { + fmt.Println("unmarshall error: ", url) + log.Fatal(err) + } + + exchanges = append(exchanges, data.Entries.List...) + + if page >= data.Entries.TotalPages { + break + } + + page++ + } + + return exchanges, nil +} + +func getLatestExchangeAddresses(exchangeCode string) ([]*scaffold.ExchangeAddress, error) { + page := 1 + pageSize := initialPageSize + retries := 0 + addresses := make([]*scaffold.ExchangeAddress, 0, 128) + + for { + queryParams := url.Values{ + "code": {ethereumCode}, + "exchangecode": {exchangeCode}, + "chainType": {mainnetChainType}, + "page": {strconv.Itoa(page)}, + "pageSize": {strconv.Itoa(pageSize)}, + "lang": {"en-US"}, + } + + url := walletAddressUrl + "?" + queryParams.Encode() + + b, err := doRequest(url) + if err != nil { + fmt.Println("request error:", err) + if retries < maxRetries { + page = 1 + pageSize++ + retries++ + addresses = nil + fmt.Println("retry", retries) + continue + } + log.Fatal(err) + } + + var data scaffold.ExchangeAddressesData + if err = json.Unmarshal(b, &data); err != nil { + fmt.Println("unmarshall error: ", url) + log.Fatal(err) + } + + addresses = append(addresses, data.Entries.List...) + + if page >= data.Entries.TotalPages { + break + } + + page++ + } + + return addresses, nil +} + +type exchangeData struct { + Code string `json:"code"` + Name string `json:"name"` + Symbol string `json:"symbol"` + Logo string `json:"logo"` + Addresses []common.Address `json:"addresses"` +} + +func buildExchangeData(exchange *scaffold.Exchange, addresses []*scaffold.ExchangeAddress) exchangeData { + data := exchangeData{ + Code: exchange.Code, + Name: exchange.Name, + Symbol: exchange.Symbol, + Logo: iconBaseUrl + exchange.Logo, + Addresses: []common.Address{}, + } + + for _, exchangeAddress := range addresses { + address := common.HexToAddress(exchangeAddress.Address) + if address.Hex() == zeroAddress { + continue + } + data.Addresses = append(data.Addresses, address) + } + + return data +} + +type generatorFunc func(exchangesData []exchangeData) + +var generators = []generatorFunc{ + generateJsonFile, + generateGoPackage, +} + +func generateJsonFile(exchangesData []exchangeData) { + file, err := json.MarshalIndent(exchangesData, "", " ") + if err != nil { + log.Fatalf("cannot marshal data: %v", err) + } + + err = ioutil.WriteFile(outputJsonFile, file, 0644) + if err != nil { + log.Fatal(err) + } +} + +func toVariableName(input string) string { + return "exchange_" + strings.ToLower(strings.Replace(input, "-", "_", -1)) +} + +func addressesJoin(addresses []common.Address) string { + list := make([]string, 0, len(addresses)) + + for _, address := range addresses { + list = append(list, "common.HexToAddress(\""+address.String()+"\")") + } + + return strings.Join(list, ", ") +} + +func generateGoPackage(exchangesData []exchangeData) { + tpl, err := ioutil.ReadFile(templateFile) + if err != nil { + log.Fatalf("cannot open template file: %v", err) + } + + funcMap := template.FuncMap{ + "toVariableName": toVariableName, + "addressesJoin": addressesJoin, + } + + t := template.Must(template.New("go").Funcs(funcMap).Parse(string(tpl))) + buf := new(bytes.Buffer) + err = t.Execute(buf, exchangesData) + if err != nil { + log.Fatal(err) + } + + formatted, err := format.Source(buf.Bytes()) + if err != nil { + log.Fatal(err) + } + buf = bytes.NewBuffer(formatted) + + to, err := os.Create(outputGoFile) + if err != nil { + log.Fatal(err) + } + defer to.Close() + + _, err = io.Copy(to, buf) + if err != nil { + log.Fatal(err) + } +} diff --git a/exchanges/cmd/scaffold/list.go b/exchanges/cmd/scaffold/list.go new file mode 100644 index 000000000..3098a9114 --- /dev/null +++ b/exchanges/cmd/scaffold/list.go @@ -0,0 +1,44 @@ +package scaffold + +type DataInfo struct { + Code int `json:"code"` + Msg string `json:"msg"` +} + +type EntriesInfo struct { + TotalCount int `json:"total_count"` + TotalPages int `json:"total_pages"` + Page int `json:"page"` +} + +type Exchange struct { + Code string `json:"code"` + Name string `json:"name"` + Symbol string `json:"symbol"` + Logo string `json:"logo"` +} + +type ExchangesEntries struct { + EntriesInfo + List []*Exchange `json:"list"` +} + +type ExchangesData struct { + DataInfo + Entries *ExchangesEntries `json:"data"` +} + +type ExchangeAddress struct { + Address string `json:"address"` + Flag string `json:"flag"` +} + +type ExchangesAddressesEntries struct { + EntriesInfo + List []*ExchangeAddress `json:"list"` +} + +type ExchangeAddressesData struct { + DataInfo + Entries *ExchangesAddressesEntries `json:"data"` +} diff --git a/exchanges/exchanges.go b/exchanges/exchanges.go new file mode 100644 index 000000000..51b5590f1 --- /dev/null +++ b/exchanges/exchanges.go @@ -0,0 +1,1396 @@ +package exchanges + +/*--------------------------------+ +| Code generated by exchanges | +| DO NOT EDIT | ++--------------------------------*/ + +import ( + "fmt" + + "github.com/ethereum/go-ethereum/common" +) + +type Exchange struct { + code string + name string + symbol string + logo string + addresses []common.Address +} + +func (e *Exchange) Code() string { return e.code } + +func (e *Exchange) Name() string { return e.name } + +func (e *Exchange) Symbol() string { return e.symbol } + +func (e *Exchange) Logo() string { return e.logo } + +func (e *Exchange) Addresses() []common.Address { return e.addresses } + +// Get returns an exchange struct if the provided +// code is contained within the valid codes. Otherwise +// an error will be returned +func GetCentralizedExchangeWithCode(code string) (*Exchange, error) { + if Valid(code) { + val, ok := centralizedExchangesByCode[code] + if ok { + return val, nil + } + } + return nil, fmt.Errorf("exchange: could not find exchange with code: %q", code) +} + +// Get returns an exchange struct which owns the given +// address. If the address does not belong to any exchange, +// nil will be returned +func GetCentralizedExchangeWithAddress(address common.Address) *Exchange { + return centralizedExchangesByAddress[address.String()] +} + +// Valid checks if a provided code is contained +// inside the provided ValidCodes slice +func Valid(code string) bool { + for _, c := range ValidCodes { + if c == code { + return true + } + } + return false +} + +// Following are all the structs containing exchange data +var ( + // binance Exchange struct + exchange_binance = Exchange{code: "binance", name: "Binance", symbol: "", logo: "https://s1.coincarp.com/logo/2/binance.png?style=36", addresses: []common.Address{common.HexToAddress("0xBE0eB53F46cd790Cd13851d5EFf43D12404d33E8"), common.HexToAddress("0xF977814e90dA44bFA03b6295A0616a897441aceC"), common.HexToAddress("0x47ac0Fb4F2D84898e4D9E7b4DaB3C24507a6D503"), common.HexToAddress("0x28C6c06298d514Db089934071355E5743bf21d60"), common.HexToAddress("0x5a52E96BAcdaBb82fd05763E25335261B270Efcb"), common.HexToAddress("0x9696f59E4d72E237BE84fFD425DCaD154Bf96976"), common.HexToAddress("0x06a0048079ec6571Cd1b537418869CDE6191d42D"), common.HexToAddress("0x21a31Ee1afC51d94C2eFcCAa2092aD1028285549"), common.HexToAddress("0x56Eddb7aa87536c09CCc2793473599fD21A8b17F"), common.HexToAddress("0xDFd5293D8e347dFe59E90eFd55b2956a1343963d"), common.HexToAddress("0x4976A4A02f38326660D17bf34b431dC6e2eb2327"), common.HexToAddress("0x8B99F3660622e21f2910ECCA7fBe51d654a1517D"), common.HexToAddress("0x4D9fF50EF4dA947364BB9650892B2554e7BE5E2B"), common.HexToAddress("0xB8c77482e45F1F44dE1745F52C74426C631bDD52"), common.HexToAddress("0x564286362092D8e7936f0549571a803B203aAceD"), common.HexToAddress("0x3666019b9e801FA9c6f73FdBC952052eBe35c059"), common.HexToAddress("0x708396f17127c42383E3b9014072679b2F60B82f"), common.HexToAddress("0x8894E0a0c962CB723c1976a4421c95949bE2D4E3"), common.HexToAddress("0x3f5CE5FBFe3E9af3971dD833D26bA9b5C936f0bE"), common.HexToAddress("0x001866Ae5B3de6cAa5a51543FD9fB64f524F5478"), common.HexToAddress("0xa344c7aDA83113B3B56941F6e85bf2Eb425949f3"), common.HexToAddress("0x4E9ce36E442e55EcD9025B9a6E0D88485d628A67"), common.HexToAddress("0x8f12f14A09D80051dE4315808Df57af19D80caD4"), common.HexToAddress("0xfE9e8709d3215310075d67E3ed32A380CCf451C8"), common.HexToAddress("0xE0F0CfDe7Ee664943906f17F7f14342E76A5CeC7"), common.HexToAddress("0x0681d8Db095565FE8A346fA0277bFfdE9C0eDBBF"), common.HexToAddress("0x328366Da5A4C5F669172a716955E3adf93A26705"), common.HexToAddress("0x6Aa8F871908F0A2A9AEFB4786b344707CB5D7e26"), common.HexToAddress("0xc365c3315cF926351CcAf13fA7D19c8C4058C8E1"), common.HexToAddress("0x8F22F2063D253846B53609231eD80FA571Bc0C8F"), common.HexToAddress("0xD551234Ae421e3BCBA99A0Da6d736074f22192FF"), common.HexToAddress("0x614B2aD34E7b3146314c352Ae02b4a9b19DeB685"), common.HexToAddress("0xf88c022F7EbfF09A76bf895eb5782a1d92F25Fc7"), common.HexToAddress("0x92D2A1D125C09b2b8192DDc111a5f61857037508"), common.HexToAddress("0xC3C8E0A39769e2308869f7461364ca48155D1d9E"), common.HexToAddress("0x410ed1cbceA3B3990A3f27362c06C3C5D1E75d08"), common.HexToAddress("0xCff79eB669a69bDe08eFce9eE8E37e601dF02F32"), common.HexToAddress("0x15aB2321d7E83d00C015048b567f4F6AadC1B022"), common.HexToAddress("0x4Fabb145d64652a948d72533023f6E7A623C7C53"), common.HexToAddress("0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"), common.HexToAddress("0xdAC17F958D2ee523a2206206994597C13D831ec7")}} + // kraken Exchange struct + exchange_kraken = Exchange{code: "kraken", name: "Kraken", symbol: "", logo: "https://s1.coincarp.com/logo/2/kraken.png?style=36", addresses: []common.Address{common.HexToAddress("0xDA9dfA130Df4dE4673b89022EE50ff26f6EA73Cf"), common.HexToAddress("0x267be1C1D684F78cb4F6a176C4911b741E4Ffdc0"), common.HexToAddress("0xe9f7eCAe3A53D2A67105292894676b00d1FaB785"), common.HexToAddress("0xc6bed363b30DF7F35b601a5547fE56cd31Ec63DA"), common.HexToAddress("0x29728D0efd284D85187362fAA2d4d76C2CfC2612"), common.HexToAddress("0x66c57bF505A85A74609D2C83E94Aabb26d691E1F"), common.HexToAddress("0x43984D578803891dfa9706bDEee6078D80cFC79E"), common.HexToAddress("0xAe2D4617c862309A3d75A0fFB358c7a5009c673F"), common.HexToAddress("0xE853c56864A2ebe4576a807D26Fdc4A0adA51919"), common.HexToAddress("0x2910543Af39abA0Cd09dBb2D50200b3E800A63D2"), common.HexToAddress("0x53d284357ec70cE289D6D64134DfAc8E511c8a3D"), common.HexToAddress("0x0A869d79a7052C7f1b55a8EbAbbEa3420F0D1E13"), common.HexToAddress("0x7f4eDDa6C8646580E68b93041B5476348eEf0406"), common.HexToAddress("0xFa52274DD61E1643d2205169732f29114BC240b3")}} + // okex Exchange struct + exchange_okex = Exchange{code: "okex", name: "OKX(OKEx)", symbol: "", logo: "https://s1.coincarp.com/logo/2/okex.png?style=36&v=1642493710", addresses: []common.Address{common.HexToAddress("0x98EC059Dc3aDFBdd63429454aEB0c990FBA4A128"), common.HexToAddress("0x868daB0b8E21EC0a48b726A1ccf25826c78C6d7F"), common.HexToAddress("0x539C92186f7C6CC4CbF443F26eF84C595baBBcA1"), common.HexToAddress("0xbFbBFacCD1126A11b8F84C60b09859F80f3BD10F"), common.HexToAddress("0xBf94F0AC752C739F623C463b5210a7fb2cbb420B"), common.HexToAddress("0xf51cD688b8744b1bfD2FBa70D050dE85EC4fb9Fb"), common.HexToAddress("0xe95f6604A591F6ba33aCCB43a8a885C9c272108c"), common.HexToAddress("0xf7858Da8a6617f7C6d0fF2bcAFDb6D2eeDF64840"), common.HexToAddress("0xc3AE71FE59f5133BA180cbBd76536a70Dec23d40"), common.HexToAddress("0x4E7b110335511F662FDBB01bf958A7844118c0D4"), common.HexToAddress("0xA7EFAe728D2936e78BDA97dc267687568dD593f3"), common.HexToAddress("0x4b4e14a3773Ee558b6597070797fd51EB48606e5"), common.HexToAddress("0xCbffCB2c38ecd19468d366D392AC0c1DC7F04Bb6"), common.HexToAddress("0x2c8FBB630289363Ac80705A1a61273f76fD5a161"), common.HexToAddress("0x6cC5F688a315f3dC28A7781717a9A798a59fDA7b"), common.HexToAddress("0x7eb6c83AB7D8D9B8618c0Ed973cbEF71d1921EF2"), common.HexToAddress("0x313Eb1C5e1970EB5CEEF6AEbad66b07c7338d369"), common.HexToAddress("0xBDa23B750dD04F792ad365B5F2a6F1d8593796f2"), common.HexToAddress("0x96FDC631F02207B72e5804428DeE274cF2aC0bCD"), common.HexToAddress("0x9723b6d608D4841eB4Ab131687a5D4764eb30138"), common.HexToAddress("0x5041ed759Dd4aFc3a72b8192C143F72f4724081A"), common.HexToAddress("0x06d3a30cBb00660B85a30988D197B1c282c6dCB6"), common.HexToAddress("0x276cdBa3a39aBF9cEdBa0F1948312c0681E6D5Fd"), common.HexToAddress("0x68841a1806fF291314946EebD0cdA8b348E73d6D"), common.HexToAddress("0x3D55CCb2a943d88D39dd2E62DAf767C69fD0179F"), common.HexToAddress("0x07cff3c78Dc9bD2378b89b92f01254703861c2E4"), common.HexToAddress("0x236F9F97e0E62388479bf9E5BA4889e46B0273C3"), common.HexToAddress("0x59FAE149A8f8EC74d5bC038F8b76D25b136b9573"), common.HexToAddress("0x75231F58b43240C9718Dd58B4967c5114342a86c")}} + // Bitfinex Exchange struct + exchange_bitfinex = Exchange{code: "Bitfinex", name: "Bitfinex", symbol: "", logo: "https://s1.coincarp.com/logo/2/bitfinex.png?style=36&v=1642558568", addresses: []common.Address{common.HexToAddress("0xC61b9BB3A7a0767E3179713f3A5c7a9aeDCE193C"), common.HexToAddress("0x36a85757645E8e8AeC062a1dEE289c7d615901Ca"), common.HexToAddress("0x1B8766d041567EeD306940c587e21C06aB968663"), common.HexToAddress("0x5a710a3cDF2AF218740384c52a10852D8870626A"), common.HexToAddress("0x4fdd5Eb2FB260149A3903859043e962Ab89D8ED4"), common.HexToAddress("0x28140CB1AC771d4Add91eE23788E50249C10263d"), common.HexToAddress("0xC56fEFd1028B0534bfaDCdB580d3519b5586246E"), common.HexToAddress("0x77134cbC06cB00b66F4c7e623D5fdBF6777635EC"), common.HexToAddress("0x0b73F67A49273fc4B9A65DBD25D7d0918E734E63"), common.HexToAddress("0x742d35Cc6634C0532925a3b844Bc454e4438f44e"), common.HexToAddress("0x53B36141490c419fa27ecabFEB8Be1ecAdc82431"), common.HexToAddress("0x0cD76cD43992C665FdC2d8aC91B935CA3165E782"), common.HexToAddress("0x1151314c646Ce4E0eFD76d1aF4760aE66a9Fe30F"), common.HexToAddress("0x876EabF441B2EE5B5b0554Fd502a8E0600950cFa"), common.HexToAddress("0x5754284f345afc66a98fbB0a0Afe71e0F007B949"), common.HexToAddress("0x87a32492dA96069115A12E27fF5e378f03A8eDF7"), common.HexToAddress("0xC6CDE7C39eB2f0F0095F41570af89eFC2C1Ea828"), common.HexToAddress("0xdcD0272462140D0A3cEd6C4bf970c7641f08CD2c"), common.HexToAddress("0x7727E5113D1d161373623e5f49FD568B4F543a9E")}} + // gemini Exchange struct + exchange_gemini = Exchange{code: "gemini", name: "Gemini", symbol: "", logo: "https://s1.coincarp.com/logo/2/gemini.png?style=36", addresses: []common.Address{common.HexToAddress("0x61EDCDf5bb737ADffE5043706e7C5bb1f1a56eEA"), common.HexToAddress("0xd24400ae8BfEBb18cA49Be86258a3C749cf46853"), common.HexToAddress("0x5f65f7b609678448494De4C87521CdF6cEf1e932"), common.HexToAddress("0x6Fc82a5fe25A5cDb58bc74600A40A69C065263f8")}} + // crypto-com-exchange Exchange struct + exchange_crypto_com_exchange = Exchange{code: "crypto-com-exchange", name: "Crypto.com Exchange", symbol: "", logo: "https://s1.coincarp.com/logo/2/crypto-com-exchange.png?style=36", addresses: []common.Address{common.HexToAddress("0xCFFAd3200574698b78f32232aa9D63eABD290703"), common.HexToAddress("0x6262998Ced04146fA42253a5C0AF90CA02dfd2A3"), common.HexToAddress("0x46340b20830761efd32832A74d7169B29FEB9758"), common.HexToAddress("0x72A53cDBBcc1b9efa39c834A540550e23463AAcB"), common.HexToAddress("0x7758E507850dA48cd47df1fB5F875c23E3340c50"), common.HexToAddress("0x55c005713BAb8824efd9f5B41C55F8bbC815abCd"), common.HexToAddress("0xA8e330039b67Be5573AfB388Dc35214481C5cf81")}} + // bithumb Exchange struct + exchange_bithumb = Exchange{code: "bithumb", name: "Bithumb", symbol: "", logo: "https://s1.coincarp.com/logo/2/bithumb.png?style=36", addresses: []common.Address{common.HexToAddress("0x558553D54183a8542F7832742e7B4Ba9c33Aa1E6"), common.HexToAddress("0x3fBE1f8Fc5dDb27d428aA60f661EAAaB0d2000ce"), common.HexToAddress("0x3052cD6BF951449A984fe4B5a38B46AEF9455c8E"), common.HexToAddress("0x8FA8aF91C675452200e49b4683a33Ca2E1A34e42"), common.HexToAddress("0x2140eFD7Ba31169c69dfff6CDC66C542f0211825"), common.HexToAddress("0x090bA5aF8284eBE16Fccfc6C0BE8FbEFcf23D365"), common.HexToAddress("0x15878e87c685f866edFaF454BE6Dc06Fa517B35B"), common.HexToAddress("0x186549a4aE594fc1F70bA4CFFDAc714b405bE3F9"), common.HexToAddress("0x31D03f07178BcD74F9099AfeBD23B0AE30184ab5"), common.HexToAddress("0x88D34944cF554e9CCCf4a24292D891f620e9c94F"), common.HexToAddress("0xA0Ff1e0F30b5DDA2dc01e7e828290Bc72b71E57d"), common.HexToAddress("0xc1dA8F69e4881efe341600620268934ef01a3E63"), common.HexToAddress("0xd273Bd546b11Bd60214A2F9d71f22A088AAfe31B"), common.HexToAddress("0xed48DC0628789c2956B1E41726d062a86ec45bFF")}} + // kucoin Exchange struct + exchange_kucoin = Exchange{code: "kucoin", name: "KuCoin", symbol: "", logo: "https://s1.coincarp.com/logo/2/kucoin.png?style=36", addresses: []common.Address{common.HexToAddress("0xD6216fC19DB775Df9774a6E33526131dA7D19a2c"), common.HexToAddress("0xb8e6D31e7B212b2b7250EE9c26C56cEBBFBe6B23"), common.HexToAddress("0x1692E170361cEFD1eb7240ec13D048Fd9aF6d667"), common.HexToAddress("0xcaD621da75a66c7A8f4FF86D30A2bF981Bfc8FdD"), common.HexToAddress("0xd89350284c7732163765b23338f2ff27449E0Bf5"), common.HexToAddress("0x88Bd4D3e2997371BCEEFE8D9386c6B5B4dE60346"), common.HexToAddress("0xeC30d02f10353f8EFC9601371f56e808751f396F"), common.HexToAddress("0x738cF6903E6c4e699D1C2dd9AB8b67fcDb3121eA"), common.HexToAddress("0xf16E9B0D03470827A95CDfd0Cb8a8A3b46969B91"), common.HexToAddress("0xa1D8d972560C2f8144AF871Db508F0B0B10a3fBf"), common.HexToAddress("0x2B5634C42055806a59e9107ED44D43c426E58258"), common.HexToAddress("0x689C56AEf474Df92D44A1B70850f808488F9769C"), common.HexToAddress("0xFf651EAD42b8EeA0B9cB88EDc92704ef6af372Ce"), common.HexToAddress("0x899B5d52671830f567BF43A14684Eb14e1f945fe"), common.HexToAddress("0x14EA40648fC8C1781D19363F5B9Cc9A877ac2469"), common.HexToAddress("0x2a8c8b09bD77c13980495A959B26c1305166A57f"), common.HexToAddress("0x5dB0E46744A321f7Fe7e2E4A9EE0df2F5dD0c3E3"), common.HexToAddress("0xF43D7EbaaD1Efefb3e4df0c9d5766a112DcE7Dec")}} + // bybit Exchange struct + exchange_bybit = Exchange{code: "bybit", name: "Bybit", symbol: "", logo: "https://s1.coincarp.com/logo/2/bybit.png?style=36&v=1642060058", addresses: []common.Address{common.HexToAddress("0x1Db92e2EeBC8E0c075a02BeA49a2935BcD2dFCF4"), common.HexToAddress("0xee5B5B923fFcE93A870B3104b7CA09c3db80047A"), common.HexToAddress("0xf89d7b9c864f589bbF53a82105107622B35EaA40"), common.HexToAddress("0xA7A93fd0a276fc1C0197a5B5623eD117786eeD06")}} + // gate-io Exchange struct + exchange_gate_io = Exchange{code: "gate-io", name: "gate.io", symbol: "", logo: "https://s1.coincarp.com/logo/2/gate-io.png?style=36&v=1654130549", addresses: []common.Address{common.HexToAddress("0xC882b111A75C0c657fC507C04FbFcD2cC984F071"), common.HexToAddress("0x1C4b70a3968436B9A0a9cf5205c787eb81Bb558c"), common.HexToAddress("0x0D0707963952f2fBA59dD06f2b425ace40b492Fe"), common.HexToAddress("0xD793281182A0e3E023116004778F45c29fc14F19"), common.HexToAddress("0x7793cD85c11a924478d358D49b05b37E91B5810F"), common.HexToAddress("0x5d8f42503ea6E7807DaF04047aA749E43847bE09"), common.HexToAddress("0x127481c5Ce4f9bB7cbDB6F8681eF27b21E953bd1"), common.HexToAddress("0x249C4677896D969e2fec3AD2c405FB4be3baD4D2"), common.HexToAddress("0x6DF6d4610e12Fd9033f8c8329F443f201BD36aE1"), common.HexToAddress("0xeb1d60A831a9B689a67f314aFbF0D7f9E6ac911d"), common.HexToAddress("0xE7872ffEDDAC12fB4B8579fBf390553415A99028"), common.HexToAddress("0x7049e4343cE902240cAeDFd093559250Ff890Cef"), common.HexToAddress("0xfF5566497750058C1b9A35229Ab7ca8f50811912"), common.HexToAddress("0xe134A754345582b113962cFA51b0DC036a1B04C5"), common.HexToAddress("0x4ADd38EE5bf1e232707c543C880F34c61c158EA9"), common.HexToAddress("0xDb13fEA8aFd91f66Bb99595AA2801599da1aed3F"), common.HexToAddress("0x020142aCd7f25281C0C5e0e90B6CCe6ddaEa3cD8"), common.HexToAddress("0xE35973b0C5C831A7423342DBaEbF555946FDEd4c"), common.HexToAddress("0xc9B8ded010dDb547e334410fC04BB82420EaFF06"), common.HexToAddress("0xfeAFAe14aDED9279afdA58C4A3Ac42FE7195E57F"), common.HexToAddress("0x9ED8b706C99E6ebd80824130eD935F9b5d78f4E3"), common.HexToAddress("0x1dBf7a573e5fF8E40E477510a7c43F633B0BEE79")}} + // bittrex Exchange struct + exchange_bittrex = Exchange{code: "bittrex", name: "Bittrex", symbol: "", logo: "https://s1.coincarp.com/logo/2/bittrex.png?style=36", addresses: []common.Address{common.HexToAddress("0x66f820a414680B5bcda5eECA5dea238543F42054"), common.HexToAddress("0xFbC9D695D419Cdf7eB46dF979353f5B394227976"), common.HexToAddress("0x429C8344C9b911e9a0A6e6cE257b28250Bd3a90a"), common.HexToAddress("0xFBb1b73C4f0BDa4f67dcA266ce6Ef42f520fBB98"), common.HexToAddress("0xE94b04a0FeD112f3664e45adb2B8915693dD5FF3")}} + // coinone Exchange struct + exchange_coinone = Exchange{code: "coinone", name: "Coinone", symbol: "", logo: "https://s1.coincarp.com/logo/2/coinone.png?style=36", addresses: []common.Address{common.HexToAddress("0x1e2FCfd26d36183f1A5d90f0e6296915b02BCb40"), common.HexToAddress("0x167A9333BF582556f35Bd4d16A7E80E191aa6476")}} + // huobipro Exchange struct + exchange_huobipro = Exchange{code: "huobipro", name: "Huobi Global", symbol: "", logo: "https://s1.coincarp.com/logo/2/huobipro.png?style=36&v=1669107209", addresses: []common.Address{common.HexToAddress("0x18709E89BD403F470088aBDAcEbE86CC60dda12e"), common.HexToAddress("0xA929022c9107643515F5c777cE9a910F0D1e490C"), common.HexToAddress("0xeEe28d484628d41A82d01e21d12E2E78D69920da"), common.HexToAddress("0x6748F50f686bfbcA6Fe8ad62b22228b87F31ff2b"), common.HexToAddress("0x5C985E89DDe482eFE97ea9f1950aD149Eb73829B"), common.HexToAddress("0x1062a747393198f70F71ec65A582423Dba7E5Ab3"), common.HexToAddress("0xaB5C66752a9e8167967685F1450532fB96d5d24f"), common.HexToAddress("0xfdb16996831753d5331fF813c29a93c76834A0AD"), common.HexToAddress("0xFA4B5Be3f2f84f56703C42eB22142744E95a2c58"), common.HexToAddress("0x0A98fB70939162725aE66E626Fe4b52cFF62c2e5"), common.HexToAddress("0x46705dfff24256421A05D056c29E81Bdc09723B8"), common.HexToAddress("0x18916e1a2933Cb349145A280473A5DE8EB6630cb"), common.HexToAddress("0xFd54078bAdD5653571726C3370AfB127351a6f26"), common.HexToAddress("0xadB2B42F6bD96F5c65920b9ac88619DcE4166f94"), common.HexToAddress("0xc589b275e60dDa57aD7E117C6DD837Ab524a5666"), common.HexToAddress("0xf056F435Ba0CC4fCD2F1B17e3766549fFc404B94"), common.HexToAddress("0x5401dBf7da53e1C9Dbf484E3d69505815F2f5e6e"), common.HexToAddress("0x7EF35bb398E0416b81b019fEa395219B65c52164"), common.HexToAddress("0xEec606A66edB6f497662Ea31b5eb1610da87AB5f"), common.HexToAddress("0x794d28aC31bCB136294761a556b68D2634094153"), common.HexToAddress("0x4d77a1144dC74f26838B69391a6D3B1e403D0990"), common.HexToAddress("0x9A755332D874c893111207b0b220Ce2615cd036F"), common.HexToAddress("0xE4818f8fDe0C977A01DA4Fa467365B8bF22b071E"), common.HexToAddress("0x32598293906b5b17c27d657dB3AD2c9b3f3E4265"), common.HexToAddress("0xE93381fB4c4F14bDa253907b18faD305D799241a"), common.HexToAddress("0xf66852bC122fD40bFECc63CD48217E88bda12109"), common.HexToAddress("0x30741289523c2e4d2A62c7D6722686D14E723851"), common.HexToAddress("0x90E9dDD9d8D5ae4E3763d0CF856C97594DEA7325"), common.HexToAddress("0xB2a48f542dc56B89b24C04076cbE565b3Dc58e7b"), common.HexToAddress("0xCAc725beF4f114F728cbCfd744a731C2a463c3Fc"), common.HexToAddress("0x6F48a3E70F0251d1e83a989e62aAa2281A6d5380"), common.HexToAddress("0xEB6D43Fe241fb2320b5A3c9BE9CDfD4dd8226451"), common.HexToAddress("0x1B93129F05cc2E840135AAB154223C75097B69bf"), common.HexToAddress("0xd8a83b72377476D0a66683CDe20A8aAD0B628713"), common.HexToAddress("0x28FFE35688fFFfd0659AEE2E34778b0ae4E193aD"), common.HexToAddress("0xB4Cd0386d2Db86f30C1A11c2B8c4F4185c1Dade9"), common.HexToAddress("0x956e0DBEcC0e873d34a5e39B25f364b2CA036730"), common.HexToAddress("0x73f8FC2e74302eb2EfdA125A326655aCF0DC2D1B"), common.HexToAddress("0x229b5c097F9b35009CA1321Ad2034D4b3D5070F6"), common.HexToAddress("0xE3314bbF3334228b257779E28228CfB86fA4261B"), common.HexToAddress("0x1205E4f0D2f02262E667fd72f95a68913b4F7462"), common.HexToAddress("0x0511509A39377F1C6c78DB4330FBfcC16D8A602f"), common.HexToAddress("0x0577a79Cfc63Bbc0Df38833Ff4C4a3BF2095b404"), common.HexToAddress("0xB6bC437708a398cDA5627224BB8b88BCD1E88d8F"), common.HexToAddress("0xc837F51A0eFa33F8ECA03570e3D01a4B2CF97FfD"), common.HexToAddress("0x137ad9C4777E1d36e4b605e745e8F37B2b62E9c5"), common.HexToAddress("0x034f854B44D28E26386c1BC37ff9B20C6380b00d"), common.HexToAddress("0x0c6C34CDd915845376fb5407E0895196C9DD4eeC"), common.HexToAddress("0x926fC576b7facF6aE2d08eE2D4734C134a743988"), common.HexToAddress("0x5861b8446A2F6e19a067874c133f04c578928727"), common.HexToAddress("0xDc76CD25977E0a5Ae17155770273aD58648900D3"), common.HexToAddress("0x6f259637dcD74C767781E37Bc6133cd6A68aa161"), common.HexToAddress("0xa66Daa57432024023DB65477BA87D4E7F5f95213"), common.HexToAddress("0xa8660c8ffD6D578F657B72c0c811284aef0B735e")}} + // binance-us Exchange struct + exchange_binance_us = Exchange{code: "binance-us", name: "Binance.US", symbol: "", logo: "https://s1.coincarp.com/logo/2/binance-us.png?style=36", addresses: []common.Address{common.HexToAddress("0x34ea4138580435B5A521E460035edb19Df1938c1"), common.HexToAddress("0xf60c2Ea62EDBfE808163751DD0d8693DCb30019c"), common.HexToAddress("0x61189Da79177950A7272c88c6058b96d4bcD6BE2")}} + // bitflyer Exchange struct + exchange_bitflyer = Exchange{code: "bitflyer", name: "bitFlyer", symbol: "", logo: "https://s1.coincarp.com/logo/2/bitflyer.png?style=36", addresses: []common.Address{common.HexToAddress("0x111cFf45948819988857BBF1966A0399e0D1141e")}} + // korbit Exchange struct + exchange_korbit = Exchange{code: "korbit", name: "Korbit", symbol: "", logo: "https://s1.coincarp.com/logo/2/korbit.png?style=36", addresses: []common.Address{common.HexToAddress("0xD03be958e6b8da2D28aC8231a2291d6E4f0a7ea7"), common.HexToAddress("0xf0bc8FdDB1F358cEf470D63F96aE65B1D7914953"), common.HexToAddress("0xd6e0F7dA4480b3AD7A2C8b31bc5a19325355CA15"), common.HexToAddress("0x8550E644D74536f1DF38B17D5F69aa1BFe28aE86"), common.HexToAddress("0x0c01089AEdc45Ab0F43467CCeCA6B4d3E4170bEa"), common.HexToAddress("0x2864DE013415B6c2C7A96333183B20f0F9cC7532"), common.HexToAddress("0x59fba2E8595841DD2627703f4bb535C3B40a12E0"), common.HexToAddress("0x49e14f2D6839768BcC39Ef0F60809f00eaBBAc69"), common.HexToAddress("0x51d9914cB7f0C7D03075280D8f57Eb0Be6Ee457E"), common.HexToAddress("0x58e2201D8e1668597A37f4D6e701fF642dC2fa6d"), common.HexToAddress("0xE6ae903Bf00691d5996fABa0C2Ee7E7422A48FfE"), common.HexToAddress("0x50CBe3772513706CEE11548A13a1890F0a2996A0"), common.HexToAddress("0x954818aE7D93DD682BEC7823EE3406e3B4133028"), common.HexToAddress("0xb7580490a51D3F48D451ba5f2DD79a835d266015"), common.HexToAddress("0x1167ed55a3a37f072d59217493117b07972aAD7F"), common.HexToAddress("0x1E4B147d4dA3Fdb73ACC8428dDEA638088451Cdc"), common.HexToAddress("0xe5d7CcC5fc3b3216C4DFF3a59442F1d83038468C"), common.HexToAddress("0x42992d123b02d213f58ddb72572Cf48607be6348")}} + // luno Exchange struct + exchange_luno = Exchange{code: "luno", name: "Luno", symbol: "", logo: "https://s1.coincarp.com/logo/2/luno.png?style=36", addresses: []common.Address{common.HexToAddress("0x416299AAde6443e6F6e8ab67126e65a7F606eeF5")}} + // coinbasepro Exchange struct + exchange_coinbasepro = Exchange{code: "coinbasepro", name: "Coinbase Pro", symbol: "", logo: "https://s1.coincarp.com/logo/2/coinbasepro.png?style=36&v=1628048947", addresses: []common.Address{common.HexToAddress("0xA9D1e08C7793af67e9d92fe308d5697FB81d3E43"), common.HexToAddress("0x71660c4005BA85c37ccec55d0C4493E66Fe775d3"), common.HexToAddress("0xddfAbCdc4D8FfC6d5beaf154f18B778f892A0740"), common.HexToAddress("0x3cD751E6b0078Be393132286c442345e5DC49699"), common.HexToAddress("0x503828976D22510aad0201ac7EC88293211D23Da"), common.HexToAddress("0xb5d85CBf7cB3EE0D56b3bB207D5Fc4B82f43F511"), common.HexToAddress("0xeB2629a2734e272Bcc07BDA959863f316F4bD4Cf"), common.HexToAddress("0xA090e606E30bD747d4E6245a1517EbE430F0057e"), common.HexToAddress("0xD688AEA8f7d450909AdE10C47FaA95707b0682d9"), common.HexToAddress("0x02466E547BFDAb679fC49e96bBfc62B9747D997C"), common.HexToAddress("0x6b76F8B1e9E59913BfE758821887311bA1805cAB")}} + // idex Exchange struct + exchange_idex = Exchange{code: "idex", name: "IDEX", symbol: "", logo: "https://s1.coincarp.com/logo/2/idex.png?style=36&v=1638840148", addresses: []common.Address{common.HexToAddress("0x2a0c0DBEcC7E4D658f48E01e3fA353F44050c208"), common.HexToAddress("0x19CD9ce7e9BD7F56f69Bcfb8ed63aEB46631A970")}} + // bitget Exchange struct + exchange_bitget = Exchange{code: "bitget", name: "Bitget", symbol: "", logo: "https://s1.coincarp.com/logo/2/bitget.png?style=36&v=1676594834", addresses: []common.Address{common.HexToAddress("0xe80623a9d41f2f05780D9cD9cea0F797Fd53062A"), common.HexToAddress("0xe6a421f24d330967a3Af2F4cDB5c34067E7e4d75"), common.HexToAddress("0x97b9D2102A9a65A26E1EE82D59e42d1B73B68689"), common.HexToAddress("0x5bdf85216ec1e38D6458C870992A69e38e03F7Ef"), common.HexToAddress("0x0639556F03714A74a5fEEaF5736a4A64fF70D206"), common.HexToAddress("0xE2B406EC9227143A8830229eEb3Eb6E24b5c60Be"), common.HexToAddress("0x31A36512D4903635b7dd6828a934C3915A5809Be")}} + // mexc Exchange struct + exchange_mexc = Exchange{code: "mexc", name: "MEXC Global", symbol: "", logo: "https://s1.coincarp.com/logo/2/mexc.png?style=36&v=1668751999", addresses: []common.Address{common.HexToAddress("0x3CC936b795A188F0e246cBB2D74C5Bd190aeCF18"), common.HexToAddress("0x75e89d5979E4f6Fba9F97c104c2F0AFB3F1dcB88"), common.HexToAddress("0x0162Cd2BA40E23378Bf0FD41f919E1be075f025F"), common.HexToAddress("0x0211f3ceDbEf3143223D3ACF0e589747933e8527"), common.HexToAddress("0xe70CDE2c091569a09e7c1e335e20AF302Ab41339")}} + // curve Exchange struct + exchange_curve = Exchange{code: "curve", name: "Curve", symbol: "", logo: "https://s1.coincarp.com/logo/2/curve.png?style=36", addresses: []common.Address{common.HexToAddress("0xc5424B857f758E906013F3555Dad202e4bdB4567")}} + // bitmex Exchange struct + exchange_bitmex = Exchange{code: "bitmex", name: "BitMEX", symbol: "", logo: "https://s1.coincarp.com/logo/2/bitmex.png?style=36", addresses: []common.Address{common.HexToAddress("0xEEA81C4416d71CeF071224611359F6F99A4c4294")}} + // poloniex Exchange struct + exchange_poloniex = Exchange{code: "poloniex", name: "Poloniex", symbol: "", logo: "https://s1.coincarp.com/logo/2/poloniex.png?style=36", addresses: []common.Address{common.HexToAddress("0xA910f92ACdAf488fa6eF02174fb86208Ad7722ba"), common.HexToAddress("0x32Be343B94f860124dC4fEe278FDCBD38C102D88"), common.HexToAddress("0x6F803466bCD17f44fa18975bf7c509ba64Bf3825"), common.HexToAddress("0x6B71834D65C5C4d8eD158D54B47E6Ea4Ff4E5437"), common.HexToAddress("0x8d451AE5ee8F557a9cE7A9D7Be8A8cb40002d5cB"), common.HexToAddress("0xc0e30823e5e628df8bc9bf2636a347E1512F0ecb"), common.HexToAddress("0xfbf2173154F7625713be22E0504404EBfE021eae"), common.HexToAddress("0xEaD6be34CE315940264519f250d8160f369fa5cd"), common.HexToAddress("0xb794F5eA0ba39494cE839613fffBA74279579268"), common.HexToAddress("0x48d466B7c0d32B61E8A82Cd2bCF060F7C3F966df"), common.HexToAddress("0x65F9B2e4d7aAEB40fFEA8C6F5844d5AD7Da257E0"), common.HexToAddress("0xaB11204cfEacCFfa63C2D23AeF2Ea9aCCDB0a0D5"), common.HexToAddress("0x0536806df512D6cDDE913Cf95c9886f65b1D3462"), common.HexToAddress("0x31a2Feb9b5D3b5f4e76C71D6C92FC46eBb3cb1c1"), common.HexToAddress("0x209c4784AB1E8183Cf58cA33cb740efbF3FC18EF"), common.HexToAddress("0x2fA2Bc2ce6A4f92952921A4CAA46B3727D24a1ec"), common.HexToAddress("0x36B01066b7fa4a0fdb2968eA0256C848e9135674"), common.HexToAddress("0x6795cf8EB25585EaDC356Ae32AC6641016c550f2"), common.HexToAddress("0xAa9fa73dFE17ecAa2C89b39f0bb2779613C5Fc3b"), common.HexToAddress("0xBd2Ec7c608a06fE975DBDCA729E84dEdb34eCC21")}} + // bit-z Exchange struct + exchange_bit_z = Exchange{code: "bit-z", name: "BitZ", symbol: "", logo: "https://s1.coincarp.com/logo/2/bit-z.png?style=36", addresses: []common.Address{common.HexToAddress("0xEe8D8ABABB63bCd41e70a30B187CbaAA4e5D7ec6"), common.HexToAddress("0xA24f25A8545eE2Ab81B2A5Cc8F047d3567fCDE0F"), common.HexToAddress("0x3D5851C33b581a49998850a78D1865a1936dAcb3"), common.HexToAddress("0x4B729cF402CfCfFd057E254924B32241AeDC1795")}} + // yobit Exchange struct + exchange_yobit = Exchange{code: "yobit", name: "YoBit", symbol: "", logo: "https://s1.coincarp.com/logo/2/yobit.png?style=36", addresses: []common.Address{common.HexToAddress("0xF5bEC430576fF1b82e44DDB5a1C93F6F9d0884f3"), common.HexToAddress("0xc4D300019f587145cFd9b42875073b3AD4Bb0296")}} + // coinswitch-kuber Exchange struct + exchange_coinswitch_kuber = Exchange{code: "coinswitch-kuber", name: "CoinSwitch", symbol: "", logo: "https://s1.coincarp.com/logo/2/coinswitch-kuber.png?style=36&v=1672997092", addresses: []common.Address{common.HexToAddress("0x252D1375CA8F8A4CA59F1e7635F8Fd7C4A78031E"), common.HexToAddress("0xceAE7673553c90d0a3cd1A494dA35eDe63910cBF"), common.HexToAddress("0x3506A6ccc61d4D2046B79969020a5aF79010b4a6"), common.HexToAddress("0x294B9B133cA7Bc8ED2CdD03bA661a4C6d3a834D9"), common.HexToAddress("0x17a678C673FbB5B2f3294ef35e18c0Ef8cC3E64F"), common.HexToAddress("0x250b05e1E0dd20A876E369a16441E714e3d9f436"), common.HexToAddress("0x4346910075E50A442931D698D41ebE6965a584b1"), common.HexToAddress("0x4cD3aa96836c133c9B9f27daFa7baF744D57404d"), common.HexToAddress("0x758E2c2D1a362E2B3e613545e48285b03581EF43"), common.HexToAddress("0x7D3f7A3842f18873C769a42f92F51F091954211c"), common.HexToAddress("0xc0EB873cd81d47d290Ff7b6AD49280f6fD9cfB2B"), common.HexToAddress("0xE627b3e5591a713E3c23aF6fc4eBa2F313FdF489"), common.HexToAddress("0xE6b936B7640afa9242d1A714E50eE823e1Be140f")}} + // bitcoin-indonesia Exchange struct + exchange_bitcoin_indonesia = Exchange{code: "bitcoin-indonesia", name: "Indodax", symbol: "", logo: "https://s1.coincarp.com/logo/2/bitcoin-indonesia.png?style=36", addresses: []common.Address{common.HexToAddress("0x91Dca37856240E5e1906222ec79278b16420Dc92"), common.HexToAddress("0x3C02290922a3618A4646E3BbCa65853eA45FE7C6"), common.HexToAddress("0x9CbADD5Ce7E14742F70414A6DcbD4e7bB8712719")}} + // phemex Exchange struct + exchange_phemex = Exchange{code: "phemex", name: "Phemex", symbol: "", logo: "https://s1.coincarp.com/logo/2/phemex.png?style=36", addresses: []common.Address{common.HexToAddress("0xf7D13C7dBec85ff86Ee815f6dCbb3DEDAc78ca49")}} + // bigone Exchange struct + exchange_bigone = Exchange{code: "bigone", name: "BigONE", symbol: "", logo: "https://s1.coincarp.com/logo/2/bigone.png?style=36", addresses: []common.Address{common.HexToAddress("0xD4Dcd2459BB78d7a645Aa7E196857D421b10D93F"), common.HexToAddress("0xa30D8157911ef23c46C0eB71889eFe6a648a41F7"), common.HexToAddress("0x88e343F4599292C2CfFe683C1bb93cD3480BdbAb"), common.HexToAddress("0x17Bc58b788808DaB201a9A90817fF3C168BF3d61")}} + // Bitmax Exchange struct + exchange_bitmax = Exchange{code: "Bitmax", name: "AscendEX", symbol: "", logo: "https://s1.coincarp.com/logo/2/bitmax.png?style=36", addresses: []common.Address{common.HexToAddress("0x983873529f95132BD1812A3B52c98Fb271d2f679"), common.HexToAddress("0xfB8131c260749c7835a08ccBdb64728De432858E"), common.HexToAddress("0x4B1a99467a284Cc690e3237bC69105956816f762"), common.HexToAddress("0x03BDf69B1322D623836aFBD27679A1C0AfA067E9"), common.HexToAddress("0x986a2fCa9eDa0e06fBf7839B89BfC006eE2a23Dd")}} + // hitbtc Exchange struct + exchange_hitbtc = Exchange{code: "hitbtc", name: "HitBTC", symbol: "", logo: "https://s1.coincarp.com/logo/2/hitbtc.png?style=36", addresses: []common.Address{common.HexToAddress("0xEf58321032cF693Fa7e39F31e45CBc32f2092cb3"), common.HexToAddress("0x1C11BA15939E1C16eC7ca1678dF6160Ea2063Bc5"), common.HexToAddress("0xEd0245c53F69eBccDaB3e39cF0013161a67BF296"), common.HexToAddress("0xA12431D0B9dB640034b0CDFcEEF9CCe161e62be4"), common.HexToAddress("0x9C67e141C0472115AA1b98BD0088418Be68fD249"), common.HexToAddress("0x59a5208B32e627891C389EbafC644145224006E8"), common.HexToAddress("0xb77bd9fc4830A801D42BCD3Ffdf2f8C079ecBe28"), common.HexToAddress("0x2d969D1a10833f207fdC74381979bAa249146DF3")}} + // latoken Exchange struct + exchange_latoken = Exchange{code: "latoken", name: "LATOKEN", symbol: "", logo: "https://s1.coincarp.com/logo/2/latoken.png?style=36", addresses: []common.Address{common.HexToAddress("0x7891b20C690605F4E370d6944C8A5DBfAc5a451c"), common.HexToAddress("0x0861Fca546225fbF8806986D211C8398f7457734")}} + // bitstamp Exchange struct + exchange_bitstamp = Exchange{code: "bitstamp", name: "Bitstamp", symbol: "", logo: "https://s1.coincarp.com/logo/2/bitstamp.png?style=36", addresses: []common.Address{common.HexToAddress("0x4c766dEf136F59f6494f0969B1355882080CF8E0"), common.HexToAddress("0x00BDb5699745f5b860228c8f939ABF1b9Ae374eD"), common.HexToAddress("0x1522900B6daFac587d499a862861C0869Be6E428"), common.HexToAddress("0xc5b611f502a0DCF6C3188Fd494061aE29B2baa4f"), common.HexToAddress("0x059799F2261d37b829c2850cEe67b5b975432271"), common.HexToAddress("0x9A9BED3Eb03E386D66f8a29DC67dC29Bbb1ccB72")}} + // coinlistpro Exchange struct + exchange_coinlistpro = Exchange{code: "coinlistpro", name: "Coinlist Pro", symbol: "", logo: "https://s1.coincarp.com/logo/2/coinlistpro.png?style=36&v=1624265836", addresses: []common.Address{common.HexToAddress("0xD1669Ac6044269b59Fa12c5822439F609Ca54F41"), common.HexToAddress("0x8D1f2eBFACCf1136dB76FDD1b86f1deDE2D23852")}} + // shuzibi Exchange struct + exchange_shuzibi = Exchange{code: "shuzibi", name: "DigiFinex", symbol: "", logo: "https://s1.coincarp.com/logo/2/shuzibi.png?style=36", addresses: []common.Address{common.HexToAddress("0xB37640f5F7ef7b0fDCce2c0C053DB4f976945647"), common.HexToAddress("0x6693C388255F519497f0Ca2854c31B72E605569b"), common.HexToAddress("0xe17ee7B3c676701c66B395A35f0DF4C2276a344E")}} + // exmo Exchange struct + exchange_exmo = Exchange{code: "exmo", name: "Exmo", symbol: "", logo: "https://s1.coincarp.com/logo/2/exmo.png?style=36", addresses: []common.Address{common.HexToAddress("0x0DB79Bbb99DEFC2356d82848A459A5a13869EB3F"), common.HexToAddress("0xd7B9A9b2F665849C4071Ad5af77d8c76aa30fb32"), common.HexToAddress("0x1Fd6267f0D86F62D88172B998390AfEE2a1F54B6")}} + // zb Exchange struct + exchange_zb = Exchange{code: "zb", name: "ZB", symbol: "", logo: "https://s1.coincarp.com/logo/2/zb.png?style=36", addresses: []common.Address{common.HexToAddress("0xFD6724B4b3e8eca764F0DD07ccd903aD348D70F8"), common.HexToAddress("0x6485fc77bE2186fc60feeA38d0ef4331D8404b60"), common.HexToAddress("0xF98e7AF638b015D15E1820852bF24900f074b38B"), common.HexToAddress("0x60d0cC2aE15859f69bF74DADb8AE3Bd58434976b")}} + // hotbit Exchange struct + exchange_hotbit = Exchange{code: "hotbit", name: "Hotbit", symbol: "", logo: "https://s1.coincarp.com/logo/2/hotbit.png?style=36", addresses: []common.Address{common.HexToAddress("0x562680a4dC50ed2f14d75BF31f494cfE0b8D10a1"), common.HexToAddress("0x274F3c32C90517975e29Dfc209a23f315c1e5Fc7"), common.HexToAddress("0x8533A0bd9310Eb63E7CC8E1116c18a3D67B1976A")}} + // kuna Exchange struct + exchange_kuna = Exchange{code: "kuna", name: "Kuna", symbol: "", logo: "https://s1.coincarp.com/logo/2/kuna.png?style=36", addresses: []common.Address{common.HexToAddress("0xb357C9B4c9aff115f12AF5dd6dAb652d8f2ad561"), common.HexToAddress("0x77aB999d1e9F152156B4411E1f3E2A42Dab8CD6D")}} + // probit-exchange Exchange struct + exchange_probit_exchange = Exchange{code: "probit-exchange", name: "ProBit Global", symbol: "", logo: "https://s1.coincarp.com/logo/2/probit-exchange.png?style=36", addresses: []common.Address{common.HexToAddress("0xF71AfE21Cd32959113Fc47aE2EF886B43A9413d5"), common.HexToAddress("0x72E5263FF33D2494692D7F94A758aA9F82062F73")}} + // remitano Exchange struct + exchange_remitano = Exchange{code: "remitano", name: "Remitano", symbol: "", logo: "https://s1.coincarp.com/logo/2/remitano.png?style=36&v=1628736240", addresses: []common.Address{common.HexToAddress("0x2819c144D5946404C0516B6f817a960dB37D4929"), common.HexToAddress("0x0be1cef9d45f6621eB083f0a0e4b2261618938d8"), common.HexToAddress("0xd0b02a49B0768302F407cB28d813DaE1761BAEfa")}} + // whitebit Exchange struct + exchange_whitebit = Exchange{code: "whitebit", name: "WhiteBIT", symbol: "", logo: "https://s1.coincarp.com/logo/2/whitebit.png?style=36&v=1667871362", addresses: []common.Address{common.HexToAddress("0x39F6a6C85d39d5ABAd8A398310c52E7c374F2bA3")}} + // coinw Exchange struct + exchange_coinw = Exchange{code: "coinw", name: "Coinw", symbol: "", logo: "https://s1.coincarp.com/logo/2/coinw.png?style=36", addresses: []common.Address{common.HexToAddress("0xeD4e1AD0F899EF3954D05bafc502F50C8e6A6baf"), common.HexToAddress("0xa20f10289248717374e9B7776dC368aa526cb6F2"), common.HexToAddress("0x94961bB15bafE2d73b899B9a3fC209B3FcF899D6"), common.HexToAddress("0xcb243bf48FB443082FAE7db47eC96Cb120Cd6801"), common.HexToAddress("0x429Bf8EC3330E02401D72bEadE86000d9a2E19EB"), common.HexToAddress("0x8705CcFd8A6dF3785217C307cbEbf9b793310B94"), common.HexToAddress("0x9f8646A35db0f466aC9322e2D194cc18f209Fc75"), common.HexToAddress("0x6f31D347457962c9811ff953742870EF5a755dE3"), common.HexToAddress("0xd115B7B6bEA4819BFD1fe5397f5e7e01fA19D83d")}} + // xt Exchange struct + exchange_xt = Exchange{code: "xt", name: "XT", symbol: "", logo: "https://s1.coincarp.com/logo/2/xt.png?style=36", addresses: []common.Address{common.HexToAddress("0x659BA341542Ed9c25eCA5FD7daE3659385956360"), common.HexToAddress("0xe74638bff8e7e332c08C239407FA68324acf8Dee")}} + // okcoin-intl Exchange struct + exchange_okcoin_intl = Exchange{code: "okcoin-intl", name: "Okcoin", symbol: "", logo: "https://s1.coincarp.com/logo/2/okcoin-intl.png?style=36&v=1623981085", addresses: []common.Address{common.HexToAddress("0xD30b438DF65f4f788563b2b3611Bd6059bFF4ad9")}} + // wazirx Exchange struct + exchange_wazirx = Exchange{code: "wazirx", name: "WazirX", symbol: "", logo: "https://s1.coincarp.com/logo/2/wazirx.png?style=36&v=1630464169", addresses: []common.Address{common.HexToAddress("0x618fFD1cDAbeE36CE5992a857Cc7463f21272bD7")}} + // wootrade Exchange struct + exchange_wootrade = Exchange{code: "wootrade", name: "WOO X", symbol: "", logo: "https://s1.coincarp.com/logo/2/wootrade.png?style=36&v=1678894355", addresses: []common.Address{common.HexToAddress("0x63DFE4e34A3bFC00eB0220786238a7C6cEF8Ffc4"), common.HexToAddress("0xeA319fd75766F5180018F8e760f51c3D3C457496"), common.HexToAddress("0x0d83F81bc9f1E8252F87A4109bBF0d90171c81DF")}} + // bitrue Exchange struct + exchange_bitrue = Exchange{code: "bitrue", name: "Bitrue", symbol: "", logo: "https://s1.coincarp.com/logo/2/bitrue.png?style=36&v=1637802321", addresses: []common.Address{common.HexToAddress("0x6cc8dCbCA746a6E4Fdefb98E1d0DF903b107fd21"), common.HexToAddress("0x878d587BE19cd44C203EC5E90d9cA3724C4D2c3D")}} + // binance-jex Exchange struct + exchange_binance_jex = Exchange{code: "binance-jex", name: "Binance JEX", symbol: "", logo: "https://s1.coincarp.com/logo/2/binance-jex.png?style=36&v=1624874753", addresses: []common.Address{common.HexToAddress("0xAB83D182f3485cf1D6ccdd34C7CFEf95b4C08da4")}} + // otcbtc Exchange struct + exchange_otcbtc = Exchange{code: "otcbtc", name: "OTCBTC", symbol: "", logo: "https://s1.coincarp.com/logo/2/otcbtc.png?style=36", addresses: []common.Address{common.HexToAddress("0xAeEc6f5aCA72F3A005af1B3420ab8c8c7009BaC8"), common.HexToAddress("0x8f7DEE5cDe6965481F0119BaC9d5b2b142bcc94F")}} + // dextrade Exchange struct + exchange_dextrade = Exchange{code: "dextrade", name: "Dex-Trade", symbol: "", logo: "https://s1.coincarp.com/logo/2/dextrade.png?style=36&v=1624268482", addresses: []common.Address{common.HexToAddress("0xd0a174B1Ff551D63eD0823AE743bBe9BC204B0f0")}} + // mercatox Exchange struct + exchange_mercatox = Exchange{code: "mercatox", name: "Mercatox", symbol: "", logo: "https://s1.coincarp.com/logo/2/mercatox.png?style=36", addresses: []common.Address{common.HexToAddress("0xe03c23519e18D64F144d2800E30E81B0065C48B5")}} + // upbit Exchange struct + exchange_upbit = Exchange{code: "upbit", name: "Upbit", symbol: "", logo: "https://s1.coincarp.com/logo/2/upbit.png?style=36", addresses: []common.Address{common.HexToAddress("0x390dE26d772D2e2005C6d1d24afC902bae37a4bB"), common.HexToAddress("0xBA826fEc90CEFdf6706858E5FbaFcb27A290Fbe0"), common.HexToAddress("0x5E032243d507C743b061eF021e2EC7fcc6d3ab89"), common.HexToAddress("0x03747F06215B44E498831dA019B27f53E483599F")}} + // cex-io Exchange struct + exchange_cex_io = Exchange{code: "cex-io", name: "CEX.IO", symbol: "", logo: "https://s1.coincarp.com/logo/2/cex-io.png?style=36", addresses: []common.Address{common.HexToAddress("0xc9f5296Eb3ac266c94568D790b6e91ebA7D76a11")}} + // bilaxy Exchange struct + exchange_bilaxy = Exchange{code: "bilaxy", name: "Bilaxy", symbol: "", logo: "https://s1.coincarp.com/logo/2/bilaxy.png?style=36&v=1626747663", addresses: []common.Address{common.HexToAddress("0x9BA3560231e3E0aD7dde23106F5B98C72E30b468"), common.HexToAddress("0xf7793d27A1b76CDF14Db7C83e82C772cF7C92910")}} + // Bit2C Exchange struct + exchange_bit2c = Exchange{code: "Bit2C", name: "Bit2C", symbol: "", logo: "https://s1.coincarp.com/logo/2/bit2c.png?style=36", addresses: []common.Address{common.HexToAddress("0x7c49e1c0e33F3efB57d64b7690Fa287C8D15B90A")}} + // bingx Exchange struct + exchange_bingx = Exchange{code: "bingx", name: "BingX", symbol: "", logo: "https://s1.coincarp.com/logo/2/bingx.png?style=36&v=1647943344", addresses: []common.Address{common.HexToAddress("0x474ac5cb62D7aCEDC9990d4DaAfA0c39D9478FBB")}} + // liquid Exchange struct + exchange_liquid = Exchange{code: "liquid", name: "Liquid", symbol: "", logo: "https://s1.coincarp.com/logo/2/liquid.png?style=36", addresses: []common.Address{common.HexToAddress("0xedBB72E6b3Cf66a792bFF7FaaC5Ea769fe810517")}} + // bitforex Exchange struct + exchange_bitforex = Exchange{code: "bitforex", name: "BitForex", symbol: "", logo: "https://s1.coincarp.com/logo/2/bitforex.png?style=36&v=1660631865", addresses: []common.Address{common.HexToAddress("0xeeC0Ed9E41C209c1c53a35900a06BF5DcA927405")}} + // coinex Exchange struct + exchange_coinex = Exchange{code: "coinex", name: "CoinEx", symbol: "", logo: "https://s1.coincarp.com/logo/2/coinex.png?style=36", addresses: []common.Address{common.HexToAddress("0xb9ee1e551f538A464E8F8C41E9904498505B49b0"), common.HexToAddress("0x53Eb3Ea47643E87e8f25dd997A37B3b5260e7336")}} + // jbexcom Exchange struct + exchange_jbexcom = Exchange{code: "jbexcom", name: "Jubi", symbol: "", logo: "https://s1.coincarp.com/logo/2/jbexcom.png?style=36", addresses: []common.Address{common.HexToAddress("0xAD840A2B569188d49245fcd7Bde71167D77df6c0")}} + // 8v-global Exchange struct + exchange_8v_global = Exchange{code: "8v-global", name: "8V Global Exchange", symbol: "", logo: "https://s1.coincarp.com/logo/2/8v-global.png?style=36&v=1651200248", addresses: []common.Address{common.HexToAddress("0x09b1806Df13062B5f653BeDA6998972cabCF7009")}} + // coinexchange Exchange struct + exchange_coinexchange = Exchange{code: "coinexchange", name: "CoinExchange", symbol: "", logo: "https://s1.coincarp.com/logo/2/coinexchange.png?style=36", addresses: []common.Address{common.HexToAddress("0x4B01721F0244E7c5B5F63c20942850E447f5a5Ee"), common.HexToAddress("0x226CE8219207E773c0768A699bf7982DbEA754Ad")}} + // tokencan Exchange struct + exchange_tokencan = Exchange{code: "tokencan", name: "Tokencan", symbol: "", logo: "https://s1.coincarp.com/logo/2/tokencan.png?style=36", addresses: []common.Address{common.HexToAddress("0x475c4810C124873a58E1045428D1FA35634b6048")}} + // btse Exchange struct + exchange_btse = Exchange{code: "btse", name: "BTSE", symbol: "", logo: "https://s1.coincarp.com/logo/2/btse.png?style=36", addresses: []common.Address{common.HexToAddress("0x1619d743d7DC612E99d5D94Ebd6b9695D46f0BF3"), common.HexToAddress("0xde279a5cD86860Cd3D039AA1B74bc29E74cABB12")}} + // zgcom Exchange struct + exchange_zgcom = Exchange{code: "zgcom", name: "ZG.com", symbol: "", logo: "https://s1.coincarp.com/logo/2/zgcom.png?style=36", addresses: []common.Address{common.HexToAddress("0x8BaeD8FD7FC228781a95e7D6E57C3e430D2BE6F9")}} + // qbtc Exchange struct + exchange_qbtc = Exchange{code: "qbtc", name: "QBTC", symbol: "", logo: "https://s1.coincarp.com/logo/2/qbtc.png?style=36", addresses: []common.Address{common.HexToAddress("0xa5a3903FC3698c241B1385DF4F80A5C665f47404")}} + // paribu Exchange struct + exchange_paribu = Exchange{code: "paribu", name: "Paribu", symbol: "", logo: "https://s1.coincarp.com/logo/2/paribu.png?style=36", addresses: []common.Address{common.HexToAddress("0xBd8ef191Caa1571e8aD4619ae894e07A75De0C35"), common.HexToAddress("0x2bB97B6CF6FfE53576032c11711D59Bd056830eE")}} + // ftx Exchange struct + exchange_ftx = Exchange{code: "ftx", name: "FTX", symbol: "", logo: "https://s1.coincarp.com/logo/2/ftx.png?style=36", addresses: []common.Address{common.HexToAddress("0xC098B2a3Aa256D2140208C3de6543aAEf5cd3A94"), common.HexToAddress("0xdc51356928baE9fd7F43ddB4a1C8e1FbDD340eB5"), common.HexToAddress("0xFF3baBb82a8065318A0548E4aF19e0ED46dc28F9"), common.HexToAddress("0xA72CEb9964Bac623D67CF4d07B99645145ba16e1"), common.HexToAddress("0xd45C041dC87AA2495793BeC3964389C81A962DFA"), common.HexToAddress("0xb2ab43F76131fb299A8b04d3434eEA6e14069cfA"), common.HexToAddress("0x91FDe2e551560067A818bdA6f4B63C89ee83500d"), common.HexToAddress("0x2FAF487A4414Fe77e2327F0bf4AE2a264a776AD2")}} + // bibox Exchange struct + exchange_bibox = Exchange{code: "bibox", name: "Bibox", symbol: "", logo: "https://s1.coincarp.com/logo/2/bibox.png?style=36", addresses: []common.Address{common.HexToAddress("0xf73C3c65bde10BF26c2E1763104e609A41702EFE")}} + // bitmart Exchange struct + exchange_bitmart = Exchange{code: "bitmart", name: "BitMart", symbol: "", logo: "https://s1.coincarp.com/logo/2/bitmart.png?style=36&v=1675696548", addresses: []common.Address{common.HexToAddress("0xe79eeF9b9388A4fF70ed7ec5Bccd5B928ebB8Bd1"), common.HexToAddress("0x68b22215FF74E3606BD5E6c1DE8c2D68180c85F7")}} + // bkex Exchange struct + exchange_bkex = Exchange{code: "bkex", name: "BKEX", symbol: "", logo: "https://s1.coincarp.com/logo/2/bkex.png?style=36&v=1648085868", addresses: []common.Address{common.HexToAddress("0xD9811e8b7c42418c71dABfE63b9CC17f8db1A6Eb")}} + // Cobinhood Exchange struct + exchange_cobinhood = Exchange{code: "Cobinhood", name: "COBINHOOD", symbol: "", logo: "https://s1.coincarp.com/logo/2/cobinhood.png?style=36", addresses: []common.Address{common.HexToAddress("0xB726dA4fbdc3E4dBda97bb20998cF899b0e727E0"), common.HexToAddress("0x8958618332dF62AF93053cb9c535e26462c959B0")}} + // jingui Exchange struct + exchange_jingui = Exchange{code: "jingui", name: "JinGui", symbol: "", logo: "https://s1.coincarp.com/logo/2/jingui.png?style=36", addresses: []common.Address{common.HexToAddress("0xf65c33c383a6996ffEC2d00AA93df3cE2Bdb7851")}} + // bgogo Exchange struct + exchange_bgogo = Exchange{code: "bgogo", name: "Bgogo", symbol: "", logo: "https://s1.coincarp.com/logo/2/bgogo.png?style=36", addresses: []common.Address{common.HexToAddress("0x7A10Ec7d68a048BdaE36A70E93532D31423170fA"), common.HexToAddress("0xCe1bF8E51F8b39e51c6184e059786D1c0eAF360F")}} + // citex Exchange struct + exchange_citex = Exchange{code: "citex", name: "CITEX", symbol: "", logo: "https://s1.coincarp.com/logo/2/citex.png?style=36", addresses: []common.Address{common.HexToAddress("0xe51a4316607772132F89b3483DA698e4d682E191"), common.HexToAddress("0x9E2E3649563E60926A7B5968BC3537Fb58fAf78b"), common.HexToAddress("0x4d7291630651041358abE50532C1A20948559155"), common.HexToAddress("0x691c5e2751Ec615d2b49cb569fdF787720b0fD31"), common.HexToAddress("0x7B897Ab1e759028F14e1841Ffc5449f11273e330")}} + // crex24 Exchange struct + exchange_crex24 = Exchange{code: "crex24", name: "CREX24", symbol: "", logo: "https://s1.coincarp.com/logo/2/crex24.png?style=36", addresses: []common.Address{common.HexToAddress("0x521dB06bF657Ed1D6C98553A70319a8DdBAc75A3")}} + // idcm Exchange struct + exchange_idcm = Exchange{code: "idcm", name: "Klickl(IDCM)", symbol: "", logo: "https://s1.coincarp.com/logo/2/idcm.png?style=36&v=1652319488", addresses: []common.Address{common.HexToAddress("0x2a1dCbDF3fc17C7263529AA7fB1F90e3D4624eD2"), common.HexToAddress("0x2B2b0CF3d1BC4a776c512e7F374991FD9CA3Eb34"), common.HexToAddress("0xC5565200eb6a428451D53280b49c4488f74ac14D"), common.HexToAddress("0x8B2b3d18230661157d399226686d91B2fC340a30"), common.HexToAddress("0x0A8B4E06FA1A93211422D0F4f12747A832dBBD28"), common.HexToAddress("0xC86F08c4F6aeC029Ece7e56d1d302dFdcF2EC41d")}} + // tidex Exchange struct + exchange_tidex = Exchange{code: "tidex", name: "Tidex", symbol: "", logo: "https://s1.coincarp.com/logo/2/tidex.png?style=36&v=1651653452", addresses: []common.Address{common.HexToAddress("0x3613ef1125A078EF96Ffc898c4eC28D73C5b8C52"), common.HexToAddress("0x0a73573Cf2903d2D8305b1eCb9e9730186a312aE")}} + // ztcom Exchange struct + exchange_ztcom = Exchange{code: "ztcom", name: "ZT", symbol: "", logo: "https://s1.coincarp.com/logo/2/ztcom.png?style=36", addresses: []common.Address{common.HexToAddress("0x5004A7AA3c430BC3e133Ee29C28E391b16F8BF7d"), common.HexToAddress("0x444a5E0d2515f322E7278F6EE95CB34d8de98f09"), common.HexToAddress("0x7aA12EeF14Db55884Ab2Fe0D097E0064EF7A8ECA"), common.HexToAddress("0x0179D232beCF100Cd1f0Dd3e84a8AFA9ca31aFF3")}} + // coinegg Exchange struct + exchange_coinegg = Exchange{code: "coinegg", name: "CoinEgg", symbol: "", logo: "https://s1.coincarp.com/logo/2/coinegg.png?style=36", addresses: []common.Address{common.HexToAddress("0x93f36930F94FBB5aFc5fB506D3f7ABB9179a4e4e")}} + // bw Exchange struct + exchange_bw = Exchange{code: "bw", name: "BW", symbol: "", logo: "https://s1.coincarp.com/logo/2/bw.png?style=36", addresses: []common.Address{common.HexToAddress("0x73957709695E73Fd175582105c44743CF0fB6f2f")}} + // uex Exchange struct + exchange_uex = Exchange{code: "uex", name: "UEX", symbol: "", logo: "https://s1.coincarp.com/logo/2/uex.png?style=36", addresses: []common.Address{common.HexToAddress("0x2f1233Ec3a4930Fd95874291DB7da9E90dfB2F03")}} + // ggbtc Exchange struct + exchange_ggbtc = Exchange{code: "ggbtc", name: "GGBTC", symbol: "", logo: "https://s1.coincarp.com/logo/2/ggbtc.png?style=36", addresses: []common.Address{common.HexToAddress("0x9fB01A2584Aac5aAE3faB1ed25F86c5269b32999")}} + // ulei Exchange struct + exchange_ulei = Exchange{code: "ulei", name: "ULEI", symbol: "", logo: "https://s1.coincarp.com/logo/2/ulei.png?style=36", addresses: []common.Address{common.HexToAddress("0xb27ac505bee7298b204b530b368B6191F4141C55"), common.HexToAddress("0x412D18072b7809aB25d8B4B0e0167128E122eC37")}} + // wrnet Exchange struct + exchange_wrnet = Exchange{code: "wrnet", name: "XinBi Global", symbol: "", logo: "https://s1.coincarp.com/logo/2/wrnet.png?style=36", addresses: []common.Address{common.HexToAddress("0x499bC6B4B9e7da1fD8A775106a389F4C1D1D4B98"), common.HexToAddress("0x373fE5F4D8936590b4463DF22bE4ce3f82ced806"), common.HexToAddress("0xf8bC6604190a6279080E0fE24e15dc1D2927E10B")}} + // dcoin Exchange struct + exchange_dcoin = Exchange{code: "dcoin", name: "Dcoin", symbol: "", logo: "https://s1.coincarp.com/logo/2/dcoin.png?style=36", addresses: []common.Address{common.HexToAddress("0x4003CAefF9d6eB5af6927b0842c90f43F31d25d1")}} + // ftx-us Exchange struct + exchange_ftx_us = Exchange{code: "ftx-us", name: "FTX US", symbol: "", logo: "https://s1.coincarp.com/logo/2/ftx-us.png?style=36", addresses: []common.Address{common.HexToAddress("0x7abE0cE388281d2aCF297Cb089caef3819b13448")}} + // abcc Exchange struct + exchange_abcc = Exchange{code: "abcc", name: "ABCC", symbol: "", logo: "https://s1.coincarp.com/logo/2/abcc.png?style=36", addresses: []common.Address{common.HexToAddress("0x05f51AAb068CAa6Ab7eeb672f88c180f67F17eC7")}} + // aex Exchange struct + exchange_aex = Exchange{code: "aex", name: "AEX", symbol: "", logo: "https://s1.coincarp.com/logo/2/aex.png?style=36", addresses: []common.Address{common.HexToAddress("0x4564BFe303900178578769b2D76B1a13533E5fd5"), common.HexToAddress("0x6814B1FE0dBb34d006dC204A6b2DED962dF1D684")}} + // bithumbpro Exchange struct + exchange_bithumbpro = Exchange{code: "bithumbpro", name: "BitGlobal", symbol: "", logo: "https://s1.coincarp.com/logo/2/bithumbpro.png?style=36&v=1637803956", addresses: []common.Address{common.HexToAddress("0xb4460b75254ce0563Bb68eC219208344C7EA838c")}} + // sushiswap Exchange struct + exchange_sushiswap = Exchange{code: "sushiswap", name: "SushiSwap", symbol: "", logo: "https://s1.coincarp.com/logo/2/sushiswap.png?style=36", addresses: []common.Address{common.HexToAddress("0x088ee5007C98a9677165D78dD2109AE4a3D04d0C")}} + // uniswap Exchange struct + exchange_uniswap = Exchange{code: "uniswap", name: "Uniswap (V2)", symbol: "", logo: "https://s1.coincarp.com/logo/2/uniswap.png?style=36", addresses: []common.Address{common.HexToAddress("0x2fDbAdf3C4D5A8666Bc06645B8358ab803996E28")}} +) + +var centralizedExchangesByCode = map[string]*Exchange{ + "binance": &exchange_binance, + "kraken": &exchange_kraken, + "okex": &exchange_okex, + "Bitfinex": &exchange_bitfinex, + "gemini": &exchange_gemini, + "crypto-com-exchange": &exchange_crypto_com_exchange, + "bithumb": &exchange_bithumb, + "kucoin": &exchange_kucoin, + "bybit": &exchange_bybit, + "gate-io": &exchange_gate_io, + "bittrex": &exchange_bittrex, + "coinone": &exchange_coinone, + "huobipro": &exchange_huobipro, + "binance-us": &exchange_binance_us, + "bitflyer": &exchange_bitflyer, + "korbit": &exchange_korbit, + "luno": &exchange_luno, + "coinbasepro": &exchange_coinbasepro, + "idex": &exchange_idex, + "bitget": &exchange_bitget, + "mexc": &exchange_mexc, + "curve": &exchange_curve, + "bitmex": &exchange_bitmex, + "poloniex": &exchange_poloniex, + "bit-z": &exchange_bit_z, + "yobit": &exchange_yobit, + "coinswitch-kuber": &exchange_coinswitch_kuber, + "bitcoin-indonesia": &exchange_bitcoin_indonesia, + "phemex": &exchange_phemex, + "bigone": &exchange_bigone, + "Bitmax": &exchange_bitmax, + "hitbtc": &exchange_hitbtc, + "latoken": &exchange_latoken, + "bitstamp": &exchange_bitstamp, + "coinlistpro": &exchange_coinlistpro, + "shuzibi": &exchange_shuzibi, + "exmo": &exchange_exmo, + "zb": &exchange_zb, + "hotbit": &exchange_hotbit, + "kuna": &exchange_kuna, + "probit-exchange": &exchange_probit_exchange, + "remitano": &exchange_remitano, + "whitebit": &exchange_whitebit, + "coinw": &exchange_coinw, + "xt": &exchange_xt, + "okcoin-intl": &exchange_okcoin_intl, + "wazirx": &exchange_wazirx, + "wootrade": &exchange_wootrade, + "bitrue": &exchange_bitrue, + "binance-jex": &exchange_binance_jex, + "otcbtc": &exchange_otcbtc, + "dextrade": &exchange_dextrade, + "mercatox": &exchange_mercatox, + "upbit": &exchange_upbit, + "cex-io": &exchange_cex_io, + "bilaxy": &exchange_bilaxy, + "Bit2C": &exchange_bit2c, + "bingx": &exchange_bingx, + "liquid": &exchange_liquid, + "bitforex": &exchange_bitforex, + "coinex": &exchange_coinex, + "jbexcom": &exchange_jbexcom, + "8v-global": &exchange_8v_global, + "coinexchange": &exchange_coinexchange, + "tokencan": &exchange_tokencan, + "btse": &exchange_btse, + "zgcom": &exchange_zgcom, + "qbtc": &exchange_qbtc, + "paribu": &exchange_paribu, + "ftx": &exchange_ftx, + "bibox": &exchange_bibox, + "bitmart": &exchange_bitmart, + "bkex": &exchange_bkex, + "Cobinhood": &exchange_cobinhood, + "jingui": &exchange_jingui, + "bgogo": &exchange_bgogo, + "citex": &exchange_citex, + "crex24": &exchange_crex24, + "idcm": &exchange_idcm, + "tidex": &exchange_tidex, + "ztcom": &exchange_ztcom, + "coinegg": &exchange_coinegg, + "bw": &exchange_bw, + "uex": &exchange_uex, + "ggbtc": &exchange_ggbtc, + "ulei": &exchange_ulei, + "wrnet": &exchange_wrnet, + "dcoin": &exchange_dcoin, + "ftx-us": &exchange_ftx_us, + "abcc": &exchange_abcc, + "aex": &exchange_aex, + "bithumbpro": &exchange_bithumbpro, + "sushiswap": &exchange_sushiswap, + "uniswap": &exchange_uniswap, +} + +var centralizedExchangesByAddress = map[string]*Exchange{ + + "0xBE0eB53F46cd790Cd13851d5EFf43D12404d33E8": &exchange_binance, + + "0xF977814e90dA44bFA03b6295A0616a897441aceC": &exchange_binance, + + "0x47ac0Fb4F2D84898e4D9E7b4DaB3C24507a6D503": &exchange_binance, + + "0x28C6c06298d514Db089934071355E5743bf21d60": &exchange_binance, + + "0x5a52E96BAcdaBb82fd05763E25335261B270Efcb": &exchange_binance, + + "0x9696f59E4d72E237BE84fFD425DCaD154Bf96976": &exchange_binance, + + "0x06a0048079ec6571Cd1b537418869CDE6191d42D": &exchange_binance, + + "0x21a31Ee1afC51d94C2eFcCAa2092aD1028285549": &exchange_binance, + + "0x56Eddb7aa87536c09CCc2793473599fD21A8b17F": &exchange_binance, + + "0xDFd5293D8e347dFe59E90eFd55b2956a1343963d": &exchange_binance, + + "0x4976A4A02f38326660D17bf34b431dC6e2eb2327": &exchange_binance, + + "0x8B99F3660622e21f2910ECCA7fBe51d654a1517D": &exchange_binance, + + "0x4D9fF50EF4dA947364BB9650892B2554e7BE5E2B": &exchange_binance, + + "0xB8c77482e45F1F44dE1745F52C74426C631bDD52": &exchange_binance, + + "0x564286362092D8e7936f0549571a803B203aAceD": &exchange_binance, + + "0x3666019b9e801FA9c6f73FdBC952052eBe35c059": &exchange_binance, + + "0x708396f17127c42383E3b9014072679b2F60B82f": &exchange_binance, + + "0x8894E0a0c962CB723c1976a4421c95949bE2D4E3": &exchange_binance, + + "0x3f5CE5FBFe3E9af3971dD833D26bA9b5C936f0bE": &exchange_binance, + + "0x001866Ae5B3de6cAa5a51543FD9fB64f524F5478": &exchange_binance, + + "0xa344c7aDA83113B3B56941F6e85bf2Eb425949f3": &exchange_binance, + + "0x4E9ce36E442e55EcD9025B9a6E0D88485d628A67": &exchange_binance, + + "0x8f12f14A09D80051dE4315808Df57af19D80caD4": &exchange_binance, + + "0xfE9e8709d3215310075d67E3ed32A380CCf451C8": &exchange_binance, + + "0xE0F0CfDe7Ee664943906f17F7f14342E76A5CeC7": &exchange_binance, + + "0x0681d8Db095565FE8A346fA0277bFfdE9C0eDBBF": &exchange_binance, + + "0x328366Da5A4C5F669172a716955E3adf93A26705": &exchange_binance, + + "0x6Aa8F871908F0A2A9AEFB4786b344707CB5D7e26": &exchange_binance, + + "0xc365c3315cF926351CcAf13fA7D19c8C4058C8E1": &exchange_binance, + + "0x8F22F2063D253846B53609231eD80FA571Bc0C8F": &exchange_binance, + + "0xD551234Ae421e3BCBA99A0Da6d736074f22192FF": &exchange_binance, + + "0x614B2aD34E7b3146314c352Ae02b4a9b19DeB685": &exchange_binance, + + "0xf88c022F7EbfF09A76bf895eb5782a1d92F25Fc7": &exchange_binance, + + "0x92D2A1D125C09b2b8192DDc111a5f61857037508": &exchange_binance, + + "0xC3C8E0A39769e2308869f7461364ca48155D1d9E": &exchange_binance, + + "0x410ed1cbceA3B3990A3f27362c06C3C5D1E75d08": &exchange_binance, + + "0xCff79eB669a69bDe08eFce9eE8E37e601dF02F32": &exchange_binance, + + "0x15aB2321d7E83d00C015048b567f4F6AadC1B022": &exchange_binance, + + "0x4Fabb145d64652a948d72533023f6E7A623C7C53": &exchange_binance, + + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": &exchange_binance, + + "0xdAC17F958D2ee523a2206206994597C13D831ec7": &exchange_binance, + + "0xDA9dfA130Df4dE4673b89022EE50ff26f6EA73Cf": &exchange_kraken, + + "0x267be1C1D684F78cb4F6a176C4911b741E4Ffdc0": &exchange_kraken, + + "0xe9f7eCAe3A53D2A67105292894676b00d1FaB785": &exchange_kraken, + + "0xc6bed363b30DF7F35b601a5547fE56cd31Ec63DA": &exchange_kraken, + + "0x29728D0efd284D85187362fAA2d4d76C2CfC2612": &exchange_kraken, + + "0x66c57bF505A85A74609D2C83E94Aabb26d691E1F": &exchange_kraken, + + "0x43984D578803891dfa9706bDEee6078D80cFC79E": &exchange_kraken, + + "0xAe2D4617c862309A3d75A0fFB358c7a5009c673F": &exchange_kraken, + + "0xE853c56864A2ebe4576a807D26Fdc4A0adA51919": &exchange_kraken, + + "0x2910543Af39abA0Cd09dBb2D50200b3E800A63D2": &exchange_kraken, + + "0x53d284357ec70cE289D6D64134DfAc8E511c8a3D": &exchange_kraken, + + "0x0A869d79a7052C7f1b55a8EbAbbEa3420F0D1E13": &exchange_kraken, + + "0x7f4eDDa6C8646580E68b93041B5476348eEf0406": &exchange_kraken, + + "0xFa52274DD61E1643d2205169732f29114BC240b3": &exchange_kraken, + + "0x98EC059Dc3aDFBdd63429454aEB0c990FBA4A128": &exchange_okex, + + "0x868daB0b8E21EC0a48b726A1ccf25826c78C6d7F": &exchange_okex, + + "0x539C92186f7C6CC4CbF443F26eF84C595baBBcA1": &exchange_okex, + + "0xbFbBFacCD1126A11b8F84C60b09859F80f3BD10F": &exchange_okex, + + "0xBf94F0AC752C739F623C463b5210a7fb2cbb420B": &exchange_okex, + + "0xf51cD688b8744b1bfD2FBa70D050dE85EC4fb9Fb": &exchange_okex, + + "0xe95f6604A591F6ba33aCCB43a8a885C9c272108c": &exchange_okex, + + "0xf7858Da8a6617f7C6d0fF2bcAFDb6D2eeDF64840": &exchange_okex, + + "0xc3AE71FE59f5133BA180cbBd76536a70Dec23d40": &exchange_okex, + + "0x4E7b110335511F662FDBB01bf958A7844118c0D4": &exchange_okex, + + "0xA7EFAe728D2936e78BDA97dc267687568dD593f3": &exchange_okex, + + "0x4b4e14a3773Ee558b6597070797fd51EB48606e5": &exchange_okex, + + "0xCbffCB2c38ecd19468d366D392AC0c1DC7F04Bb6": &exchange_okex, + + "0x2c8FBB630289363Ac80705A1a61273f76fD5a161": &exchange_okex, + + "0x6cC5F688a315f3dC28A7781717a9A798a59fDA7b": &exchange_okex, + + "0x7eb6c83AB7D8D9B8618c0Ed973cbEF71d1921EF2": &exchange_okex, + + "0x313Eb1C5e1970EB5CEEF6AEbad66b07c7338d369": &exchange_okex, + + "0xBDa23B750dD04F792ad365B5F2a6F1d8593796f2": &exchange_okex, + + "0x96FDC631F02207B72e5804428DeE274cF2aC0bCD": &exchange_okex, + + "0x9723b6d608D4841eB4Ab131687a5D4764eb30138": &exchange_okex, + + "0x5041ed759Dd4aFc3a72b8192C143F72f4724081A": &exchange_okex, + + "0x06d3a30cBb00660B85a30988D197B1c282c6dCB6": &exchange_okex, + + "0x276cdBa3a39aBF9cEdBa0F1948312c0681E6D5Fd": &exchange_okex, + + "0x68841a1806fF291314946EebD0cdA8b348E73d6D": &exchange_okex, + + "0x3D55CCb2a943d88D39dd2E62DAf767C69fD0179F": &exchange_okex, + + "0x07cff3c78Dc9bD2378b89b92f01254703861c2E4": &exchange_okex, + + "0x236F9F97e0E62388479bf9E5BA4889e46B0273C3": &exchange_okex, + + "0x59FAE149A8f8EC74d5bC038F8b76D25b136b9573": &exchange_okex, + + "0x75231F58b43240C9718Dd58B4967c5114342a86c": &exchange_okex, + + "0xC61b9BB3A7a0767E3179713f3A5c7a9aeDCE193C": &exchange_bitfinex, + + "0x36a85757645E8e8AeC062a1dEE289c7d615901Ca": &exchange_bitfinex, + + "0x1B8766d041567EeD306940c587e21C06aB968663": &exchange_bitfinex, + + "0x5a710a3cDF2AF218740384c52a10852D8870626A": &exchange_bitfinex, + + "0x4fdd5Eb2FB260149A3903859043e962Ab89D8ED4": &exchange_bitfinex, + + "0x28140CB1AC771d4Add91eE23788E50249C10263d": &exchange_bitfinex, + + "0xC56fEFd1028B0534bfaDCdB580d3519b5586246E": &exchange_bitfinex, + + "0x77134cbC06cB00b66F4c7e623D5fdBF6777635EC": &exchange_bitfinex, + + "0x0b73F67A49273fc4B9A65DBD25D7d0918E734E63": &exchange_bitfinex, + + "0x742d35Cc6634C0532925a3b844Bc454e4438f44e": &exchange_bitfinex, + + "0x53B36141490c419fa27ecabFEB8Be1ecAdc82431": &exchange_bitfinex, + + "0x0cD76cD43992C665FdC2d8aC91B935CA3165E782": &exchange_bitfinex, + + "0x1151314c646Ce4E0eFD76d1aF4760aE66a9Fe30F": &exchange_bitfinex, + + "0x876EabF441B2EE5B5b0554Fd502a8E0600950cFa": &exchange_bitfinex, + + "0x5754284f345afc66a98fbB0a0Afe71e0F007B949": &exchange_bitfinex, + + "0x87a32492dA96069115A12E27fF5e378f03A8eDF7": &exchange_bitfinex, + + "0xC6CDE7C39eB2f0F0095F41570af89eFC2C1Ea828": &exchange_bitfinex, + + "0xdcD0272462140D0A3cEd6C4bf970c7641f08CD2c": &exchange_bitfinex, + + "0x7727E5113D1d161373623e5f49FD568B4F543a9E": &exchange_bitfinex, + + "0x61EDCDf5bb737ADffE5043706e7C5bb1f1a56eEA": &exchange_gemini, + + "0xd24400ae8BfEBb18cA49Be86258a3C749cf46853": &exchange_gemini, + + "0x5f65f7b609678448494De4C87521CdF6cEf1e932": &exchange_gemini, + + "0x6Fc82a5fe25A5cDb58bc74600A40A69C065263f8": &exchange_gemini, + + "0xCFFAd3200574698b78f32232aa9D63eABD290703": &exchange_crypto_com_exchange, + + "0x6262998Ced04146fA42253a5C0AF90CA02dfd2A3": &exchange_crypto_com_exchange, + + "0x46340b20830761efd32832A74d7169B29FEB9758": &exchange_crypto_com_exchange, + + "0x72A53cDBBcc1b9efa39c834A540550e23463AAcB": &exchange_crypto_com_exchange, + + "0x7758E507850dA48cd47df1fB5F875c23E3340c50": &exchange_crypto_com_exchange, + + "0x55c005713BAb8824efd9f5B41C55F8bbC815abCd": &exchange_crypto_com_exchange, + + "0xA8e330039b67Be5573AfB388Dc35214481C5cf81": &exchange_crypto_com_exchange, + + "0x558553D54183a8542F7832742e7B4Ba9c33Aa1E6": &exchange_bithumb, + + "0x3fBE1f8Fc5dDb27d428aA60f661EAAaB0d2000ce": &exchange_bithumb, + + "0x3052cD6BF951449A984fe4B5a38B46AEF9455c8E": &exchange_bithumb, + + "0x8FA8aF91C675452200e49b4683a33Ca2E1A34e42": &exchange_bithumb, + + "0x2140eFD7Ba31169c69dfff6CDC66C542f0211825": &exchange_bithumb, + + "0x090bA5aF8284eBE16Fccfc6C0BE8FbEFcf23D365": &exchange_bithumb, + + "0x15878e87c685f866edFaF454BE6Dc06Fa517B35B": &exchange_bithumb, + + "0x186549a4aE594fc1F70bA4CFFDAc714b405bE3F9": &exchange_bithumb, + + "0x31D03f07178BcD74F9099AfeBD23B0AE30184ab5": &exchange_bithumb, + + "0x88D34944cF554e9CCCf4a24292D891f620e9c94F": &exchange_bithumb, + + "0xA0Ff1e0F30b5DDA2dc01e7e828290Bc72b71E57d": &exchange_bithumb, + + "0xc1dA8F69e4881efe341600620268934ef01a3E63": &exchange_bithumb, + + "0xd273Bd546b11Bd60214A2F9d71f22A088AAfe31B": &exchange_bithumb, + + "0xed48DC0628789c2956B1E41726d062a86ec45bFF": &exchange_bithumb, + + "0xD6216fC19DB775Df9774a6E33526131dA7D19a2c": &exchange_kucoin, + + "0xb8e6D31e7B212b2b7250EE9c26C56cEBBFBe6B23": &exchange_kucoin, + + "0x1692E170361cEFD1eb7240ec13D048Fd9aF6d667": &exchange_kucoin, + + "0xcaD621da75a66c7A8f4FF86D30A2bF981Bfc8FdD": &exchange_kucoin, + + "0xd89350284c7732163765b23338f2ff27449E0Bf5": &exchange_kucoin, + + "0x88Bd4D3e2997371BCEEFE8D9386c6B5B4dE60346": &exchange_kucoin, + + "0xeC30d02f10353f8EFC9601371f56e808751f396F": &exchange_kucoin, + + "0x738cF6903E6c4e699D1C2dd9AB8b67fcDb3121eA": &exchange_kucoin, + + "0xf16E9B0D03470827A95CDfd0Cb8a8A3b46969B91": &exchange_kucoin, + + "0xa1D8d972560C2f8144AF871Db508F0B0B10a3fBf": &exchange_kucoin, + + "0x2B5634C42055806a59e9107ED44D43c426E58258": &exchange_kucoin, + + "0x689C56AEf474Df92D44A1B70850f808488F9769C": &exchange_kucoin, + + "0xFf651EAD42b8EeA0B9cB88EDc92704ef6af372Ce": &exchange_kucoin, + + "0x899B5d52671830f567BF43A14684Eb14e1f945fe": &exchange_kucoin, + + "0x14EA40648fC8C1781D19363F5B9Cc9A877ac2469": &exchange_kucoin, + + "0x2a8c8b09bD77c13980495A959B26c1305166A57f": &exchange_kucoin, + + "0x5dB0E46744A321f7Fe7e2E4A9EE0df2F5dD0c3E3": &exchange_kucoin, + + "0xF43D7EbaaD1Efefb3e4df0c9d5766a112DcE7Dec": &exchange_kucoin, + + "0x1Db92e2EeBC8E0c075a02BeA49a2935BcD2dFCF4": &exchange_bybit, + + "0xee5B5B923fFcE93A870B3104b7CA09c3db80047A": &exchange_bybit, + + "0xf89d7b9c864f589bbF53a82105107622B35EaA40": &exchange_bybit, + + "0xA7A93fd0a276fc1C0197a5B5623eD117786eeD06": &exchange_bybit, + + "0xC882b111A75C0c657fC507C04FbFcD2cC984F071": &exchange_gate_io, + + "0x1C4b70a3968436B9A0a9cf5205c787eb81Bb558c": &exchange_gate_io, + + "0x0D0707963952f2fBA59dD06f2b425ace40b492Fe": &exchange_gate_io, + + "0xD793281182A0e3E023116004778F45c29fc14F19": &exchange_gate_io, + + "0x7793cD85c11a924478d358D49b05b37E91B5810F": &exchange_gate_io, + + "0x5d8f42503ea6E7807DaF04047aA749E43847bE09": &exchange_gate_io, + + "0x127481c5Ce4f9bB7cbDB6F8681eF27b21E953bd1": &exchange_gate_io, + + "0x249C4677896D969e2fec3AD2c405FB4be3baD4D2": &exchange_gate_io, + + "0x6DF6d4610e12Fd9033f8c8329F443f201BD36aE1": &exchange_gate_io, + + "0xeb1d60A831a9B689a67f314aFbF0D7f9E6ac911d": &exchange_gate_io, + + "0xE7872ffEDDAC12fB4B8579fBf390553415A99028": &exchange_gate_io, + + "0x7049e4343cE902240cAeDFd093559250Ff890Cef": &exchange_gate_io, + + "0xfF5566497750058C1b9A35229Ab7ca8f50811912": &exchange_gate_io, + + "0xe134A754345582b113962cFA51b0DC036a1B04C5": &exchange_gate_io, + + "0x4ADd38EE5bf1e232707c543C880F34c61c158EA9": &exchange_gate_io, + + "0xDb13fEA8aFd91f66Bb99595AA2801599da1aed3F": &exchange_gate_io, + + "0x020142aCd7f25281C0C5e0e90B6CCe6ddaEa3cD8": &exchange_gate_io, + + "0xE35973b0C5C831A7423342DBaEbF555946FDEd4c": &exchange_gate_io, + + "0xc9B8ded010dDb547e334410fC04BB82420EaFF06": &exchange_gate_io, + + "0xfeAFAe14aDED9279afdA58C4A3Ac42FE7195E57F": &exchange_gate_io, + + "0x9ED8b706C99E6ebd80824130eD935F9b5d78f4E3": &exchange_gate_io, + + "0x1dBf7a573e5fF8E40E477510a7c43F633B0BEE79": &exchange_gate_io, + + "0x66f820a414680B5bcda5eECA5dea238543F42054": &exchange_bittrex, + + "0xFbC9D695D419Cdf7eB46dF979353f5B394227976": &exchange_bittrex, + + "0x429C8344C9b911e9a0A6e6cE257b28250Bd3a90a": &exchange_bittrex, + + "0xFBb1b73C4f0BDa4f67dcA266ce6Ef42f520fBB98": &exchange_bittrex, + + "0xE94b04a0FeD112f3664e45adb2B8915693dD5FF3": &exchange_bittrex, + + "0x1e2FCfd26d36183f1A5d90f0e6296915b02BCb40": &exchange_coinone, + + "0x167A9333BF582556f35Bd4d16A7E80E191aa6476": &exchange_coinone, + + "0x18709E89BD403F470088aBDAcEbE86CC60dda12e": &exchange_huobipro, + + "0xA929022c9107643515F5c777cE9a910F0D1e490C": &exchange_huobipro, + + "0xeEe28d484628d41A82d01e21d12E2E78D69920da": &exchange_huobipro, + + "0x6748F50f686bfbcA6Fe8ad62b22228b87F31ff2b": &exchange_huobipro, + + "0x5C985E89DDe482eFE97ea9f1950aD149Eb73829B": &exchange_huobipro, + + "0x1062a747393198f70F71ec65A582423Dba7E5Ab3": &exchange_huobipro, + + "0xaB5C66752a9e8167967685F1450532fB96d5d24f": &exchange_huobipro, + + "0xfdb16996831753d5331fF813c29a93c76834A0AD": &exchange_huobipro, + + "0xFA4B5Be3f2f84f56703C42eB22142744E95a2c58": &exchange_huobipro, + + "0x0A98fB70939162725aE66E626Fe4b52cFF62c2e5": &exchange_huobipro, + + "0x46705dfff24256421A05D056c29E81Bdc09723B8": &exchange_huobipro, + + "0x18916e1a2933Cb349145A280473A5DE8EB6630cb": &exchange_huobipro, + + "0xFd54078bAdD5653571726C3370AfB127351a6f26": &exchange_huobipro, + + "0xadB2B42F6bD96F5c65920b9ac88619DcE4166f94": &exchange_huobipro, + + "0xc589b275e60dDa57aD7E117C6DD837Ab524a5666": &exchange_huobipro, + + "0xf056F435Ba0CC4fCD2F1B17e3766549fFc404B94": &exchange_huobipro, + + "0x5401dBf7da53e1C9Dbf484E3d69505815F2f5e6e": &exchange_huobipro, + + "0x7EF35bb398E0416b81b019fEa395219B65c52164": &exchange_huobipro, + + "0xEec606A66edB6f497662Ea31b5eb1610da87AB5f": &exchange_huobipro, + + "0x794d28aC31bCB136294761a556b68D2634094153": &exchange_huobipro, + + "0x4d77a1144dC74f26838B69391a6D3B1e403D0990": &exchange_huobipro, + + "0x9A755332D874c893111207b0b220Ce2615cd036F": &exchange_huobipro, + + "0xE4818f8fDe0C977A01DA4Fa467365B8bF22b071E": &exchange_huobipro, + + "0x32598293906b5b17c27d657dB3AD2c9b3f3E4265": &exchange_huobipro, + + "0xE93381fB4c4F14bDa253907b18faD305D799241a": &exchange_huobipro, + + "0xf66852bC122fD40bFECc63CD48217E88bda12109": &exchange_huobipro, + + "0x30741289523c2e4d2A62c7D6722686D14E723851": &exchange_huobipro, + + "0x90E9dDD9d8D5ae4E3763d0CF856C97594DEA7325": &exchange_huobipro, + + "0xB2a48f542dc56B89b24C04076cbE565b3Dc58e7b": &exchange_huobipro, + + "0xCAc725beF4f114F728cbCfd744a731C2a463c3Fc": &exchange_huobipro, + + "0x6F48a3E70F0251d1e83a989e62aAa2281A6d5380": &exchange_huobipro, + + "0xEB6D43Fe241fb2320b5A3c9BE9CDfD4dd8226451": &exchange_huobipro, + + "0x1B93129F05cc2E840135AAB154223C75097B69bf": &exchange_huobipro, + + "0xd8a83b72377476D0a66683CDe20A8aAD0B628713": &exchange_huobipro, + + "0x28FFE35688fFFfd0659AEE2E34778b0ae4E193aD": &exchange_huobipro, + + "0xB4Cd0386d2Db86f30C1A11c2B8c4F4185c1Dade9": &exchange_huobipro, + + "0x956e0DBEcC0e873d34a5e39B25f364b2CA036730": &exchange_huobipro, + + "0x73f8FC2e74302eb2EfdA125A326655aCF0DC2D1B": &exchange_huobipro, + + "0x229b5c097F9b35009CA1321Ad2034D4b3D5070F6": &exchange_huobipro, + + "0xE3314bbF3334228b257779E28228CfB86fA4261B": &exchange_huobipro, + + "0x1205E4f0D2f02262E667fd72f95a68913b4F7462": &exchange_huobipro, + + "0x0511509A39377F1C6c78DB4330FBfcC16D8A602f": &exchange_huobipro, + + "0x0577a79Cfc63Bbc0Df38833Ff4C4a3BF2095b404": &exchange_huobipro, + + "0xB6bC437708a398cDA5627224BB8b88BCD1E88d8F": &exchange_huobipro, + + "0xc837F51A0eFa33F8ECA03570e3D01a4B2CF97FfD": &exchange_huobipro, + + "0x137ad9C4777E1d36e4b605e745e8F37B2b62E9c5": &exchange_huobipro, + + "0x034f854B44D28E26386c1BC37ff9B20C6380b00d": &exchange_huobipro, + + "0x0c6C34CDd915845376fb5407E0895196C9DD4eeC": &exchange_huobipro, + + "0x926fC576b7facF6aE2d08eE2D4734C134a743988": &exchange_huobipro, + + "0x5861b8446A2F6e19a067874c133f04c578928727": &exchange_huobipro, + + "0xDc76CD25977E0a5Ae17155770273aD58648900D3": &exchange_huobipro, + + "0x6f259637dcD74C767781E37Bc6133cd6A68aa161": &exchange_huobipro, + + "0xa66Daa57432024023DB65477BA87D4E7F5f95213": &exchange_huobipro, + + "0xa8660c8ffD6D578F657B72c0c811284aef0B735e": &exchange_huobipro, + + "0x34ea4138580435B5A521E460035edb19Df1938c1": &exchange_binance_us, + + "0xf60c2Ea62EDBfE808163751DD0d8693DCb30019c": &exchange_binance_us, + + "0x61189Da79177950A7272c88c6058b96d4bcD6BE2": &exchange_binance_us, + + "0x111cFf45948819988857BBF1966A0399e0D1141e": &exchange_bitflyer, + + "0xD03be958e6b8da2D28aC8231a2291d6E4f0a7ea7": &exchange_korbit, + + "0xf0bc8FdDB1F358cEf470D63F96aE65B1D7914953": &exchange_korbit, + + "0xd6e0F7dA4480b3AD7A2C8b31bc5a19325355CA15": &exchange_korbit, + + "0x8550E644D74536f1DF38B17D5F69aa1BFe28aE86": &exchange_korbit, + + "0x0c01089AEdc45Ab0F43467CCeCA6B4d3E4170bEa": &exchange_korbit, + + "0x2864DE013415B6c2C7A96333183B20f0F9cC7532": &exchange_korbit, + + "0x59fba2E8595841DD2627703f4bb535C3B40a12E0": &exchange_korbit, + + "0x49e14f2D6839768BcC39Ef0F60809f00eaBBAc69": &exchange_korbit, + + "0x51d9914cB7f0C7D03075280D8f57Eb0Be6Ee457E": &exchange_korbit, + + "0x58e2201D8e1668597A37f4D6e701fF642dC2fa6d": &exchange_korbit, + + "0xE6ae903Bf00691d5996fABa0C2Ee7E7422A48FfE": &exchange_korbit, + + "0x50CBe3772513706CEE11548A13a1890F0a2996A0": &exchange_korbit, + + "0x954818aE7D93DD682BEC7823EE3406e3B4133028": &exchange_korbit, + + "0xb7580490a51D3F48D451ba5f2DD79a835d266015": &exchange_korbit, + + "0x1167ed55a3a37f072d59217493117b07972aAD7F": &exchange_korbit, + + "0x1E4B147d4dA3Fdb73ACC8428dDEA638088451Cdc": &exchange_korbit, + + "0xe5d7CcC5fc3b3216C4DFF3a59442F1d83038468C": &exchange_korbit, + + "0x42992d123b02d213f58ddb72572Cf48607be6348": &exchange_korbit, + + "0x416299AAde6443e6F6e8ab67126e65a7F606eeF5": &exchange_luno, + + "0xA9D1e08C7793af67e9d92fe308d5697FB81d3E43": &exchange_coinbasepro, + + "0x71660c4005BA85c37ccec55d0C4493E66Fe775d3": &exchange_coinbasepro, + + "0xddfAbCdc4D8FfC6d5beaf154f18B778f892A0740": &exchange_coinbasepro, + + "0x3cD751E6b0078Be393132286c442345e5DC49699": &exchange_coinbasepro, + + "0x503828976D22510aad0201ac7EC88293211D23Da": &exchange_coinbasepro, + + "0xb5d85CBf7cB3EE0D56b3bB207D5Fc4B82f43F511": &exchange_coinbasepro, + + "0xeB2629a2734e272Bcc07BDA959863f316F4bD4Cf": &exchange_coinbasepro, + + "0xA090e606E30bD747d4E6245a1517EbE430F0057e": &exchange_coinbasepro, + + "0xD688AEA8f7d450909AdE10C47FaA95707b0682d9": &exchange_coinbasepro, + + "0x02466E547BFDAb679fC49e96bBfc62B9747D997C": &exchange_coinbasepro, + + "0x6b76F8B1e9E59913BfE758821887311bA1805cAB": &exchange_coinbasepro, + + "0x2a0c0DBEcC7E4D658f48E01e3fA353F44050c208": &exchange_idex, + + "0x19CD9ce7e9BD7F56f69Bcfb8ed63aEB46631A970": &exchange_idex, + + "0xe80623a9d41f2f05780D9cD9cea0F797Fd53062A": &exchange_bitget, + + "0xe6a421f24d330967a3Af2F4cDB5c34067E7e4d75": &exchange_bitget, + + "0x97b9D2102A9a65A26E1EE82D59e42d1B73B68689": &exchange_bitget, + + "0x5bdf85216ec1e38D6458C870992A69e38e03F7Ef": &exchange_bitget, + + "0x0639556F03714A74a5fEEaF5736a4A64fF70D206": &exchange_bitget, + + "0xE2B406EC9227143A8830229eEb3Eb6E24b5c60Be": &exchange_bitget, + + "0x31A36512D4903635b7dd6828a934C3915A5809Be": &exchange_bitget, + + "0x3CC936b795A188F0e246cBB2D74C5Bd190aeCF18": &exchange_mexc, + + "0x75e89d5979E4f6Fba9F97c104c2F0AFB3F1dcB88": &exchange_mexc, + + "0x0162Cd2BA40E23378Bf0FD41f919E1be075f025F": &exchange_mexc, + + "0x0211f3ceDbEf3143223D3ACF0e589747933e8527": &exchange_mexc, + + "0xe70CDE2c091569a09e7c1e335e20AF302Ab41339": &exchange_mexc, + + "0xc5424B857f758E906013F3555Dad202e4bdB4567": &exchange_curve, + + "0xEEA81C4416d71CeF071224611359F6F99A4c4294": &exchange_bitmex, + + "0xA910f92ACdAf488fa6eF02174fb86208Ad7722ba": &exchange_poloniex, + + "0x32Be343B94f860124dC4fEe278FDCBD38C102D88": &exchange_poloniex, + + "0x6F803466bCD17f44fa18975bf7c509ba64Bf3825": &exchange_poloniex, + + "0x6B71834D65C5C4d8eD158D54B47E6Ea4Ff4E5437": &exchange_poloniex, + + "0x8d451AE5ee8F557a9cE7A9D7Be8A8cb40002d5cB": &exchange_poloniex, + + "0xc0e30823e5e628df8bc9bf2636a347E1512F0ecb": &exchange_poloniex, + + "0xfbf2173154F7625713be22E0504404EBfE021eae": &exchange_poloniex, + + "0xEaD6be34CE315940264519f250d8160f369fa5cd": &exchange_poloniex, + + "0xb794F5eA0ba39494cE839613fffBA74279579268": &exchange_poloniex, + + "0x48d466B7c0d32B61E8A82Cd2bCF060F7C3F966df": &exchange_poloniex, + + "0x65F9B2e4d7aAEB40fFEA8C6F5844d5AD7Da257E0": &exchange_poloniex, + + "0xaB11204cfEacCFfa63C2D23AeF2Ea9aCCDB0a0D5": &exchange_poloniex, + + "0x0536806df512D6cDDE913Cf95c9886f65b1D3462": &exchange_poloniex, + + "0x31a2Feb9b5D3b5f4e76C71D6C92FC46eBb3cb1c1": &exchange_poloniex, + + "0x209c4784AB1E8183Cf58cA33cb740efbF3FC18EF": &exchange_poloniex, + + "0x2fA2Bc2ce6A4f92952921A4CAA46B3727D24a1ec": &exchange_poloniex, + + "0x36B01066b7fa4a0fdb2968eA0256C848e9135674": &exchange_poloniex, + + "0x6795cf8EB25585EaDC356Ae32AC6641016c550f2": &exchange_poloniex, + + "0xAa9fa73dFE17ecAa2C89b39f0bb2779613C5Fc3b": &exchange_poloniex, + + "0xBd2Ec7c608a06fE975DBDCA729E84dEdb34eCC21": &exchange_poloniex, + + "0xEe8D8ABABB63bCd41e70a30B187CbaAA4e5D7ec6": &exchange_bit_z, + + "0xA24f25A8545eE2Ab81B2A5Cc8F047d3567fCDE0F": &exchange_bit_z, + + "0x3D5851C33b581a49998850a78D1865a1936dAcb3": &exchange_bit_z, + + "0x4B729cF402CfCfFd057E254924B32241AeDC1795": &exchange_bit_z, + + "0xF5bEC430576fF1b82e44DDB5a1C93F6F9d0884f3": &exchange_yobit, + + "0xc4D300019f587145cFd9b42875073b3AD4Bb0296": &exchange_yobit, + + "0x252D1375CA8F8A4CA59F1e7635F8Fd7C4A78031E": &exchange_coinswitch_kuber, + + "0xceAE7673553c90d0a3cd1A494dA35eDe63910cBF": &exchange_coinswitch_kuber, + + "0x3506A6ccc61d4D2046B79969020a5aF79010b4a6": &exchange_coinswitch_kuber, + + "0x294B9B133cA7Bc8ED2CdD03bA661a4C6d3a834D9": &exchange_coinswitch_kuber, + + "0x17a678C673FbB5B2f3294ef35e18c0Ef8cC3E64F": &exchange_coinswitch_kuber, + + "0x250b05e1E0dd20A876E369a16441E714e3d9f436": &exchange_coinswitch_kuber, + + "0x4346910075E50A442931D698D41ebE6965a584b1": &exchange_coinswitch_kuber, + + "0x4cD3aa96836c133c9B9f27daFa7baF744D57404d": &exchange_coinswitch_kuber, + + "0x758E2c2D1a362E2B3e613545e48285b03581EF43": &exchange_coinswitch_kuber, + + "0x7D3f7A3842f18873C769a42f92F51F091954211c": &exchange_coinswitch_kuber, + + "0xc0EB873cd81d47d290Ff7b6AD49280f6fD9cfB2B": &exchange_coinswitch_kuber, + + "0xE627b3e5591a713E3c23aF6fc4eBa2F313FdF489": &exchange_coinswitch_kuber, + + "0xE6b936B7640afa9242d1A714E50eE823e1Be140f": &exchange_coinswitch_kuber, + + "0x91Dca37856240E5e1906222ec79278b16420Dc92": &exchange_bitcoin_indonesia, + + "0x3C02290922a3618A4646E3BbCa65853eA45FE7C6": &exchange_bitcoin_indonesia, + + "0x9CbADD5Ce7E14742F70414A6DcbD4e7bB8712719": &exchange_bitcoin_indonesia, + + "0xf7D13C7dBec85ff86Ee815f6dCbb3DEDAc78ca49": &exchange_phemex, + + "0xD4Dcd2459BB78d7a645Aa7E196857D421b10D93F": &exchange_bigone, + + "0xa30D8157911ef23c46C0eB71889eFe6a648a41F7": &exchange_bigone, + + "0x88e343F4599292C2CfFe683C1bb93cD3480BdbAb": &exchange_bigone, + + "0x17Bc58b788808DaB201a9A90817fF3C168BF3d61": &exchange_bigone, + + "0x983873529f95132BD1812A3B52c98Fb271d2f679": &exchange_bitmax, + + "0xfB8131c260749c7835a08ccBdb64728De432858E": &exchange_bitmax, + + "0x4B1a99467a284Cc690e3237bC69105956816f762": &exchange_bitmax, + + "0x03BDf69B1322D623836aFBD27679A1C0AfA067E9": &exchange_bitmax, + + "0x986a2fCa9eDa0e06fBf7839B89BfC006eE2a23Dd": &exchange_bitmax, + + "0xEf58321032cF693Fa7e39F31e45CBc32f2092cb3": &exchange_hitbtc, + + "0x1C11BA15939E1C16eC7ca1678dF6160Ea2063Bc5": &exchange_hitbtc, + + "0xEd0245c53F69eBccDaB3e39cF0013161a67BF296": &exchange_hitbtc, + + "0xA12431D0B9dB640034b0CDFcEEF9CCe161e62be4": &exchange_hitbtc, + + "0x9C67e141C0472115AA1b98BD0088418Be68fD249": &exchange_hitbtc, + + "0x59a5208B32e627891C389EbafC644145224006E8": &exchange_hitbtc, + + "0xb77bd9fc4830A801D42BCD3Ffdf2f8C079ecBe28": &exchange_hitbtc, + + "0x2d969D1a10833f207fdC74381979bAa249146DF3": &exchange_hitbtc, + + "0x7891b20C690605F4E370d6944C8A5DBfAc5a451c": &exchange_latoken, + + "0x0861Fca546225fbF8806986D211C8398f7457734": &exchange_latoken, + + "0x4c766dEf136F59f6494f0969B1355882080CF8E0": &exchange_bitstamp, + + "0x00BDb5699745f5b860228c8f939ABF1b9Ae374eD": &exchange_bitstamp, + + "0x1522900B6daFac587d499a862861C0869Be6E428": &exchange_bitstamp, + + "0xc5b611f502a0DCF6C3188Fd494061aE29B2baa4f": &exchange_bitstamp, + + "0x059799F2261d37b829c2850cEe67b5b975432271": &exchange_bitstamp, + + "0x9A9BED3Eb03E386D66f8a29DC67dC29Bbb1ccB72": &exchange_bitstamp, + + "0xD1669Ac6044269b59Fa12c5822439F609Ca54F41": &exchange_coinlistpro, + + "0x8D1f2eBFACCf1136dB76FDD1b86f1deDE2D23852": &exchange_coinlistpro, + + "0xB37640f5F7ef7b0fDCce2c0C053DB4f976945647": &exchange_shuzibi, + + "0x6693C388255F519497f0Ca2854c31B72E605569b": &exchange_shuzibi, + + "0xe17ee7B3c676701c66B395A35f0DF4C2276a344E": &exchange_shuzibi, + + "0x0DB79Bbb99DEFC2356d82848A459A5a13869EB3F": &exchange_exmo, + + "0xd7B9A9b2F665849C4071Ad5af77d8c76aa30fb32": &exchange_exmo, + + "0x1Fd6267f0D86F62D88172B998390AfEE2a1F54B6": &exchange_exmo, + + "0xFD6724B4b3e8eca764F0DD07ccd903aD348D70F8": &exchange_zb, + + "0x6485fc77bE2186fc60feeA38d0ef4331D8404b60": &exchange_zb, + + "0xF98e7AF638b015D15E1820852bF24900f074b38B": &exchange_zb, + + "0x60d0cC2aE15859f69bF74DADb8AE3Bd58434976b": &exchange_zb, + + "0x562680a4dC50ed2f14d75BF31f494cfE0b8D10a1": &exchange_hotbit, + + "0x274F3c32C90517975e29Dfc209a23f315c1e5Fc7": &exchange_hotbit, + + "0x8533A0bd9310Eb63E7CC8E1116c18a3D67B1976A": &exchange_hotbit, + + "0xb357C9B4c9aff115f12AF5dd6dAb652d8f2ad561": &exchange_kuna, + + "0x77aB999d1e9F152156B4411E1f3E2A42Dab8CD6D": &exchange_kuna, + + "0xF71AfE21Cd32959113Fc47aE2EF886B43A9413d5": &exchange_probit_exchange, + + "0x72E5263FF33D2494692D7F94A758aA9F82062F73": &exchange_probit_exchange, + + "0x2819c144D5946404C0516B6f817a960dB37D4929": &exchange_remitano, + + "0x0be1cef9d45f6621eB083f0a0e4b2261618938d8": &exchange_remitano, + + "0xd0b02a49B0768302F407cB28d813DaE1761BAEfa": &exchange_remitano, + + "0x39F6a6C85d39d5ABAd8A398310c52E7c374F2bA3": &exchange_whitebit, + + "0xeD4e1AD0F899EF3954D05bafc502F50C8e6A6baf": &exchange_coinw, + + "0xa20f10289248717374e9B7776dC368aa526cb6F2": &exchange_coinw, + + "0x94961bB15bafE2d73b899B9a3fC209B3FcF899D6": &exchange_coinw, + + "0xcb243bf48FB443082FAE7db47eC96Cb120Cd6801": &exchange_coinw, + + "0x429Bf8EC3330E02401D72bEadE86000d9a2E19EB": &exchange_coinw, + + "0x8705CcFd8A6dF3785217C307cbEbf9b793310B94": &exchange_coinw, + + "0x9f8646A35db0f466aC9322e2D194cc18f209Fc75": &exchange_coinw, + + "0x6f31D347457962c9811ff953742870EF5a755dE3": &exchange_coinw, + + "0xd115B7B6bEA4819BFD1fe5397f5e7e01fA19D83d": &exchange_coinw, + + "0x659BA341542Ed9c25eCA5FD7daE3659385956360": &exchange_xt, + + "0xe74638bff8e7e332c08C239407FA68324acf8Dee": &exchange_xt, + + "0xD30b438DF65f4f788563b2b3611Bd6059bFF4ad9": &exchange_okcoin_intl, + + "0x618fFD1cDAbeE36CE5992a857Cc7463f21272bD7": &exchange_wazirx, + + "0x63DFE4e34A3bFC00eB0220786238a7C6cEF8Ffc4": &exchange_wootrade, + + "0xeA319fd75766F5180018F8e760f51c3D3C457496": &exchange_wootrade, + + "0x0d83F81bc9f1E8252F87A4109bBF0d90171c81DF": &exchange_wootrade, + + "0x6cc8dCbCA746a6E4Fdefb98E1d0DF903b107fd21": &exchange_bitrue, + + "0x878d587BE19cd44C203EC5E90d9cA3724C4D2c3D": &exchange_bitrue, + + "0xAB83D182f3485cf1D6ccdd34C7CFEf95b4C08da4": &exchange_binance_jex, + + "0xAeEc6f5aCA72F3A005af1B3420ab8c8c7009BaC8": &exchange_otcbtc, + + "0x8f7DEE5cDe6965481F0119BaC9d5b2b142bcc94F": &exchange_otcbtc, + + "0xd0a174B1Ff551D63eD0823AE743bBe9BC204B0f0": &exchange_dextrade, + + "0xe03c23519e18D64F144d2800E30E81B0065C48B5": &exchange_mercatox, + + "0x390dE26d772D2e2005C6d1d24afC902bae37a4bB": &exchange_upbit, + + "0xBA826fEc90CEFdf6706858E5FbaFcb27A290Fbe0": &exchange_upbit, + + "0x5E032243d507C743b061eF021e2EC7fcc6d3ab89": &exchange_upbit, + + "0x03747F06215B44E498831dA019B27f53E483599F": &exchange_upbit, + + "0xc9f5296Eb3ac266c94568D790b6e91ebA7D76a11": &exchange_cex_io, + + "0x9BA3560231e3E0aD7dde23106F5B98C72E30b468": &exchange_bilaxy, + + "0xf7793d27A1b76CDF14Db7C83e82C772cF7C92910": &exchange_bilaxy, + + "0x7c49e1c0e33F3efB57d64b7690Fa287C8D15B90A": &exchange_bit2c, + + "0x474ac5cb62D7aCEDC9990d4DaAfA0c39D9478FBB": &exchange_bingx, + + "0xedBB72E6b3Cf66a792bFF7FaaC5Ea769fe810517": &exchange_liquid, + + "0xeeC0Ed9E41C209c1c53a35900a06BF5DcA927405": &exchange_bitforex, + + "0xb9ee1e551f538A464E8F8C41E9904498505B49b0": &exchange_coinex, + + "0x53Eb3Ea47643E87e8f25dd997A37B3b5260e7336": &exchange_coinex, + + "0xAD840A2B569188d49245fcd7Bde71167D77df6c0": &exchange_jbexcom, + + "0x09b1806Df13062B5f653BeDA6998972cabCF7009": &exchange_8v_global, + + "0x4B01721F0244E7c5B5F63c20942850E447f5a5Ee": &exchange_coinexchange, + + "0x226CE8219207E773c0768A699bf7982DbEA754Ad": &exchange_coinexchange, + + "0x475c4810C124873a58E1045428D1FA35634b6048": &exchange_tokencan, + + "0x1619d743d7DC612E99d5D94Ebd6b9695D46f0BF3": &exchange_btse, + + "0xde279a5cD86860Cd3D039AA1B74bc29E74cABB12": &exchange_btse, + + "0x8BaeD8FD7FC228781a95e7D6E57C3e430D2BE6F9": &exchange_zgcom, + + "0xa5a3903FC3698c241B1385DF4F80A5C665f47404": &exchange_qbtc, + + "0xBd8ef191Caa1571e8aD4619ae894e07A75De0C35": &exchange_paribu, + + "0x2bB97B6CF6FfE53576032c11711D59Bd056830eE": &exchange_paribu, + + "0xC098B2a3Aa256D2140208C3de6543aAEf5cd3A94": &exchange_ftx, + + "0xdc51356928baE9fd7F43ddB4a1C8e1FbDD340eB5": &exchange_ftx, + + "0xFF3baBb82a8065318A0548E4aF19e0ED46dc28F9": &exchange_ftx, + + "0xA72CEb9964Bac623D67CF4d07B99645145ba16e1": &exchange_ftx, + + "0xd45C041dC87AA2495793BeC3964389C81A962DFA": &exchange_ftx, + + "0xb2ab43F76131fb299A8b04d3434eEA6e14069cfA": &exchange_ftx, + + "0x91FDe2e551560067A818bdA6f4B63C89ee83500d": &exchange_ftx, + + "0x2FAF487A4414Fe77e2327F0bf4AE2a264a776AD2": &exchange_ftx, + + "0xf73C3c65bde10BF26c2E1763104e609A41702EFE": &exchange_bibox, + + "0xe79eeF9b9388A4fF70ed7ec5Bccd5B928ebB8Bd1": &exchange_bitmart, + + "0x68b22215FF74E3606BD5E6c1DE8c2D68180c85F7": &exchange_bitmart, + + "0xD9811e8b7c42418c71dABfE63b9CC17f8db1A6Eb": &exchange_bkex, + + "0xB726dA4fbdc3E4dBda97bb20998cF899b0e727E0": &exchange_cobinhood, + + "0x8958618332dF62AF93053cb9c535e26462c959B0": &exchange_cobinhood, + + "0xf65c33c383a6996ffEC2d00AA93df3cE2Bdb7851": &exchange_jingui, + + "0x7A10Ec7d68a048BdaE36A70E93532D31423170fA": &exchange_bgogo, + + "0xCe1bF8E51F8b39e51c6184e059786D1c0eAF360F": &exchange_bgogo, + + "0xe51a4316607772132F89b3483DA698e4d682E191": &exchange_citex, + + "0x9E2E3649563E60926A7B5968BC3537Fb58fAf78b": &exchange_citex, + + "0x4d7291630651041358abE50532C1A20948559155": &exchange_citex, + + "0x691c5e2751Ec615d2b49cb569fdF787720b0fD31": &exchange_citex, + + "0x7B897Ab1e759028F14e1841Ffc5449f11273e330": &exchange_citex, + + "0x521dB06bF657Ed1D6C98553A70319a8DdBAc75A3": &exchange_crex24, + + "0x2a1dCbDF3fc17C7263529AA7fB1F90e3D4624eD2": &exchange_idcm, + + "0x2B2b0CF3d1BC4a776c512e7F374991FD9CA3Eb34": &exchange_idcm, + + "0xC5565200eb6a428451D53280b49c4488f74ac14D": &exchange_idcm, + + "0x8B2b3d18230661157d399226686d91B2fC340a30": &exchange_idcm, + + "0x0A8B4E06FA1A93211422D0F4f12747A832dBBD28": &exchange_idcm, + + "0xC86F08c4F6aeC029Ece7e56d1d302dFdcF2EC41d": &exchange_idcm, + + "0x3613ef1125A078EF96Ffc898c4eC28D73C5b8C52": &exchange_tidex, + + "0x0a73573Cf2903d2D8305b1eCb9e9730186a312aE": &exchange_tidex, + + "0x5004A7AA3c430BC3e133Ee29C28E391b16F8BF7d": &exchange_ztcom, + + "0x444a5E0d2515f322E7278F6EE95CB34d8de98f09": &exchange_ztcom, + + "0x7aA12EeF14Db55884Ab2Fe0D097E0064EF7A8ECA": &exchange_ztcom, + + "0x0179D232beCF100Cd1f0Dd3e84a8AFA9ca31aFF3": &exchange_ztcom, + + "0x93f36930F94FBB5aFc5fB506D3f7ABB9179a4e4e": &exchange_coinegg, + + "0x73957709695E73Fd175582105c44743CF0fB6f2f": &exchange_bw, + + "0x2f1233Ec3a4930Fd95874291DB7da9E90dfB2F03": &exchange_uex, + + "0x9fB01A2584Aac5aAE3faB1ed25F86c5269b32999": &exchange_ggbtc, + + "0xb27ac505bee7298b204b530b368B6191F4141C55": &exchange_ulei, + + "0x412D18072b7809aB25d8B4B0e0167128E122eC37": &exchange_ulei, + + "0x499bC6B4B9e7da1fD8A775106a389F4C1D1D4B98": &exchange_wrnet, + + "0x373fE5F4D8936590b4463DF22bE4ce3f82ced806": &exchange_wrnet, + + "0xf8bC6604190a6279080E0fE24e15dc1D2927E10B": &exchange_wrnet, + + "0x4003CAefF9d6eB5af6927b0842c90f43F31d25d1": &exchange_dcoin, + + "0x7abE0cE388281d2aCF297Cb089caef3819b13448": &exchange_ftx_us, + + "0x05f51AAb068CAa6Ab7eeb672f88c180f67F17eC7": &exchange_abcc, + + "0x4564BFe303900178578769b2D76B1a13533E5fd5": &exchange_aex, + + "0x6814B1FE0dBb34d006dC204A6b2DED962dF1D684": &exchange_aex, + + "0xb4460b75254ce0563Bb68eC219208344C7EA838c": &exchange_bithumbpro, + + "0x088ee5007C98a9677165D78dD2109AE4a3D04d0C": &exchange_sushiswap, + + "0x2fDbAdf3C4D5A8666Bc06645B8358ab803996E28": &exchange_uniswap, +} + +var ValidCodes = []string{ + "binance", + "kraken", + "okex", + "Bitfinex", + "gemini", + "crypto-com-exchange", + "bithumb", + "kucoin", + "bybit", + "gate-io", + "bittrex", + "coinone", + "huobipro", + "binance-us", + "bitflyer", + "korbit", + "luno", + "coinbasepro", + "idex", + "bitget", + "mexc", + "curve", + "bitmex", + "poloniex", + "bit-z", + "yobit", + "coinswitch-kuber", + "bitcoin-indonesia", + "phemex", + "bigone", + "Bitmax", + "hitbtc", + "latoken", + "bitstamp", + "coinlistpro", + "shuzibi", + "exmo", + "zb", + "hotbit", + "kuna", + "probit-exchange", + "remitano", + "whitebit", + "coinw", + "xt", + "okcoin-intl", + "wazirx", + "wootrade", + "bitrue", + "binance-jex", + "otcbtc", + "dextrade", + "mercatox", + "upbit", + "cex-io", + "bilaxy", + "Bit2C", + "bingx", + "liquid", + "bitforex", + "coinex", + "jbexcom", + "8v-global", + "coinexchange", + "tokencan", + "btse", + "zgcom", + "qbtc", + "paribu", + "ftx", + "bibox", + "bitmart", + "bkex", + "Cobinhood", + "jingui", + "bgogo", + "citex", + "crex24", + "idcm", + "tidex", + "ztcom", + "coinegg", + "bw", + "uex", + "ggbtc", + "ulei", + "wrnet", + "dcoin", + "ftx-us", + "abcc", + "aex", + "bithumbpro", + "sushiswap", + "uniswap", +} diff --git a/exchanges/exchanges.json b/exchanges/exchanges.json new file mode 100644 index 000000000..1d4489eee --- /dev/null +++ b/exchanges/exchanges.json @@ -0,0 +1,1227 @@ +[ + { + "code": "binance", + "name": "Binance", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/binance.png?style=36", + "addresses": [ + "0xbe0eb53f46cd790cd13851d5eff43d12404d33e8", + "0xf977814e90da44bfa03b6295a0616a897441acec", + "0x47ac0fb4f2d84898e4d9e7b4dab3c24507a6d503", + "0x28c6c06298d514db089934071355e5743bf21d60", + "0x5a52e96bacdabb82fd05763e25335261b270efcb", + "0x9696f59e4d72e237be84ffd425dcad154bf96976", + "0x06a0048079ec6571cd1b537418869cde6191d42d", + "0x21a31ee1afc51d94c2efccaa2092ad1028285549", + "0x56eddb7aa87536c09ccc2793473599fd21a8b17f", + "0xdfd5293d8e347dfe59e90efd55b2956a1343963d", + "0x4976a4a02f38326660d17bf34b431dc6e2eb2327", + "0x8b99f3660622e21f2910ecca7fbe51d654a1517d", + "0x4d9ff50ef4da947364bb9650892b2554e7be5e2b", + "0xb8c77482e45f1f44de1745f52c74426c631bdd52", + "0x564286362092d8e7936f0549571a803b203aaced", + "0x3666019b9e801fa9c6f73fdbc952052ebe35c059", + "0x708396f17127c42383e3b9014072679b2f60b82f", + "0x8894e0a0c962cb723c1976a4421c95949be2d4e3", + "0x3f5ce5fbfe3e9af3971dd833d26ba9b5c936f0be", + "0x001866ae5b3de6caa5a51543fd9fb64f524f5478", + "0xa344c7ada83113b3b56941f6e85bf2eb425949f3", + "0x4e9ce36e442e55ecd9025b9a6e0d88485d628a67", + "0x8f12f14a09d80051de4315808df57af19d80cad4", + "0xfe9e8709d3215310075d67e3ed32a380ccf451c8", + "0xe0f0cfde7ee664943906f17f7f14342e76a5cec7", + "0x0681d8db095565fe8a346fa0277bffde9c0edbbf", + "0x328366da5a4c5f669172a716955e3adf93a26705", + "0x6aa8f871908f0a2a9aefb4786b344707cb5d7e26", + "0xc365c3315cf926351ccaf13fa7d19c8c4058c8e1", + "0x8f22f2063d253846b53609231ed80fa571bc0c8f", + "0xd551234ae421e3bcba99a0da6d736074f22192ff", + "0x614b2ad34e7b3146314c352ae02b4a9b19deb685", + "0xf88c022f7ebff09a76bf895eb5782a1d92f25fc7", + "0x92d2a1d125c09b2b8192ddc111a5f61857037508", + "0xc3c8e0a39769e2308869f7461364ca48155d1d9e", + "0x410ed1cbcea3b3990a3f27362c06c3c5d1e75d08", + "0xcff79eb669a69bde08efce9ee8e37e601df02f32", + "0x15ab2321d7e83d00c015048b567f4f6aadc1b022", + "0x4fabb145d64652a948d72533023f6e7a623c7c53", + "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "0xdac17f958d2ee523a2206206994597c13d831ec7" + ] + }, + { + "code": "kraken", + "name": "Kraken", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/kraken.png?style=36", + "addresses": [ + "0xda9dfa130df4de4673b89022ee50ff26f6ea73cf", + "0x267be1c1d684f78cb4f6a176c4911b741e4ffdc0", + "0xe9f7ecae3a53d2a67105292894676b00d1fab785", + "0xc6bed363b30df7f35b601a5547fe56cd31ec63da", + "0x29728d0efd284d85187362faa2d4d76c2cfc2612", + "0x66c57bf505a85a74609d2c83e94aabb26d691e1f", + "0x43984d578803891dfa9706bdeee6078d80cfc79e", + "0xae2d4617c862309a3d75a0ffb358c7a5009c673f", + "0xe853c56864a2ebe4576a807d26fdc4a0ada51919", + "0x2910543af39aba0cd09dbb2d50200b3e800a63d2", + "0x53d284357ec70ce289d6d64134dfac8e511c8a3d", + "0x0a869d79a7052c7f1b55a8ebabbea3420f0d1e13", + "0x7f4edda6c8646580e68b93041b5476348eef0406", + "0xfa52274dd61e1643d2205169732f29114bc240b3" + ] + }, + { + "code": "okex", + "name": "OKX(OKEx)", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/okex.png?style=36\u0026v=1642493710", + "addresses": [ + "0x98ec059dc3adfbdd63429454aeb0c990fba4a128", + "0x868dab0b8e21ec0a48b726a1ccf25826c78c6d7f", + "0x539c92186f7c6cc4cbf443f26ef84c595babbca1", + "0xbfbbfaccd1126a11b8f84c60b09859f80f3bd10f", + "0xbf94f0ac752c739f623c463b5210a7fb2cbb420b", + "0xf51cd688b8744b1bfd2fba70d050de85ec4fb9fb", + "0xe95f6604a591f6ba33accb43a8a885c9c272108c", + "0xf7858da8a6617f7c6d0ff2bcafdb6d2eedf64840", + "0xc3ae71fe59f5133ba180cbbd76536a70dec23d40", + "0x4e7b110335511f662fdbb01bf958a7844118c0d4", + "0xa7efae728d2936e78bda97dc267687568dd593f3", + "0x4b4e14a3773ee558b6597070797fd51eb48606e5", + "0xcbffcb2c38ecd19468d366d392ac0c1dc7f04bb6", + "0x2c8fbb630289363ac80705a1a61273f76fd5a161", + "0x6cc5f688a315f3dc28a7781717a9a798a59fda7b", + "0x7eb6c83ab7d8d9b8618c0ed973cbef71d1921ef2", + "0x313eb1c5e1970eb5ceef6aebad66b07c7338d369", + "0xbda23b750dd04f792ad365b5f2a6f1d8593796f2", + "0x96fdc631f02207b72e5804428dee274cf2ac0bcd", + "0x9723b6d608d4841eb4ab131687a5d4764eb30138", + "0x5041ed759dd4afc3a72b8192c143f72f4724081a", + "0x06d3a30cbb00660b85a30988d197b1c282c6dcb6", + "0x276cdba3a39abf9cedba0f1948312c0681e6d5fd", + "0x68841a1806ff291314946eebd0cda8b348e73d6d", + "0x3d55ccb2a943d88d39dd2e62daf767c69fd0179f", + "0x07cff3c78dc9bd2378b89b92f01254703861c2e4", + "0x236f9f97e0e62388479bf9e5ba4889e46b0273c3", + "0x59fae149a8f8ec74d5bc038f8b76d25b136b9573", + "0x75231f58b43240c9718dd58b4967c5114342a86c" + ] + }, + { + "code": "Bitfinex", + "name": "Bitfinex", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/bitfinex.png?style=36\u0026v=1642558568", + "addresses": [ + "0xc61b9bb3a7a0767e3179713f3a5c7a9aedce193c", + "0x36a85757645e8e8aec062a1dee289c7d615901ca", + "0x1b8766d041567eed306940c587e21c06ab968663", + "0x5a710a3cdf2af218740384c52a10852d8870626a", + "0x4fdd5eb2fb260149a3903859043e962ab89d8ed4", + "0x28140cb1ac771d4add91ee23788e50249c10263d", + "0xc56fefd1028b0534bfadcdb580d3519b5586246e", + "0x77134cbc06cb00b66f4c7e623d5fdbf6777635ec", + "0x0b73f67a49273fc4b9a65dbd25d7d0918e734e63", + "0x742d35cc6634c0532925a3b844bc454e4438f44e", + "0x53b36141490c419fa27ecabfeb8be1ecadc82431", + "0x0cd76cd43992c665fdc2d8ac91b935ca3165e782", + "0x1151314c646ce4e0efd76d1af4760ae66a9fe30f", + "0x876eabf441b2ee5b5b0554fd502a8e0600950cfa", + "0x5754284f345afc66a98fbb0a0afe71e0f007b949", + "0x87a32492da96069115a12e27ff5e378f03a8edf7", + "0xc6cde7c39eb2f0f0095f41570af89efc2c1ea828", + "0xdcd0272462140d0a3ced6c4bf970c7641f08cd2c", + "0x7727e5113d1d161373623e5f49fd568b4f543a9e" + ] + }, + { + "code": "gemini", + "name": "Gemini", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/gemini.png?style=36", + "addresses": [ + "0x61edcdf5bb737adffe5043706e7c5bb1f1a56eea", + "0xd24400ae8bfebb18ca49be86258a3c749cf46853", + "0x5f65f7b609678448494de4c87521cdf6cef1e932", + "0x6fc82a5fe25a5cdb58bc74600a40a69c065263f8" + ] + }, + { + "code": "crypto-com-exchange", + "name": "Crypto.com Exchange", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/crypto-com-exchange.png?style=36", + "addresses": [ + "0xcffad3200574698b78f32232aa9d63eabd290703", + "0x6262998ced04146fa42253a5c0af90ca02dfd2a3", + "0x46340b20830761efd32832a74d7169b29feb9758", + "0x72a53cdbbcc1b9efa39c834a540550e23463aacb", + "0x7758e507850da48cd47df1fb5f875c23e3340c50", + "0x55c005713bab8824efd9f5b41c55f8bbc815abcd", + "0xa8e330039b67be5573afb388dc35214481c5cf81" + ] + }, + { + "code": "bithumb", + "name": "Bithumb", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/bithumb.png?style=36", + "addresses": [ + "0x558553d54183a8542f7832742e7b4ba9c33aa1e6", + "0x3fbe1f8fc5ddb27d428aa60f661eaaab0d2000ce", + "0x3052cd6bf951449a984fe4b5a38b46aef9455c8e", + "0x8fa8af91c675452200e49b4683a33ca2e1a34e42", + "0x2140efd7ba31169c69dfff6cdc66c542f0211825", + "0x090ba5af8284ebe16fccfc6c0be8fbefcf23d365", + "0x15878e87c685f866edfaf454be6dc06fa517b35b", + "0x186549a4ae594fc1f70ba4cffdac714b405be3f9", + "0x31d03f07178bcd74f9099afebd23b0ae30184ab5", + "0x88d34944cf554e9cccf4a24292d891f620e9c94f", + "0xa0ff1e0f30b5dda2dc01e7e828290bc72b71e57d", + "0xc1da8f69e4881efe341600620268934ef01a3e63", + "0xd273bd546b11bd60214a2f9d71f22a088aafe31b", + "0xed48dc0628789c2956b1e41726d062a86ec45bff" + ] + }, + { + "code": "kucoin", + "name": "KuCoin", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/kucoin.png?style=36", + "addresses": [ + "0xd6216fc19db775df9774a6e33526131da7d19a2c", + "0xb8e6d31e7b212b2b7250ee9c26c56cebbfbe6b23", + "0x1692e170361cefd1eb7240ec13d048fd9af6d667", + "0xcad621da75a66c7a8f4ff86d30a2bf981bfc8fdd", + "0xd89350284c7732163765b23338f2ff27449e0bf5", + "0x88bd4d3e2997371bceefe8d9386c6b5b4de60346", + "0xec30d02f10353f8efc9601371f56e808751f396f", + "0x738cf6903e6c4e699d1c2dd9ab8b67fcdb3121ea", + "0xf16e9b0d03470827a95cdfd0cb8a8a3b46969b91", + "0xa1d8d972560c2f8144af871db508f0b0b10a3fbf", + "0x2b5634c42055806a59e9107ed44d43c426e58258", + "0x689c56aef474df92d44a1b70850f808488f9769c", + "0xff651ead42b8eea0b9cb88edc92704ef6af372ce", + "0x899b5d52671830f567bf43a14684eb14e1f945fe", + "0x14ea40648fc8c1781d19363f5b9cc9a877ac2469", + "0x2a8c8b09bd77c13980495a959b26c1305166a57f", + "0x5db0e46744a321f7fe7e2e4a9ee0df2f5dd0c3e3", + "0xf43d7ebaad1efefb3e4df0c9d5766a112dce7dec" + ] + }, + { + "code": "bybit", + "name": "Bybit", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/bybit.png?style=36\u0026v=1642060058", + "addresses": [ + "0x1db92e2eebc8e0c075a02bea49a2935bcd2dfcf4", + "0xee5b5b923ffce93a870b3104b7ca09c3db80047a", + "0xf89d7b9c864f589bbf53a82105107622b35eaa40", + "0xa7a93fd0a276fc1c0197a5b5623ed117786eed06" + ] + }, + { + "code": "gate-io", + "name": "gate.io", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/gate-io.png?style=36\u0026v=1654130549", + "addresses": [ + "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", + "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", + "0x0d0707963952f2fba59dd06f2b425ace40b492fe", + "0xd793281182a0e3e023116004778f45c29fc14f19", + "0x7793cd85c11a924478d358d49b05b37e91b5810f", + "0x5d8f42503ea6e7807daf04047aa749e43847be09", + "0x127481c5ce4f9bb7cbdb6f8681ef27b21e953bd1", + "0x249c4677896d969e2fec3ad2c405fb4be3bad4d2", + "0x6df6d4610e12fd9033f8c8329f443f201bd36ae1", + "0xeb1d60a831a9b689a67f314afbf0d7f9e6ac911d", + "0xe7872ffeddac12fb4b8579fbf390553415a99028", + "0x7049e4343ce902240caedfd093559250ff890cef", + "0xff5566497750058c1b9a35229ab7ca8f50811912", + "0xe134a754345582b113962cfa51b0dc036a1b04c5", + "0x4add38ee5bf1e232707c543c880f34c61c158ea9", + "0xdb13fea8afd91f66bb99595aa2801599da1aed3f", + "0x020142acd7f25281c0c5e0e90b6cce6ddaea3cd8", + "0xe35973b0c5c831a7423342dbaebf555946fded4c", + "0xc9b8ded010ddb547e334410fc04bb82420eaff06", + "0xfeafae14aded9279afda58c4a3ac42fe7195e57f", + "0x9ed8b706c99e6ebd80824130ed935f9b5d78f4e3", + "0x1dbf7a573e5ff8e40e477510a7c43f633b0bee79" + ] + }, + { + "code": "bittrex", + "name": "Bittrex", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/bittrex.png?style=36", + "addresses": [ + "0x66f820a414680b5bcda5eeca5dea238543f42054", + "0xfbc9d695d419cdf7eb46df979353f5b394227976", + "0x429c8344c9b911e9a0a6e6ce257b28250bd3a90a", + "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", + "0xe94b04a0fed112f3664e45adb2b8915693dd5ff3" + ] + }, + { + "code": "coinone", + "name": "Coinone", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/coinone.png?style=36", + "addresses": [ + "0x1e2fcfd26d36183f1a5d90f0e6296915b02bcb40", + "0x167a9333bf582556f35bd4d16a7e80e191aa6476" + ] + }, + { + "code": "huobipro", + "name": "Huobi Global", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/huobipro.png?style=36\u0026v=1669107209", + "addresses": [ + "0x18709e89bd403f470088abdacebe86cc60dda12e", + "0xa929022c9107643515f5c777ce9a910f0d1e490c", + "0xeee28d484628d41a82d01e21d12e2e78d69920da", + "0x6748f50f686bfbca6fe8ad62b22228b87f31ff2b", + "0x5c985e89dde482efe97ea9f1950ad149eb73829b", + "0x1062a747393198f70f71ec65a582423dba7e5ab3", + "0xab5c66752a9e8167967685f1450532fb96d5d24f", + "0xfdb16996831753d5331ff813c29a93c76834a0ad", + "0xfa4b5be3f2f84f56703c42eb22142744e95a2c58", + "0x0a98fb70939162725ae66e626fe4b52cff62c2e5", + "0x46705dfff24256421a05d056c29e81bdc09723b8", + "0x18916e1a2933cb349145a280473a5de8eb6630cb", + "0xfd54078badd5653571726c3370afb127351a6f26", + "0xadb2b42f6bd96f5c65920b9ac88619dce4166f94", + "0xc589b275e60dda57ad7e117c6dd837ab524a5666", + "0xf056f435ba0cc4fcd2f1b17e3766549ffc404b94", + "0x5401dbf7da53e1c9dbf484e3d69505815f2f5e6e", + "0x7ef35bb398e0416b81b019fea395219b65c52164", + "0xeec606a66edb6f497662ea31b5eb1610da87ab5f", + "0x794d28ac31bcb136294761a556b68d2634094153", + "0x4d77a1144dc74f26838b69391a6d3b1e403d0990", + "0x9a755332d874c893111207b0b220ce2615cd036f", + "0xe4818f8fde0c977a01da4fa467365b8bf22b071e", + "0x32598293906b5b17c27d657db3ad2c9b3f3e4265", + "0xe93381fb4c4f14bda253907b18fad305d799241a", + "0xf66852bc122fd40bfecc63cd48217e88bda12109", + "0x30741289523c2e4d2a62c7d6722686d14e723851", + "0x90e9ddd9d8d5ae4e3763d0cf856c97594dea7325", + "0xb2a48f542dc56b89b24c04076cbe565b3dc58e7b", + "0xcac725bef4f114f728cbcfd744a731c2a463c3fc", + "0x6f48a3e70f0251d1e83a989e62aaa2281a6d5380", + "0xeb6d43fe241fb2320b5a3c9be9cdfd4dd8226451", + "0x1b93129f05cc2e840135aab154223c75097b69bf", + "0xd8a83b72377476d0a66683cde20a8aad0b628713", + "0x28ffe35688ffffd0659aee2e34778b0ae4e193ad", + "0xb4cd0386d2db86f30c1a11c2b8c4f4185c1dade9", + "0x956e0dbecc0e873d34a5e39b25f364b2ca036730", + "0x73f8fc2e74302eb2efda125a326655acf0dc2d1b", + "0x229b5c097f9b35009ca1321ad2034d4b3d5070f6", + "0xe3314bbf3334228b257779e28228cfb86fa4261b", + "0x1205e4f0d2f02262e667fd72f95a68913b4f7462", + "0x0511509a39377f1c6c78db4330fbfcc16d8a602f", + "0x0577a79cfc63bbc0df38833ff4c4a3bf2095b404", + "0xb6bc437708a398cda5627224bb8b88bcd1e88d8f", + "0xc837f51a0efa33f8eca03570e3d01a4b2cf97ffd", + "0x137ad9c4777e1d36e4b605e745e8f37b2b62e9c5", + "0x034f854b44d28e26386c1bc37ff9b20c6380b00d", + "0x0c6c34cdd915845376fb5407e0895196c9dd4eec", + "0x926fc576b7facf6ae2d08ee2d4734c134a743988", + "0x5861b8446a2f6e19a067874c133f04c578928727", + "0xdc76cd25977e0a5ae17155770273ad58648900d3", + "0x6f259637dcd74c767781e37bc6133cd6a68aa161", + "0xa66daa57432024023db65477ba87d4e7f5f95213", + "0xa8660c8ffd6d578f657b72c0c811284aef0b735e" + ] + }, + { + "code": "binance-us", + "name": "Binance.US", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/binance-us.png?style=36", + "addresses": [ + "0x34ea4138580435b5a521e460035edb19df1938c1", + "0xf60c2ea62edbfe808163751dd0d8693dcb30019c", + "0x61189da79177950a7272c88c6058b96d4bcd6be2" + ] + }, + { + "code": "bitflyer", + "name": "bitFlyer", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/bitflyer.png?style=36", + "addresses": [ + "0x111cff45948819988857bbf1966a0399e0d1141e" + ] + }, + { + "code": "korbit", + "name": "Korbit", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/korbit.png?style=36", + "addresses": [ + "0xd03be958e6b8da2d28ac8231a2291d6e4f0a7ea7", + "0xf0bc8fddb1f358cef470d63f96ae65b1d7914953", + "0xd6e0f7da4480b3ad7a2c8b31bc5a19325355ca15", + "0x8550e644d74536f1df38b17d5f69aa1bfe28ae86", + "0x0c01089aedc45ab0f43467cceca6b4d3e4170bea", + "0x2864de013415b6c2c7a96333183b20f0f9cc7532", + "0x59fba2e8595841dd2627703f4bb535c3b40a12e0", + "0x49e14f2d6839768bcc39ef0f60809f00eabbac69", + "0x51d9914cb7f0c7d03075280d8f57eb0be6ee457e", + "0x58e2201d8e1668597a37f4d6e701ff642dc2fa6d", + "0xe6ae903bf00691d5996faba0c2ee7e7422a48ffe", + "0x50cbe3772513706cee11548a13a1890f0a2996a0", + "0x954818ae7d93dd682bec7823ee3406e3b4133028", + "0xb7580490a51d3f48d451ba5f2dd79a835d266015", + "0x1167ed55a3a37f072d59217493117b07972aad7f", + "0x1e4b147d4da3fdb73acc8428ddea638088451cdc", + "0xe5d7ccc5fc3b3216c4dff3a59442f1d83038468c", + "0x42992d123b02d213f58ddb72572cf48607be6348" + ] + }, + { + "code": "luno", + "name": "Luno", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/luno.png?style=36", + "addresses": [ + "0x416299aade6443e6f6e8ab67126e65a7f606eef5" + ] + }, + { + "code": "coinbasepro", + "name": "Coinbase Pro", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/coinbasepro.png?style=36\u0026v=1628048947", + "addresses": [ + "0xa9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "0x71660c4005ba85c37ccec55d0c4493e66fe775d3", + "0xddfabcdc4d8ffc6d5beaf154f18b778f892a0740", + "0x3cd751e6b0078be393132286c442345e5dc49699", + "0x503828976d22510aad0201ac7ec88293211d23da", + "0xb5d85cbf7cb3ee0d56b3bb207d5fc4b82f43f511", + "0xeb2629a2734e272bcc07bda959863f316f4bd4cf", + "0xa090e606e30bd747d4e6245a1517ebe430f0057e", + "0xd688aea8f7d450909ade10c47faa95707b0682d9", + "0x02466e547bfdab679fc49e96bbfc62b9747d997c", + "0x6b76f8b1e9e59913bfe758821887311ba1805cab" + ] + }, + { + "code": "idex", + "name": "IDEX", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/idex.png?style=36\u0026v=1638840148", + "addresses": [ + "0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208", + "0x19cd9ce7e9bd7f56f69bcfb8ed63aeb46631a970" + ] + }, + { + "code": "bitget", + "name": "Bitget", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/bitget.png?style=36\u0026v=1676594834", + "addresses": [ + "0xe80623a9d41f2f05780d9cd9cea0f797fd53062a", + "0xe6a421f24d330967a3af2f4cdb5c34067e7e4d75", + "0x97b9d2102a9a65a26e1ee82d59e42d1b73b68689", + "0x5bdf85216ec1e38d6458c870992a69e38e03f7ef", + "0x0639556f03714a74a5feeaf5736a4a64ff70d206", + "0xe2b406ec9227143a8830229eeb3eb6e24b5c60be", + "0x31a36512d4903635b7dd6828a934c3915a5809be" + ] + }, + { + "code": "mexc", + "name": "MEXC Global", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/mexc.png?style=36\u0026v=1668751999", + "addresses": [ + "0x3cc936b795a188f0e246cbb2d74c5bd190aecf18", + "0x75e89d5979e4f6fba9f97c104c2f0afb3f1dcb88", + "0x0162cd2ba40e23378bf0fd41f919e1be075f025f", + "0x0211f3cedbef3143223d3acf0e589747933e8527", + "0xe70cde2c091569a09e7c1e335e20af302ab41339" + ] + }, + { + "code": "curve", + "name": "Curve", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/curve.png?style=36", + "addresses": [ + "0xc5424b857f758e906013f3555dad202e4bdb4567" + ] + }, + { + "code": "bitmex", + "name": "BitMEX", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/bitmex.png?style=36", + "addresses": [ + "0xeea81c4416d71cef071224611359f6f99a4c4294" + ] + }, + { + "code": "poloniex", + "name": "Poloniex", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/poloniex.png?style=36", + "addresses": [ + "0xa910f92acdaf488fa6ef02174fb86208ad7722ba", + "0x32be343b94f860124dc4fee278fdcbd38c102d88", + "0x6f803466bcd17f44fa18975bf7c509ba64bf3825", + "0x6b71834d65c5c4d8ed158d54b47e6ea4ff4e5437", + "0x8d451ae5ee8f557a9ce7a9d7be8a8cb40002d5cb", + "0xc0e30823e5e628df8bc9bf2636a347e1512f0ecb", + "0xfbf2173154f7625713be22e0504404ebfe021eae", + "0xead6be34ce315940264519f250d8160f369fa5cd", + "0xb794f5ea0ba39494ce839613fffba74279579268", + "0x48d466b7c0d32b61e8a82cd2bcf060f7c3f966df", + "0x65f9b2e4d7aaeb40ffea8c6f5844d5ad7da257e0", + "0xab11204cfeaccffa63c2d23aef2ea9accdb0a0d5", + "0x0536806df512d6cdde913cf95c9886f65b1d3462", + "0x31a2feb9b5d3b5f4e76c71d6c92fc46ebb3cb1c1", + "0x209c4784ab1e8183cf58ca33cb740efbf3fc18ef", + "0x2fa2bc2ce6a4f92952921a4caa46b3727d24a1ec", + "0x36b01066b7fa4a0fdb2968ea0256c848e9135674", + "0x6795cf8eb25585eadc356ae32ac6641016c550f2", + "0xaa9fa73dfe17ecaa2c89b39f0bb2779613c5fc3b", + "0xbd2ec7c608a06fe975dbdca729e84dedb34ecc21" + ] + }, + { + "code": "bit-z", + "name": "BitZ", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/bit-z.png?style=36", + "addresses": [ + "0xee8d8ababb63bcd41e70a30b187cbaaa4e5d7ec6", + "0xa24f25a8545ee2ab81b2a5cc8f047d3567fcde0f", + "0x3d5851c33b581a49998850a78d1865a1936dacb3", + "0x4b729cf402cfcffd057e254924b32241aedc1795" + ] + }, + { + "code": "yobit", + "name": "YoBit", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/yobit.png?style=36", + "addresses": [ + "0xf5bec430576ff1b82e44ddb5a1c93f6f9d0884f3", + "0xc4d300019f587145cfd9b42875073b3ad4bb0296" + ] + }, + { + "code": "coinswitch-kuber", + "name": "CoinSwitch", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/coinswitch-kuber.png?style=36\u0026v=1672997092", + "addresses": [ + "0x252d1375ca8f8a4ca59f1e7635f8fd7c4a78031e", + "0xceae7673553c90d0a3cd1a494da35ede63910cbf", + "0x3506a6ccc61d4d2046b79969020a5af79010b4a6", + "0x294b9b133ca7bc8ed2cdd03ba661a4c6d3a834d9", + "0x17a678c673fbb5b2f3294ef35e18c0ef8cc3e64f", + "0x250b05e1e0dd20a876e369a16441e714e3d9f436", + "0x4346910075e50a442931d698d41ebe6965a584b1", + "0x4cd3aa96836c133c9b9f27dafa7baf744d57404d", + "0x758e2c2d1a362e2b3e613545e48285b03581ef43", + "0x7d3f7a3842f18873c769a42f92f51f091954211c", + "0xc0eb873cd81d47d290ff7b6ad49280f6fd9cfb2b", + "0xe627b3e5591a713e3c23af6fc4eba2f313fdf489", + "0xe6b936b7640afa9242d1a714e50ee823e1be140f" + ] + }, + { + "code": "bitcoin-indonesia", + "name": "Indodax", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/bitcoin-indonesia.png?style=36", + "addresses": [ + "0x91dca37856240e5e1906222ec79278b16420dc92", + "0x3c02290922a3618a4646e3bbca65853ea45fe7c6", + "0x9cbadd5ce7e14742f70414a6dcbd4e7bb8712719" + ] + }, + { + "code": "phemex", + "name": "Phemex", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/phemex.png?style=36", + "addresses": [ + "0xf7d13c7dbec85ff86ee815f6dcbb3dedac78ca49" + ] + }, + { + "code": "bigone", + "name": "BigONE", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/bigone.png?style=36", + "addresses": [ + "0xd4dcd2459bb78d7a645aa7e196857d421b10d93f", + "0xa30d8157911ef23c46c0eb71889efe6a648a41f7", + "0x88e343f4599292c2cffe683c1bb93cd3480bdbab", + "0x17bc58b788808dab201a9a90817ff3c168bf3d61" + ] + }, + { + "code": "Bitmax", + "name": "AscendEX", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/bitmax.png?style=36", + "addresses": [ + "0x983873529f95132bd1812a3b52c98fb271d2f679", + "0xfb8131c260749c7835a08ccbdb64728de432858e", + "0x4b1a99467a284cc690e3237bc69105956816f762", + "0x03bdf69b1322d623836afbd27679a1c0afa067e9", + "0x986a2fca9eda0e06fbf7839b89bfc006ee2a23dd" + ] + }, + { + "code": "hitbtc", + "name": "HitBTC", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/hitbtc.png?style=36", + "addresses": [ + "0xef58321032cf693fa7e39f31e45cbc32f2092cb3", + "0x1c11ba15939e1c16ec7ca1678df6160ea2063bc5", + "0xed0245c53f69ebccdab3e39cf0013161a67bf296", + "0xa12431d0b9db640034b0cdfceef9cce161e62be4", + "0x9c67e141c0472115aa1b98bd0088418be68fd249", + "0x59a5208b32e627891c389ebafc644145224006e8", + "0xb77bd9fc4830a801d42bcd3ffdf2f8c079ecbe28", + "0x2d969d1a10833f207fdc74381979baa249146df3" + ] + }, + { + "code": "latoken", + "name": "LATOKEN", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/latoken.png?style=36", + "addresses": [ + "0x7891b20c690605f4e370d6944c8a5dbfac5a451c", + "0x0861fca546225fbf8806986d211c8398f7457734" + ] + }, + { + "code": "bitstamp", + "name": "Bitstamp", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/bitstamp.png?style=36", + "addresses": [ + "0x4c766def136f59f6494f0969b1355882080cf8e0", + "0x00bdb5699745f5b860228c8f939abf1b9ae374ed", + "0x1522900b6dafac587d499a862861c0869be6e428", + "0xc5b611f502a0dcf6c3188fd494061ae29b2baa4f", + "0x059799f2261d37b829c2850cee67b5b975432271", + "0x9a9bed3eb03e386d66f8a29dc67dc29bbb1ccb72" + ] + }, + { + "code": "coinlistpro", + "name": "Coinlist Pro", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/coinlistpro.png?style=36\u0026v=1624265836", + "addresses": [ + "0xd1669ac6044269b59fa12c5822439f609ca54f41", + "0x8d1f2ebfaccf1136db76fdd1b86f1dede2d23852" + ] + }, + { + "code": "shuzibi", + "name": "DigiFinex", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/shuzibi.png?style=36", + "addresses": [ + "0xb37640f5f7ef7b0fdcce2c0c053db4f976945647", + "0x6693c388255f519497f0ca2854c31b72e605569b", + "0xe17ee7b3c676701c66b395a35f0df4c2276a344e" + ] + }, + { + "code": "exmo", + "name": "Exmo", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/exmo.png?style=36", + "addresses": [ + "0x0db79bbb99defc2356d82848a459a5a13869eb3f", + "0xd7b9a9b2f665849c4071ad5af77d8c76aa30fb32", + "0x1fd6267f0d86f62d88172b998390afee2a1f54b6" + ] + }, + { + "code": "zb", + "name": "ZB", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/zb.png?style=36", + "addresses": [ + "0xfd6724b4b3e8eca764f0dd07ccd903ad348d70f8", + "0x6485fc77be2186fc60feea38d0ef4331d8404b60", + "0xf98e7af638b015d15e1820852bf24900f074b38b", + "0x60d0cc2ae15859f69bf74dadb8ae3bd58434976b" + ] + }, + { + "code": "hotbit", + "name": "Hotbit", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/hotbit.png?style=36", + "addresses": [ + "0x562680a4dc50ed2f14d75bf31f494cfe0b8d10a1", + "0x274f3c32c90517975e29dfc209a23f315c1e5fc7", + "0x8533a0bd9310eb63e7cc8e1116c18a3d67b1976a" + ] + }, + { + "code": "kuna", + "name": "Kuna", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/kuna.png?style=36", + "addresses": [ + "0xb357c9b4c9aff115f12af5dd6dab652d8f2ad561", + "0x77ab999d1e9f152156b4411e1f3e2a42dab8cd6d" + ] + }, + { + "code": "probit-exchange", + "name": "ProBit Global", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/probit-exchange.png?style=36", + "addresses": [ + "0xf71afe21cd32959113fc47ae2ef886b43a9413d5", + "0x72e5263ff33d2494692d7f94a758aa9f82062f73" + ] + }, + { + "code": "remitano", + "name": "Remitano", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/remitano.png?style=36\u0026v=1628736240", + "addresses": [ + "0x2819c144d5946404c0516b6f817a960db37d4929", + "0x0be1cef9d45f6621eb083f0a0e4b2261618938d8", + "0xd0b02a49b0768302f407cb28d813dae1761baefa" + ] + }, + { + "code": "whitebit", + "name": "WhiteBIT", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/whitebit.png?style=36\u0026v=1667871362", + "addresses": [ + "0x39f6a6c85d39d5abad8a398310c52e7c374f2ba3" + ] + }, + { + "code": "coinw", + "name": "Coinw", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/coinw.png?style=36", + "addresses": [ + "0xed4e1ad0f899ef3954d05bafc502f50c8e6a6baf", + "0xa20f10289248717374e9b7776dc368aa526cb6f2", + "0x94961bb15bafe2d73b899b9a3fc209b3fcf899d6", + "0xcb243bf48fb443082fae7db47ec96cb120cd6801", + "0x429bf8ec3330e02401d72beade86000d9a2e19eb", + "0x8705ccfd8a6df3785217c307cbebf9b793310b94", + "0x9f8646a35db0f466ac9322e2d194cc18f209fc75", + "0x6f31d347457962c9811ff953742870ef5a755de3", + "0xd115b7b6bea4819bfd1fe5397f5e7e01fa19d83d" + ] + }, + { + "code": "xt", + "name": "XT", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/xt.png?style=36", + "addresses": [ + "0x659ba341542ed9c25eca5fd7dae3659385956360", + "0xe74638bff8e7e332c08c239407fa68324acf8dee" + ] + }, + { + "code": "okcoin-intl", + "name": "Okcoin", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/okcoin-intl.png?style=36\u0026v=1623981085", + "addresses": [ + "0xd30b438df65f4f788563b2b3611bd6059bff4ad9" + ] + }, + { + "code": "wazirx", + "name": "WazirX", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/wazirx.png?style=36\u0026v=1630464169", + "addresses": [ + "0x618ffd1cdabee36ce5992a857cc7463f21272bd7" + ] + }, + { + "code": "wootrade", + "name": "WOO X", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/wootrade.png?style=36\u0026v=1678894355", + "addresses": [ + "0x63dfe4e34a3bfc00eb0220786238a7c6cef8ffc4", + "0xea319fd75766f5180018f8e760f51c3d3c457496", + "0x0d83f81bc9f1e8252f87a4109bbf0d90171c81df" + ] + }, + { + "code": "bitrue", + "name": "Bitrue", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/bitrue.png?style=36\u0026v=1637802321", + "addresses": [ + "0x6cc8dcbca746a6e4fdefb98e1d0df903b107fd21", + "0x878d587be19cd44c203ec5e90d9ca3724c4d2c3d" + ] + }, + { + "code": "binance-jex", + "name": "Binance JEX", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/binance-jex.png?style=36\u0026v=1624874753", + "addresses": [ + "0xab83d182f3485cf1d6ccdd34c7cfef95b4c08da4" + ] + }, + { + "code": "otcbtc", + "name": "OTCBTC", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/otcbtc.png?style=36", + "addresses": [ + "0xaeec6f5aca72f3a005af1b3420ab8c8c7009bac8", + "0x8f7dee5cde6965481f0119bac9d5b2b142bcc94f" + ] + }, + { + "code": "dextrade", + "name": "Dex-Trade", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/dextrade.png?style=36\u0026v=1624268482", + "addresses": [ + "0xd0a174b1ff551d63ed0823ae743bbe9bc204b0f0" + ] + }, + { + "code": "mercatox", + "name": "Mercatox", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/mercatox.png?style=36", + "addresses": [ + "0xe03c23519e18d64f144d2800e30e81b0065c48b5" + ] + }, + { + "code": "upbit", + "name": "Upbit", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/upbit.png?style=36", + "addresses": [ + "0x390de26d772d2e2005c6d1d24afc902bae37a4bb", + "0xba826fec90cefdf6706858e5fbafcb27a290fbe0", + "0x5e032243d507c743b061ef021e2ec7fcc6d3ab89", + "0x03747f06215b44e498831da019b27f53e483599f" + ] + }, + { + "code": "cex-io", + "name": "CEX.IO", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/cex-io.png?style=36", + "addresses": [ + "0xc9f5296eb3ac266c94568d790b6e91eba7d76a11" + ] + }, + { + "code": "bilaxy", + "name": "Bilaxy", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/bilaxy.png?style=36\u0026v=1626747663", + "addresses": [ + "0x9ba3560231e3e0ad7dde23106f5b98c72e30b468", + "0xf7793d27a1b76cdf14db7c83e82c772cf7c92910" + ] + }, + { + "code": "Bit2C", + "name": "Bit2C", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/bit2c.png?style=36", + "addresses": [ + "0x7c49e1c0e33f3efb57d64b7690fa287c8d15b90a" + ] + }, + { + "code": "bingx", + "name": "BingX", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/bingx.png?style=36\u0026v=1647943344", + "addresses": [ + "0x474ac5cb62d7acedc9990d4daafa0c39d9478fbb" + ] + }, + { + "code": "liquid", + "name": "Liquid", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/liquid.png?style=36", + "addresses": [ + "0xedbb72e6b3cf66a792bff7faac5ea769fe810517" + ] + }, + { + "code": "bitforex", + "name": "BitForex", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/bitforex.png?style=36\u0026v=1660631865", + "addresses": [ + "0xeec0ed9e41c209c1c53a35900a06bf5dca927405" + ] + }, + { + "code": "coinex", + "name": "CoinEx", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/coinex.png?style=36", + "addresses": [ + "0xb9ee1e551f538a464e8f8c41e9904498505b49b0", + "0x53eb3ea47643e87e8f25dd997a37b3b5260e7336" + ] + }, + { + "code": "jbexcom", + "name": "Jubi", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/jbexcom.png?style=36", + "addresses": [ + "0xad840a2b569188d49245fcd7bde71167d77df6c0" + ] + }, + { + "code": "8v-global", + "name": "8V Global Exchange", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/8v-global.png?style=36\u0026v=1651200248", + "addresses": [ + "0x09b1806df13062b5f653beda6998972cabcf7009" + ] + }, + { + "code": "coinexchange", + "name": "CoinExchange", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/coinexchange.png?style=36", + "addresses": [ + "0x4b01721f0244e7c5b5f63c20942850e447f5a5ee", + "0x226ce8219207e773c0768a699bf7982dbea754ad" + ] + }, + { + "code": "tokencan", + "name": "Tokencan", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/tokencan.png?style=36", + "addresses": [ + "0x475c4810c124873a58e1045428d1fa35634b6048" + ] + }, + { + "code": "btse", + "name": "BTSE", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/btse.png?style=36", + "addresses": [ + "0x1619d743d7dc612e99d5d94ebd6b9695d46f0bf3", + "0xde279a5cd86860cd3d039aa1b74bc29e74cabb12" + ] + }, + { + "code": "zgcom", + "name": "ZG.com", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/zgcom.png?style=36", + "addresses": [ + "0x8baed8fd7fc228781a95e7d6e57c3e430d2be6f9" + ] + }, + { + "code": "qbtc", + "name": "QBTC", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/qbtc.png?style=36", + "addresses": [ + "0xa5a3903fc3698c241b1385df4f80a5c665f47404" + ] + }, + { + "code": "paribu", + "name": "Paribu", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/paribu.png?style=36", + "addresses": [ + "0xbd8ef191caa1571e8ad4619ae894e07a75de0c35", + "0x2bb97b6cf6ffe53576032c11711d59bd056830ee" + ] + }, + { + "code": "ftx", + "name": "FTX", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/ftx.png?style=36", + "addresses": [ + "0xc098b2a3aa256d2140208c3de6543aaef5cd3a94", + "0xdc51356928bae9fd7f43ddb4a1c8e1fbdd340eb5", + "0xff3babb82a8065318a0548e4af19e0ed46dc28f9", + "0xa72ceb9964bac623d67cf4d07b99645145ba16e1", + "0xd45c041dc87aa2495793bec3964389c81a962dfa", + "0xb2ab43f76131fb299a8b04d3434eea6e14069cfa", + "0x91fde2e551560067a818bda6f4b63c89ee83500d", + "0x2faf487a4414fe77e2327f0bf4ae2a264a776ad2" + ] + }, + { + "code": "bibox", + "name": "Bibox", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/bibox.png?style=36", + "addresses": [ + "0xf73c3c65bde10bf26c2e1763104e609a41702efe" + ] + }, + { + "code": "bitmart", + "name": "BitMart", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/bitmart.png?style=36\u0026v=1675696548", + "addresses": [ + "0xe79eef9b9388a4ff70ed7ec5bccd5b928ebb8bd1", + "0x68b22215ff74e3606bd5e6c1de8c2d68180c85f7" + ] + }, + { + "code": "bkex", + "name": "BKEX", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/bkex.png?style=36\u0026v=1648085868", + "addresses": [ + "0xd9811e8b7c42418c71dabfe63b9cc17f8db1a6eb" + ] + }, + { + "code": "Cobinhood", + "name": "COBINHOOD", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/cobinhood.png?style=36", + "addresses": [ + "0xb726da4fbdc3e4dbda97bb20998cf899b0e727e0", + "0x8958618332df62af93053cb9c535e26462c959b0" + ] + }, + { + "code": "jingui", + "name": "JinGui", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/jingui.png?style=36", + "addresses": [ + "0xf65c33c383a6996ffec2d00aa93df3ce2bdb7851" + ] + }, + { + "code": "bgogo", + "name": "Bgogo", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/bgogo.png?style=36", + "addresses": [ + "0x7a10ec7d68a048bdae36a70e93532d31423170fa", + "0xce1bf8e51f8b39e51c6184e059786d1c0eaf360f" + ] + }, + { + "code": "citex", + "name": "CITEX", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/citex.png?style=36", + "addresses": [ + "0xe51a4316607772132f89b3483da698e4d682e191", + "0x9e2e3649563e60926a7b5968bc3537fb58faf78b", + "0x4d7291630651041358abe50532c1a20948559155", + "0x691c5e2751ec615d2b49cb569fdf787720b0fd31", + "0x7b897ab1e759028f14e1841ffc5449f11273e330" + ] + }, + { + "code": "crex24", + "name": "CREX24", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/crex24.png?style=36", + "addresses": [ + "0x521db06bf657ed1d6c98553a70319a8ddbac75a3" + ] + }, + { + "code": "idcm", + "name": "Klickl(IDCM)", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/idcm.png?style=36\u0026v=1652319488", + "addresses": [ + "0x2a1dcbdf3fc17c7263529aa7fb1f90e3d4624ed2", + "0x2b2b0cf3d1bc4a776c512e7f374991fd9ca3eb34", + "0xc5565200eb6a428451d53280b49c4488f74ac14d", + "0x8b2b3d18230661157d399226686d91b2fc340a30", + "0x0a8b4e06fa1a93211422d0f4f12747a832dbbd28", + "0xc86f08c4f6aec029ece7e56d1d302dfdcf2ec41d" + ] + }, + { + "code": "tidex", + "name": "Tidex", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/tidex.png?style=36\u0026v=1651653452", + "addresses": [ + "0x3613ef1125a078ef96ffc898c4ec28d73c5b8c52", + "0x0a73573cf2903d2d8305b1ecb9e9730186a312ae" + ] + }, + { + "code": "ztcom", + "name": "ZT", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/ztcom.png?style=36", + "addresses": [ + "0x5004a7aa3c430bc3e133ee29c28e391b16f8bf7d", + "0x444a5e0d2515f322e7278f6ee95cb34d8de98f09", + "0x7aa12eef14db55884ab2fe0d097e0064ef7a8eca", + "0x0179d232becf100cd1f0dd3e84a8afa9ca31aff3" + ] + }, + { + "code": "coinegg", + "name": "CoinEgg", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/coinegg.png?style=36", + "addresses": [ + "0x93f36930f94fbb5afc5fb506d3f7abb9179a4e4e" + ] + }, + { + "code": "bw", + "name": "BW", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/bw.png?style=36", + "addresses": [ + "0x73957709695e73fd175582105c44743cf0fb6f2f" + ] + }, + { + "code": "uex", + "name": "UEX", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/uex.png?style=36", + "addresses": [ + "0x2f1233ec3a4930fd95874291db7da9e90dfb2f03" + ] + }, + { + "code": "ggbtc", + "name": "GGBTC", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/ggbtc.png?style=36", + "addresses": [ + "0x9fb01a2584aac5aae3fab1ed25f86c5269b32999" + ] + }, + { + "code": "ulei", + "name": "ULEI", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/ulei.png?style=36", + "addresses": [ + "0xb27ac505bee7298b204b530b368b6191f4141c55", + "0x412d18072b7809ab25d8b4b0e0167128e122ec37" + ] + }, + { + "code": "wrnet", + "name": "XinBi Global", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/wrnet.png?style=36", + "addresses": [ + "0x499bc6b4b9e7da1fd8a775106a389f4c1d1d4b98", + "0x373fe5f4d8936590b4463df22be4ce3f82ced806", + "0xf8bc6604190a6279080e0fe24e15dc1d2927e10b" + ] + }, + { + "code": "dcoin", + "name": "Dcoin", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/dcoin.png?style=36", + "addresses": [ + "0x4003caeff9d6eb5af6927b0842c90f43f31d25d1" + ] + }, + { + "code": "ftx-us", + "name": "FTX US", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/ftx-us.png?style=36", + "addresses": [ + "0x7abe0ce388281d2acf297cb089caef3819b13448" + ] + }, + { + "code": "abcc", + "name": "ABCC", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/abcc.png?style=36", + "addresses": [ + "0x05f51aab068caa6ab7eeb672f88c180f67f17ec7" + ] + }, + { + "code": "aex", + "name": "AEX", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/aex.png?style=36", + "addresses": [ + "0x4564bfe303900178578769b2d76b1a13533e5fd5", + "0x6814b1fe0dbb34d006dc204a6b2ded962df1d684" + ] + }, + { + "code": "bithumbpro", + "name": "BitGlobal", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/bithumbpro.png?style=36\u0026v=1637803956", + "addresses": [ + "0xb4460b75254ce0563bb68ec219208344c7ea838c" + ] + }, + { + "code": "sushiswap", + "name": "SushiSwap", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/sushiswap.png?style=36", + "addresses": [ + "0x088ee5007c98a9677165d78dd2109ae4a3d04d0c" + ] + }, + { + "code": "uniswap", + "name": "Uniswap (V2)", + "symbol": "", + "logo": "https://s1.coincarp.com/logo/2/uniswap.png?style=36", + "addresses": [ + "0x2fdbadf3c4d5a8666bc06645b8358ab803996e28" + ] + } +] \ No newline at end of file diff --git a/exchanges/exchanges_test.go b/exchanges/exchanges_test.go new file mode 100644 index 000000000..d2f484750 --- /dev/null +++ b/exchanges/exchanges_test.go @@ -0,0 +1,43 @@ +package exchanges + +import ( + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/stretchr/testify/require" +) + +func TestNullAddress(t *testing.T) { + address := common.HexToAddress("0x0") + exchange := GetCentralizedExchangeWithAddress(address) + + require.Empty(t, exchange) +} + +func TestBinanceWithCode(t *testing.T) { + exchange, err := GetCentralizedExchangeWithCode("binance") + + require.NoError(t, err) + require.NotEmpty(t, exchange) + require.Equal(t, exchange.Name(), "Binance") +} + +func TestBinanceWithAddress(t *testing.T) { + // Address "Binance 3" + // https://etherscan.io/address/0x564286362092d8e7936f0549571a803b203aaced + address := common.HexToAddress("0x564286362092D8e7936f0549571a803B203aAceD") + exchange := GetCentralizedExchangeWithAddress(address) + + require.NotEmpty(t, exchange) + require.Equal(t, exchange.Name(), "Binance") +} + +func TestKrakenWithAddress(t *testing.T) { + // Address "Kraken 4" + // https://etherscan.io/address/0x267be1c1d684f78cb4f6a176c4911b741e4ffdc0 + address := common.HexToAddress("0x267be1C1D684F78cb4F6a176C4911b741E4Ffdc0") + exchange := GetCentralizedExchangeWithAddress(address) + + require.NotEmpty(t, exchange) + require.Equal(t, exchange.Name(), "Kraken") +} diff --git a/exchanges/go.mod b/exchanges/go.mod new file mode 100644 index 000000000..521513dc8 --- /dev/null +++ b/exchanges/go.mod @@ -0,0 +1,16 @@ +module github.com/status-im/status-go/exchanges + +go 1.20 + +require ( + github.com/ethereum/go-ethereum v1.10.26 + github.com/stretchr/testify v1.8.0 +) + +require ( + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + golang.org/x/crypto v0.1.0 // indirect + golang.org/x/sys v0.6.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/exchanges/go.sum b/exchanges/go.sum new file mode 100644 index 000000000..f733dcbf7 --- /dev/null +++ b/exchanges/go.sum @@ -0,0 +1,21 @@ +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/ethereum/go-ethereum v1.10.26 h1:i/7d9RBBwiXCEuyduBQzJw/mKmnvzsN14jqBmytw72s= +github.com/ethereum/go-ethereum v1.10.26/go.mod h1:EYFyF19u3ezGLD4RqOkLq+ZCXzYbLoNDdZlMt7kyKFg= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=