技術教程:Gate io基於zk-SANRK技術的儲備金證明

進階Dec 11, 2023
作爲最早實施儲備金證明的交易所,Gate.io再次利用zk-SANRK技術對儲備金證明技術進行升級,本文將帶你利用Gate.io開源的技術,在自己的設備驗證交易所資産和自身資産的安全性。
技術教程:Gate io基於zk-SANRK技術的儲備金證明

引言

擁有1,300萬用戶的Gate.io深知資金安全的重要性,併在行業中率先採取了有效措施。Gate.io是最早實施儲備金證明的交易所之一,在2020年5月就進行了儲備金證明的披露。而2022年交易所FTX挪用用戶資産導緻流動性危機破産後,儲備金證明才作爲保障用戶資金安全、提高平颱信任度的解決方案被大衆熟知。就在最近,Gate.io宣布再次升級儲備金證明方案:引入zk-SNARK技術與Merkle Tree(默剋爾樹)技術結合,爲用戶帶來更加卓越的資産安全保護和隱私保護。

本文將帶你走進Gate.io儲備金證明的開髮過程,逐步在自己的設備上重現交易所的儲備金證明搭建過程。

背景知識

Merkle Tree 是哈希值的二叉樹,其中每個葉節點代錶一條數據或一條數據的哈希。它用於有效地驗證大量數據的完整性。通過將用戶數據加密後生成默剋爾樹是過去常用的儲備金證明方案,但這種方案的劣勢是其不能檢驗出負值賬戶(正常賬戶價值應該大於或等於0)且無法完整地保護用戶隱私。

zk-SNARK 是密碼學中的一項強大技術,我們將把所有用戶的存款放入一顆 Merkle 樹中,併用 zk-SNARK 來證明樹中所有的餘額都是非負的,且總和爲某個聲稱的值。如果交易所鏈上公開的資産大於該值,則可以證明該交易所有 100% 償還能力。

將 zk-SNARK 與 Merkle Tree 結合使用,可以實現衕時驗證數據的完整性和一緻性,還可以保護交易的隱私。證明者可以使用 zk-SNARK 證明他們知道一個滿足特定條件的 Merkle 證明,而無需透露證明的具體內容。這對於數字貨幣交易所來説,既可以證明他們有足夠的資金來滿足所有的債務,又可以保護平颱用戶隱私。

程序結構

Plaintext
- circuit    #電路設計
- client    #command 命令
- config    #配置文件
- global    #全局變量
- service
        - keygen_service    #生成zk密鑰的服務
        - prover_service    #生成proof數據
        - tool_service    #常用的工具
        - userproff_service    #生成user_proof數據
        - verify_service    #驗證服務
        - witness_service    #生成witness相關數據
- utils    #常用的function集合

準備工作

安裝數據庫

  1. Mysql : 存儲proof, user_proof以及witness
    Plaintext
    docker run -d --name zk-mysql -p 3306:3306 -e MYSQL_USER=zkroot -e MYSQL_PASSWORD=zkpasswd -e MYSQL_DATABASE=zkpos  -e MYSQL_ROOT_PASSWORD=zkpasswd mysql
    
  2. Redis : 分布式鎖
    Plaintext
    docker run -d --name zk-redis -p 6379:6379 redis
    
  3. Kvrocks : 存儲user account tree
    Plaintext
    docker run -d --name zk-kvrocks -p 6666:6666 apache/kvrocks
    
  4. 如果 kvrocks 安裝後連接失敗:
    方案1:可以嘗試修改 docker 內 /var/lib/kvrocks/kvrocks.conf 文件,修改爲 bind 0.0.0.0 併重新啟動實例。
    方案2:使用源碼安裝服務。

安裝Go環境

編譯程序需要使用 Go語言環境,可以根據繫統版本自行安裝 Download Go

導出交易所用戶資産數據

導出的交易所用戶資産.csv數據結構如下:

Plaintext
- rn    #序列
- id    #交易所的用戶唯一標識
- e_xtoken   #用戶xtoken equity,如 e_BTC
- d_xtoken   #用戶xtoken debt,如 d_BTC
- x_token     #用戶資産凈值,x_token  =  e_xtoken - d_xtoken
- xtoken_usdt_price   #xtoken的價格
- total_net_balance_usdt    #用戶所有的token usdt價值

具體可參考 ./example_data/example_users.csv

推薦繫統配置

正式環境建議不低於以下配置:

  • 128GB 內存
  • 32 核虛擬機
  • 50 GB 磁盤空間

配置文件

在正式環境生成zk密鑰時,Batch 變量推薦設置爲 864 ,錶示一批可以創建多少個用戶。數值越大,生成與 zk 密鑰和證明所需的時間就越長。當設置爲 864時,在 128GB 內存、32 核虛擬機中,生成 zk 相關密鑰大約需要 6 小時,生成一批 zk 證明需要 105 秒。

所以在調試階段,可以修改 utils/constants.go 中的 BatchCreateUserOpsCounts 修改爲 4,然後再進行重新編譯。但是在實際生産中還是建議這個參數爲 864

如果修改要修改 Batch,則需要變動的配置文件:

  • 修改 ./config/config.json
    "ZkKeyName": "./zkpor864" => "ZkKeyName": "./zkpor4"
  • 修改 ./config/cex_config.json
    "ZkKeyVKDirectoryAndPrefix": "./zkpor864" => "ZkKeyVKDirectoryAndPrefix": "./zkpor4"
  • 修改 ./utils/constants.go
    BatchCreateUserOpsCounts = 864 => BatchCreateUserOpsCounts = 4

幣種設置

  • 修改 ./utils/constants.go

幣種數量

AssetCounts = 350 => AssetCounts = 所需大小

AssetCounts 錶示交易所包含的 token 種類,實際數量不可低於設置的值。比如實際有420個,可修改爲500。考慮到內存占用,建議根據情況設置合理的值。

價格精度

AssetTypeForTwoDigits 字段含義爲 10^2 價格精度,如 BTTC、SHIB、LUNC、XEC、WIN、BIDR、SPELL、HOT、 DOGE。其餘的默認價格精度爲 10^8。

設置 witness 相關配置

witness 用於爲 prover 和 userproof 生成見證,config.json 配置如下 :

Plaintext
{
  "MysqlDataSource" : "zkroot:zkpasswd@tcp(127.0.0.1:3306)/zkpos?parseTime=true",  
  "DbSuffix": "202307",
  "UserDataFile": "./example_data/",
  "TreeDB": {
    "Driver": "redis",
    "Option": {
      "Addr": "127.0.0.1:6666"
    }
  },
  "Redis": {
    "Host": "127.0.0.1:6379",
    "Type": "node"
  },
  "ZkKeyName": "./zkpor864"
}
  • MysqlDataSource : Mysql數據庫鏈接
  • DbSuffix : Mysql生成的錶後綴, 比如填寫時間202307,就會生成witness202307,每次生成時必鬚修改
  • UserDataFile : 交易所導出的用戶資産文件目録,程序將讀取這個目録下所有的csv文件
  • TreeDB : kvrocks相關的配置
  • Redis : redis相關配置
  • ZkKeyName : zk密鑰所在目録以及前綴,如 zkpor864 則匹配所有文件名前綴爲 zkpor864.* 相關的文件
    DbSuffix字段是錶的後綴,每次都必鬚更改,如果是每個月生成一次,也可以按照時間202306,202307設置。

運行程序

將項目下載至本地,併開始編譯程序。

編譯程序

Plaintext
make build

如果你是在 Mac 電腦下需要編譯其他平颱二進製程序可以執行下麵命令:

  • 在 mac 編譯 linux: make build-linux.
  • 在 mac 編譯 windows: make build-windows

生成密鑰

Plaintext
./main keygen

keygen服務運行完成後,會在當前目録下生成幾個密鑰文件,如下:

zkpor864.ccs.ct.save \
zkpor864.ccs.save \
zkpor864.pk.A.save \
zkpor864.pk.B1.save \
zkpor864.pk.B2.save \
zkpor864.pk.E.save \
zkpor864.pk.K.save \
zkpor864.vk.save \
zkpor864.pk.Z.save

如果 Batch 設置爲 4 時,爲 zkpor4.*.save

該步驟運行時間較長,在設置爲 4 時,大緻運行數分鐘;設置爲 864 時,可達數個小時。

註意:

  • ./main keygen 命令生成的密鑰,可長久使用。如下個月需再生成資産驗證數據時,該zk密鑰依然可用。
  • 後續用戶驗證環節需要使用 zkpor864.vk.save文件,因此建議這批zk密鑰做備份妥善保存。

清空歷史 kvrocks 數據

如果之前運行過程序,在執行之前,需要先清理一下之前存在 kvrocks 裡麵的 account merkle key 數據,因爲每次都需要生成不衕的 account tree。

Plaintext
./main tool clean_kvrocks

註意:這個命令是清楚kvrocks裡麵所有數據,所以不要和其他程序共用一個kvrocks,待之前的數據清理完成之後再開始生成 proof。

啟動 witness 服務

Plaintext
./main witness

_運行完成後,會在 Mysql 數據庫生成 witness+後綴的錶(根據config.json中的DbSuffix),錶裡麵是按照批次 witness proof 數據,錶中數據將在後續的生成 zk proof 和 user proof 中髮揮作用

生成 zk proof

Prover 服務用於生成zk證明,支持併行運行。它從 mysql 內的 witness table 中讀取 witness。

運行以下命令生成 zk proof 數據:

Plaintext
./main prover

_該命令支持併線運行,需要將 main 文件與 zkpor864 等相關文件拷貝到其他機器,併確保config.json 文件配置相衕,這樣可以通過 redis 作爲分布式鎖衕時運行。

可以運行以下命令查詢查詢執行狀態:

Plaintext
./main tool check_prover_status

結束執行則返回。

Plaintext
Total witness item 50, Published item 0, Pending item 0, Finished item 50

確保所有的 witness item 都是 finished 狀態,就説明 prover 執行完畢。

_在執行完prover服務之後,Mysql數據庫裡麵會多一張 proof+後綴的錶(根據config.json中的DbSuffix),錶中的數據是需要公開給用戶,方便用戶後麵去驗證交易所資産,下麵在 verify 環節會具體説明

生成user proof

userproof 服務用於生成和持久化用戶merkle證明。

運行以下命令生成 user proof 數據:

Plaintext
./main userproof

性能:在 128GB 內存和 32 核虛擬機中每秒生成約 10k 個用戶的證明

_在運行完 userproof 命令後,會在 mysql 數據庫生成一張 userproof+後綴(根據config.json中的DbSuffix)的錶,這個錶裡麵的數據包含了用戶的資産信息,可以按需做權限配置。該錶需要開放給指定的用戶下載,用於做自身賬號資産證明,具體在下麵的 verify 環節會具體説明

提供驗證數據

這裡我們需要給用戶提供兩種驗證:

  • 驗證交易所的資産
  • 驗證用戶自己的資産
    我們需要提前編譯好不衕環節的二進製執行文件(mac ubuntu windows)提供給用戶下載,可參考 Release 附件。

驗證交易所資産所需數據與格式

驗證交易所資産除了提供給用戶二進製文件之外,還需要提供以下三個配置數據:

  1. 下載proof.csv
    我們提前把之前生成的proof錶導出成csv文件(需要包含錶頭),如 proof202307.csv 提供給用戶下載。

  2. zkpor864.vk.save
    我們需要提供給用戶之前生成的zk864的verify key文件。

  3. 交易所的資産
    上述 Proof 文件生成後,可以用下麵的命令查詢出根據交易所提供的用戶資産錶的彙總:

Plaintext
 ./main tool query_cex_assets
  1. 會得到如下返回:
Plaintext
 [{"TotalEquity":10049232946,"TotalDebt":0,"BasePrice":3960000000,"Symbol":"1inch","Index":0},{"TotalEquity":421836,"TotalDebt":0,"BasePrice":564000000000,"Symbol":"aave","Index":1},{"TotalEquity":0,"TotalDebt":0,"BasePrice":79800000,"Symbol":"ach","Index":2},{"TotalEquity":3040000,"TotalDebt":0,"BasePrice":25460000000,"Symbol":"acm","Index":3},{"TotalEquity":17700050162640,"TotalDebt":0,"BasePrice":2784000000,"Symbol":"ada","Index":4},{"TotalEquity":485400000,"TotalDebt":0,"BasePrice":1182000000,"Symbol":"adx","Index":5},{"TotalEquity":0,"TotalDebt":0,"BasePrice":907000000,"Symbol":"aergo","Index":6},{"TotalEquity":0,"TotalDebt":0,"BasePrice":2720000000,"Symbol":"agld","Index":7},{"TotalEquity":1969000000,"TotalDebt":0,"BasePrice":30500000,"Symbol":"akro","Index":8},{"TotalEquity":0,"TotalDebt":0,"BasePrice":141000000000,"Symbol":"alcx","Index":9},{"TotalEquity":15483340912,"TotalDebt":0,"BasePrice":1890000000,"Symbol":"algo","Index":10},{"TotalEquity":3187400,"TotalDebt":0,"BasePrice":11350000000,"Symbol":"alice","Index":11},{"TotalEquity":1760000,"TotalDebt":0,"BasePrice":2496000000,"Symbol":"alpaca","Index":12},{"TotalEquity":84596857600,"TotalDebt":0,"BasePrice":785000000,"Symbol":"alpha","Index":13},{"TotalEquity":3672090936,"TotalDebt":0,"BasePrice":20849000000,"Symbol":"alpine","Index":14},{"TotalEquity":198200000,"TotalDebt":0,"BasePrice":132600000,"Symbol":"amb","Index":15},{"TotalEquity":53800000,"TotalDebt":0,"BasePrice":32200000,"Symbol":"amp","Index":16},{"TotalEquity":3291606210,"TotalDebt":0,"BasePrice":340300000,"Symbol":"anc","Index":17},{"TotalEquity":192954000,"TotalDebt":0,"BasePrice":166000000,"Symbol":"ankr","Index":18},{"TotalEquity":2160000,"TotalDebt":0,"BasePrice":20940000000,"Symbol":"ant","Index":19},{"TotalEquity":5995002000,"TotalDebt":0,"BasePrice":40370000000,"Symbol":"ape","Index":20},{"TotalEquity":0,"TotalDebt":0,"BasePrice":11110000000,"Symbol":"api3","Index":21},{"TotalEquity":53728000,"TotalDebt":0,"BasePrice":38560000000,"Symbol":"apt","Index":22},{"TotalEquity":0,"TotalDebt":0,"BasePrice":68500000000,"Symbol":"ar","Index":23},{"TotalEquity":55400000,"TotalDebt":0,"BasePrice":667648400,"Symbol":"ardr","Index":24},{"TotalEquity":8320000,"TotalDebt":0,"BasePrice":266200000,"Symbol":"arpa","Index":25},{"TotalEquity":18820000,"TotalDebt":0,"BasePrice":401000000,"Symbol":"astr","Index":26},{"TotalEquity":13205405410,"TotalDebt":0,"BasePrice":934000000,"Symbol":"ata","Index":27},{"TotalEquity":7016230960,"TotalDebt":0,"BasePrice":102450000000,"Symbol":"atom","Index":28},{"TotalEquity":2619441828,"TotalDebt":0,"BasePrice":40900000000,"Symbol":"auction","Index":29},{"TotalEquity":9640198,"TotalDebt":0,"BasePrice":1432000000,"Symbol":"audio","Index":30},{"TotalEquity":0,"TotalDebt":0,"BasePrice":2306000000000,"Symbol":"auto","Index":31},{"TotalEquity":886400,"TotalDebt":0,"BasePrice":5390000000,"Symbol":"ava","Index":32},{"TotalEquity":2883562350,"TotalDebt":0,"BasePrice":117800000000,"Symbol":"avax","Index":33},{"TotalEquity":1864300912,"TotalDebt":0,"BasePrice":68200000000,"Symbol":"axs","Index":34},{"TotalEquity":843870,"TotalDebt":0,"BasePrice":23700000000,"Symbol":"badger","Index":35},{"TotalEquity":114869291528,"TotalDebt":0,"BasePrice":1379000000,"Symbol":"bake","Index":36},{"TotalEquity":95400,"TotalDebt":0,"BasePrice":54110000000,"Symbol":"bal","Index":37},{"TotalEquity":123113880,"TotalDebt":0,"BasePrice":14610000000,"Symbol":"band","Index":38},{"TotalEquity":0,"TotalDebt":0,"BasePrice":37100000000,"Symbol":"bar","Index":39},{"TotalEquity":73090049578,"TotalDebt":0,"BasePrice":1774000000,"Symbol":"bat","Index":40},{"TotalEquity":28891300,"TotalDebt":0,"BasePrice":1017000000000,"Symbol":"bch","Index":41},{"TotalEquity":19889623294,"TotalDebt":0,"BasePrice":4130000000,"Symbol":"bel","Index":42},{"TotalEquity":374840602180,"TotalDebt":0,"BasePrice":699700000,"Symbol":"beta","Index":43},{"TotalEquity":270294580,"TotalDebt":0,"BasePrice":12290900000000,"Symbol":"beth","Index":44},{"TotalEquity":35692901600,"TotalDebt":0,"BasePrice":2730000000,"Symbol":"bico","Index":45},{"TotalEquity":0,"TotalDebt":0,"BasePrice":639000,"Symbol":"bidr","Index":46},{"TotalEquity":240200000,"TotalDebt":0,"BasePrice":538000000,"Symbol":"blz","Index":47},{"TotalEquity":83614634622,"TotalDebt":0,"BasePrice":2599000000000,"Symbol":"bnb","Index":48},{"TotalEquity":0,"TotalDebt":0,"BasePrice":3490000000,"Symbol":"bnt","Index":49},{"TotalEquity":1560,"TotalDebt":0,"BasePrice":592000000000,"Symbol":"bnx","Index":50},{"TotalEquity":2076000,"TotalDebt":0,"BasePrice":32630000000,"Symbol":"bond","Index":51},{"TotalEquity":44699589660,"TotalDebt":0,"BasePrice":1768000000,"Symbol":"bsw","Index":52},{"TotalEquity":291716078,"TotalDebt":0,"BasePrice":169453900000000,"Symbol":"btc","Index":53},{"TotalEquity":15500321300000000,"TotalDebt":0,"BasePrice":6300,"Symbol":"bttc","Index":54},{"TotalEquity":70771546756,"TotalDebt":0,"BasePrice":5240000000,"Symbol":"burger","Index":55},{"TotalEquity":12058907297354,"TotalDebt":1476223055432,"BasePrice":10000000000,"Symbol":"busd","Index":56},{"TotalEquity":34716440000,"TotalDebt":0,"BasePrice":1647000000,"Symbol":"c98","Index":57},{"TotalEquity":1541723702,"TotalDebt":0,"BasePrice":33140000000,"Symbol":"cake","Index":58},{"TotalEquity":2112000,"TotalDebt":0,"BasePrice":5200000000,"Symbol":"celo","Index":59},{"TotalEquity":317091540000,"TotalDebt":0,"BasePrice":101000000,"Symbol":"celr","Index":60},{"TotalEquity":137111365560,"TotalDebt":0,"BasePrice":228000000,"Symbol":"cfx","Index":61},{"TotalEquity":0,"TotalDebt":0,"BasePrice":1820000000,"Symbol":"chess","Index":62},{"TotalEquity":258540000,"TotalDebt":0,"BasePrice":1140000000,"Symbol":"chr","Index":63},{"TotalEquity":289172288882,"TotalDebt":0,"BasePrice":1099000000,"Symbol":"chz","Index":64},{"TotalEquity":0,"TotalDebt":0,"BasePrice":25100000,"Symbol":"ckb","Index":65},{"TotalEquity":1851135024806,"TotalDebt":0,"BasePrice":535500000,"Symbol":"clv","Index":66},{"TotalEquity":155010000,"TotalDebt":0,"BasePrice":5202000000,"Symbol":"cocos","Index":67},{"TotalEquity":52093390,"TotalDebt":0,"BasePrice":335800000000,"Symbol":"comp","Index":68},{"TotalEquity":13991592000,"TotalDebt":0,"BasePrice":44500000,"Symbol":"cos","Index":69},{"TotalEquity":51240788068,"TotalDebt":0,"BasePrice":557000000,"Symbol":"coti","Index":70},{"TotalEquity":0,"TotalDebt":0,"BasePrice":107900000000,"Symbol":"cream","Index":71},{"TotalEquity":15940224,"TotalDebt":0,"BasePrice":5470000000,"Symbol":"crv","Index":72},{"TotalEquity":2336000,"TotalDebt":0,"BasePrice":7450000000,"Symbol":"ctk","Index":73},{"TotalEquity":88860000,"TotalDebt":0,"BasePrice":1059000000,"Symbol":"ctsi","Index":74},{"TotalEquity":440400000,"TotalDebt":0,"BasePrice":1763000000,"Symbol":"ctxc","Index":75},{"TotalEquity":0,"TotalDebt":0,"BasePrice":3375000000,"Symbol":"cvp","Index":76},{"TotalEquity":176202,"TotalDebt":0,"BasePrice":30810000000,"Symbol":"cvx","Index":77},{"TotalEquity":0,"TotalDebt":0,"BasePrice":9999000100,"Symbol":"dai","Index":78},{"TotalEquity":90702266836,"TotalDebt":0,"BasePrice":1293500000,"Symbol":"dar","Index":79},{"TotalEquity":29386961406,"TotalDebt":0,"BasePrice":458300000000,"Symbol":"dash","Index":80},{"TotalEquity":1628888000,"TotalDebt":0,"BasePrice":235500000,"Symbol":"data","Index":81},{"TotalEquity":0,"TotalDebt":0,"BasePrice":186229836100,"Symbol":"dcr","Index":82},{"TotalEquity":0,"TotalDebt":0,"BasePrice":15920000000,"Symbol":"dego","Index":83},{"TotalEquity":26105549312822,"TotalDebt":0,"BasePrice":6830000,"Symbol":"dent","Index":84},{"TotalEquity":670658000,"TotalDebt":0,"BasePrice":24000000000,"Symbol":"dexe","Index":85},{"TotalEquity":517372774000,"TotalDebt":0,"BasePrice":82200000,"Symbol":"dgb","Index":86},{"TotalEquity":1120000,"TotalDebt":0,"BasePrice":2970000000,"Symbol":"dia","Index":87},{"TotalEquity":0,"TotalDebt":0,"BasePrice":151800000,"Symbol":"dock","Index":88},{"TotalEquity":19453393384,"TotalDebt":0,"BasePrice":987000000,"Symbol":"dodo","Index":89},{"TotalEquity":25526548451614,"TotalDebt":0,"BasePrice":723900000,"Symbol":"doge","Index":90},{"TotalEquity":466049240950,"TotalDebt":0,"BasePrice":46820000000,"Symbol":"dot","Index":91},{"TotalEquity":69200000,"TotalDebt":0,"BasePrice":3138000000,"Symbol":"drep","Index":92},{"TotalEquity":0,"TotalDebt":0,"BasePrice":870000000,"Symbol":"dusk","Index":93},{"TotalEquity":45675816000,"TotalDebt":0,"BasePrice":12120000000,"Symbol":"dydx","Index":94},{"TotalEquity":241920370,"TotalDebt":0,"BasePrice":343400000000,"Symbol":"egld","Index":95},{"TotalEquity":3640000,"TotalDebt":0,"BasePrice":1691000000,"Symbol":"elf","Index":96},{"TotalEquity":200008070,"TotalDebt":0,"BasePrice":2556000000,"Symbol":"enj","Index":97},{"TotalEquity":836000,"TotalDebt":0,"BasePrice":115500000000,"Symbol":"ens","Index":98},{"TotalEquity":23489390223668,"TotalDebt":0,"BasePrice":8960000000,"Symbol":"eos","Index":99},{"TotalEquity":83358943947200,"TotalDebt":0,"BasePrice":2960000,"Symbol":"epx","Index":100},{"TotalEquity":1539180000,"TotalDebt":0,"BasePrice":17540000000,"Symbol":"ern","Index":101},{"TotalEquity":48056621250,"TotalDebt":0,"BasePrice":204100000000,"Symbol":"etc","Index":102},{"TotalEquity":28478224392,"TotalDebt":0,"BasePrice":12688000000000,"Symbol":"eth","Index":103},{"TotalEquity":21790805772,"TotalDebt":0,"BasePrice":10641000000,"Symbol":"eur","Index":104},{"TotalEquity":196200,"TotalDebt":0,"BasePrice":307000000000,"Symbol":"farm","Index":105},{"TotalEquity":31040000,"TotalDebt":0,"BasePrice":1240000000,"Symbol":"fet","Index":106},{"TotalEquity":26460000,"TotalDebt":0,"BasePrice":3354000000,"Symbol":"fida","Index":107},{"TotalEquity":5539231876,"TotalDebt":0,"BasePrice":33380000000,"Symbol":"fil","Index":108},{"TotalEquity":152000000,"TotalDebt":0,"BasePrice":275000000,"Symbol":"fio","Index":109},{"TotalEquity":1014252612,"TotalDebt":0,"BasePrice":16540000000,"Symbol":"firo","Index":110},{"TotalEquity":0,"TotalDebt":0,"BasePrice":3313000000,"Symbol":"fis","Index":111},{"TotalEquity":0,"TotalDebt":0,"BasePrice":765931600,"Symbol":"flm","Index":112},{"TotalEquity":3688000,"TotalDebt":0,"BasePrice":6990000000,"Symbol":"flow","Index":113},{"TotalEquity":0,"TotalDebt":0,"BasePrice":5090000000,"Symbol":"flux","Index":114},{"TotalEquity":0,"TotalDebt":0,"BasePrice":162500000,"Symbol":"for","Index":115},{"TotalEquity":80000,"TotalDebt":0,"BasePrice":29400000000,"Symbol":"forth","Index":116},{"TotalEquity":14430200000,"TotalDebt":0,"BasePrice":1808000000,"Symbol":"front","Index":117},{"TotalEquity":26629480000,"TotalDebt":0,"BasePrice":2211000000,"Symbol":"ftm","Index":118},{"TotalEquity":16207428000,"TotalDebt":0,"BasePrice":9125000000,"Symbol":"ftt","Index":119},{"TotalEquity":679597613272,"TotalDebt":0,"BasePrice":61663700,"Symbol":"fun","Index":120},{"TotalEquity":0,"TotalDebt":0,"BasePrice":51410000000,"Symbol":"fxs","Index":121},{"TotalEquity":4110633550,"TotalDebt":0,"BasePrice":11540000000,"Symbol":"gal","Index":122},{"TotalEquity":2551466375170,"TotalDebt":0,"BasePrice":234700000,"Symbol":"gala","Index":123},{"TotalEquity":1252940134,"TotalDebt":0,"BasePrice":20260000000,"Symbol":"gas","Index":124},{"TotalEquity":0,"TotalDebt":0,"BasePrice":1850000000,"Symbol":"glm","Index":125},{"TotalEquity":25058958996,"TotalDebt":0,"BasePrice":3195000000,"Symbol":"glmr","Index":126},{"TotalEquity":443980786672,"TotalDebt":0,"BasePrice":2588000000,"Symbol":"gmt","Index":127},{"TotalEquity":160000,"TotalDebt":0,"BasePrice":417300000000,"Symbol":"gmx","Index":128},{"TotalEquity":178800,"TotalDebt":0,"BasePrice":878736379100,"Symbol":"gno","Index":129},{"TotalEquity":6828000,"TotalDebt":0,"BasePrice":620000000,"Symbol":"grt","Index":130},{"TotalEquity":20784000,"TotalDebt":0,"BasePrice":13340000000,"Symbol":"gtc","Index":131},{"TotalEquity":94280000,"TotalDebt":0,"BasePrice":1494000000,"Symbol":"hard","Index":132},{"TotalEquity":336206273140,"TotalDebt":0,"BasePrice":391000000,"Symbol":"hbar","Index":133},{"TotalEquity":1791317190,"TotalDebt":0,"BasePrice":8870000000,"Symbol":"high","Index":134},{"TotalEquity":6485637600,"TotalDebt":0,"BasePrice":2700000000,"Symbol":"hive","Index":135},{"TotalEquity":1956144,"TotalDebt":0,"BasePrice":18400000000,"Symbol":"hnt","Index":136},{"TotalEquity":9587039140000,"TotalDebt":0,"BasePrice":14820000,"Symbol":"hot","Index":137},{"TotalEquity":223895102366,"TotalDebt":0,"BasePrice":38980000000,"Symbol":"icp","Index":138},{"TotalEquity":52168047570,"TotalDebt":0,"BasePrice":1516000000,"Symbol":"icx","Index":139},{"TotalEquity":15480000,"TotalDebt":0,"BasePrice":388000000,"Symbol":"idex","Index":140},{"TotalEquity":8400000,"TotalDebt":0,"BasePrice":388700000000,"Symbol":"ilv","Index":141},{"TotalEquity":12686368000,"TotalDebt":0,"BasePrice":4230000000,"Symbol":"imx","Index":142},{"TotalEquity":139990936000,"TotalDebt":0,"BasePrice":13680000000,"Symbol":"inj","Index":143},{"TotalEquity":69430091021436,"TotalDebt":0,"BasePrice":72500000,"Symbol":"iost","Index":144},{"TotalEquity":71259628200,"TotalDebt":0,"BasePrice":1823000000,"Symbol":"iota","Index":145},{"TotalEquity":428000000,"TotalDebt":0,"BasePrice":221500000,"Symbol":"iotx","Index":146},{"TotalEquity":858126200,"TotalDebt":0,"BasePrice":43200000,"Symbol":"iq","Index":147},{"TotalEquity":8680000,"TotalDebt":0,"BasePrice":132174000,"Symbol":"iris","Index":148},{"TotalEquity":1889177748140,"TotalDebt":0,"BasePrice":37600000,"Symbol":"jasmy","Index":149},{"TotalEquity":2000,"TotalDebt":0,"BasePrice":1416000000,"Symbol":"joe","Index":150},{"TotalEquity":927921956,"TotalDebt":0,"BasePrice":201400000,"Symbol":"jst","Index":151},{"TotalEquity":560000,"TotalDebt":0,"BasePrice":6590000000,"Symbol":"kava","Index":152},{"TotalEquity":30527442000,"TotalDebt":0,"BasePrice":9480000000,"Symbol":"kda","Index":153},{"TotalEquity":7587760000,"TotalDebt":0,"BasePrice":29350000,"Symbol":"key","Index":154},{"TotalEquity":372181704,"TotalDebt":0,"BasePrice":1613000000,"Symbol":"klay","Index":155},{"TotalEquity":81600000,"TotalDebt":0,"BasePrice":1904661800,"Symbol":"kmd","Index":156},{"TotalEquity":493317080,"TotalDebt":0,"BasePrice":4940000000,"Symbol":"knc","Index":157},{"TotalEquity":1700000,"TotalDebt":0,"BasePrice":621600000000,"Symbol":"kp3r","Index":158},{"TotalEquity":27180,"TotalDebt":0,"BasePrice":250100000000,"Symbol":"ksm","Index":159},{"TotalEquity":1656679204,"TotalDebt":0,"BasePrice":30978000000,"Symbol":"lazio","Index":160},{"TotalEquity":295510852208,"TotalDebt":0,"BasePrice":15200000000,"Symbol":"ldo","Index":161},{"TotalEquity":1158728143570,"TotalDebt":0,"BasePrice":17230000,"Symbol":"lever","Index":162},{"TotalEquity":6505365672842,"TotalDebt":0,"BasePrice":52690000,"Symbol":"lina","Index":163},{"TotalEquity":8162369516,"TotalDebt":0,"BasePrice":57120000000,"Symbol":"link","Index":164},{"TotalEquity":95484000,"TotalDebt":0,"BasePrice":7220000000,"Symbol":"lit","Index":165},{"TotalEquity":12682220,"TotalDebt":0,"BasePrice":3632000000,"Symbol":"loka","Index":166},{"TotalEquity":0,"TotalDebt":0,"BasePrice":409400000,"Symbol":"loom","Index":167},{"TotalEquity":0,"TotalDebt":0,"BasePrice":44400000000,"Symbol":"lpt","Index":168},{"TotalEquity":10715077402,"TotalDebt":0,"BasePrice":2063000000,"Symbol":"lrc","Index":169},{"TotalEquity":8050236298,"TotalDebt":0,"BasePrice":7240000000,"Symbol":"lsk","Index":170},{"TotalEquity":1122426768,"TotalDebt":0,"BasePrice":758900000000,"Symbol":"ltc","Index":171},{"TotalEquity":22654000,"TotalDebt":0,"BasePrice":710000000,"Symbol":"lto","Index":172},{"TotalEquity":16580624988,"TotalDebt":0,"BasePrice":13251000000,"Symbol":"luna","Index":173},{"TotalEquity":1705595428000000,"TotalDebt":0,"BasePrice":1560500,"Symbol":"lunc","Index":174},{"TotalEquity":0,"TotalDebt":0,"BasePrice":4759000000,"Symbol":"magic","Index":175},{"TotalEquity":77632636722,"TotalDebt":0,"BasePrice":3278000000,"Symbol":"mana","Index":176},{"TotalEquity":1990776000,"TotalDebt":0,"BasePrice":23850000000,"Symbol":"mask","Index":177},{"TotalEquity":1076925578756,"TotalDebt":0,"BasePrice":7989000000,"Symbol":"matic","Index":178},{"TotalEquity":2785908800000,"TotalDebt":0,"BasePrice":23690000,"Symbol":"mbl","Index":179},{"TotalEquity":934922304,"TotalDebt":0,"BasePrice":3850000000,"Symbol":"mbox","Index":180},{"TotalEquity":13377446308,"TotalDebt":0,"BasePrice":2670000000,"Symbol":"mc","Index":181},{"TotalEquity":258144000,"TotalDebt":0,"BasePrice":201100000,"Symbol":"mdt","Index":182},{"TotalEquity":3081330908,"TotalDebt":0,"BasePrice":716000000,"Symbol":"mdx","Index":183},{"TotalEquity":32512116000,"TotalDebt":0,"BasePrice":4500000000,"Symbol":"mina","Index":184},{"TotalEquity":12110,"TotalDebt":0,"BasePrice":5400000000000,"Symbol":"mkr","Index":185},{"TotalEquity":0,"TotalDebt":0,"BasePrice":194100000000,"Symbol":"mln","Index":186},{"TotalEquity":132208000000,"TotalDebt":0,"BasePrice":8660000000,"Symbol":"mob","Index":187},{"TotalEquity":262072600,"TotalDebt":0,"BasePrice":63100000000,"Symbol":"movr","Index":188},{"TotalEquity":3096000,"TotalDebt":0,"BasePrice":7020000000,"Symbol":"mtl","Index":189},{"TotalEquity":5615144716,"TotalDebt":0,"BasePrice":15900000000,"Symbol":"near","Index":190},{"TotalEquity":6048000,"TotalDebt":0,"BasePrice":13000000000,"Symbol":"nebl","Index":191},{"TotalEquity":484605847032,"TotalDebt":0,"BasePrice":65600000000,"Symbol":"neo","Index":192},{"TotalEquity":0,"TotalDebt":0,"BasePrice":7260000000,"Symbol":"nexo","Index":193},{"TotalEquity":2013960000,"TotalDebt":0,"BasePrice":862000000,"Symbol":"nkn","Index":194},{"TotalEquity":39400,"TotalDebt":0,"BasePrice":129300000000,"Symbol":"nmr","Index":195},{"TotalEquity":99676000,"TotalDebt":0,"BasePrice":1901000000,"Symbol":"nuls","Index":196},{"TotalEquity":1063446,"TotalDebt":0,"BasePrice":1906000000,"Symbol":"ocean","Index":197},{"TotalEquity":380000,"TotalDebt":0,"BasePrice":23960000000,"Symbol":"og","Index":198},{"TotalEquity":30491752,"TotalDebt":0,"BasePrice":906000000,"Symbol":"ogn","Index":199},{"TotalEquity":117360000,"TotalDebt":0,"BasePrice":289000000,"Symbol":"om","Index":200},{"TotalEquity":213392241236,"TotalDebt":0,"BasePrice":10630000000,"Symbol":"omg","Index":201},{"TotalEquity":561009012134,"TotalDebt":0,"BasePrice":106700000,"Symbol":"one","Index":202},{"TotalEquity":64315053780,"TotalDebt":0,"BasePrice":2177482600,"Symbol":"ong","Index":203},{"TotalEquity":4682530773048,"TotalDebt":0,"BasePrice":1609000000,"Symbol":"ont","Index":204},{"TotalEquity":893960000,"TotalDebt":0,"BasePrice":30800000,"Symbol":"ooki","Index":205},{"TotalEquity":383291200,"TotalDebt":0,"BasePrice":10840000000,"Symbol":"op","Index":206},{"TotalEquity":11568582000,"TotalDebt":0,"BasePrice":7680000000,"Symbol":"orn","Index":207},{"TotalEquity":0,"TotalDebt":0,"BasePrice":7240000000,"Symbol":"osmo","Index":208},{"TotalEquity":178748000,"TotalDebt":0,"BasePrice":687000000,"Symbol":"oxt","Index":209},{"TotalEquity":0,"TotalDebt":0,"BasePrice":18530000000000,"Symbol":"paxg","Index":210},{"TotalEquity":21441646500892,"TotalDebt":0,"BasePrice":215100000,"Symbol":"people","Index":211},{"TotalEquity":1648337620,"TotalDebt":0,"BasePrice":3831300000,"Symbol":"perp","Index":212},{"TotalEquity":0,"TotalDebt":0,"BasePrice":1112000000,"Symbol":"pha","Index":213},{"TotalEquity":35466658000,"TotalDebt":0,"BasePrice":5237000000,"Symbol":"phb","Index":214},{"TotalEquity":28791180000,"TotalDebt":0,"BasePrice":1430000000,"Symbol":"pla","Index":215},{"TotalEquity":175000000,"TotalDebt":0,"BasePrice":1358592400,"Symbol":"pnt","Index":216},{"TotalEquity":3494881620000,"TotalDebt":0,"BasePrice":3570000000,"Symbol":"pols","Index":217},{"TotalEquity":74823148144,"TotalDebt":0,"BasePrice":1234000000,"Symbol":"polyx","Index":218},{"TotalEquity":493224786192,"TotalDebt":0,"BasePrice":77900000,"Symbol":"pond","Index":219},{"TotalEquity":72399098108,"TotalDebt":0,"BasePrice":25696000000,"Symbol":"porto","Index":220},{"TotalEquity":21005000000,"TotalDebt":0,"BasePrice":1273000000,"Symbol":"powr","Index":221},{"TotalEquity":0,"TotalDebt":0,"BasePrice":39200000000,"Symbol":"prom","Index":222},{"TotalEquity":0,"TotalDebt":0,"BasePrice":4230000000,"Symbol":"pros","Index":223},{"TotalEquity":2246200,"TotalDebt":0,"BasePrice":56400000000,"Symbol":"psg","Index":224},{"TotalEquity":57372118540,"TotalDebt":0,"BasePrice":3240000000,"Symbol":"pundix","Index":225},{"TotalEquity":172800,"TotalDebt":0,"BasePrice":29800000000,"Symbol":"pyr","Index":226},{"TotalEquity":152556846850,"TotalDebt":0,"BasePrice":65200000,"Symbol":"qi","Index":227},{"TotalEquity":703867724,"TotalDebt":0,"BasePrice":1118000000000,"Symbol":"qnt","Index":228},{"TotalEquity":209070344,"TotalDebt":0,"BasePrice":19610000000,"Symbol":"qtum","Index":229},{"TotalEquity":107668,"TotalDebt":0,"BasePrice":464000000000,"Symbol":"quick","Index":230},{"TotalEquity":15960000,"TotalDebt":0,"BasePrice":15330000000,"Symbol":"rad","Index":231},{"TotalEquity":0,"TotalDebt":0,"BasePrice":1007000000,"Symbol":"rare","Index":232},{"TotalEquity":20536980000,"TotalDebt":0,"BasePrice":1502000000,"Symbol":"ray","Index":233},{"TotalEquity":2330100436820,"TotalDebt":0,"BasePrice":24230000,"Symbol":"reef","Index":234},{"TotalEquity":692913057840,"TotalDebt":0,"BasePrice":225000000,"Symbol":"rei","Index":235},{"TotalEquity":0,"TotalDebt":0,"BasePrice":630420000,"Symbol":"ren","Index":236},{"TotalEquity":223600190,"TotalDebt":0,"BasePrice":872000000,"Symbol":"req","Index":237},{"TotalEquity":18748000,"TotalDebt":0,"BasePrice":12427749000,"Symbol":"rlc","Index":238},{"TotalEquity":376358800,"TotalDebt":0,"BasePrice":4200000000,"Symbol":"rndr","Index":239},{"TotalEquity":2094224000,"TotalDebt":0,"BasePrice":370400000,"Symbol":"rose","Index":240},{"TotalEquity":119940000,"TotalDebt":0,"BasePrice":31690000,"Symbol":"rsr","Index":241},{"TotalEquity":269393997600,"TotalDebt":0,"BasePrice":13750000000,"Symbol":"rune","Index":242},{"TotalEquity":539117133400,"TotalDebt":0,"BasePrice":203000000,"Symbol":"rvn","Index":243},{"TotalEquity":154754594184,"TotalDebt":0,"BasePrice":4309000000,"Symbol":"sand","Index":244},{"TotalEquity":2790903662,"TotalDebt":0,"BasePrice":44700000000,"Symbol":"santos","Index":245},{"TotalEquity":353200000,"TotalDebt":0,"BasePrice":23600000,"Symbol":"sc","Index":246},{"TotalEquity":0,"TotalDebt":0,"BasePrice":6390000000,"Symbol":"scrt","Index":247},{"TotalEquity":493481218,"TotalDebt":0,"BasePrice":4033000000,"Symbol":"sfp","Index":248},{"TotalEquity":92811810818000000,"TotalDebt":0,"BasePrice":84300,"Symbol":"shib","Index":249},{"TotalEquity":338633610064,"TotalDebt":0,"BasePrice":227300000,"Symbol":"skl","Index":250},{"TotalEquity":17412372632502,"TotalDebt":0,"BasePrice":20900000,"Symbol":"slp","Index":251},{"TotalEquity":19400000,"TotalDebt":0,"BasePrice":4858000000,"Symbol":"snm","Index":252},{"TotalEquity":12518184,"TotalDebt":0,"BasePrice":16280000000,"Symbol":"snx","Index":253},{"TotalEquity":7697220542,"TotalDebt":0,"BasePrice":135100000000,"Symbol":"sol","Index":254},{"TotalEquity":43400244636,"TotalDebt":0,"BasePrice":5522000,"Symbol":"spell","Index":255},{"TotalEquity":145168230000,"TotalDebt":0,"BasePrice":1567800000,"Symbol":"srm","Index":256},{"TotalEquity":0,"TotalDebt":0,"BasePrice":3544000000,"Symbol":"stg","Index":257},{"TotalEquity":1375707000000,"TotalDebt":0,"BasePrice":38110000,"Symbol":"stmx","Index":258},{"TotalEquity":8912432530,"TotalDebt":0,"BasePrice":2582000000,"Symbol":"storj","Index":259},{"TotalEquity":0,"TotalDebt":0,"BasePrice":275900000,"Symbol":"stpt","Index":260},{"TotalEquity":14047500,"TotalDebt":0,"BasePrice":4050000000,"Symbol":"strax","Index":261},{"TotalEquity":1423000,"TotalDebt":0,"BasePrice":2190000000,"Symbol":"stx","Index":262},{"TotalEquity":326978131392,"TotalDebt":0,"BasePrice":50400000,"Symbol":"sun","Index":263},{"TotalEquity":30595425600,"TotalDebt":0,"BasePrice":867000000,"Symbol":"super","Index":264},{"TotalEquity":128556304136,"TotalDebt":0,"BasePrice":10420000000,"Symbol":"sushi","Index":265},{"TotalEquity":1059292108408,"TotalDebt":0,"BasePrice":2130000000,"Symbol":"sxp","Index":266},{"TotalEquity":130320000,"TotalDebt":0,"BasePrice":1017000000,"Symbol":"sys","Index":267},{"TotalEquity":5172000,"TotalDebt":0,"BasePrice":163000000,"Symbol":"t","Index":268},{"TotalEquity":1030910000,"TotalDebt":0,"BasePrice":327000000,"Symbol":"tfuel","Index":269},{"TotalEquity":160460684218,"TotalDebt":0,"BasePrice":7590000000,"Symbol":"theta","Index":270},{"TotalEquity":198770314330,"TotalDebt":0,"BasePrice":2292000000,"Symbol":"tko","Index":271},{"TotalEquity":256387034218,"TotalDebt":0,"BasePrice":128600000,"Symbol":"tlm","Index":272},{"TotalEquity":2508400,"TotalDebt":0,"BasePrice":2762000000,"Symbol":"tomo","Index":273},{"TotalEquity":9400,"TotalDebt":0,"BasePrice":124800000000,"Symbol":"trb","Index":274},{"TotalEquity":33800000,"TotalDebt":0,"BasePrice":2070797400,"Symbol":"tribe","Index":275},{"TotalEquity":46160000,"TotalDebt":0,"BasePrice":25980000,"Symbol":"troy","Index":276},{"TotalEquity":0,"TotalDebt":0,"BasePrice":288071600,"Symbol":"tru","Index":277},{"TotalEquity":2043669562480,"TotalDebt":0,"BasePrice":524600000,"Symbol":"trx","Index":278},{"TotalEquity":63678800000,"TotalDebt":0,"BasePrice":301000000,"Symbol":"tvk","Index":279},{"TotalEquity":0,"TotalDebt":0,"BasePrice":14100000000,"Symbol":"twt","Index":280},{"TotalEquity":13980000,"TotalDebt":0,"BasePrice":15400000000,"Symbol":"uma","Index":281},{"TotalEquity":19120000,"TotalDebt":0,"BasePrice":39360000000,"Symbol":"unfi","Index":282},{"TotalEquity":11981756100,"TotalDebt":0,"BasePrice":55220000000,"Symbol":"uni","Index":283},{"TotalEquity":0,"TotalDebt":0,"BasePrice":10000650400,"Symbol":"usdc","Index":284},{"TotalEquity":12876907115652,"TotalDebt":0,"BasePrice":9997000900,"Symbol":"usdt","Index":285},{"TotalEquity":220063518946,"TotalDebt":0,"BasePrice":203321700,"Symbol":"ustc","Index":286},{"TotalEquity":0,"TotalDebt":0,"BasePrice":777000000,"Symbol":"utk","Index":287},{"TotalEquity":7430929587566,"TotalDebt":0,"BasePrice":164100000,"Symbol":"vet","Index":288},{"TotalEquity":169058297966,"TotalDebt":0,"BasePrice":694900000,"Symbol":"vib","Index":289},{"TotalEquity":252046634,"TotalDebt":0,"BasePrice":195000000,"Symbol":"vite","Index":290},{"TotalEquity":25254109536,"TotalDebt":0,"BasePrice":1671000000,"Symbol":"voxel","Index":291},{"TotalEquity":5153547313742,"TotalDebt":0,"BasePrice":9237200,"Symbol":"vtho","Index":292},{"TotalEquity":17493828000,"TotalDebt":0,"BasePrice":1658321600,"Symbol":"wan","Index":293},{"TotalEquity":2852616,"TotalDebt":0,"BasePrice":14130000000,"Symbol":"waves","Index":294},{"TotalEquity":20000180,"TotalDebt":0,"BasePrice":440000000,"Symbol":"waxp","Index":295},{"TotalEquity":24776160000000,"TotalDebt":0,"BasePrice":738000,"Symbol":"win","Index":296},{"TotalEquity":2370200,"TotalDebt":0,"BasePrice":52100000000,"Symbol":"wing","Index":297},{"TotalEquity":0,"TotalDebt":0,"BasePrice":80975707300,"Symbol":"wnxm","Index":298},{"TotalEquity":75262779600,"TotalDebt":0,"BasePrice":1347000000,"Symbol":"woo","Index":299},{"TotalEquity":415631596070,"TotalDebt":0,"BasePrice":1401000000,"Symbol":"wrx","Index":300},{"TotalEquity":183890000,"TotalDebt":0,"BasePrice":1916523600,"Symbol":"wtc","Index":301},{"TotalEquity":172906064000000,"TotalDebt":0,"BasePrice":246700,"Symbol":"xec","Index":302},{"TotalEquity":129072400,"TotalDebt":0,"BasePrice":291912400,"Symbol":"xem","Index":303},{"TotalEquity":152986398800,"TotalDebt":0,"BasePrice":751000000,"Symbol":"xlm","Index":304},{"TotalEquity":109317164,"TotalDebt":0,"BasePrice":1548000000000,"Symbol":"xmr","Index":305},{"TotalEquity":1954309930640,"TotalDebt":0,"BasePrice":3442000000,"Symbol":"xrp","Index":306},{"TotalEquity":388360923948,"TotalDebt":0,"BasePrice":7720000000,"Symbol":"xtz","Index":307},{"TotalEquity":45916405132400,"TotalDebt":0,"BasePrice":27200000,"Symbol":"xvg","Index":308},{"TotalEquity":1725600,"TotalDebt":0,"BasePrice":42900000000,"Symbol":"xvs","Index":309},{"TotalEquity":1940,"TotalDebt":0,"BasePrice":54420000000000,"Symbol":"yfi","Index":310},{"TotalEquity":393918000,"TotalDebt":0,"BasePrice":1749000000,"Symbol":"ygg","Index":311},{"TotalEquity":4124782260,"TotalDebt":0,"BasePrice":414000000000,"Symbol":"zec","Index":312},{"TotalEquity":1900092,"TotalDebt":0,"BasePrice":84900000000,"Symbol":"zen","Index":313},{"TotalEquity":2075635646560,"TotalDebt":0,"BasePrice":174100000,"Symbol":"zil","Index":314},{"TotalEquity":119194400,"TotalDebt":0,"BasePrice":1603000000,"Symbol":"zrx","Index":315}]
  1. 每次執行完生成 proof 數據之後,都需要查詢一次 cex assets,然後把這個數據保存下來,該數據將用於下麵的 cex_config.jsonCexAssetsInfo 字段中。
    註意:這裡的 proof.csv 文件與上述保存的資産證明數據應衕一批次,否則會出現驗證失敗的問題

配置文件

cex_config.json 爲驗證交易所資産的配置文件:

Plaintext
{
  "ProofCsv": "./config/proof.csv",
  "ZkKeyVKDirectoryAndPrefix": "./zkpor864",
  "CexAssetsInfo": [{"TotalEquity":10049232946,"TotalDebt":0,"BasePrice":3960000000,"Symbol":"1inch","Index":0},{"TotalEquity":421836,"TotalDebt":0,"BasePrice":564000000000,"Symbol":"aave","Index":1},{"TotalEquity":0,"TotalDebt":0,"BasePrice":79800000,"Symbol":"ach","Index":2},{"TotalEquity":3040000,"TotalDebt":0,"BasePrice":25460000000,"Symbol":"acm","Index":3},{"TotalEquity":17700050162640,"TotalDebt":0,"BasePrice":2784000000,"Symbol":"ada","Index":4},{"TotalEquity":485400000,"TotalDebt":0,"BasePrice":1182000000,"Symbol":"adx","Index":5},{"TotalEquity":0,"TotalDebt":0,"BasePrice":907000000,"Symbol":"aergo","Index":6},{"TotalEquity":0,"TotalDebt":0,"BasePrice":2720000000,"Symbol":"agld","Index":7},{"TotalEquity":1969000000,"TotalDebt":0,"BasePrice":30500000,"Symbol":"akro","Index":8},{"TotalEquity":0,"TotalDebt":0,"BasePrice":141000000000,"Symbol":"alcx","Index":9},{"TotalEquity":15483340912,"TotalDebt":0,"BasePrice":1890000000,"Symbol":"algo","Index":10},{"TotalEquity":3187400,"TotalDebt":0,"BasePrice":11350000000,"Symbol":"alice","Index":11},{"TotalEquity":1760000,"TotalDebt":0,"BasePrice":2496000000,"Symbol":"alpaca","Index":12},{"TotalEquity":84596857600,"TotalDebt":0,"BasePrice":785000000,"Symbol":"alpha","Index":13},{"TotalEquity":3672090936,"TotalDebt":0,"BasePrice":20849000000,"Symbol":"alpine","Index":14},{"TotalEquity":198200000,"TotalDebt":0,"BasePrice":132600000,"Symbol":"amb","Index":15},{"TotalEquity":53800000,"TotalDebt":0,"BasePrice":32200000,"Symbol":"amp","Index":16},{"TotalEquity":3291606210,"TotalDebt":0,"BasePrice":340300000,"Symbol":"anc","Index":17},{"TotalEquity":192954000,"TotalDebt":0,"BasePrice":166000000,"Symbol":"ankr","Index":18},{"TotalEquity":2160000,"TotalDebt":0,"BasePrice":20940000000,"Symbol":"ant","Index":19},{"TotalEquity":5995002000,"TotalDebt":0,"BasePrice":40370000000,"Symbol":"ape","Index":20},{"TotalEquity":0,"TotalDebt":0,"BasePrice":11110000000,"Symbol":"api3","Index":21},{"TotalEquity":53728000,"TotalDebt":0,"BasePrice":38560000000,"Symbol":"apt","Index":22},{"TotalEquity":0,"TotalDebt":0,"BasePrice":68500000000,"Symbol":"ar","Index":23},{"TotalEquity":55400000,"TotalDebt":0,"BasePrice":667648400,"Symbol":"ardr","Index":24},{"TotalEquity":8320000,"TotalDebt":0,"BasePrice":266200000,"Symbol":"arpa","Index":25},{"TotalEquity":18820000,"TotalDebt":0,"BasePrice":401000000,"Symbol":"astr","Index":26},{"TotalEquity":13205405410,"TotalDebt":0,"BasePrice":934000000,"Symbol":"ata","Index":27},{"TotalEquity":7016230960,"TotalDebt":0,"BasePrice":102450000000,"Symbol":"atom","Index":28},{"TotalEquity":2619441828,"TotalDebt":0,"BasePrice":40900000000,"Symbol":"auction","Index":29},{"TotalEquity":9640198,"TotalDebt":0,"BasePrice":1432000000,"Symbol":"audio","Index":30},{"TotalEquity":0,"TotalDebt":0,"BasePrice":2306000000000,"Symbol":"auto","Index":31},{"TotalEquity":886400,"TotalDebt":0,"BasePrice":5390000000,"Symbol":"ava","Index":32},{"TotalEquity":2883562350,"TotalDebt":0,"BasePrice":117800000000,"Symbol":"avax","Index":33},{"TotalEquity":1864300912,"TotalDebt":0,"BasePrice":68200000000,"Symbol":"axs","Index":34},{"TotalEquity":843870,"TotalDebt":0,"BasePrice":23700000000,"Symbol":"badger","Index":35},{"TotalEquity":114869291528,"TotalDebt":0,"BasePrice":1379000000,"Symbol":"bake","Index":36},{"TotalEquity":95400,"TotalDebt":0,"BasePrice":54110000000,"Symbol":"bal","Index":37},{"TotalEquity":123113880,"TotalDebt":0,"BasePrice":14610000000,"Symbol":"band","Index":38},{"TotalEquity":0,"TotalDebt":0,"BasePrice":37100000000,"Symbol":"bar","Index":39},{"TotalEquity":73090049578,"TotalDebt":0,"BasePrice":1774000000,"Symbol":"bat","Index":40},{"TotalEquity":28891300,"TotalDebt":0,"BasePrice":1017000000000,"Symbol":"bch","Index":41},{"TotalEquity":19889623294,"TotalDebt":0,"BasePrice":4130000000,"Symbol":"bel","Index":42},{"TotalEquity":374840602180,"TotalDebt":0,"BasePrice":699700000,"Symbol":"beta","Index":43},{"TotalEquity":270294580,"TotalDebt":0,"BasePrice":12290900000000,"Symbol":"beth","Index":44},{"TotalEquity":35692901600,"TotalDebt":0,"BasePrice":2730000000,"Symbol":"bico","Index":45},{"TotalEquity":0,"TotalDebt":0,"BasePrice":639000,"Symbol":"bidr","Index":46},{"TotalEquity":240200000,"TotalDebt":0,"BasePrice":538000000,"Symbol":"blz","Index":47},{"TotalEquity":83614634622,"TotalDebt":0,"BasePrice":2599000000000,"Symbol":"bnb","Index":48},{"TotalEquity":0,"TotalDebt":0,"BasePrice":3490000000,"Symbol":"bnt","Index":49},{"TotalEquity":1560,"TotalDebt":0,"BasePrice":592000000000,"Symbol":"bnx","Index":50},{"TotalEquity":2076000,"TotalDebt":0,"BasePrice":32630000000,"Symbol":"bond","Index":51},{"TotalEquity":44699589660,"TotalDebt":0,"BasePrice":1768000000,"Symbol":"bsw","Index":52},{"TotalEquity":291716078,"TotalDebt":0,"BasePrice":169453900000000,"Symbol":"btc","Index":53},{"TotalEquity":15500321300000000,"TotalDebt":0,"BasePrice":6300,"Symbol":"bttc","Index":54},{"TotalEquity":70771546756,"TotalDebt":0,"BasePrice":5240000000,"Symbol":"burger","Index":55},{"TotalEquity":12058907297354,"TotalDebt":1476223055432,"BasePrice":10000000000,"Symbol":"busd","Index":56},{"TotalEquity":34716440000,"TotalDebt":0,"BasePrice":1647000000,"Symbol":"c98","Index":57},{"TotalEquity":1541723702,"TotalDebt":0,"BasePrice":33140000000,"Symbol":"cake","Index":58},{"TotalEquity":2112000,"TotalDebt":0,"BasePrice":5200000000,"Symbol":"celo","Index":59},{"TotalEquity":317091540000,"TotalDebt":0,"BasePrice":101000000,"Symbol":"celr","Index":60},{"TotalEquity":137111365560,"TotalDebt":0,"BasePrice":228000000,"Symbol":"cfx","Index":61},{"TotalEquity":0,"TotalDebt":0,"BasePrice":1820000000,"Symbol":"chess","Index":62},{"TotalEquity":258540000,"TotalDebt":0,"BasePrice":1140000000,"Symbol":"chr","Index":63},{"TotalEquity":289172288882,"TotalDebt":0,"BasePrice":1099000000,"Symbol":"chz","Index":64},{"TotalEquity":0,"TotalDebt":0,"BasePrice":25100000,"Symbol":"ckb","Index":65},{"TotalEquity":1851135024806,"TotalDebt":0,"BasePrice":535500000,"Symbol":"clv","Index":66},{"TotalEquity":155010000,"TotalDebt":0,"BasePrice":5202000000,"Symbol":"cocos","Index":67},{"TotalEquity":52093390,"TotalDebt":0,"BasePrice":335800000000,"Symbol":"comp","Index":68},{"TotalEquity":13991592000,"TotalDebt":0,"BasePrice":44500000,"Symbol":"cos","Index":69},{"TotalEquity":51240788068,"TotalDebt":0,"BasePrice":557000000,"Symbol":"coti","Index":70},{"TotalEquity":0,"TotalDebt":0,"BasePrice":107900000000,"Symbol":"cream","Index":71},{"TotalEquity":15940224,"TotalDebt":0,"BasePrice":5470000000,"Symbol":"crv","Index":72},{"TotalEquity":2336000,"TotalDebt":0,"BasePrice":7450000000,"Symbol":"ctk","Index":73},{"TotalEquity":88860000,"TotalDebt":0,"BasePrice":1059000000,"Symbol":"ctsi","Index":74},{"TotalEquity":440400000,"TotalDebt":0,"BasePrice":1763000000,"Symbol":"ctxc","Index":75},{"TotalEquity":0,"TotalDebt":0,"BasePrice":3375000000,"Symbol":"cvp","Index":76},{"TotalEquity":176202,"TotalDebt":0,"BasePrice":30810000000,"Symbol":"cvx","Index":77},{"TotalEquity":0,"TotalDebt":0,"BasePrice":9999000100,"Symbol":"dai","Index":78},{"TotalEquity":90702266836,"TotalDebt":0,"BasePrice":1293500000,"Symbol":"dar","Index":79},{"TotalEquity":29386961406,"TotalDebt":0,"BasePrice":458300000000,"Symbol":"dash","Index":80},{"TotalEquity":1628888000,"TotalDebt":0,"BasePrice":235500000,"Symbol":"data","Index":81},{"TotalEquity":0,"TotalDebt":0,"BasePrice":186229836100,"Symbol":"dcr","Index":82},{"TotalEquity":0,"TotalDebt":0,"BasePrice":15920000000,"Symbol":"dego","Index":83},{"TotalEquity":26105549312822,"TotalDebt":0,"BasePrice":6830000,"Symbol":"dent","Index":84},{"TotalEquity":670658000,"TotalDebt":0,"BasePrice":24000000000,"Symbol":"dexe","Index":85},{"TotalEquity":517372774000,"TotalDebt":0,"BasePrice":82200000,"Symbol":"dgb","Index":86},{"TotalEquity":1120000,"TotalDebt":0,"BasePrice":2970000000,"Symbol":"dia","Index":87},{"TotalEquity":0,"TotalDebt":0,"BasePrice":151800000,"Symbol":"dock","Index":88},{"TotalEquity":19453393384,"TotalDebt":0,"BasePrice":987000000,"Symbol":"dodo","Index":89},{"TotalEquity":25526548451614,"TotalDebt":0,"BasePrice":723900000,"Symbol":"doge","Index":90},{"TotalEquity":466049240950,"TotalDebt":0,"BasePrice":46820000000,"Symbol":"dot","Index":91},{"TotalEquity":69200000,"TotalDebt":0,"BasePrice":3138000000,"Symbol":"drep","Index":92},{"TotalEquity":0,"TotalDebt":0,"BasePrice":870000000,"Symbol":"dusk","Index":93},{"TotalEquity":45675816000,"TotalDebt":0,"BasePrice":12120000000,"Symbol":"dydx","Index":94},{"TotalEquity":241920370,"TotalDebt":0,"BasePrice":343400000000,"Symbol":"egld","Index":95},{"TotalEquity":3640000,"TotalDebt":0,"BasePrice":1691000000,"Symbol":"elf","Index":96},{"TotalEquity":200008070,"TotalDebt":0,"BasePrice":2556000000,"Symbol":"enj","Index":97},{"TotalEquity":836000,"TotalDebt":0,"BasePrice":115500000000,"Symbol":"ens","Index":98},{"TotalEquity":23489390223668,"TotalDebt":0,"BasePrice":8960000000,"Symbol":"eos","Index":99},{"TotalEquity":83358943947200,"TotalDebt":0,"BasePrice":2960000,"Symbol":"epx","Index":100},{"TotalEquity":1539180000,"TotalDebt":0,"BasePrice":17540000000,"Symbol":"ern","Index":101},{"TotalEquity":48056621250,"TotalDebt":0,"BasePrice":204100000000,"Symbol":"etc","Index":102},{"TotalEquity":28478224392,"TotalDebt":0,"BasePrice":12688000000000,"Symbol":"eth","Index":103},{"TotalEquity":21790805772,"TotalDebt":0,"BasePrice":10641000000,"Symbol":"eur","Index":104},{"TotalEquity":196200,"TotalDebt":0,"BasePrice":307000000000,"Symbol":"farm","Index":105},{"TotalEquity":31040000,"TotalDebt":0,"BasePrice":1240000000,"Symbol":"fet","Index":106},{"TotalEquity":26460000,"TotalDebt":0,"BasePrice":3354000000,"Symbol":"fida","Index":107},{"TotalEquity":5539231876,"TotalDebt":0,"BasePrice":33380000000,"Symbol":"fil","Index":108},{"TotalEquity":152000000,"TotalDebt":0,"BasePrice":275000000,"Symbol":"fio","Index":109},{"TotalEquity":1014252612,"TotalDebt":0,"BasePrice":16540000000,"Symbol":"firo","Index":110},{"TotalEquity":0,"TotalDebt":0,"BasePrice":3313000000,"Symbol":"fis","Index":111},{"TotalEquity":0,"TotalDebt":0,"BasePrice":765931600,"Symbol":"flm","Index":112},{"TotalEquity":3688000,"TotalDebt":0,"BasePrice":6990000000,"Symbol":"flow","Index":113},{"TotalEquity":0,"TotalDebt":0,"BasePrice":5090000000,"Symbol":"flux","Index":114},{"TotalEquity":0,"TotalDebt":0,"BasePrice":162500000,"Symbol":"for","Index":115},{"TotalEquity":80000,"TotalDebt":0,"BasePrice":29400000000,"Symbol":"forth","Index":116},{"TotalEquity":14430200000,"TotalDebt":0,"BasePrice":1808000000,"Symbol":"front","Index":117},{"TotalEquity":26629480000,"TotalDebt":0,"BasePrice":2211000000,"Symbol":"ftm","Index":118},{"TotalEquity":16207428000,"TotalDebt":0,"BasePrice":9125000000,"Symbol":"ftt","Index":119},{"TotalEquity":679597613272,"TotalDebt":0,"BasePrice":61663700,"Symbol":"fun","Index":120},{"TotalEquity":0,"TotalDebt":0,"BasePrice":51410000000,"Symbol":"fxs","Index":121},{"TotalEquity":4110633550,"TotalDebt":0,"BasePrice":11540000000,"Symbol":"gal","Index":122},{"TotalEquity":2551466375170,"TotalDebt":0,"BasePrice":234700000,"Symbol":"gala","Index":123},{"TotalEquity":1252940134,"TotalDebt":0,"BasePrice":20260000000,"Symbol":"gas","Index":124},{"TotalEquity":0,"TotalDebt":0,"BasePrice":1850000000,"Symbol":"glm","Index":125},{"TotalEquity":25058958996,"TotalDebt":0,"BasePrice":3195000000,"Symbol":"glmr","Index":126},{"TotalEquity":443980786672,"TotalDebt":0,"BasePrice":2588000000,"Symbol":"gmt","Index":127},{"TotalEquity":160000,"TotalDebt":0,"BasePrice":417300000000,"Symbol":"gmx","Index":128},{"TotalEquity":178800,"TotalDebt":0,"BasePrice":878736379100,"Symbol":"gno","Index":129},{"TotalEquity":6828000,"TotalDebt":0,"BasePrice":620000000,"Symbol":"grt","Index":130},{"TotalEquity":20784000,"TotalDebt":0,"BasePrice":13340000000,"Symbol":"gtc","Index":131},{"TotalEquity":94280000,"TotalDebt":0,"BasePrice":1494000000,"Symbol":"hard","Index":132},{"TotalEquity":336206273140,"TotalDebt":0,"BasePrice":391000000,"Symbol":"hbar","Index":133},{"TotalEquity":1791317190,"TotalDebt":0,"BasePrice":8870000000,"Symbol":"high","Index":134},{"TotalEquity":6485637600,"TotalDebt":0,"BasePrice":2700000000,"Symbol":"hive","Index":135},{"TotalEquity":1956144,"TotalDebt":0,"BasePrice":18400000000,"Symbol":"hnt","Index":136},{"TotalEquity":9587039140000,"TotalDebt":0,"BasePrice":14820000,"Symbol":"hot","Index":137},{"TotalEquity":223895102366,"TotalDebt":0,"BasePrice":38980000000,"Symbol":"icp","Index":138},{"TotalEquity":52168047570,"TotalDebt":0,"BasePrice":1516000000,"Symbol":"icx","Index":139},{"TotalEquity":15480000,"TotalDebt":0,"BasePrice":388000000,"Symbol":"idex","Index":140},{"TotalEquity":8400000,"TotalDebt":0,"BasePrice":388700000000,"Symbol":"ilv","Index":141},{"TotalEquity":12686368000,"TotalDebt":0,"BasePrice":4230000000,"Symbol":"imx","Index":142},{"TotalEquity":139990936000,"TotalDebt":0,"BasePrice":13680000000,"Symbol":"inj","Index":143},{"TotalEquity":69430091021436,"TotalDebt":0,"BasePrice":72500000,"Symbol":"iost","Index":144},{"TotalEquity":71259628200,"TotalDebt":0,"BasePrice":1823000000,"Symbol":"iota","Index":145},{"TotalEquity":428000000,"TotalDebt":0,"BasePrice":221500000,"Symbol":"iotx","Index":146},{"TotalEquity":858126200,"TotalDebt":0,"BasePrice":43200000,"Symbol":"iq","Index":147},{"TotalEquity":8680000,"TotalDebt":0,"BasePrice":132174000,"Symbol":"iris","Index":148},{"TotalEquity":1889177748140,"TotalDebt":0,"BasePrice":37600000,"Symbol":"jasmy","Index":149},{"TotalEquity":2000,"TotalDebt":0,"BasePrice":1416000000,"Symbol":"joe","Index":150},{"TotalEquity":927921956,"TotalDebt":0,"BasePrice":201400000,"Symbol":"jst","Index":151},{"TotalEquity":560000,"TotalDebt":0,"BasePrice":6590000000,"Symbol":"kava","Index":152},{"TotalEquity":30527442000,"TotalDebt":0,"BasePrice":9480000000,"Symbol":"kda","Index":153},{"TotalEquity":7587760000,"TotalDebt":0,"BasePrice":29350000,"Symbol":"key","Index":154},{"TotalEquity":372181704,"TotalDebt":0,"BasePrice":1613000000,"Symbol":"klay","Index":155},{"TotalEquity":81600000,"TotalDebt":0,"BasePrice":1904661800,"Symbol":"kmd","Index":156},{"TotalEquity":493317080,"TotalDebt":0,"BasePrice":4940000000,"Symbol":"knc","Index":157},{"TotalEquity":1700000,"TotalDebt":0,"BasePrice":621600000000,"Symbol":"kp3r","Index":158},{"TotalEquity":27180,"TotalDebt":0,"BasePrice":250100000000,"Symbol":"ksm","Index":159},{"TotalEquity":1656679204,"TotalDebt":0,"BasePrice":30978000000,"Symbol":"lazio","Index":160},{"TotalEquity":295510852208,"TotalDebt":0,"BasePrice":15200000000,"Symbol":"ldo","Index":161},{"TotalEquity":1158728143570,"TotalDebt":0,"BasePrice":17230000,"Symbol":"lever","Index":162},{"TotalEquity":6505365672842,"TotalDebt":0,"BasePrice":52690000,"Symbol":"lina","Index":163},{"TotalEquity":8162369516,"TotalDebt":0,"BasePrice":57120000000,"Symbol":"link","Index":164},{"TotalEquity":95484000,"TotalDebt":0,"BasePrice":7220000000,"Symbol":"lit","Index":165},{"TotalEquity":12682220,"TotalDebt":0,"BasePrice":3632000000,"Symbol":"loka","Index":166},{"TotalEquity":0,"TotalDebt":0,"BasePrice":409400000,"Symbol":"loom","Index":167},{"TotalEquity":0,"TotalDebt":0,"BasePrice":44400000000,"Symbol":"lpt","Index":168},{"TotalEquity":10715077402,"TotalDebt":0,"BasePrice":2063000000,"Symbol":"lrc","Index":169},{"TotalEquity":8050236298,"TotalDebt":0,"BasePrice":7240000000,"Symbol":"lsk","Index":170},{"TotalEquity":1122426768,"TotalDebt":0,"BasePrice":758900000000,"Symbol":"ltc","Index":171},{"TotalEquity":22654000,"TotalDebt":0,"BasePrice":710000000,"Symbol":"lto","Index":172},{"TotalEquity":16580624988,"TotalDebt":0,"BasePrice":13251000000,"Symbol":"luna","Index":173},{"TotalEquity":1705595428000000,"TotalDebt":0,"BasePrice":1560500,"Symbol":"lunc","Index":174},{"TotalEquity":0,"TotalDebt":0,"BasePrice":4759000000,"Symbol":"magic","Index":175},{"TotalEquity":77632636722,"TotalDebt":0,"BasePrice":3278000000,"Symbol":"mana","Index":176},{"TotalEquity":1990776000,"TotalDebt":0,"BasePrice":23850000000,"Symbol":"mask","Index":177},{"TotalEquity":1076925578756,"TotalDebt":0,"BasePrice":7989000000,"Symbol":"matic","Index":178},{"TotalEquity":2785908800000,"TotalDebt":0,"BasePrice":23690000,"Symbol":"mbl","Index":179},{"TotalEquity":934922304,"TotalDebt":0,"BasePrice":3850000000,"Symbol":"mbox","Index":180},{"TotalEquity":13377446308,"TotalDebt":0,"BasePrice":2670000000,"Symbol":"mc","Index":181},{"TotalEquity":258144000,"TotalDebt":0,"BasePrice":201100000,"Symbol":"mdt","Index":182},{"TotalEquity":3081330908,"TotalDebt":0,"BasePrice":716000000,"Symbol":"mdx","Index":183},{"TotalEquity":32512116000,"TotalDebt":0,"BasePrice":4500000000,"Symbol":"mina","Index":184},{"TotalEquity":12110,"TotalDebt":0,"BasePrice":5400000000000,"Symbol":"mkr","Index":185},{"TotalEquity":0,"TotalDebt":0,"BasePrice":194100000000,"Symbol":"mln","Index":186},{"TotalEquity":132208000000,"TotalDebt":0,"BasePrice":8660000000,"Symbol":"mob","Index":187},{"TotalEquity":262072600,"TotalDebt":0,"BasePrice":63100000000,"Symbol":"movr","Index":188},{"TotalEquity":3096000,"TotalDebt":0,"BasePrice":7020000000,"Symbol":"mtl","Index":189},{"TotalEquity":5615144716,"TotalDebt":0,"BasePrice":15900000000,"Symbol":"near","Index":190},{"TotalEquity":6048000,"TotalDebt":0,"BasePrice":13000000000,"Symbol":"nebl","Index":191},{"TotalEquity":484605847032,"TotalDebt":0,"BasePrice":65600000000,"Symbol":"neo","Index":192},{"TotalEquity":0,"TotalDebt":0,"BasePrice":7260000000,"Symbol":"nexo","Index":193},{"TotalEquity":2013960000,"TotalDebt":0,"BasePrice":862000000,"Symbol":"nkn","Index":194},{"TotalEquity":39400,"TotalDebt":0,"BasePrice":129300000000,"Symbol":"nmr","Index":195},{"TotalEquity":99676000,"TotalDebt":0,"BasePrice":1901000000,"Symbol":"nuls","Index":196},{"TotalEquity":1063446,"TotalDebt":0,"BasePrice":1906000000,"Symbol":"ocean","Index":197},{"TotalEquity":380000,"TotalDebt":0,"BasePrice":23960000000,"Symbol":"og","Index":198},{"TotalEquity":30491752,"TotalDebt":0,"BasePrice":906000000,"Symbol":"ogn","Index":199},{"TotalEquity":117360000,"TotalDebt":0,"BasePrice":289000000,"Symbol":"om","Index":200},{"TotalEquity":213392241236,"TotalDebt":0,"BasePrice":10630000000,"Symbol":"omg","Index":201},{"TotalEquity":561009012134,"TotalDebt":0,"BasePrice":106700000,"Symbol":"one","Index":202},{"TotalEquity":64315053780,"TotalDebt":0,"BasePrice":2177482600,"Symbol":"ong","Index":203},{"TotalEquity":4682530773048,"TotalDebt":0,"BasePrice":1609000000,"Symbol":"ont","Index":204},{"TotalEquity":893960000,"TotalDebt":0,"BasePrice":30800000,"Symbol":"ooki","Index":205},{"TotalEquity":383291200,"TotalDebt":0,"BasePrice":10840000000,"Symbol":"op","Index":206},{"TotalEquity":11568582000,"TotalDebt":0,"BasePrice":7680000000,"Symbol":"orn","Index":207},{"TotalEquity":0,"TotalDebt":0,"BasePrice":7240000000,"Symbol":"osmo","Index":208},{"TotalEquity":178748000,"TotalDebt":0,"BasePrice":687000000,"Symbol":"oxt","Index":209},{"TotalEquity":0,"TotalDebt":0,"BasePrice":18530000000000,"Symbol":"paxg","Index":210},{"TotalEquity":21441646500892,"TotalDebt":0,"BasePrice":215100000,"Symbol":"people","Index":211},{"TotalEquity":1648337620,"TotalDebt":0,"BasePrice":3831300000,"Symbol":"perp","Index":212},{"TotalEquity":0,"TotalDebt":0,"BasePrice":1112000000,"Symbol":"pha","Index":213},{"TotalEquity":35466658000,"TotalDebt":0,"BasePrice":5237000000,"Symbol":"phb","Index":214},{"TotalEquity":28791180000,"TotalDebt":0,"BasePrice":1430000000,"Symbol":"pla","Index":215},{"TotalEquity":175000000,"TotalDebt":0,"BasePrice":1358592400,"Symbol":"pnt","Index":216},{"TotalEquity":3494881620000,"TotalDebt":0,"BasePrice":3570000000,"Symbol":"pols","Index":217},{"TotalEquity":74823148144,"TotalDebt":0,"BasePrice":1234000000,"Symbol":"polyx","Index":218},{"TotalEquity":493224786192,"TotalDebt":0,"BasePrice":77900000,"Symbol":"pond","Index":219},{"TotalEquity":72399098108,"TotalDebt":0,"BasePrice":25696000000,"Symbol":"porto","Index":220},{"TotalEquity":21005000000,"TotalDebt":0,"BasePrice":1273000000,"Symbol":"powr","Index":221},{"TotalEquity":0,"TotalDebt":0,"BasePrice":39200000000,"Symbol":"prom","Index":222},{"TotalEquity":0,"TotalDebt":0,"BasePrice":4230000000,"Symbol":"pros","Index":223},{"TotalEquity":2246200,"TotalDebt":0,"BasePrice":56400000000,"Symbol":"psg","Index":224},{"TotalEquity":57372118540,"TotalDebt":0,"BasePrice":3240000000,"Symbol":"pundix","Index":225},{"TotalEquity":172800,"TotalDebt":0,"BasePrice":29800000000,"Symbol":"pyr","Index":226},{"TotalEquity":152556846850,"TotalDebt":0,"BasePrice":65200000,"Symbol":"qi","Index":227},{"TotalEquity":703867724,"TotalDebt":0,"BasePrice":1118000000000,"Symbol":"qnt","Index":228},{"TotalEquity":209070344,"TotalDebt":0,"BasePrice":19610000000,"Symbol":"qtum","Index":229},{"TotalEquity":107668,"TotalDebt":0,"BasePrice":464000000000,"Symbol":"quick","Index":230},{"TotalEquity":15960000,"TotalDebt":0,"BasePrice":15330000000,"Symbol":"rad","Index":231},{"TotalEquity":0,"TotalDebt":0,"BasePrice":1007000000,"Symbol":"rare","Index":232},{"TotalEquity":20536980000,"TotalDebt":0,"BasePrice":1502000000,"Symbol":"ray","Index":233},{"TotalEquity":2330100436820,"TotalDebt":0,"BasePrice":24230000,"Symbol":"reef","Index":234},{"TotalEquity":692913057840,"TotalDebt":0,"BasePrice":225000000,"Symbol":"rei","Index":235},{"TotalEquity":0,"TotalDebt":0,"BasePrice":630420000,"Symbol":"ren","Index":236},{"TotalEquity":223600190,"TotalDebt":0,"BasePrice":872000000,"Symbol":"req","Index":237},{"TotalEquity":18748000,"TotalDebt":0,"BasePrice":12427749000,"Symbol":"rlc","Index":238},{"TotalEquity":376358800,"TotalDebt":0,"BasePrice":4200000000,"Symbol":"rndr","Index":239},{"TotalEquity":2094224000,"TotalDebt":0,"BasePrice":370400000,"Symbol":"rose","Index":240},{"TotalEquity":119940000,"TotalDebt":0,"BasePrice":31690000,"Symbol":"rsr","Index":241},{"TotalEquity":269393997600,"TotalDebt":0,"BasePrice":13750000000,"Symbol":"rune","Index":242},{"TotalEquity":539117133400,"TotalDebt":0,"BasePrice":203000000,"Symbol":"rvn","Index":243},{"TotalEquity":154754594184,"TotalDebt":0,"BasePrice":4309000000,"Symbol":"sand","Index":244},{"TotalEquity":2790903662,"TotalDebt":0,"BasePrice":44700000000,"Symbol":"santos","Index":245},{"TotalEquity":353200000,"TotalDebt":0,"BasePrice":23600000,"Symbol":"sc","Index":246},{"TotalEquity":0,"TotalDebt":0,"BasePrice":6390000000,"Symbol":"scrt","Index":247},{"TotalEquity":493481218,"TotalDebt":0,"BasePrice":4033000000,"Symbol":"sfp","Index":248},{"TotalEquity":92811810818000000,"TotalDebt":0,"BasePrice":84300,"Symbol":"shib","Index":249},{"TotalEquity":338633610064,"TotalDebt":0,"BasePrice":227300000,"Symbol":"skl","Index":250},{"TotalEquity":17412372632502,"TotalDebt":0,"BasePrice":20900000,"Symbol":"slp","Index":251},{"TotalEquity":19400000,"TotalDebt":0,"BasePrice":4858000000,"Symbol":"snm","Index":252},{"TotalEquity":12518184,"TotalDebt":0,"BasePrice":16280000000,"Symbol":"snx","Index":253},{"TotalEquity":7697220542,"TotalDebt":0,"BasePrice":135100000000,"Symbol":"sol","Index":254},{"TotalEquity":43400244636,"TotalDebt":0,"BasePrice":5522000,"Symbol":"spell","Index":255},{"TotalEquity":145168230000,"TotalDebt":0,"BasePrice":1567800000,"Symbol":"srm","Index":256},{"TotalEquity":0,"TotalDebt":0,"BasePrice":3544000000,"Symbol":"stg","Index":257},{"TotalEquity":1375707000000,"TotalDebt":0,"BasePrice":38110000,"Symbol":"stmx","Index":258},{"TotalEquity":8912432530,"TotalDebt":0,"BasePrice":2582000000,"Symbol":"storj","Index":259},{"TotalEquity":0,"TotalDebt":0,"BasePrice":275900000,"Symbol":"stpt","Index":260},{"TotalEquity":14047500,"TotalDebt":0,"BasePrice":4050000000,"Symbol":"strax","Index":261},{"TotalEquity":1423000,"TotalDebt":0,"BasePrice":2190000000,"Symbol":"stx","Index":262},{"TotalEquity":326978131392,"TotalDebt":0,"BasePrice":50400000,"Symbol":"sun","Index":263},{"TotalEquity":30595425600,"TotalDebt":0,"BasePrice":867000000,"Symbol":"super","Index":264},{"TotalEquity":128556304136,"TotalDebt":0,"BasePrice":10420000000,"Symbol":"sushi","Index":265},{"TotalEquity":1059292108408,"TotalDebt":0,"BasePrice":2130000000,"Symbol":"sxp","Index":266},{"TotalEquity":130320000,"TotalDebt":0,"BasePrice":1017000000,"Symbol":"sys","Index":267},{"TotalEquity":5172000,"TotalDebt":0,"BasePrice":163000000,"Symbol":"t","Index":268},{"TotalEquity":1030910000,"TotalDebt":0,"BasePrice":327000000,"Symbol":"tfuel","Index":269},{"TotalEquity":160460684218,"TotalDebt":0,"BasePrice":7590000000,"Symbol":"theta","Index":270},{"TotalEquity":198770314330,"TotalDebt":0,"BasePrice":2292000000,"Symbol":"tko","Index":271},{"TotalEquity":256387034218,"TotalDebt":0,"BasePrice":128600000,"Symbol":"tlm","Index":272},{"TotalEquity":2508400,"TotalDebt":0,"BasePrice":2762000000,"Symbol":"tomo","Index":273},{"TotalEquity":9400,"TotalDebt":0,"BasePrice":124800000000,"Symbol":"trb","Index":274},{"TotalEquity":33800000,"TotalDebt":0,"BasePrice":2070797400,"Symbol":"tribe","Index":275},{"TotalEquity":46160000,"TotalDebt":0,"BasePrice":25980000,"Symbol":"troy","Index":276},{"TotalEquity":0,"TotalDebt":0,"BasePrice":288071600,"Symbol":"tru","Index":277},{"TotalEquity":2043669562480,"TotalDebt":0,"BasePrice":524600000,"Symbol":"trx","Index":278},{"TotalEquity":63678800000,"TotalDebt":0,"BasePrice":301000000,"Symbol":"tvk","Index":279},{"TotalEquity":0,"TotalDebt":0,"BasePrice":14100000000,"Symbol":"twt","Index":280},{"TotalEquity":13980000,"TotalDebt":0,"BasePrice":15400000000,"Symbol":"uma","Index":281},{"TotalEquity":19120000,"TotalDebt":0,"BasePrice":39360000000,"Symbol":"unfi","Index":282},{"TotalEquity":11981756100,"TotalDebt":0,"BasePrice":55220000000,"Symbol":"uni","Index":283},{"TotalEquity":0,"TotalDebt":0,"BasePrice":10000650400,"Symbol":"usdc","Index":284},{"TotalEquity":12876907115652,"TotalDebt":0,"BasePrice":9997000900,"Symbol":"usdt","Index":285},{"TotalEquity":220063518946,"TotalDebt":0,"BasePrice":203321700,"Symbol":"ustc","Index":286},{"TotalEquity":0,"TotalDebt":0,"BasePrice":777000000,"Symbol":"utk","Index":287},{"TotalEquity":7430929587566,"TotalDebt":0,"BasePrice":164100000,"Symbol":"vet","Index":288},{"TotalEquity":169058297966,"TotalDebt":0,"BasePrice":694900000,"Symbol":"vib","Index":289},{"TotalEquity":252046634,"TotalDebt":0,"BasePrice":195000000,"Symbol":"vite","Index":290},{"TotalEquity":25254109536,"TotalDebt":0,"BasePrice":1671000000,"Symbol":"voxel","Index":291},{"TotalEquity":5153547313742,"TotalDebt":0,"BasePrice":9237200,"Symbol":"vtho","Index":292},{"TotalEquity":17493828000,"TotalDebt":0,"BasePrice":1658321600,"Symbol":"wan","Index":293},{"TotalEquity":2852616,"TotalDebt":0,"BasePrice":14130000000,"Symbol":"waves","Index":294},{"TotalEquity":20000180,"TotalDebt":0,"BasePrice":440000000,"Symbol":"waxp","Index":295},{"TotalEquity":24776160000000,"TotalDebt":0,"BasePrice":738000,"Symbol":"win","Index":296},{"TotalEquity":2370200,"TotalDebt":0,"BasePrice":52100000000,"Symbol":"wing","Index":297},{"TotalEquity":0,"TotalDebt":0,"BasePrice":80975707300,"Symbol":"wnxm","Index":298},{"TotalEquity":75262779600,"TotalDebt":0,"BasePrice":1347000000,"Symbol":"woo","Index":299},{"TotalEquity":415631596070,"TotalDebt":0,"BasePrice":1401000000,"Symbol":"wrx","Index":300},{"TotalEquity":183890000,"TotalDebt":0,"BasePrice":1916523600,"Symbol":"wtc","Index":301},{"TotalEquity":172906064000000,"TotalDebt":0,"BasePrice":246700,"Symbol":"xec","Index":302},{"TotalEquity":129072400,"TotalDebt":0,"BasePrice":291912400,"Symbol":"xem","Index":303},{"TotalEquity":152986398800,"TotalDebt":0,"BasePrice":751000000,"Symbol":"xlm","Index":304},{"TotalEquity":109317164,"TotalDebt":0,"BasePrice":1548000000000,"Symbol":"xmr","Index":305},{"TotalEquity":1954309930640,"TotalDebt":0,"BasePrice":3442000000,"Symbol":"xrp","Index":306},{"TotalEquity":388360923948,"TotalDebt":0,"BasePrice":7720000000,"Symbol":"xtz","Index":307},{"TotalEquity":45916405132400,"TotalDebt":0,"BasePrice":27200000,"Symbol":"xvg","Index":308},{"TotalEquity":1725600,"TotalDebt":0,"BasePrice":42900000000,"Symbol":"xvs","Index":309},{"TotalEquity":1940,"TotalDebt":0,"BasePrice":54420000000000,"Symbol":"yfi","Index":310},{"TotalEquity":393918000,"TotalDebt":0,"BasePrice":1749000000,"Symbol":"ygg","Index":311},{"TotalEquity":4124782260,"TotalDebt":0,"BasePrice":414000000000,"Symbol":"zec","Index":312},{"TotalEquity":1900092,"TotalDebt":0,"BasePrice":84900000000,"Symbol":"zen","Index":313},{"TotalEquity":2075635646560,"TotalDebt":0,"BasePrice":174100000,"Symbol":"zil","Index":314},{"TotalEquity":119194400,"TotalDebt":0,"BasePrice":1603000000,"Symbol":"zrx","Index":315}]
}

ProofCsv : 指定proof.csv錶的路徑

ZkKeyVKDirectoryAndPrefix: 指定zkpor verify key的路徑以及前綴

CexAssetsInfo: 交易所資産,由上麵命令查詢得出

驗證用戶資産所需數據與格式

  • 提供user_config.json文件
    我們需要用到上麵 user proof 環節生成的userproof錶,然後根據之前提供的交易所用戶資産example_users.csv中用戶唯一標識,對應userproof錶中的account_id字段找到該用戶,將config字段查詢出來,保存爲user_config.json中,提供給用戶下載即可。

user_config.json文件結構如下:

Plaintext
{
  "Arrangement":7,
  "UniqueIdentification":"00010b7c0a8b51bfa5eca14f0068670bd7fda4063f9bcac4f02c44a00144a80c",
  "TotalAssetEquity":445548224227483774000,
  "TotalAssetDebt":0,
  "AssetDetails":[{"Index":48,"Equity":280,"Debt":0},{"Index":53,"Equity":1020,"Debt":0},{"Index":54,"Equity":3261550200000000,"Debt":0},{"Index":72,"Equity":108600,"Debt":0},{"Index":91,"Equity":9068922000,"Debt":0},{"Index":190,"Equity":13752000,"Debt":0},{"Index":285,"Equity":70860,"Debt":0}],
  "TreeRootHash":"2da42ab6586ef6ad51b4bc8063ce92dcefb951572a26597346b7f78c1329ef0b",
  "MerkleProofEncode":["EmvQ5Sh50gHD96PfN2/o49gT7xVuuX3P22KLVmpWyVo=","JLEw2CGGAPi2TWn7GMbdlwT0wJbpVfJ4A+XLXNYz9X4=","BRCCQWeZy3fmPgiciBNdDMmugJtcQnxfI/b0EU4MlR8=","K8P8ZvYSY9iEreGnatTO8h1/I3Q+ZSkBA3TYYI1vN1g=","GwxhwdTBri22QcY4Pj9B3TkkLpOTGlCpqnsmxVquaeQ=","JIB+i/tDXSbEyK5ASwx2Tgbtm2ckJrJ30qnLm3FGhvs=","I0AzcupyH3clJooxcjaZlOIWOTY531UBJIMpfu2ds9o=","GYU5H/xfC18jR4LXz3axjKgJOaAbSAz3vO/taxTTMDE=","GML/iwCEjgYlSAmd4cQQhKsjH+xscIG6hbM5HP+OP/I=","BBXHrrH1oIGsjK1PsZt1d+ovsDW5IvHxFUlt8CJ3j/M=","F6GyEMWOjvKBgKDCCkQiOfc5SvGEt2MWyQTzszXzd6Y=","JDZjD4o0q6cGYJzj0BBaBEBEN4y4UjYgMSNIXf2P6Ps=","C+Mh1228yGv2Or6yQs3U0sjBzxxWJPTyH5GNG3FzMbk=","Jpo3tkE2KgMxWoEdMM1sOyJsM9YjsI9aONsEEqmMPnA=","FaWOvl42fYbklbc9WgWFqeW3Q/54KXT5zYdIGyCh9iE=","EvcLzRuRio6YT9QjSPp0GGGFYSIW8fKOqQlcOXFBBwo=","LJos88T9kz5kG0o+yeNX0ij+WwrOEIqRVpJtOrUrnns=","CFv3HhUsTXNa3iT/cc+GhD9lV+weuSWoJJRVgZmn7fQ=","EyfPjcon6R+nXBDT/9++ddQqlxiBaSaTMBiC0R6NPoM=","HOtPMAkz3JJG3n0bxNIqkR1p/Q758Em1Jjn1KE6A2mg=","Lq3n7B3Bs7ILnDLG17szIf9O0OdotsWpSLwejnJVcLY=","HthvmzZ/MHbOWVSuFyc9sUvuSz0ddveEwoyQExrim5k=","BOxHEGxRtmNch1R57kgKMxiBVnR/tCo9y3XcJco7Saw=","Dilkpy2L945iR+BsbaffA7MBZSNofd2PdZSkzN48DOE=","Fotw+U5orv9231KkpBYOXM+odtZGgCaNw5zOY+xZ5Oc=","J7pOZTvxtC7B8RzevUvrd90GfrH2oxtRqkEF+mFdCuc=","EUZQwQDUH48osqrtgcPuAQsQvdVKTC+hYmKvIhzImZQ=","HKC2vx3pnDTdfyrzYjCbJMcxojJfvuyzj2/rMMiMplQ="]
}

最終提供用戶內容

所以用戶最終穫得的文件結構大緻如下:

Plaintext
- config 
    cex_config.json
    user_config.json
    proof.csv
zkpor864.vk.save
main

二進製文件 main 提供時,可能根據設備不衕命名也有所不衕

  • Mac OS(Intel):zkproof_darwin_amd64
  • Mac OS(M1):zkproof_darwin_arm64
  • Linux:zkproof_linux_amd64
  • Windows:zkproof_windows_amd64.exe

用戶驗證交易所資産

運行以下命令開始驗證:

Plaintext
./main verify cex

驗證成功會輸出:

Plaintext
All proofs verify passed!!!

用戶驗證自身資産

Plaintext
./main verify user

驗證成功會輸出:

Plaintext
merkle leave hash: 164bc38a71b7a757455d93017242b4960cd1fea6842d8387b60c5780205858ce
verify pass!!!

結語

啟用zk-SNARK是Gate.io儲備金證明的重要升級,也是Gate.io在用戶資産安全保護上的重要行動之一。卓越的安全和隱私雙重保障,將爲用戶帶來了更多的信心,也爲整個加密貨幣行業樹立新的典範。

您可以點擊鏈接跳轉Gate.io儲備金金前端頁麵,查看由Gate.io團隊利用此項目生成的證明。目前代碼已經公開在了Github。所有對於去信任化交易所、對zk-SNARK 和 MerkleTree 技術感興趣的朋友,無論是提出建議、報告bug,還是提交代碼,我們都歡迎參與到本項目中。

Автор: Gate learn
Перекладач: Sonia
Рецензент(-и): Wayne、KOWEI、Elisa、Ashley、Joyce
* Ця інформація не є фінансовою порадою чи будь-якою іншою рекомендацією, запропонованою чи схваленою Gate.io.
* Цю статтю заборонено відтворювати, передавати чи копіювати без посилання на Gate.io. Порушення є порушенням Закону про авторське право і може бути предметом судового розгляду.

技術教程:Gate io基於zk-SANRK技術的儲備金證明

進階Dec 11, 2023
作爲最早實施儲備金證明的交易所,Gate.io再次利用zk-SANRK技術對儲備金證明技術進行升級,本文將帶你利用Gate.io開源的技術,在自己的設備驗證交易所資産和自身資産的安全性。
技術教程:Gate io基於zk-SANRK技術的儲備金證明

引言

擁有1,300萬用戶的Gate.io深知資金安全的重要性,併在行業中率先採取了有效措施。Gate.io是最早實施儲備金證明的交易所之一,在2020年5月就進行了儲備金證明的披露。而2022年交易所FTX挪用用戶資産導緻流動性危機破産後,儲備金證明才作爲保障用戶資金安全、提高平颱信任度的解決方案被大衆熟知。就在最近,Gate.io宣布再次升級儲備金證明方案:引入zk-SNARK技術與Merkle Tree(默剋爾樹)技術結合,爲用戶帶來更加卓越的資産安全保護和隱私保護。

本文將帶你走進Gate.io儲備金證明的開髮過程,逐步在自己的設備上重現交易所的儲備金證明搭建過程。

背景知識

Merkle Tree 是哈希值的二叉樹,其中每個葉節點代錶一條數據或一條數據的哈希。它用於有效地驗證大量數據的完整性。通過將用戶數據加密後生成默剋爾樹是過去常用的儲備金證明方案,但這種方案的劣勢是其不能檢驗出負值賬戶(正常賬戶價值應該大於或等於0)且無法完整地保護用戶隱私。

zk-SNARK 是密碼學中的一項強大技術,我們將把所有用戶的存款放入一顆 Merkle 樹中,併用 zk-SNARK 來證明樹中所有的餘額都是非負的,且總和爲某個聲稱的值。如果交易所鏈上公開的資産大於該值,則可以證明該交易所有 100% 償還能力。

將 zk-SNARK 與 Merkle Tree 結合使用,可以實現衕時驗證數據的完整性和一緻性,還可以保護交易的隱私。證明者可以使用 zk-SNARK 證明他們知道一個滿足特定條件的 Merkle 證明,而無需透露證明的具體內容。這對於數字貨幣交易所來説,既可以證明他們有足夠的資金來滿足所有的債務,又可以保護平颱用戶隱私。

程序結構

Plaintext
- circuit    #電路設計
- client    #command 命令
- config    #配置文件
- global    #全局變量
- service
        - keygen_service    #生成zk密鑰的服務
        - prover_service    #生成proof數據
        - tool_service    #常用的工具
        - userproff_service    #生成user_proof數據
        - verify_service    #驗證服務
        - witness_service    #生成witness相關數據
- utils    #常用的function集合

準備工作

安裝數據庫

  1. Mysql : 存儲proof, user_proof以及witness
    Plaintext
    docker run -d --name zk-mysql -p 3306:3306 -e MYSQL_USER=zkroot -e MYSQL_PASSWORD=zkpasswd -e MYSQL_DATABASE=zkpos  -e MYSQL_ROOT_PASSWORD=zkpasswd mysql
    
  2. Redis : 分布式鎖
    Plaintext
    docker run -d --name zk-redis -p 6379:6379 redis
    
  3. Kvrocks : 存儲user account tree
    Plaintext
    docker run -d --name zk-kvrocks -p 6666:6666 apache/kvrocks
    
  4. 如果 kvrocks 安裝後連接失敗:
    方案1:可以嘗試修改 docker 內 /var/lib/kvrocks/kvrocks.conf 文件,修改爲 bind 0.0.0.0 併重新啟動實例。
    方案2:使用源碼安裝服務。

安裝Go環境

編譯程序需要使用 Go語言環境,可以根據繫統版本自行安裝 Download Go

導出交易所用戶資産數據

導出的交易所用戶資産.csv數據結構如下:

Plaintext
- rn    #序列
- id    #交易所的用戶唯一標識
- e_xtoken   #用戶xtoken equity,如 e_BTC
- d_xtoken   #用戶xtoken debt,如 d_BTC
- x_token     #用戶資産凈值,x_token  =  e_xtoken - d_xtoken
- xtoken_usdt_price   #xtoken的價格
- total_net_balance_usdt    #用戶所有的token usdt價值

具體可參考 ./example_data/example_users.csv

推薦繫統配置

正式環境建議不低於以下配置:

  • 128GB 內存
  • 32 核虛擬機
  • 50 GB 磁盤空間

配置文件

在正式環境生成zk密鑰時,Batch 變量推薦設置爲 864 ,錶示一批可以創建多少個用戶。數值越大,生成與 zk 密鑰和證明所需的時間就越長。當設置爲 864時,在 128GB 內存、32 核虛擬機中,生成 zk 相關密鑰大約需要 6 小時,生成一批 zk 證明需要 105 秒。

所以在調試階段,可以修改 utils/constants.go 中的 BatchCreateUserOpsCounts 修改爲 4,然後再進行重新編譯。但是在實際生産中還是建議這個參數爲 864

如果修改要修改 Batch,則需要變動的配置文件:

  • 修改 ./config/config.json
    "ZkKeyName": "./zkpor864" => "ZkKeyName": "./zkpor4"
  • 修改 ./config/cex_config.json
    "ZkKeyVKDirectoryAndPrefix": "./zkpor864" => "ZkKeyVKDirectoryAndPrefix": "./zkpor4"
  • 修改 ./utils/constants.go
    BatchCreateUserOpsCounts = 864 => BatchCreateUserOpsCounts = 4

幣種設置

  • 修改 ./utils/constants.go

幣種數量

AssetCounts = 350 => AssetCounts = 所需大小

AssetCounts 錶示交易所包含的 token 種類,實際數量不可低於設置的值。比如實際有420個,可修改爲500。考慮到內存占用,建議根據情況設置合理的值。

價格精度

AssetTypeForTwoDigits 字段含義爲 10^2 價格精度,如 BTTC、SHIB、LUNC、XEC、WIN、BIDR、SPELL、HOT、 DOGE。其餘的默認價格精度爲 10^8。

設置 witness 相關配置

witness 用於爲 prover 和 userproof 生成見證,config.json 配置如下 :

Plaintext
{
  "MysqlDataSource" : "zkroot:zkpasswd@tcp(127.0.0.1:3306)/zkpos?parseTime=true",  
  "DbSuffix": "202307",
  "UserDataFile": "./example_data/",
  "TreeDB": {
    "Driver": "redis",
    "Option": {
      "Addr": "127.0.0.1:6666"
    }
  },
  "Redis": {
    "Host": "127.0.0.1:6379",
    "Type": "node"
  },
  "ZkKeyName": "./zkpor864"
}
  • MysqlDataSource : Mysql數據庫鏈接
  • DbSuffix : Mysql生成的錶後綴, 比如填寫時間202307,就會生成witness202307,每次生成時必鬚修改
  • UserDataFile : 交易所導出的用戶資産文件目録,程序將讀取這個目録下所有的csv文件
  • TreeDB : kvrocks相關的配置
  • Redis : redis相關配置
  • ZkKeyName : zk密鑰所在目録以及前綴,如 zkpor864 則匹配所有文件名前綴爲 zkpor864.* 相關的文件
    DbSuffix字段是錶的後綴,每次都必鬚更改,如果是每個月生成一次,也可以按照時間202306,202307設置。

運行程序

將項目下載至本地,併開始編譯程序。

編譯程序

Plaintext
make build

如果你是在 Mac 電腦下需要編譯其他平颱二進製程序可以執行下麵命令:

  • 在 mac 編譯 linux: make build-linux.
  • 在 mac 編譯 windows: make build-windows

生成密鑰

Plaintext
./main keygen

keygen服務運行完成後,會在當前目録下生成幾個密鑰文件,如下:

zkpor864.ccs.ct.save \
zkpor864.ccs.save \
zkpor864.pk.A.save \
zkpor864.pk.B1.save \
zkpor864.pk.B2.save \
zkpor864.pk.E.save \
zkpor864.pk.K.save \
zkpor864.vk.save \
zkpor864.pk.Z.save

如果 Batch 設置爲 4 時,爲 zkpor4.*.save

該步驟運行時間較長,在設置爲 4 時,大緻運行數分鐘;設置爲 864 時,可達數個小時。

註意:

  • ./main keygen 命令生成的密鑰,可長久使用。如下個月需再生成資産驗證數據時,該zk密鑰依然可用。
  • 後續用戶驗證環節需要使用 zkpor864.vk.save文件,因此建議這批zk密鑰做備份妥善保存。

清空歷史 kvrocks 數據

如果之前運行過程序,在執行之前,需要先清理一下之前存在 kvrocks 裡麵的 account merkle key 數據,因爲每次都需要生成不衕的 account tree。

Plaintext
./main tool clean_kvrocks

註意:這個命令是清楚kvrocks裡麵所有數據,所以不要和其他程序共用一個kvrocks,待之前的數據清理完成之後再開始生成 proof。

啟動 witness 服務

Plaintext
./main witness

_運行完成後,會在 Mysql 數據庫生成 witness+後綴的錶(根據config.json中的DbSuffix),錶裡麵是按照批次 witness proof 數據,錶中數據將在後續的生成 zk proof 和 user proof 中髮揮作用

生成 zk proof

Prover 服務用於生成zk證明,支持併行運行。它從 mysql 內的 witness table 中讀取 witness。

運行以下命令生成 zk proof 數據:

Plaintext
./main prover

_該命令支持併線運行,需要將 main 文件與 zkpor864 等相關文件拷貝到其他機器,併確保config.json 文件配置相衕,這樣可以通過 redis 作爲分布式鎖衕時運行。

可以運行以下命令查詢查詢執行狀態:

Plaintext
./main tool check_prover_status

結束執行則返回。

Plaintext
Total witness item 50, Published item 0, Pending item 0, Finished item 50

確保所有的 witness item 都是 finished 狀態,就説明 prover 執行完畢。

_在執行完prover服務之後,Mysql數據庫裡麵會多一張 proof+後綴的錶(根據config.json中的DbSuffix),錶中的數據是需要公開給用戶,方便用戶後麵去驗證交易所資産,下麵在 verify 環節會具體説明

生成user proof

userproof 服務用於生成和持久化用戶merkle證明。

運行以下命令生成 user proof 數據:

Plaintext
./main userproof

性能:在 128GB 內存和 32 核虛擬機中每秒生成約 10k 個用戶的證明

_在運行完 userproof 命令後,會在 mysql 數據庫生成一張 userproof+後綴(根據config.json中的DbSuffix)的錶,這個錶裡麵的數據包含了用戶的資産信息,可以按需做權限配置。該錶需要開放給指定的用戶下載,用於做自身賬號資産證明,具體在下麵的 verify 環節會具體説明

提供驗證數據

這裡我們需要給用戶提供兩種驗證:

  • 驗證交易所的資産
  • 驗證用戶自己的資産
    我們需要提前編譯好不衕環節的二進製執行文件(mac ubuntu windows)提供給用戶下載,可參考 Release 附件。

驗證交易所資産所需數據與格式

驗證交易所資産除了提供給用戶二進製文件之外,還需要提供以下三個配置數據:

  1. 下載proof.csv
    我們提前把之前生成的proof錶導出成csv文件(需要包含錶頭),如 proof202307.csv 提供給用戶下載。

  2. zkpor864.vk.save
    我們需要提供給用戶之前生成的zk864的verify key文件。

  3. 交易所的資産
    上述 Proof 文件生成後,可以用下麵的命令查詢出根據交易所提供的用戶資産錶的彙總:

Plaintext
 ./main tool query_cex_assets
  1. 會得到如下返回:
Plaintext
 [{"TotalEquity":10049232946,"TotalDebt":0,"BasePrice":3960000000,"Symbol":"1inch","Index":0},{"TotalEquity":421836,"TotalDebt":0,"BasePrice":564000000000,"Symbol":"aave","Index":1},{"TotalEquity":0,"TotalDebt":0,"BasePrice":79800000,"Symbol":"ach","Index":2},{"TotalEquity":3040000,"TotalDebt":0,"BasePrice":25460000000,"Symbol":"acm","Index":3},{"TotalEquity":17700050162640,"TotalDebt":0,"BasePrice":2784000000,"Symbol":"ada","Index":4},{"TotalEquity":485400000,"TotalDebt":0,"BasePrice":1182000000,"Symbol":"adx","Index":5},{"TotalEquity":0,"TotalDebt":0,"BasePrice":907000000,"Symbol":"aergo","Index":6},{"TotalEquity":0,"TotalDebt":0,"BasePrice":2720000000,"Symbol":"agld","Index":7},{"TotalEquity":1969000000,"TotalDebt":0,"BasePrice":30500000,"Symbol":"akro","Index":8},{"TotalEquity":0,"TotalDebt":0,"BasePrice":141000000000,"Symbol":"alcx","Index":9},{"TotalEquity":15483340912,"TotalDebt":0,"BasePrice":1890000000,"Symbol":"algo","Index":10},{"TotalEquity":3187400,"TotalDebt":0,"BasePrice":11350000000,"Symbol":"alice","Index":11},{"TotalEquity":1760000,"TotalDebt":0,"BasePrice":2496000000,"Symbol":"alpaca","Index":12},{"TotalEquity":84596857600,"TotalDebt":0,"BasePrice":785000000,"Symbol":"alpha","Index":13},{"TotalEquity":3672090936,"TotalDebt":0,"BasePrice":20849000000,"Symbol":"alpine","Index":14},{"TotalEquity":198200000,"TotalDebt":0,"BasePrice":132600000,"Symbol":"amb","Index":15},{"TotalEquity":53800000,"TotalDebt":0,"BasePrice":32200000,"Symbol":"amp","Index":16},{"TotalEquity":3291606210,"TotalDebt":0,"BasePrice":340300000,"Symbol":"anc","Index":17},{"TotalEquity":192954000,"TotalDebt":0,"BasePrice":166000000,"Symbol":"ankr","Index":18},{"TotalEquity":2160000,"TotalDebt":0,"BasePrice":20940000000,"Symbol":"ant","Index":19},{"TotalEquity":5995002000,"TotalDebt":0,"BasePrice":40370000000,"Symbol":"ape","Index":20},{"TotalEquity":0,"TotalDebt":0,"BasePrice":11110000000,"Symbol":"api3","Index":21},{"TotalEquity":53728000,"TotalDebt":0,"BasePrice":38560000000,"Symbol":"apt","Index":22},{"TotalEquity":0,"TotalDebt":0,"BasePrice":68500000000,"Symbol":"ar","Index":23},{"TotalEquity":55400000,"TotalDebt":0,"BasePrice":667648400,"Symbol":"ardr","Index":24},{"TotalEquity":8320000,"TotalDebt":0,"BasePrice":266200000,"Symbol":"arpa","Index":25},{"TotalEquity":18820000,"TotalDebt":0,"BasePrice":401000000,"Symbol":"astr","Index":26},{"TotalEquity":13205405410,"TotalDebt":0,"BasePrice":934000000,"Symbol":"ata","Index":27},{"TotalEquity":7016230960,"TotalDebt":0,"BasePrice":102450000000,"Symbol":"atom","Index":28},{"TotalEquity":2619441828,"TotalDebt":0,"BasePrice":40900000000,"Symbol":"auction","Index":29},{"TotalEquity":9640198,"TotalDebt":0,"BasePrice":1432000000,"Symbol":"audio","Index":30},{"TotalEquity":0,"TotalDebt":0,"BasePrice":2306000000000,"Symbol":"auto","Index":31},{"TotalEquity":886400,"TotalDebt":0,"BasePrice":5390000000,"Symbol":"ava","Index":32},{"TotalEquity":2883562350,"TotalDebt":0,"BasePrice":117800000000,"Symbol":"avax","Index":33},{"TotalEquity":1864300912,"TotalDebt":0,"BasePrice":68200000000,"Symbol":"axs","Index":34},{"TotalEquity":843870,"TotalDebt":0,"BasePrice":23700000000,"Symbol":"badger","Index":35},{"TotalEquity":114869291528,"TotalDebt":0,"BasePrice":1379000000,"Symbol":"bake","Index":36},{"TotalEquity":95400,"TotalDebt":0,"BasePrice":54110000000,"Symbol":"bal","Index":37},{"TotalEquity":123113880,"TotalDebt":0,"BasePrice":14610000000,"Symbol":"band","Index":38},{"TotalEquity":0,"TotalDebt":0,"BasePrice":37100000000,"Symbol":"bar","Index":39},{"TotalEquity":73090049578,"TotalDebt":0,"BasePrice":1774000000,"Symbol":"bat","Index":40},{"TotalEquity":28891300,"TotalDebt":0,"BasePrice":1017000000000,"Symbol":"bch","Index":41},{"TotalEquity":19889623294,"TotalDebt":0,"BasePrice":4130000000,"Symbol":"bel","Index":42},{"TotalEquity":374840602180,"TotalDebt":0,"BasePrice":699700000,"Symbol":"beta","Index":43},{"TotalEquity":270294580,"TotalDebt":0,"BasePrice":12290900000000,"Symbol":"beth","Index":44},{"TotalEquity":35692901600,"TotalDebt":0,"BasePrice":2730000000,"Symbol":"bico","Index":45},{"TotalEquity":0,"TotalDebt":0,"BasePrice":639000,"Symbol":"bidr","Index":46},{"TotalEquity":240200000,"TotalDebt":0,"BasePrice":538000000,"Symbol":"blz","Index":47},{"TotalEquity":83614634622,"TotalDebt":0,"BasePrice":2599000000000,"Symbol":"bnb","Index":48},{"TotalEquity":0,"TotalDebt":0,"BasePrice":3490000000,"Symbol":"bnt","Index":49},{"TotalEquity":1560,"TotalDebt":0,"BasePrice":592000000000,"Symbol":"bnx","Index":50},{"TotalEquity":2076000,"TotalDebt":0,"BasePrice":32630000000,"Symbol":"bond","Index":51},{"TotalEquity":44699589660,"TotalDebt":0,"BasePrice":1768000000,"Symbol":"bsw","Index":52},{"TotalEquity":291716078,"TotalDebt":0,"BasePrice":169453900000000,"Symbol":"btc","Index":53},{"TotalEquity":15500321300000000,"TotalDebt":0,"BasePrice":6300,"Symbol":"bttc","Index":54},{"TotalEquity":70771546756,"TotalDebt":0,"BasePrice":5240000000,"Symbol":"burger","Index":55},{"TotalEquity":12058907297354,"TotalDebt":1476223055432,"BasePrice":10000000000,"Symbol":"busd","Index":56},{"TotalEquity":34716440000,"TotalDebt":0,"BasePrice":1647000000,"Symbol":"c98","Index":57},{"TotalEquity":1541723702,"TotalDebt":0,"BasePrice":33140000000,"Symbol":"cake","Index":58},{"TotalEquity":2112000,"TotalDebt":0,"BasePrice":5200000000,"Symbol":"celo","Index":59},{"TotalEquity":317091540000,"TotalDebt":0,"BasePrice":101000000,"Symbol":"celr","Index":60},{"TotalEquity":137111365560,"TotalDebt":0,"BasePrice":228000000,"Symbol":"cfx","Index":61},{"TotalEquity":0,"TotalDebt":0,"BasePrice":1820000000,"Symbol":"chess","Index":62},{"TotalEquity":258540000,"TotalDebt":0,"BasePrice":1140000000,"Symbol":"chr","Index":63},{"TotalEquity":289172288882,"TotalDebt":0,"BasePrice":1099000000,"Symbol":"chz","Index":64},{"TotalEquity":0,"TotalDebt":0,"BasePrice":25100000,"Symbol":"ckb","Index":65},{"TotalEquity":1851135024806,"TotalDebt":0,"BasePrice":535500000,"Symbol":"clv","Index":66},{"TotalEquity":155010000,"TotalDebt":0,"BasePrice":5202000000,"Symbol":"cocos","Index":67},{"TotalEquity":52093390,"TotalDebt":0,"BasePrice":335800000000,"Symbol":"comp","Index":68},{"TotalEquity":13991592000,"TotalDebt":0,"BasePrice":44500000,"Symbol":"cos","Index":69},{"TotalEquity":51240788068,"TotalDebt":0,"BasePrice":557000000,"Symbol":"coti","Index":70},{"TotalEquity":0,"TotalDebt":0,"BasePrice":107900000000,"Symbol":"cream","Index":71},{"TotalEquity":15940224,"TotalDebt":0,"BasePrice":5470000000,"Symbol":"crv","Index":72},{"TotalEquity":2336000,"TotalDebt":0,"BasePrice":7450000000,"Symbol":"ctk","Index":73},{"TotalEquity":88860000,"TotalDebt":0,"BasePrice":1059000000,"Symbol":"ctsi","Index":74},{"TotalEquity":440400000,"TotalDebt":0,"BasePrice":1763000000,"Symbol":"ctxc","Index":75},{"TotalEquity":0,"TotalDebt":0,"BasePrice":3375000000,"Symbol":"cvp","Index":76},{"TotalEquity":176202,"TotalDebt":0,"BasePrice":30810000000,"Symbol":"cvx","Index":77},{"TotalEquity":0,"TotalDebt":0,"BasePrice":9999000100,"Symbol":"dai","Index":78},{"TotalEquity":90702266836,"TotalDebt":0,"BasePrice":1293500000,"Symbol":"dar","Index":79},{"TotalEquity":29386961406,"TotalDebt":0,"BasePrice":458300000000,"Symbol":"dash","Index":80},{"TotalEquity":1628888000,"TotalDebt":0,"BasePrice":235500000,"Symbol":"data","Index":81},{"TotalEquity":0,"TotalDebt":0,"BasePrice":186229836100,"Symbol":"dcr","Index":82},{"TotalEquity":0,"TotalDebt":0,"BasePrice":15920000000,"Symbol":"dego","Index":83},{"TotalEquity":26105549312822,"TotalDebt":0,"BasePrice":6830000,"Symbol":"dent","Index":84},{"TotalEquity":670658000,"TotalDebt":0,"BasePrice":24000000000,"Symbol":"dexe","Index":85},{"TotalEquity":517372774000,"TotalDebt":0,"BasePrice":82200000,"Symbol":"dgb","Index":86},{"TotalEquity":1120000,"TotalDebt":0,"BasePrice":2970000000,"Symbol":"dia","Index":87},{"TotalEquity":0,"TotalDebt":0,"BasePrice":151800000,"Symbol":"dock","Index":88},{"TotalEquity":19453393384,"TotalDebt":0,"BasePrice":987000000,"Symbol":"dodo","Index":89},{"TotalEquity":25526548451614,"TotalDebt":0,"BasePrice":723900000,"Symbol":"doge","Index":90},{"TotalEquity":466049240950,"TotalDebt":0,"BasePrice":46820000000,"Symbol":"dot","Index":91},{"TotalEquity":69200000,"TotalDebt":0,"BasePrice":3138000000,"Symbol":"drep","Index":92},{"TotalEquity":0,"TotalDebt":0,"BasePrice":870000000,"Symbol":"dusk","Index":93},{"TotalEquity":45675816000,"TotalDebt":0,"BasePrice":12120000000,"Symbol":"dydx","Index":94},{"TotalEquity":241920370,"TotalDebt":0,"BasePrice":343400000000,"Symbol":"egld","Index":95},{"TotalEquity":3640000,"TotalDebt":0,"BasePrice":1691000000,"Symbol":"elf","Index":96},{"TotalEquity":200008070,"TotalDebt":0,"BasePrice":2556000000,"Symbol":"enj","Index":97},{"TotalEquity":836000,"TotalDebt":0,"BasePrice":115500000000,"Symbol":"ens","Index":98},{"TotalEquity":23489390223668,"TotalDebt":0,"BasePrice":8960000000,"Symbol":"eos","Index":99},{"TotalEquity":83358943947200,"TotalDebt":0,"BasePrice":2960000,"Symbol":"epx","Index":100},{"TotalEquity":1539180000,"TotalDebt":0,"BasePrice":17540000000,"Symbol":"ern","Index":101},{"TotalEquity":48056621250,"TotalDebt":0,"BasePrice":204100000000,"Symbol":"etc","Index":102},{"TotalEquity":28478224392,"TotalDebt":0,"BasePrice":12688000000000,"Symbol":"eth","Index":103},{"TotalEquity":21790805772,"TotalDebt":0,"BasePrice":10641000000,"Symbol":"eur","Index":104},{"TotalEquity":196200,"TotalDebt":0,"BasePrice":307000000000,"Symbol":"farm","Index":105},{"TotalEquity":31040000,"TotalDebt":0,"BasePrice":1240000000,"Symbol":"fet","Index":106},{"TotalEquity":26460000,"TotalDebt":0,"BasePrice":3354000000,"Symbol":"fida","Index":107},{"TotalEquity":5539231876,"TotalDebt":0,"BasePrice":33380000000,"Symbol":"fil","Index":108},{"TotalEquity":152000000,"TotalDebt":0,"BasePrice":275000000,"Symbol":"fio","Index":109},{"TotalEquity":1014252612,"TotalDebt":0,"BasePrice":16540000000,"Symbol":"firo","Index":110},{"TotalEquity":0,"TotalDebt":0,"BasePrice":3313000000,"Symbol":"fis","Index":111},{"TotalEquity":0,"TotalDebt":0,"BasePrice":765931600,"Symbol":"flm","Index":112},{"TotalEquity":3688000,"TotalDebt":0,"BasePrice":6990000000,"Symbol":"flow","Index":113},{"TotalEquity":0,"TotalDebt":0,"BasePrice":5090000000,"Symbol":"flux","Index":114},{"TotalEquity":0,"TotalDebt":0,"BasePrice":162500000,"Symbol":"for","Index":115},{"TotalEquity":80000,"TotalDebt":0,"BasePrice":29400000000,"Symbol":"forth","Index":116},{"TotalEquity":14430200000,"TotalDebt":0,"BasePrice":1808000000,"Symbol":"front","Index":117},{"TotalEquity":26629480000,"TotalDebt":0,"BasePrice":2211000000,"Symbol":"ftm","Index":118},{"TotalEquity":16207428000,"TotalDebt":0,"BasePrice":9125000000,"Symbol":"ftt","Index":119},{"TotalEquity":679597613272,"TotalDebt":0,"BasePrice":61663700,"Symbol":"fun","Index":120},{"TotalEquity":0,"TotalDebt":0,"BasePrice":51410000000,"Symbol":"fxs","Index":121},{"TotalEquity":4110633550,"TotalDebt":0,"BasePrice":11540000000,"Symbol":"gal","Index":122},{"TotalEquity":2551466375170,"TotalDebt":0,"BasePrice":234700000,"Symbol":"gala","Index":123},{"TotalEquity":1252940134,"TotalDebt":0,"BasePrice":20260000000,"Symbol":"gas","Index":124},{"TotalEquity":0,"TotalDebt":0,"BasePrice":1850000000,"Symbol":"glm","Index":125},{"TotalEquity":25058958996,"TotalDebt":0,"BasePrice":3195000000,"Symbol":"glmr","Index":126},{"TotalEquity":443980786672,"TotalDebt":0,"BasePrice":2588000000,"Symbol":"gmt","Index":127},{"TotalEquity":160000,"TotalDebt":0,"BasePrice":417300000000,"Symbol":"gmx","Index":128},{"TotalEquity":178800,"TotalDebt":0,"BasePrice":878736379100,"Symbol":"gno","Index":129},{"TotalEquity":6828000,"TotalDebt":0,"BasePrice":620000000,"Symbol":"grt","Index":130},{"TotalEquity":20784000,"TotalDebt":0,"BasePrice":13340000000,"Symbol":"gtc","Index":131},{"TotalEquity":94280000,"TotalDebt":0,"BasePrice":1494000000,"Symbol":"hard","Index":132},{"TotalEquity":336206273140,"TotalDebt":0,"BasePrice":391000000,"Symbol":"hbar","Index":133},{"TotalEquity":1791317190,"TotalDebt":0,"BasePrice":8870000000,"Symbol":"high","Index":134},{"TotalEquity":6485637600,"TotalDebt":0,"BasePrice":2700000000,"Symbol":"hive","Index":135},{"TotalEquity":1956144,"TotalDebt":0,"BasePrice":18400000000,"Symbol":"hnt","Index":136},{"TotalEquity":9587039140000,"TotalDebt":0,"BasePrice":14820000,"Symbol":"hot","Index":137},{"TotalEquity":223895102366,"TotalDebt":0,"BasePrice":38980000000,"Symbol":"icp","Index":138},{"TotalEquity":52168047570,"TotalDebt":0,"BasePrice":1516000000,"Symbol":"icx","Index":139},{"TotalEquity":15480000,"TotalDebt":0,"BasePrice":388000000,"Symbol":"idex","Index":140},{"TotalEquity":8400000,"TotalDebt":0,"BasePrice":388700000000,"Symbol":"ilv","Index":141},{"TotalEquity":12686368000,"TotalDebt":0,"BasePrice":4230000000,"Symbol":"imx","Index":142},{"TotalEquity":139990936000,"TotalDebt":0,"BasePrice":13680000000,"Symbol":"inj","Index":143},{"TotalEquity":69430091021436,"TotalDebt":0,"BasePrice":72500000,"Symbol":"iost","Index":144},{"TotalEquity":71259628200,"TotalDebt":0,"BasePrice":1823000000,"Symbol":"iota","Index":145},{"TotalEquity":428000000,"TotalDebt":0,"BasePrice":221500000,"Symbol":"iotx","Index":146},{"TotalEquity":858126200,"TotalDebt":0,"BasePrice":43200000,"Symbol":"iq","Index":147},{"TotalEquity":8680000,"TotalDebt":0,"BasePrice":132174000,"Symbol":"iris","Index":148},{"TotalEquity":1889177748140,"TotalDebt":0,"BasePrice":37600000,"Symbol":"jasmy","Index":149},{"TotalEquity":2000,"TotalDebt":0,"BasePrice":1416000000,"Symbol":"joe","Index":150},{"TotalEquity":927921956,"TotalDebt":0,"BasePrice":201400000,"Symbol":"jst","Index":151},{"TotalEquity":560000,"TotalDebt":0,"BasePrice":6590000000,"Symbol":"kava","Index":152},{"TotalEquity":30527442000,"TotalDebt":0,"BasePrice":9480000000,"Symbol":"kda","Index":153},{"TotalEquity":7587760000,"TotalDebt":0,"BasePrice":29350000,"Symbol":"key","Index":154},{"TotalEquity":372181704,"TotalDebt":0,"BasePrice":1613000000,"Symbol":"klay","Index":155},{"TotalEquity":81600000,"TotalDebt":0,"BasePrice":1904661800,"Symbol":"kmd","Index":156},{"TotalEquity":493317080,"TotalDebt":0,"BasePrice":4940000000,"Symbol":"knc","Index":157},{"TotalEquity":1700000,"TotalDebt":0,"BasePrice":621600000000,"Symbol":"kp3r","Index":158},{"TotalEquity":27180,"TotalDebt":0,"BasePrice":250100000000,"Symbol":"ksm","Index":159},{"TotalEquity":1656679204,"TotalDebt":0,"BasePrice":30978000000,"Symbol":"lazio","Index":160},{"TotalEquity":295510852208,"TotalDebt":0,"BasePrice":15200000000,"Symbol":"ldo","Index":161},{"TotalEquity":1158728143570,"TotalDebt":0,"BasePrice":17230000,"Symbol":"lever","Index":162},{"TotalEquity":6505365672842,"TotalDebt":0,"BasePrice":52690000,"Symbol":"lina","Index":163},{"TotalEquity":8162369516,"TotalDebt":0,"BasePrice":57120000000,"Symbol":"link","Index":164},{"TotalEquity":95484000,"TotalDebt":0,"BasePrice":7220000000,"Symbol":"lit","Index":165},{"TotalEquity":12682220,"TotalDebt":0,"BasePrice":3632000000,"Symbol":"loka","Index":166},{"TotalEquity":0,"TotalDebt":0,"BasePrice":409400000,"Symbol":"loom","Index":167},{"TotalEquity":0,"TotalDebt":0,"BasePrice":44400000000,"Symbol":"lpt","Index":168},{"TotalEquity":10715077402,"TotalDebt":0,"BasePrice":2063000000,"Symbol":"lrc","Index":169},{"TotalEquity":8050236298,"TotalDebt":0,"BasePrice":7240000000,"Symbol":"lsk","Index":170},{"TotalEquity":1122426768,"TotalDebt":0,"BasePrice":758900000000,"Symbol":"ltc","Index":171},{"TotalEquity":22654000,"TotalDebt":0,"BasePrice":710000000,"Symbol":"lto","Index":172},{"TotalEquity":16580624988,"TotalDebt":0,"BasePrice":13251000000,"Symbol":"luna","Index":173},{"TotalEquity":1705595428000000,"TotalDebt":0,"BasePrice":1560500,"Symbol":"lunc","Index":174},{"TotalEquity":0,"TotalDebt":0,"BasePrice":4759000000,"Symbol":"magic","Index":175},{"TotalEquity":77632636722,"TotalDebt":0,"BasePrice":3278000000,"Symbol":"mana","Index":176},{"TotalEquity":1990776000,"TotalDebt":0,"BasePrice":23850000000,"Symbol":"mask","Index":177},{"TotalEquity":1076925578756,"TotalDebt":0,"BasePrice":7989000000,"Symbol":"matic","Index":178},{"TotalEquity":2785908800000,"TotalDebt":0,"BasePrice":23690000,"Symbol":"mbl","Index":179},{"TotalEquity":934922304,"TotalDebt":0,"BasePrice":3850000000,"Symbol":"mbox","Index":180},{"TotalEquity":13377446308,"TotalDebt":0,"BasePrice":2670000000,"Symbol":"mc","Index":181},{"TotalEquity":258144000,"TotalDebt":0,"BasePrice":201100000,"Symbol":"mdt","Index":182},{"TotalEquity":3081330908,"TotalDebt":0,"BasePrice":716000000,"Symbol":"mdx","Index":183},{"TotalEquity":32512116000,"TotalDebt":0,"BasePrice":4500000000,"Symbol":"mina","Index":184},{"TotalEquity":12110,"TotalDebt":0,"BasePrice":5400000000000,"Symbol":"mkr","Index":185},{"TotalEquity":0,"TotalDebt":0,"BasePrice":194100000000,"Symbol":"mln","Index":186},{"TotalEquity":132208000000,"TotalDebt":0,"BasePrice":8660000000,"Symbol":"mob","Index":187},{"TotalEquity":262072600,"TotalDebt":0,"BasePrice":63100000000,"Symbol":"movr","Index":188},{"TotalEquity":3096000,"TotalDebt":0,"BasePrice":7020000000,"Symbol":"mtl","Index":189},{"TotalEquity":5615144716,"TotalDebt":0,"BasePrice":15900000000,"Symbol":"near","Index":190},{"TotalEquity":6048000,"TotalDebt":0,"BasePrice":13000000000,"Symbol":"nebl","Index":191},{"TotalEquity":484605847032,"TotalDebt":0,"BasePrice":65600000000,"Symbol":"neo","Index":192},{"TotalEquity":0,"TotalDebt":0,"BasePrice":7260000000,"Symbol":"nexo","Index":193},{"TotalEquity":2013960000,"TotalDebt":0,"BasePrice":862000000,"Symbol":"nkn","Index":194},{"TotalEquity":39400,"TotalDebt":0,"BasePrice":129300000000,"Symbol":"nmr","Index":195},{"TotalEquity":99676000,"TotalDebt":0,"BasePrice":1901000000,"Symbol":"nuls","Index":196},{"TotalEquity":1063446,"TotalDebt":0,"BasePrice":1906000000,"Symbol":"ocean","Index":197},{"TotalEquity":380000,"TotalDebt":0,"BasePrice":23960000000,"Symbol":"og","Index":198},{"TotalEquity":30491752,"TotalDebt":0,"BasePrice":906000000,"Symbol":"ogn","Index":199},{"TotalEquity":117360000,"TotalDebt":0,"BasePrice":289000000,"Symbol":"om","Index":200},{"TotalEquity":213392241236,"TotalDebt":0,"BasePrice":10630000000,"Symbol":"omg","Index":201},{"TotalEquity":561009012134,"TotalDebt":0,"BasePrice":106700000,"Symbol":"one","Index":202},{"TotalEquity":64315053780,"TotalDebt":0,"BasePrice":2177482600,"Symbol":"ong","Index":203},{"TotalEquity":4682530773048,"TotalDebt":0,"BasePrice":1609000000,"Symbol":"ont","Index":204},{"TotalEquity":893960000,"TotalDebt":0,"BasePrice":30800000,"Symbol":"ooki","Index":205},{"TotalEquity":383291200,"TotalDebt":0,"BasePrice":10840000000,"Symbol":"op","Index":206},{"TotalEquity":11568582000,"TotalDebt":0,"BasePrice":7680000000,"Symbol":"orn","Index":207},{"TotalEquity":0,"TotalDebt":0,"BasePrice":7240000000,"Symbol":"osmo","Index":208},{"TotalEquity":178748000,"TotalDebt":0,"BasePrice":687000000,"Symbol":"oxt","Index":209},{"TotalEquity":0,"TotalDebt":0,"BasePrice":18530000000000,"Symbol":"paxg","Index":210},{"TotalEquity":21441646500892,"TotalDebt":0,"BasePrice":215100000,"Symbol":"people","Index":211},{"TotalEquity":1648337620,"TotalDebt":0,"BasePrice":3831300000,"Symbol":"perp","Index":212},{"TotalEquity":0,"TotalDebt":0,"BasePrice":1112000000,"Symbol":"pha","Index":213},{"TotalEquity":35466658000,"TotalDebt":0,"BasePrice":5237000000,"Symbol":"phb","Index":214},{"TotalEquity":28791180000,"TotalDebt":0,"BasePrice":1430000000,"Symbol":"pla","Index":215},{"TotalEquity":175000000,"TotalDebt":0,"BasePrice":1358592400,"Symbol":"pnt","Index":216},{"TotalEquity":3494881620000,"TotalDebt":0,"BasePrice":3570000000,"Symbol":"pols","Index":217},{"TotalEquity":74823148144,"TotalDebt":0,"BasePrice":1234000000,"Symbol":"polyx","Index":218},{"TotalEquity":493224786192,"TotalDebt":0,"BasePrice":77900000,"Symbol":"pond","Index":219},{"TotalEquity":72399098108,"TotalDebt":0,"BasePrice":25696000000,"Symbol":"porto","Index":220},{"TotalEquity":21005000000,"TotalDebt":0,"BasePrice":1273000000,"Symbol":"powr","Index":221},{"TotalEquity":0,"TotalDebt":0,"BasePrice":39200000000,"Symbol":"prom","Index":222},{"TotalEquity":0,"TotalDebt":0,"BasePrice":4230000000,"Symbol":"pros","Index":223},{"TotalEquity":2246200,"TotalDebt":0,"BasePrice":56400000000,"Symbol":"psg","Index":224},{"TotalEquity":57372118540,"TotalDebt":0,"BasePrice":3240000000,"Symbol":"pundix","Index":225},{"TotalEquity":172800,"TotalDebt":0,"BasePrice":29800000000,"Symbol":"pyr","Index":226},{"TotalEquity":152556846850,"TotalDebt":0,"BasePrice":65200000,"Symbol":"qi","Index":227},{"TotalEquity":703867724,"TotalDebt":0,"BasePrice":1118000000000,"Symbol":"qnt","Index":228},{"TotalEquity":209070344,"TotalDebt":0,"BasePrice":19610000000,"Symbol":"qtum","Index":229},{"TotalEquity":107668,"TotalDebt":0,"BasePrice":464000000000,"Symbol":"quick","Index":230},{"TotalEquity":15960000,"TotalDebt":0,"BasePrice":15330000000,"Symbol":"rad","Index":231},{"TotalEquity":0,"TotalDebt":0,"BasePrice":1007000000,"Symbol":"rare","Index":232},{"TotalEquity":20536980000,"TotalDebt":0,"BasePrice":1502000000,"Symbol":"ray","Index":233},{"TotalEquity":2330100436820,"TotalDebt":0,"BasePrice":24230000,"Symbol":"reef","Index":234},{"TotalEquity":692913057840,"TotalDebt":0,"BasePrice":225000000,"Symbol":"rei","Index":235},{"TotalEquity":0,"TotalDebt":0,"BasePrice":630420000,"Symbol":"ren","Index":236},{"TotalEquity":223600190,"TotalDebt":0,"BasePrice":872000000,"Symbol":"req","Index":237},{"TotalEquity":18748000,"TotalDebt":0,"BasePrice":12427749000,"Symbol":"rlc","Index":238},{"TotalEquity":376358800,"TotalDebt":0,"BasePrice":4200000000,"Symbol":"rndr","Index":239},{"TotalEquity":2094224000,"TotalDebt":0,"BasePrice":370400000,"Symbol":"rose","Index":240},{"TotalEquity":119940000,"TotalDebt":0,"BasePrice":31690000,"Symbol":"rsr","Index":241},{"TotalEquity":269393997600,"TotalDebt":0,"BasePrice":13750000000,"Symbol":"rune","Index":242},{"TotalEquity":539117133400,"TotalDebt":0,"BasePrice":203000000,"Symbol":"rvn","Index":243},{"TotalEquity":154754594184,"TotalDebt":0,"BasePrice":4309000000,"Symbol":"sand","Index":244},{"TotalEquity":2790903662,"TotalDebt":0,"BasePrice":44700000000,"Symbol":"santos","Index":245},{"TotalEquity":353200000,"TotalDebt":0,"BasePrice":23600000,"Symbol":"sc","Index":246},{"TotalEquity":0,"TotalDebt":0,"BasePrice":6390000000,"Symbol":"scrt","Index":247},{"TotalEquity":493481218,"TotalDebt":0,"BasePrice":4033000000,"Symbol":"sfp","Index":248},{"TotalEquity":92811810818000000,"TotalDebt":0,"BasePrice":84300,"Symbol":"shib","Index":249},{"TotalEquity":338633610064,"TotalDebt":0,"BasePrice":227300000,"Symbol":"skl","Index":250},{"TotalEquity":17412372632502,"TotalDebt":0,"BasePrice":20900000,"Symbol":"slp","Index":251},{"TotalEquity":19400000,"TotalDebt":0,"BasePrice":4858000000,"Symbol":"snm","Index":252},{"TotalEquity":12518184,"TotalDebt":0,"BasePrice":16280000000,"Symbol":"snx","Index":253},{"TotalEquity":7697220542,"TotalDebt":0,"BasePrice":135100000000,"Symbol":"sol","Index":254},{"TotalEquity":43400244636,"TotalDebt":0,"BasePrice":5522000,"Symbol":"spell","Index":255},{"TotalEquity":145168230000,"TotalDebt":0,"BasePrice":1567800000,"Symbol":"srm","Index":256},{"TotalEquity":0,"TotalDebt":0,"BasePrice":3544000000,"Symbol":"stg","Index":257},{"TotalEquity":1375707000000,"TotalDebt":0,"BasePrice":38110000,"Symbol":"stmx","Index":258},{"TotalEquity":8912432530,"TotalDebt":0,"BasePrice":2582000000,"Symbol":"storj","Index":259},{"TotalEquity":0,"TotalDebt":0,"BasePrice":275900000,"Symbol":"stpt","Index":260},{"TotalEquity":14047500,"TotalDebt":0,"BasePrice":4050000000,"Symbol":"strax","Index":261},{"TotalEquity":1423000,"TotalDebt":0,"BasePrice":2190000000,"Symbol":"stx","Index":262},{"TotalEquity":326978131392,"TotalDebt":0,"BasePrice":50400000,"Symbol":"sun","Index":263},{"TotalEquity":30595425600,"TotalDebt":0,"BasePrice":867000000,"Symbol":"super","Index":264},{"TotalEquity":128556304136,"TotalDebt":0,"BasePrice":10420000000,"Symbol":"sushi","Index":265},{"TotalEquity":1059292108408,"TotalDebt":0,"BasePrice":2130000000,"Symbol":"sxp","Index":266},{"TotalEquity":130320000,"TotalDebt":0,"BasePrice":1017000000,"Symbol":"sys","Index":267},{"TotalEquity":5172000,"TotalDebt":0,"BasePrice":163000000,"Symbol":"t","Index":268},{"TotalEquity":1030910000,"TotalDebt":0,"BasePrice":327000000,"Symbol":"tfuel","Index":269},{"TotalEquity":160460684218,"TotalDebt":0,"BasePrice":7590000000,"Symbol":"theta","Index":270},{"TotalEquity":198770314330,"TotalDebt":0,"BasePrice":2292000000,"Symbol":"tko","Index":271},{"TotalEquity":256387034218,"TotalDebt":0,"BasePrice":128600000,"Symbol":"tlm","Index":272},{"TotalEquity":2508400,"TotalDebt":0,"BasePrice":2762000000,"Symbol":"tomo","Index":273},{"TotalEquity":9400,"TotalDebt":0,"BasePrice":124800000000,"Symbol":"trb","Index":274},{"TotalEquity":33800000,"TotalDebt":0,"BasePrice":2070797400,"Symbol":"tribe","Index":275},{"TotalEquity":46160000,"TotalDebt":0,"BasePrice":25980000,"Symbol":"troy","Index":276},{"TotalEquity":0,"TotalDebt":0,"BasePrice":288071600,"Symbol":"tru","Index":277},{"TotalEquity":2043669562480,"TotalDebt":0,"BasePrice":524600000,"Symbol":"trx","Index":278},{"TotalEquity":63678800000,"TotalDebt":0,"BasePrice":301000000,"Symbol":"tvk","Index":279},{"TotalEquity":0,"TotalDebt":0,"BasePrice":14100000000,"Symbol":"twt","Index":280},{"TotalEquity":13980000,"TotalDebt":0,"BasePrice":15400000000,"Symbol":"uma","Index":281},{"TotalEquity":19120000,"TotalDebt":0,"BasePrice":39360000000,"Symbol":"unfi","Index":282},{"TotalEquity":11981756100,"TotalDebt":0,"BasePrice":55220000000,"Symbol":"uni","Index":283},{"TotalEquity":0,"TotalDebt":0,"BasePrice":10000650400,"Symbol":"usdc","Index":284},{"TotalEquity":12876907115652,"TotalDebt":0,"BasePrice":9997000900,"Symbol":"usdt","Index":285},{"TotalEquity":220063518946,"TotalDebt":0,"BasePrice":203321700,"Symbol":"ustc","Index":286},{"TotalEquity":0,"TotalDebt":0,"BasePrice":777000000,"Symbol":"utk","Index":287},{"TotalEquity":7430929587566,"TotalDebt":0,"BasePrice":164100000,"Symbol":"vet","Index":288},{"TotalEquity":169058297966,"TotalDebt":0,"BasePrice":694900000,"Symbol":"vib","Index":289},{"TotalEquity":252046634,"TotalDebt":0,"BasePrice":195000000,"Symbol":"vite","Index":290},{"TotalEquity":25254109536,"TotalDebt":0,"BasePrice":1671000000,"Symbol":"voxel","Index":291},{"TotalEquity":5153547313742,"TotalDebt":0,"BasePrice":9237200,"Symbol":"vtho","Index":292},{"TotalEquity":17493828000,"TotalDebt":0,"BasePrice":1658321600,"Symbol":"wan","Index":293},{"TotalEquity":2852616,"TotalDebt":0,"BasePrice":14130000000,"Symbol":"waves","Index":294},{"TotalEquity":20000180,"TotalDebt":0,"BasePrice":440000000,"Symbol":"waxp","Index":295},{"TotalEquity":24776160000000,"TotalDebt":0,"BasePrice":738000,"Symbol":"win","Index":296},{"TotalEquity":2370200,"TotalDebt":0,"BasePrice":52100000000,"Symbol":"wing","Index":297},{"TotalEquity":0,"TotalDebt":0,"BasePrice":80975707300,"Symbol":"wnxm","Index":298},{"TotalEquity":75262779600,"TotalDebt":0,"BasePrice":1347000000,"Symbol":"woo","Index":299},{"TotalEquity":415631596070,"TotalDebt":0,"BasePrice":1401000000,"Symbol":"wrx","Index":300},{"TotalEquity":183890000,"TotalDebt":0,"BasePrice":1916523600,"Symbol":"wtc","Index":301},{"TotalEquity":172906064000000,"TotalDebt":0,"BasePrice":246700,"Symbol":"xec","Index":302},{"TotalEquity":129072400,"TotalDebt":0,"BasePrice":291912400,"Symbol":"xem","Index":303},{"TotalEquity":152986398800,"TotalDebt":0,"BasePrice":751000000,"Symbol":"xlm","Index":304},{"TotalEquity":109317164,"TotalDebt":0,"BasePrice":1548000000000,"Symbol":"xmr","Index":305},{"TotalEquity":1954309930640,"TotalDebt":0,"BasePrice":3442000000,"Symbol":"xrp","Index":306},{"TotalEquity":388360923948,"TotalDebt":0,"BasePrice":7720000000,"Symbol":"xtz","Index":307},{"TotalEquity":45916405132400,"TotalDebt":0,"BasePrice":27200000,"Symbol":"xvg","Index":308},{"TotalEquity":1725600,"TotalDebt":0,"BasePrice":42900000000,"Symbol":"xvs","Index":309},{"TotalEquity":1940,"TotalDebt":0,"BasePrice":54420000000000,"Symbol":"yfi","Index":310},{"TotalEquity":393918000,"TotalDebt":0,"BasePrice":1749000000,"Symbol":"ygg","Index":311},{"TotalEquity":4124782260,"TotalDebt":0,"BasePrice":414000000000,"Symbol":"zec","Index":312},{"TotalEquity":1900092,"TotalDebt":0,"BasePrice":84900000000,"Symbol":"zen","Index":313},{"TotalEquity":2075635646560,"TotalDebt":0,"BasePrice":174100000,"Symbol":"zil","Index":314},{"TotalEquity":119194400,"TotalDebt":0,"BasePrice":1603000000,"Symbol":"zrx","Index":315}]
  1. 每次執行完生成 proof 數據之後,都需要查詢一次 cex assets,然後把這個數據保存下來,該數據將用於下麵的 cex_config.jsonCexAssetsInfo 字段中。
    註意:這裡的 proof.csv 文件與上述保存的資産證明數據應衕一批次,否則會出現驗證失敗的問題

配置文件

cex_config.json 爲驗證交易所資産的配置文件:

Plaintext
{
  "ProofCsv": "./config/proof.csv",
  "ZkKeyVKDirectoryAndPrefix": "./zkpor864",
  "CexAssetsInfo": [{"TotalEquity":10049232946,"TotalDebt":0,"BasePrice":3960000000,"Symbol":"1inch","Index":0},{"TotalEquity":421836,"TotalDebt":0,"BasePrice":564000000000,"Symbol":"aave","Index":1},{"TotalEquity":0,"TotalDebt":0,"BasePrice":79800000,"Symbol":"ach","Index":2},{"TotalEquity":3040000,"TotalDebt":0,"BasePrice":25460000000,"Symbol":"acm","Index":3},{"TotalEquity":17700050162640,"TotalDebt":0,"BasePrice":2784000000,"Symbol":"ada","Index":4},{"TotalEquity":485400000,"TotalDebt":0,"BasePrice":1182000000,"Symbol":"adx","Index":5},{"TotalEquity":0,"TotalDebt":0,"BasePrice":907000000,"Symbol":"aergo","Index":6},{"TotalEquity":0,"TotalDebt":0,"BasePrice":2720000000,"Symbol":"agld","Index":7},{"TotalEquity":1969000000,"TotalDebt":0,"BasePrice":30500000,"Symbol":"akro","Index":8},{"TotalEquity":0,"TotalDebt":0,"BasePrice":141000000000,"Symbol":"alcx","Index":9},{"TotalEquity":15483340912,"TotalDebt":0,"BasePrice":1890000000,"Symbol":"algo","Index":10},{"TotalEquity":3187400,"TotalDebt":0,"BasePrice":11350000000,"Symbol":"alice","Index":11},{"TotalEquity":1760000,"TotalDebt":0,"BasePrice":2496000000,"Symbol":"alpaca","Index":12},{"TotalEquity":84596857600,"TotalDebt":0,"BasePrice":785000000,"Symbol":"alpha","Index":13},{"TotalEquity":3672090936,"TotalDebt":0,"BasePrice":20849000000,"Symbol":"alpine","Index":14},{"TotalEquity":198200000,"TotalDebt":0,"BasePrice":132600000,"Symbol":"amb","Index":15},{"TotalEquity":53800000,"TotalDebt":0,"BasePrice":32200000,"Symbol":"amp","Index":16},{"TotalEquity":3291606210,"TotalDebt":0,"BasePrice":340300000,"Symbol":"anc","Index":17},{"TotalEquity":192954000,"TotalDebt":0,"BasePrice":166000000,"Symbol":"ankr","Index":18},{"TotalEquity":2160000,"TotalDebt":0,"BasePrice":20940000000,"Symbol":"ant","Index":19},{"TotalEquity":5995002000,"TotalDebt":0,"BasePrice":40370000000,"Symbol":"ape","Index":20},{"TotalEquity":0,"TotalDebt":0,"BasePrice":11110000000,"Symbol":"api3","Index":21},{"TotalEquity":53728000,"TotalDebt":0,"BasePrice":38560000000,"Symbol":"apt","Index":22},{"TotalEquity":0,"TotalDebt":0,"BasePrice":68500000000,"Symbol":"ar","Index":23},{"TotalEquity":55400000,"TotalDebt":0,"BasePrice":667648400,"Symbol":"ardr","Index":24},{"TotalEquity":8320000,"TotalDebt":0,"BasePrice":266200000,"Symbol":"arpa","Index":25},{"TotalEquity":18820000,"TotalDebt":0,"BasePrice":401000000,"Symbol":"astr","Index":26},{"TotalEquity":13205405410,"TotalDebt":0,"BasePrice":934000000,"Symbol":"ata","Index":27},{"TotalEquity":7016230960,"TotalDebt":0,"BasePrice":102450000000,"Symbol":"atom","Index":28},{"TotalEquity":2619441828,"TotalDebt":0,"BasePrice":40900000000,"Symbol":"auction","Index":29},{"TotalEquity":9640198,"TotalDebt":0,"BasePrice":1432000000,"Symbol":"audio","Index":30},{"TotalEquity":0,"TotalDebt":0,"BasePrice":2306000000000,"Symbol":"auto","Index":31},{"TotalEquity":886400,"TotalDebt":0,"BasePrice":5390000000,"Symbol":"ava","Index":32},{"TotalEquity":2883562350,"TotalDebt":0,"BasePrice":117800000000,"Symbol":"avax","Index":33},{"TotalEquity":1864300912,"TotalDebt":0,"BasePrice":68200000000,"Symbol":"axs","Index":34},{"TotalEquity":843870,"TotalDebt":0,"BasePrice":23700000000,"Symbol":"badger","Index":35},{"TotalEquity":114869291528,"TotalDebt":0,"BasePrice":1379000000,"Symbol":"bake","Index":36},{"TotalEquity":95400,"TotalDebt":0,"BasePrice":54110000000,"Symbol":"bal","Index":37},{"TotalEquity":123113880,"TotalDebt":0,"BasePrice":14610000000,"Symbol":"band","Index":38},{"TotalEquity":0,"TotalDebt":0,"BasePrice":37100000000,"Symbol":"bar","Index":39},{"TotalEquity":73090049578,"TotalDebt":0,"BasePrice":1774000000,"Symbol":"bat","Index":40},{"TotalEquity":28891300,"TotalDebt":0,"BasePrice":1017000000000,"Symbol":"bch","Index":41},{"TotalEquity":19889623294,"TotalDebt":0,"BasePrice":4130000000,"Symbol":"bel","Index":42},{"TotalEquity":374840602180,"TotalDebt":0,"BasePrice":699700000,"Symbol":"beta","Index":43},{"TotalEquity":270294580,"TotalDebt":0,"BasePrice":12290900000000,"Symbol":"beth","Index":44},{"TotalEquity":35692901600,"TotalDebt":0,"BasePrice":2730000000,"Symbol":"bico","Index":45},{"TotalEquity":0,"TotalDebt":0,"BasePrice":639000,"Symbol":"bidr","Index":46},{"TotalEquity":240200000,"TotalDebt":0,"BasePrice":538000000,"Symbol":"blz","Index":47},{"TotalEquity":83614634622,"TotalDebt":0,"BasePrice":2599000000000,"Symbol":"bnb","Index":48},{"TotalEquity":0,"TotalDebt":0,"BasePrice":3490000000,"Symbol":"bnt","Index":49},{"TotalEquity":1560,"TotalDebt":0,"BasePrice":592000000000,"Symbol":"bnx","Index":50},{"TotalEquity":2076000,"TotalDebt":0,"BasePrice":32630000000,"Symbol":"bond","Index":51},{"TotalEquity":44699589660,"TotalDebt":0,"BasePrice":1768000000,"Symbol":"bsw","Index":52},{"TotalEquity":291716078,"TotalDebt":0,"BasePrice":169453900000000,"Symbol":"btc","Index":53},{"TotalEquity":15500321300000000,"TotalDebt":0,"BasePrice":6300,"Symbol":"bttc","Index":54},{"TotalEquity":70771546756,"TotalDebt":0,"BasePrice":5240000000,"Symbol":"burger","Index":55},{"TotalEquity":12058907297354,"TotalDebt":1476223055432,"BasePrice":10000000000,"Symbol":"busd","Index":56},{"TotalEquity":34716440000,"TotalDebt":0,"BasePrice":1647000000,"Symbol":"c98","Index":57},{"TotalEquity":1541723702,"TotalDebt":0,"BasePrice":33140000000,"Symbol":"cake","Index":58},{"TotalEquity":2112000,"TotalDebt":0,"BasePrice":5200000000,"Symbol":"celo","Index":59},{"TotalEquity":317091540000,"TotalDebt":0,"BasePrice":101000000,"Symbol":"celr","Index":60},{"TotalEquity":137111365560,"TotalDebt":0,"BasePrice":228000000,"Symbol":"cfx","Index":61},{"TotalEquity":0,"TotalDebt":0,"BasePrice":1820000000,"Symbol":"chess","Index":62},{"TotalEquity":258540000,"TotalDebt":0,"BasePrice":1140000000,"Symbol":"chr","Index":63},{"TotalEquity":289172288882,"TotalDebt":0,"BasePrice":1099000000,"Symbol":"chz","Index":64},{"TotalEquity":0,"TotalDebt":0,"BasePrice":25100000,"Symbol":"ckb","Index":65},{"TotalEquity":1851135024806,"TotalDebt":0,"BasePrice":535500000,"Symbol":"clv","Index":66},{"TotalEquity":155010000,"TotalDebt":0,"BasePrice":5202000000,"Symbol":"cocos","Index":67},{"TotalEquity":52093390,"TotalDebt":0,"BasePrice":335800000000,"Symbol":"comp","Index":68},{"TotalEquity":13991592000,"TotalDebt":0,"BasePrice":44500000,"Symbol":"cos","Index":69},{"TotalEquity":51240788068,"TotalDebt":0,"BasePrice":557000000,"Symbol":"coti","Index":70},{"TotalEquity":0,"TotalDebt":0,"BasePrice":107900000000,"Symbol":"cream","Index":71},{"TotalEquity":15940224,"TotalDebt":0,"BasePrice":5470000000,"Symbol":"crv","Index":72},{"TotalEquity":2336000,"TotalDebt":0,"BasePrice":7450000000,"Symbol":"ctk","Index":73},{"TotalEquity":88860000,"TotalDebt":0,"BasePrice":1059000000,"Symbol":"ctsi","Index":74},{"TotalEquity":440400000,"TotalDebt":0,"BasePrice":1763000000,"Symbol":"ctxc","Index":75},{"TotalEquity":0,"TotalDebt":0,"BasePrice":3375000000,"Symbol":"cvp","Index":76},{"TotalEquity":176202,"TotalDebt":0,"BasePrice":30810000000,"Symbol":"cvx","Index":77},{"TotalEquity":0,"TotalDebt":0,"BasePrice":9999000100,"Symbol":"dai","Index":78},{"TotalEquity":90702266836,"TotalDebt":0,"BasePrice":1293500000,"Symbol":"dar","Index":79},{"TotalEquity":29386961406,"TotalDebt":0,"BasePrice":458300000000,"Symbol":"dash","Index":80},{"TotalEquity":1628888000,"TotalDebt":0,"BasePrice":235500000,"Symbol":"data","Index":81},{"TotalEquity":0,"TotalDebt":0,"BasePrice":186229836100,"Symbol":"dcr","Index":82},{"TotalEquity":0,"TotalDebt":0,"BasePrice":15920000000,"Symbol":"dego","Index":83},{"TotalEquity":26105549312822,"TotalDebt":0,"BasePrice":6830000,"Symbol":"dent","Index":84},{"TotalEquity":670658000,"TotalDebt":0,"BasePrice":24000000000,"Symbol":"dexe","Index":85},{"TotalEquity":517372774000,"TotalDebt":0,"BasePrice":82200000,"Symbol":"dgb","Index":86},{"TotalEquity":1120000,"TotalDebt":0,"BasePrice":2970000000,"Symbol":"dia","Index":87},{"TotalEquity":0,"TotalDebt":0,"BasePrice":151800000,"Symbol":"dock","Index":88},{"TotalEquity":19453393384,"TotalDebt":0,"BasePrice":987000000,"Symbol":"dodo","Index":89},{"TotalEquity":25526548451614,"TotalDebt":0,"BasePrice":723900000,"Symbol":"doge","Index":90},{"TotalEquity":466049240950,"TotalDebt":0,"BasePrice":46820000000,"Symbol":"dot","Index":91},{"TotalEquity":69200000,"TotalDebt":0,"BasePrice":3138000000,"Symbol":"drep","Index":92},{"TotalEquity":0,"TotalDebt":0,"BasePrice":870000000,"Symbol":"dusk","Index":93},{"TotalEquity":45675816000,"TotalDebt":0,"BasePrice":12120000000,"Symbol":"dydx","Index":94},{"TotalEquity":241920370,"TotalDebt":0,"BasePrice":343400000000,"Symbol":"egld","Index":95},{"TotalEquity":3640000,"TotalDebt":0,"BasePrice":1691000000,"Symbol":"elf","Index":96},{"TotalEquity":200008070,"TotalDebt":0,"BasePrice":2556000000,"Symbol":"enj","Index":97},{"TotalEquity":836000,"TotalDebt":0,"BasePrice":115500000000,"Symbol":"ens","Index":98},{"TotalEquity":23489390223668,"TotalDebt":0,"BasePrice":8960000000,"Symbol":"eos","Index":99},{"TotalEquity":83358943947200,"TotalDebt":0,"BasePrice":2960000,"Symbol":"epx","Index":100},{"TotalEquity":1539180000,"TotalDebt":0,"BasePrice":17540000000,"Symbol":"ern","Index":101},{"TotalEquity":48056621250,"TotalDebt":0,"BasePrice":204100000000,"Symbol":"etc","Index":102},{"TotalEquity":28478224392,"TotalDebt":0,"BasePrice":12688000000000,"Symbol":"eth","Index":103},{"TotalEquity":21790805772,"TotalDebt":0,"BasePrice":10641000000,"Symbol":"eur","Index":104},{"TotalEquity":196200,"TotalDebt":0,"BasePrice":307000000000,"Symbol":"farm","Index":105},{"TotalEquity":31040000,"TotalDebt":0,"BasePrice":1240000000,"Symbol":"fet","Index":106},{"TotalEquity":26460000,"TotalDebt":0,"BasePrice":3354000000,"Symbol":"fida","Index":107},{"TotalEquity":5539231876,"TotalDebt":0,"BasePrice":33380000000,"Symbol":"fil","Index":108},{"TotalEquity":152000000,"TotalDebt":0,"BasePrice":275000000,"Symbol":"fio","Index":109},{"TotalEquity":1014252612,"TotalDebt":0,"BasePrice":16540000000,"Symbol":"firo","Index":110},{"TotalEquity":0,"TotalDebt":0,"BasePrice":3313000000,"Symbol":"fis","Index":111},{"TotalEquity":0,"TotalDebt":0,"BasePrice":765931600,"Symbol":"flm","Index":112},{"TotalEquity":3688000,"TotalDebt":0,"BasePrice":6990000000,"Symbol":"flow","Index":113},{"TotalEquity":0,"TotalDebt":0,"BasePrice":5090000000,"Symbol":"flux","Index":114},{"TotalEquity":0,"TotalDebt":0,"BasePrice":162500000,"Symbol":"for","Index":115},{"TotalEquity":80000,"TotalDebt":0,"BasePrice":29400000000,"Symbol":"forth","Index":116},{"TotalEquity":14430200000,"TotalDebt":0,"BasePrice":1808000000,"Symbol":"front","Index":117},{"TotalEquity":26629480000,"TotalDebt":0,"BasePrice":2211000000,"Symbol":"ftm","Index":118},{"TotalEquity":16207428000,"TotalDebt":0,"BasePrice":9125000000,"Symbol":"ftt","Index":119},{"TotalEquity":679597613272,"TotalDebt":0,"BasePrice":61663700,"Symbol":"fun","Index":120},{"TotalEquity":0,"TotalDebt":0,"BasePrice":51410000000,"Symbol":"fxs","Index":121},{"TotalEquity":4110633550,"TotalDebt":0,"BasePrice":11540000000,"Symbol":"gal","Index":122},{"TotalEquity":2551466375170,"TotalDebt":0,"BasePrice":234700000,"Symbol":"gala","Index":123},{"TotalEquity":1252940134,"TotalDebt":0,"BasePrice":20260000000,"Symbol":"gas","Index":124},{"TotalEquity":0,"TotalDebt":0,"BasePrice":1850000000,"Symbol":"glm","Index":125},{"TotalEquity":25058958996,"TotalDebt":0,"BasePrice":3195000000,"Symbol":"glmr","Index":126},{"TotalEquity":443980786672,"TotalDebt":0,"BasePrice":2588000000,"Symbol":"gmt","Index":127},{"TotalEquity":160000,"TotalDebt":0,"BasePrice":417300000000,"Symbol":"gmx","Index":128},{"TotalEquity":178800,"TotalDebt":0,"BasePrice":878736379100,"Symbol":"gno","Index":129},{"TotalEquity":6828000,"TotalDebt":0,"BasePrice":620000000,"Symbol":"grt","Index":130},{"TotalEquity":20784000,"TotalDebt":0,"BasePrice":13340000000,"Symbol":"gtc","Index":131},{"TotalEquity":94280000,"TotalDebt":0,"BasePrice":1494000000,"Symbol":"hard","Index":132},{"TotalEquity":336206273140,"TotalDebt":0,"BasePrice":391000000,"Symbol":"hbar","Index":133},{"TotalEquity":1791317190,"TotalDebt":0,"BasePrice":8870000000,"Symbol":"high","Index":134},{"TotalEquity":6485637600,"TotalDebt":0,"BasePrice":2700000000,"Symbol":"hive","Index":135},{"TotalEquity":1956144,"TotalDebt":0,"BasePrice":18400000000,"Symbol":"hnt","Index":136},{"TotalEquity":9587039140000,"TotalDebt":0,"BasePrice":14820000,"Symbol":"hot","Index":137},{"TotalEquity":223895102366,"TotalDebt":0,"BasePrice":38980000000,"Symbol":"icp","Index":138},{"TotalEquity":52168047570,"TotalDebt":0,"BasePrice":1516000000,"Symbol":"icx","Index":139},{"TotalEquity":15480000,"TotalDebt":0,"BasePrice":388000000,"Symbol":"idex","Index":140},{"TotalEquity":8400000,"TotalDebt":0,"BasePrice":388700000000,"Symbol":"ilv","Index":141},{"TotalEquity":12686368000,"TotalDebt":0,"BasePrice":4230000000,"Symbol":"imx","Index":142},{"TotalEquity":139990936000,"TotalDebt":0,"BasePrice":13680000000,"Symbol":"inj","Index":143},{"TotalEquity":69430091021436,"TotalDebt":0,"BasePrice":72500000,"Symbol":"iost","Index":144},{"TotalEquity":71259628200,"TotalDebt":0,"BasePrice":1823000000,"Symbol":"iota","Index":145},{"TotalEquity":428000000,"TotalDebt":0,"BasePrice":221500000,"Symbol":"iotx","Index":146},{"TotalEquity":858126200,"TotalDebt":0,"BasePrice":43200000,"Symbol":"iq","Index":147},{"TotalEquity":8680000,"TotalDebt":0,"BasePrice":132174000,"Symbol":"iris","Index":148},{"TotalEquity":1889177748140,"TotalDebt":0,"BasePrice":37600000,"Symbol":"jasmy","Index":149},{"TotalEquity":2000,"TotalDebt":0,"BasePrice":1416000000,"Symbol":"joe","Index":150},{"TotalEquity":927921956,"TotalDebt":0,"BasePrice":201400000,"Symbol":"jst","Index":151},{"TotalEquity":560000,"TotalDebt":0,"BasePrice":6590000000,"Symbol":"kava","Index":152},{"TotalEquity":30527442000,"TotalDebt":0,"BasePrice":9480000000,"Symbol":"kda","Index":153},{"TotalEquity":7587760000,"TotalDebt":0,"BasePrice":29350000,"Symbol":"key","Index":154},{"TotalEquity":372181704,"TotalDebt":0,"BasePrice":1613000000,"Symbol":"klay","Index":155},{"TotalEquity":81600000,"TotalDebt":0,"BasePrice":1904661800,"Symbol":"kmd","Index":156},{"TotalEquity":493317080,"TotalDebt":0,"BasePrice":4940000000,"Symbol":"knc","Index":157},{"TotalEquity":1700000,"TotalDebt":0,"BasePrice":621600000000,"Symbol":"kp3r","Index":158},{"TotalEquity":27180,"TotalDebt":0,"BasePrice":250100000000,"Symbol":"ksm","Index":159},{"TotalEquity":1656679204,"TotalDebt":0,"BasePrice":30978000000,"Symbol":"lazio","Index":160},{"TotalEquity":295510852208,"TotalDebt":0,"BasePrice":15200000000,"Symbol":"ldo","Index":161},{"TotalEquity":1158728143570,"TotalDebt":0,"BasePrice":17230000,"Symbol":"lever","Index":162},{"TotalEquity":6505365672842,"TotalDebt":0,"BasePrice":52690000,"Symbol":"lina","Index":163},{"TotalEquity":8162369516,"TotalDebt":0,"BasePrice":57120000000,"Symbol":"link","Index":164},{"TotalEquity":95484000,"TotalDebt":0,"BasePrice":7220000000,"Symbol":"lit","Index":165},{"TotalEquity":12682220,"TotalDebt":0,"BasePrice":3632000000,"Symbol":"loka","Index":166},{"TotalEquity":0,"TotalDebt":0,"BasePrice":409400000,"Symbol":"loom","Index":167},{"TotalEquity":0,"TotalDebt":0,"BasePrice":44400000000,"Symbol":"lpt","Index":168},{"TotalEquity":10715077402,"TotalDebt":0,"BasePrice":2063000000,"Symbol":"lrc","Index":169},{"TotalEquity":8050236298,"TotalDebt":0,"BasePrice":7240000000,"Symbol":"lsk","Index":170},{"TotalEquity":1122426768,"TotalDebt":0,"BasePrice":758900000000,"Symbol":"ltc","Index":171},{"TotalEquity":22654000,"TotalDebt":0,"BasePrice":710000000,"Symbol":"lto","Index":172},{"TotalEquity":16580624988,"TotalDebt":0,"BasePrice":13251000000,"Symbol":"luna","Index":173},{"TotalEquity":1705595428000000,"TotalDebt":0,"BasePrice":1560500,"Symbol":"lunc","Index":174},{"TotalEquity":0,"TotalDebt":0,"BasePrice":4759000000,"Symbol":"magic","Index":175},{"TotalEquity":77632636722,"TotalDebt":0,"BasePrice":3278000000,"Symbol":"mana","Index":176},{"TotalEquity":1990776000,"TotalDebt":0,"BasePrice":23850000000,"Symbol":"mask","Index":177},{"TotalEquity":1076925578756,"TotalDebt":0,"BasePrice":7989000000,"Symbol":"matic","Index":178},{"TotalEquity":2785908800000,"TotalDebt":0,"BasePrice":23690000,"Symbol":"mbl","Index":179},{"TotalEquity":934922304,"TotalDebt":0,"BasePrice":3850000000,"Symbol":"mbox","Index":180},{"TotalEquity":13377446308,"TotalDebt":0,"BasePrice":2670000000,"Symbol":"mc","Index":181},{"TotalEquity":258144000,"TotalDebt":0,"BasePrice":201100000,"Symbol":"mdt","Index":182},{"TotalEquity":3081330908,"TotalDebt":0,"BasePrice":716000000,"Symbol":"mdx","Index":183},{"TotalEquity":32512116000,"TotalDebt":0,"BasePrice":4500000000,"Symbol":"mina","Index":184},{"TotalEquity":12110,"TotalDebt":0,"BasePrice":5400000000000,"Symbol":"mkr","Index":185},{"TotalEquity":0,"TotalDebt":0,"BasePrice":194100000000,"Symbol":"mln","Index":186},{"TotalEquity":132208000000,"TotalDebt":0,"BasePrice":8660000000,"Symbol":"mob","Index":187},{"TotalEquity":262072600,"TotalDebt":0,"BasePrice":63100000000,"Symbol":"movr","Index":188},{"TotalEquity":3096000,"TotalDebt":0,"BasePrice":7020000000,"Symbol":"mtl","Index":189},{"TotalEquity":5615144716,"TotalDebt":0,"BasePrice":15900000000,"Symbol":"near","Index":190},{"TotalEquity":6048000,"TotalDebt":0,"BasePrice":13000000000,"Symbol":"nebl","Index":191},{"TotalEquity":484605847032,"TotalDebt":0,"BasePrice":65600000000,"Symbol":"neo","Index":192},{"TotalEquity":0,"TotalDebt":0,"BasePrice":7260000000,"Symbol":"nexo","Index":193},{"TotalEquity":2013960000,"TotalDebt":0,"BasePrice":862000000,"Symbol":"nkn","Index":194},{"TotalEquity":39400,"TotalDebt":0,"BasePrice":129300000000,"Symbol":"nmr","Index":195},{"TotalEquity":99676000,"TotalDebt":0,"BasePrice":1901000000,"Symbol":"nuls","Index":196},{"TotalEquity":1063446,"TotalDebt":0,"BasePrice":1906000000,"Symbol":"ocean","Index":197},{"TotalEquity":380000,"TotalDebt":0,"BasePrice":23960000000,"Symbol":"og","Index":198},{"TotalEquity":30491752,"TotalDebt":0,"BasePrice":906000000,"Symbol":"ogn","Index":199},{"TotalEquity":117360000,"TotalDebt":0,"BasePrice":289000000,"Symbol":"om","Index":200},{"TotalEquity":213392241236,"TotalDebt":0,"BasePrice":10630000000,"Symbol":"omg","Index":201},{"TotalEquity":561009012134,"TotalDebt":0,"BasePrice":106700000,"Symbol":"one","Index":202},{"TotalEquity":64315053780,"TotalDebt":0,"BasePrice":2177482600,"Symbol":"ong","Index":203},{"TotalEquity":4682530773048,"TotalDebt":0,"BasePrice":1609000000,"Symbol":"ont","Index":204},{"TotalEquity":893960000,"TotalDebt":0,"BasePrice":30800000,"Symbol":"ooki","Index":205},{"TotalEquity":383291200,"TotalDebt":0,"BasePrice":10840000000,"Symbol":"op","Index":206},{"TotalEquity":11568582000,"TotalDebt":0,"BasePrice":7680000000,"Symbol":"orn","Index":207},{"TotalEquity":0,"TotalDebt":0,"BasePrice":7240000000,"Symbol":"osmo","Index":208},{"TotalEquity":178748000,"TotalDebt":0,"BasePrice":687000000,"Symbol":"oxt","Index":209},{"TotalEquity":0,"TotalDebt":0,"BasePrice":18530000000000,"Symbol":"paxg","Index":210},{"TotalEquity":21441646500892,"TotalDebt":0,"BasePrice":215100000,"Symbol":"people","Index":211},{"TotalEquity":1648337620,"TotalDebt":0,"BasePrice":3831300000,"Symbol":"perp","Index":212},{"TotalEquity":0,"TotalDebt":0,"BasePrice":1112000000,"Symbol":"pha","Index":213},{"TotalEquity":35466658000,"TotalDebt":0,"BasePrice":5237000000,"Symbol":"phb","Index":214},{"TotalEquity":28791180000,"TotalDebt":0,"BasePrice":1430000000,"Symbol":"pla","Index":215},{"TotalEquity":175000000,"TotalDebt":0,"BasePrice":1358592400,"Symbol":"pnt","Index":216},{"TotalEquity":3494881620000,"TotalDebt":0,"BasePrice":3570000000,"Symbol":"pols","Index":217},{"TotalEquity":74823148144,"TotalDebt":0,"BasePrice":1234000000,"Symbol":"polyx","Index":218},{"TotalEquity":493224786192,"TotalDebt":0,"BasePrice":77900000,"Symbol":"pond","Index":219},{"TotalEquity":72399098108,"TotalDebt":0,"BasePrice":25696000000,"Symbol":"porto","Index":220},{"TotalEquity":21005000000,"TotalDebt":0,"BasePrice":1273000000,"Symbol":"powr","Index":221},{"TotalEquity":0,"TotalDebt":0,"BasePrice":39200000000,"Symbol":"prom","Index":222},{"TotalEquity":0,"TotalDebt":0,"BasePrice":4230000000,"Symbol":"pros","Index":223},{"TotalEquity":2246200,"TotalDebt":0,"BasePrice":56400000000,"Symbol":"psg","Index":224},{"TotalEquity":57372118540,"TotalDebt":0,"BasePrice":3240000000,"Symbol":"pundix","Index":225},{"TotalEquity":172800,"TotalDebt":0,"BasePrice":29800000000,"Symbol":"pyr","Index":226},{"TotalEquity":152556846850,"TotalDebt":0,"BasePrice":65200000,"Symbol":"qi","Index":227},{"TotalEquity":703867724,"TotalDebt":0,"BasePrice":1118000000000,"Symbol":"qnt","Index":228},{"TotalEquity":209070344,"TotalDebt":0,"BasePrice":19610000000,"Symbol":"qtum","Index":229},{"TotalEquity":107668,"TotalDebt":0,"BasePrice":464000000000,"Symbol":"quick","Index":230},{"TotalEquity":15960000,"TotalDebt":0,"BasePrice":15330000000,"Symbol":"rad","Index":231},{"TotalEquity":0,"TotalDebt":0,"BasePrice":1007000000,"Symbol":"rare","Index":232},{"TotalEquity":20536980000,"TotalDebt":0,"BasePrice":1502000000,"Symbol":"ray","Index":233},{"TotalEquity":2330100436820,"TotalDebt":0,"BasePrice":24230000,"Symbol":"reef","Index":234},{"TotalEquity":692913057840,"TotalDebt":0,"BasePrice":225000000,"Symbol":"rei","Index":235},{"TotalEquity":0,"TotalDebt":0,"BasePrice":630420000,"Symbol":"ren","Index":236},{"TotalEquity":223600190,"TotalDebt":0,"BasePrice":872000000,"Symbol":"req","Index":237},{"TotalEquity":18748000,"TotalDebt":0,"BasePrice":12427749000,"Symbol":"rlc","Index":238},{"TotalEquity":376358800,"TotalDebt":0,"BasePrice":4200000000,"Symbol":"rndr","Index":239},{"TotalEquity":2094224000,"TotalDebt":0,"BasePrice":370400000,"Symbol":"rose","Index":240},{"TotalEquity":119940000,"TotalDebt":0,"BasePrice":31690000,"Symbol":"rsr","Index":241},{"TotalEquity":269393997600,"TotalDebt":0,"BasePrice":13750000000,"Symbol":"rune","Index":242},{"TotalEquity":539117133400,"TotalDebt":0,"BasePrice":203000000,"Symbol":"rvn","Index":243},{"TotalEquity":154754594184,"TotalDebt":0,"BasePrice":4309000000,"Symbol":"sand","Index":244},{"TotalEquity":2790903662,"TotalDebt":0,"BasePrice":44700000000,"Symbol":"santos","Index":245},{"TotalEquity":353200000,"TotalDebt":0,"BasePrice":23600000,"Symbol":"sc","Index":246},{"TotalEquity":0,"TotalDebt":0,"BasePrice":6390000000,"Symbol":"scrt","Index":247},{"TotalEquity":493481218,"TotalDebt":0,"BasePrice":4033000000,"Symbol":"sfp","Index":248},{"TotalEquity":92811810818000000,"TotalDebt":0,"BasePrice":84300,"Symbol":"shib","Index":249},{"TotalEquity":338633610064,"TotalDebt":0,"BasePrice":227300000,"Symbol":"skl","Index":250},{"TotalEquity":17412372632502,"TotalDebt":0,"BasePrice":20900000,"Symbol":"slp","Index":251},{"TotalEquity":19400000,"TotalDebt":0,"BasePrice":4858000000,"Symbol":"snm","Index":252},{"TotalEquity":12518184,"TotalDebt":0,"BasePrice":16280000000,"Symbol":"snx","Index":253},{"TotalEquity":7697220542,"TotalDebt":0,"BasePrice":135100000000,"Symbol":"sol","Index":254},{"TotalEquity":43400244636,"TotalDebt":0,"BasePrice":5522000,"Symbol":"spell","Index":255},{"TotalEquity":145168230000,"TotalDebt":0,"BasePrice":1567800000,"Symbol":"srm","Index":256},{"TotalEquity":0,"TotalDebt":0,"BasePrice":3544000000,"Symbol":"stg","Index":257},{"TotalEquity":1375707000000,"TotalDebt":0,"BasePrice":38110000,"Symbol":"stmx","Index":258},{"TotalEquity":8912432530,"TotalDebt":0,"BasePrice":2582000000,"Symbol":"storj","Index":259},{"TotalEquity":0,"TotalDebt":0,"BasePrice":275900000,"Symbol":"stpt","Index":260},{"TotalEquity":14047500,"TotalDebt":0,"BasePrice":4050000000,"Symbol":"strax","Index":261},{"TotalEquity":1423000,"TotalDebt":0,"BasePrice":2190000000,"Symbol":"stx","Index":262},{"TotalEquity":326978131392,"TotalDebt":0,"BasePrice":50400000,"Symbol":"sun","Index":263},{"TotalEquity":30595425600,"TotalDebt":0,"BasePrice":867000000,"Symbol":"super","Index":264},{"TotalEquity":128556304136,"TotalDebt":0,"BasePrice":10420000000,"Symbol":"sushi","Index":265},{"TotalEquity":1059292108408,"TotalDebt":0,"BasePrice":2130000000,"Symbol":"sxp","Index":266},{"TotalEquity":130320000,"TotalDebt":0,"BasePrice":1017000000,"Symbol":"sys","Index":267},{"TotalEquity":5172000,"TotalDebt":0,"BasePrice":163000000,"Symbol":"t","Index":268},{"TotalEquity":1030910000,"TotalDebt":0,"BasePrice":327000000,"Symbol":"tfuel","Index":269},{"TotalEquity":160460684218,"TotalDebt":0,"BasePrice":7590000000,"Symbol":"theta","Index":270},{"TotalEquity":198770314330,"TotalDebt":0,"BasePrice":2292000000,"Symbol":"tko","Index":271},{"TotalEquity":256387034218,"TotalDebt":0,"BasePrice":128600000,"Symbol":"tlm","Index":272},{"TotalEquity":2508400,"TotalDebt":0,"BasePrice":2762000000,"Symbol":"tomo","Index":273},{"TotalEquity":9400,"TotalDebt":0,"BasePrice":124800000000,"Symbol":"trb","Index":274},{"TotalEquity":33800000,"TotalDebt":0,"BasePrice":2070797400,"Symbol":"tribe","Index":275},{"TotalEquity":46160000,"TotalDebt":0,"BasePrice":25980000,"Symbol":"troy","Index":276},{"TotalEquity":0,"TotalDebt":0,"BasePrice":288071600,"Symbol":"tru","Index":277},{"TotalEquity":2043669562480,"TotalDebt":0,"BasePrice":524600000,"Symbol":"trx","Index":278},{"TotalEquity":63678800000,"TotalDebt":0,"BasePrice":301000000,"Symbol":"tvk","Index":279},{"TotalEquity":0,"TotalDebt":0,"BasePrice":14100000000,"Symbol":"twt","Index":280},{"TotalEquity":13980000,"TotalDebt":0,"BasePrice":15400000000,"Symbol":"uma","Index":281},{"TotalEquity":19120000,"TotalDebt":0,"BasePrice":39360000000,"Symbol":"unfi","Index":282},{"TotalEquity":11981756100,"TotalDebt":0,"BasePrice":55220000000,"Symbol":"uni","Index":283},{"TotalEquity":0,"TotalDebt":0,"BasePrice":10000650400,"Symbol":"usdc","Index":284},{"TotalEquity":12876907115652,"TotalDebt":0,"BasePrice":9997000900,"Symbol":"usdt","Index":285},{"TotalEquity":220063518946,"TotalDebt":0,"BasePrice":203321700,"Symbol":"ustc","Index":286},{"TotalEquity":0,"TotalDebt":0,"BasePrice":777000000,"Symbol":"utk","Index":287},{"TotalEquity":7430929587566,"TotalDebt":0,"BasePrice":164100000,"Symbol":"vet","Index":288},{"TotalEquity":169058297966,"TotalDebt":0,"BasePrice":694900000,"Symbol":"vib","Index":289},{"TotalEquity":252046634,"TotalDebt":0,"BasePrice":195000000,"Symbol":"vite","Index":290},{"TotalEquity":25254109536,"TotalDebt":0,"BasePrice":1671000000,"Symbol":"voxel","Index":291},{"TotalEquity":5153547313742,"TotalDebt":0,"BasePrice":9237200,"Symbol":"vtho","Index":292},{"TotalEquity":17493828000,"TotalDebt":0,"BasePrice":1658321600,"Symbol":"wan","Index":293},{"TotalEquity":2852616,"TotalDebt":0,"BasePrice":14130000000,"Symbol":"waves","Index":294},{"TotalEquity":20000180,"TotalDebt":0,"BasePrice":440000000,"Symbol":"waxp","Index":295},{"TotalEquity":24776160000000,"TotalDebt":0,"BasePrice":738000,"Symbol":"win","Index":296},{"TotalEquity":2370200,"TotalDebt":0,"BasePrice":52100000000,"Symbol":"wing","Index":297},{"TotalEquity":0,"TotalDebt":0,"BasePrice":80975707300,"Symbol":"wnxm","Index":298},{"TotalEquity":75262779600,"TotalDebt":0,"BasePrice":1347000000,"Symbol":"woo","Index":299},{"TotalEquity":415631596070,"TotalDebt":0,"BasePrice":1401000000,"Symbol":"wrx","Index":300},{"TotalEquity":183890000,"TotalDebt":0,"BasePrice":1916523600,"Symbol":"wtc","Index":301},{"TotalEquity":172906064000000,"TotalDebt":0,"BasePrice":246700,"Symbol":"xec","Index":302},{"TotalEquity":129072400,"TotalDebt":0,"BasePrice":291912400,"Symbol":"xem","Index":303},{"TotalEquity":152986398800,"TotalDebt":0,"BasePrice":751000000,"Symbol":"xlm","Index":304},{"TotalEquity":109317164,"TotalDebt":0,"BasePrice":1548000000000,"Symbol":"xmr","Index":305},{"TotalEquity":1954309930640,"TotalDebt":0,"BasePrice":3442000000,"Symbol":"xrp","Index":306},{"TotalEquity":388360923948,"TotalDebt":0,"BasePrice":7720000000,"Symbol":"xtz","Index":307},{"TotalEquity":45916405132400,"TotalDebt":0,"BasePrice":27200000,"Symbol":"xvg","Index":308},{"TotalEquity":1725600,"TotalDebt":0,"BasePrice":42900000000,"Symbol":"xvs","Index":309},{"TotalEquity":1940,"TotalDebt":0,"BasePrice":54420000000000,"Symbol":"yfi","Index":310},{"TotalEquity":393918000,"TotalDebt":0,"BasePrice":1749000000,"Symbol":"ygg","Index":311},{"TotalEquity":4124782260,"TotalDebt":0,"BasePrice":414000000000,"Symbol":"zec","Index":312},{"TotalEquity":1900092,"TotalDebt":0,"BasePrice":84900000000,"Symbol":"zen","Index":313},{"TotalEquity":2075635646560,"TotalDebt":0,"BasePrice":174100000,"Symbol":"zil","Index":314},{"TotalEquity":119194400,"TotalDebt":0,"BasePrice":1603000000,"Symbol":"zrx","Index":315}]
}

ProofCsv : 指定proof.csv錶的路徑

ZkKeyVKDirectoryAndPrefix: 指定zkpor verify key的路徑以及前綴

CexAssetsInfo: 交易所資産,由上麵命令查詢得出

驗證用戶資産所需數據與格式

  • 提供user_config.json文件
    我們需要用到上麵 user proof 環節生成的userproof錶,然後根據之前提供的交易所用戶資産example_users.csv中用戶唯一標識,對應userproof錶中的account_id字段找到該用戶,將config字段查詢出來,保存爲user_config.json中,提供給用戶下載即可。

user_config.json文件結構如下:

Plaintext
{
  "Arrangement":7,
  "UniqueIdentification":"00010b7c0a8b51bfa5eca14f0068670bd7fda4063f9bcac4f02c44a00144a80c",
  "TotalAssetEquity":445548224227483774000,
  "TotalAssetDebt":0,
  "AssetDetails":[{"Index":48,"Equity":280,"Debt":0},{"Index":53,"Equity":1020,"Debt":0},{"Index":54,"Equity":3261550200000000,"Debt":0},{"Index":72,"Equity":108600,"Debt":0},{"Index":91,"Equity":9068922000,"Debt":0},{"Index":190,"Equity":13752000,"Debt":0},{"Index":285,"Equity":70860,"Debt":0}],
  "TreeRootHash":"2da42ab6586ef6ad51b4bc8063ce92dcefb951572a26597346b7f78c1329ef0b",
  "MerkleProofEncode":["EmvQ5Sh50gHD96PfN2/o49gT7xVuuX3P22KLVmpWyVo=","JLEw2CGGAPi2TWn7GMbdlwT0wJbpVfJ4A+XLXNYz9X4=","BRCCQWeZy3fmPgiciBNdDMmugJtcQnxfI/b0EU4MlR8=","K8P8ZvYSY9iEreGnatTO8h1/I3Q+ZSkBA3TYYI1vN1g=","GwxhwdTBri22QcY4Pj9B3TkkLpOTGlCpqnsmxVquaeQ=","JIB+i/tDXSbEyK5ASwx2Tgbtm2ckJrJ30qnLm3FGhvs=","I0AzcupyH3clJooxcjaZlOIWOTY531UBJIMpfu2ds9o=","GYU5H/xfC18jR4LXz3axjKgJOaAbSAz3vO/taxTTMDE=","GML/iwCEjgYlSAmd4cQQhKsjH+xscIG6hbM5HP+OP/I=","BBXHrrH1oIGsjK1PsZt1d+ovsDW5IvHxFUlt8CJ3j/M=","F6GyEMWOjvKBgKDCCkQiOfc5SvGEt2MWyQTzszXzd6Y=","JDZjD4o0q6cGYJzj0BBaBEBEN4y4UjYgMSNIXf2P6Ps=","C+Mh1228yGv2Or6yQs3U0sjBzxxWJPTyH5GNG3FzMbk=","Jpo3tkE2KgMxWoEdMM1sOyJsM9YjsI9aONsEEqmMPnA=","FaWOvl42fYbklbc9WgWFqeW3Q/54KXT5zYdIGyCh9iE=","EvcLzRuRio6YT9QjSPp0GGGFYSIW8fKOqQlcOXFBBwo=","LJos88T9kz5kG0o+yeNX0ij+WwrOEIqRVpJtOrUrnns=","CFv3HhUsTXNa3iT/cc+GhD9lV+weuSWoJJRVgZmn7fQ=","EyfPjcon6R+nXBDT/9++ddQqlxiBaSaTMBiC0R6NPoM=","HOtPMAkz3JJG3n0bxNIqkR1p/Q758Em1Jjn1KE6A2mg=","Lq3n7B3Bs7ILnDLG17szIf9O0OdotsWpSLwejnJVcLY=","HthvmzZ/MHbOWVSuFyc9sUvuSz0ddveEwoyQExrim5k=","BOxHEGxRtmNch1R57kgKMxiBVnR/tCo9y3XcJco7Saw=","Dilkpy2L945iR+BsbaffA7MBZSNofd2PdZSkzN48DOE=","Fotw+U5orv9231KkpBYOXM+odtZGgCaNw5zOY+xZ5Oc=","J7pOZTvxtC7B8RzevUvrd90GfrH2oxtRqkEF+mFdCuc=","EUZQwQDUH48osqrtgcPuAQsQvdVKTC+hYmKvIhzImZQ=","HKC2vx3pnDTdfyrzYjCbJMcxojJfvuyzj2/rMMiMplQ="]
}

最終提供用戶內容

所以用戶最終穫得的文件結構大緻如下:

Plaintext
- config 
    cex_config.json
    user_config.json
    proof.csv
zkpor864.vk.save
main

二進製文件 main 提供時,可能根據設備不衕命名也有所不衕

  • Mac OS(Intel):zkproof_darwin_amd64
  • Mac OS(M1):zkproof_darwin_arm64
  • Linux:zkproof_linux_amd64
  • Windows:zkproof_windows_amd64.exe

用戶驗證交易所資産

運行以下命令開始驗證:

Plaintext
./main verify cex

驗證成功會輸出:

Plaintext
All proofs verify passed!!!

用戶驗證自身資産

Plaintext
./main verify user

驗證成功會輸出:

Plaintext
merkle leave hash: 164bc38a71b7a757455d93017242b4960cd1fea6842d8387b60c5780205858ce
verify pass!!!

結語

啟用zk-SNARK是Gate.io儲備金證明的重要升級,也是Gate.io在用戶資産安全保護上的重要行動之一。卓越的安全和隱私雙重保障,將爲用戶帶來了更多的信心,也爲整個加密貨幣行業樹立新的典範。

您可以點擊鏈接跳轉Gate.io儲備金金前端頁麵,查看由Gate.io團隊利用此項目生成的證明。目前代碼已經公開在了Github。所有對於去信任化交易所、對zk-SNARK 和 MerkleTree 技術感興趣的朋友,無論是提出建議、報告bug,還是提交代碼,我們都歡迎參與到本項目中。

Автор: Gate learn
Перекладач: Sonia
Рецензент(-и): Wayne、KOWEI、Elisa、Ashley、Joyce
* Ця інформація не є фінансовою порадою чи будь-якою іншою рекомендацією, запропонованою чи схваленою Gate.io.
* Цю статтю заборонено відтворювати, передавати чи копіювати без посилання на Gate.io. Порушення є порушенням Закону про авторське право і може бути предметом судового розгляду.
Розпочати зараз
Зареєструйтеся та отримайте ваучер на
$100
!
Створити обліковий запис