Hướng dẫn kỹ thuật: Bằng chứng dự trữ dựa trên zkSNARK của Gate.io

Nâng cao12/11/2023, 4:41:28 PM
Là một trong những sàn giao dịch sớm nhất triển khai Bằng chứng Dự trữ, Gate.io một lần nữa nâng cấp giải pháp Bằng chứng Dự trữ của mình bằng công nghệ zk-SNARK. Bài viết này sẽ hướng dẫn bạn cách sử dụng công nghệ mã nguồn mở do Gate.io cung cấp để xác minh tính an toàn của tài sản trên sàn giao dịch và tài sản cá nhân trên thiết bị của bạn.

Giới thiệu

Với 13 triệu người dùng, Gate.iohiểu rõ tầm quan trọng của an ninh quỹ và đã thực hiện các biện pháp hiệu quả trong ngành.Gate.iolà một trong những sàn giao dịch sớm nhất triển khai Bằng chứng dự trữ (PoR), được tiết lộ vào tháng 5 năm 2020. Cho đến khi khủng hoảng thanh khoản và phá sản do FTX biển thủ tài sản người dùng vào năm 2022 thì PoR mới được biết đến như một giải pháp để bảo vệ quỹ người dùng và tăng cường niềm tin vào nền tảng. Gần đây, Gate.iođã công bố một bản nâng cấp cho giải pháp Bằng chứng dự trữ của mình, giới thiệu công nghệ zk-SNARK và Cây Merkle để tăng cường an ninh tài sản và bảo vệ quyền riêng tư.

Bài viết này sẽ đưa bạn qua quá trình phát triển của Gate.io's Bằng chứng dự trữ, từng bước một, để sao chép quá trình xây dựng Bằng chứng dự trữ của sàn giao dịch trên thiết bị của bạn.'

Nền tảng

Merkle Tree là một cây nhị phân của các giá trị băm, trong đó mỗi nút lá đại diện cho một phần dữ liệu hoặc một giá trị băm của dữ liệu. Nó được sử dụng để xác minh tính toàn vẹn của một lượng lớn dữ liệu một cách hiệu quả. Trong quá khứ, một giải pháp chứng minh dự trữ phổ biến liên quan đến việc mã hóa dữ liệu người dùng và tạo Merkle Tree. Tuy nhiên, phương pháp này có những hạn chế, vì nó không thể phát hiện tài khoản có giá trị âm (giá trị tài khoản phải lớn hơn hoặc bằng 0) và không thể bảo vệ đầy đủ quyền riêng tư của người dùng.

zk-SNARK là một công nghệ mật mã mạnh mẽ. Trong giải pháp này, chúng tôi đưa tất cả tiền gửi của người dùng vào một Cây Merkle và sử dụng zk-SNARK để chứng minh rằng tất cả số dư trong cây đều không âm và tổng cộng lên một giá trị được tuyên bố. Nếu tài sản được công bố công khai trên sàn giao dịch vượt quá giá trị này, có thể chứng minh rằng sàn giao dịch có khả năng thanh toán 100%.

Bằng cách kết hợp zk-SNARK với Merkle Tree, chúng ta có thể đồng thời xác minh tính toàn vẹn và nhất quán của dữ liệu trong khi bảo vệ sự riêng tư của các giao dịch. Người chứng minh có thể sử dụng zk-SNARK để chứng minh rằng họ biết một bằng chứng Merkle thỏa mãn các điều kiện cụ thể mà không tiết lộ nội dung cụ thể của bằng chứng. Điều này có lợi cho các sàn giao dịch tiền mã hóa vì nó có thể chứng minh có đủ tiền để đáp ứng tất cả các nợ và bảo vệ sự riêng tư của người dùng.

Cấu trúc chương trình

Văn bản thô- mạch    #thiết kế mạch- khách hàng    #lệnh- cấu hình    #tệp cấu hình- toàn cầu    #biến toàn cầu- dịch vụ        - dịch vụ keygen    #dịch vụ tạo ra các khóa zk        - dịch vụ prover    #dịch vụ tạo ra dữ liệu chứng minh        - dịch vụ công cụ    #công cụ chung        - dịch vụ userproff    #tạo dữ liệu user_proof        - dịch vụ xác minh    #dịch vụ xác minh         - dịch vụ nhân chứng    #dịch vụ tạo dữ liệu nhân chứng- tiện ích    #tập hợp các chức năng chung

Chuẩn bị

Cài đặt cơ sở dữ liệu

  1. Mysql: Lưu bằng chứng, bằng chứng người dùng và nhân chứng
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
  1. Redis: Distributed Lock

    Plaintextdocker run -d --name zk-redis -p 6379:6379 redis
  2. Kvrocks: Lưu trữ cây tài khoản người dùng

    Plaintextdocker run -d --name zk-kvrocks -p 6666:6666 apache/kvrocks
  3. Nếu kết nối với kvrocks thất bại sau khi cài đặt: \
    Kế hoạch 1: Bạn có thể thử sửa đổi tệp /var/lib/kvrocks/kvrocks.conf bên trong container Docker. Thay đổi thànhliên kết 0.0.0.0và khởi động lại phiên bản.
    Kế hoạch 2: Cài đặt dịch vụ bằng cách mã nguồn.

Cài đặt môi trường Go

Để biên dịch chương trình, bạn phải cài đặt môi trường ngôn ngữ lập trình Go. Bạn có thể cài đặt nó tùy theo phiên bản hệ thống của bạn.Tải xuống Go.

Xuất Dữ Liệu Tài Sản Người Dùng Sàn Giao Dịch

Cấu trúc của dữ liệu assets.csv người dùng trao đổi được xuất như sau:

Plaintext- rn    #sequence- id    #unique identifier của người dùng trên sàn giao dịch- e_xtoken   #vốn xtoken của người dùng, chẳng hạn như e_BTC- d_xtoken   #nợ xtoken của người dùng, chẳng hạn như d_BTC- x_token     #giá trị tài sản ròng của người dùng, x_token = e_xtoken - d_xtoken- xtoken_usdt_price   #giá của xtoken- total_net_balance_usdt    #tổng giá trị của tất cả các token trong USDT

Bạn có thể tham khảo ./example_data/example_users.csvđể biết thông tin cụ thể.

Yêu cầu Cấu hình Hệ thống Được Khuyến nghị

Cấu hình tối thiểu được khuyến nghị cho môi trường sản xuất là như sau:

  • 128GB bộ nhớ
  • Máy ảo 32 nhân
  • 50 GB của không gian đĩa

Tập Tin Cấu Hình

Khi tạo khóa zk trong môi trường sản xuất, nên thiết lập biến Batch thành 864, cho biết có bao nhiêu người dùng có thể được tạo ra trong một lô. Giá trị càng lớn, thời gian tạo khóa zk và chứng minh càng lâu. Khi thiết lập thành 864, mất khoảng 6 giờ để tạo khóa zk trên máy ảo 128GB bộ nhớ, 32 nhân, và 105 giây để tạo một lô chứng minh zk.

Vì vậy, trong giai đoạn gỡ lỗi, bạn có thể sửa đổi utils/constants.gotrongSố lần tạo người dùng theo lôđể4và sau đó biên dịch lại. Tuy nhiên, khuyến nghị thiết lập tham số này thành864trong sản xuất thực tế.

Nếu bạn cần chỉnh sửa Batch, các tệp cấu hình cần phải thay đổi là:

  • Sửa ./config/config.json
    "ZkKeyName": "./zkpor864" => "ZkKeyName": "./zkpor4"
  • Sửa đổi ./config/cex_config.json
    "ZkKeyVKDirectoryAndPrefix": "./zkpor864" => "ZkKeyVKDirectoryAndPrefix": "./zkpor4"
  • Sửa ./utils/constants.go
    BatchCreateUserOpsCounts = 864 => BatchCreateUserOpsCounts = 4

Cài đặt Tiền điện tử

  • Sửa ./utils/constants.go

Đếm tiền điện tử

AssetCounts = 350 => AssetCounts = Required Counts

AssetCounts đại diện cho số loại token được bao gồm trong sàn giao dịch, và số lượng thực tế không nên thấp hơn giá trị được cấu hình. Ví dụ, nếu thực sự có 420 token, có thể điều chỉnh thành 500. Xem xét việc sử dụng bộ nhớ, nên thiết lập một giá trị hợp lý dựa trên tình hình.

Độ chính xác giá

AssetTypeForTwoDigitsTrường này là độ chính xác giá của 10^2 cho tài sản như BTTC, SHIB, LUNC, XEC, WIN, BIDR, SPELL, HOT và DOGE. Độ chính xác giá mặc định cho phần còn lại là 10^8.

Thiết lập cấu hình nhân chứng

Witness tạo các chứng nhân cho prover và userproof. Cấu hình cho config.json như sau:

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 : Kết nối cơ sở dữ liệu MySQL
  • DbSuffix: Hậu tố bảng Mysql được tạo ra. Ví dụ, nếu bạn nhập thời gian 202307, nó sẽ tạo ra witness202307, bạn phải sửa đổi nó mỗi lần nó được tạo ra.
  • UserDataFileThư mục của các tệp tài sản người dùng được xuất từ sàn giao dịch, chương trình sẽ đọc tất cả các tệp CSV trong thư mục này.
  • TreeDB : cấu hình liên quan đến kvrocks
  • Redis : cấu hình liên quan đến redis
  • ZkKeyNameThư mục nơi khóa zk được đặt và tiền tố, như zkpor864, sẽ phù hợp với tất cả các tệp có tiền tố zkpor864.* liên quan.
    Trường DbSuffix là hậu tố của bảng và phải được thay đổi mỗi lần. Nếu được tạo ra một lần mỗi tháng, nó cũng có thể được thiết lập theo thời gian, chẳng hạn như 202306, 202307.

Chạy chương trình

Tải dự án xuống máy cục bộ của bạn và bắt đầu biên dịch chương trình.

Biên dịch chương trình

Plaintextmake build

Nếu bạn đang sử dụng mộtMacvà cần biên soạn các tệp nhị phân cho các nền tảng khác, bạn có thể thực thi các lệnh sau:

  • Để biên soạn cho Linux trên Mac: tạo build-linux
  • Để biên soạn cho Windows trên Mac: tạo bản windows

Tạo khóa

Plaintext./main keygen

Dịch vụ keygen sẽ tạo ra một số tệp key trong thư mục hiện tại sau khi hoàn thành, như sau:

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

Nếu Batch được thiết lập thành 4, nó sẽ là zkpor4.*.save.

Bước này mất rất nhiều thời gian để chạy. Khi đặt là 4, nó mất khoảng vài phút để hoàn thành; khi đặt là 864, nó có thể mất vài giờ.

Ghi:

  • Khóa được tạo bởi./main keygenLệnh này có thể được sử dụng trong thời gian dài. Nếu bạn cần tạo dữ liệu xác minh tài sản vào tháng sau, khóa zk vẫn còn hiệu lực.
  • The zkpor864.vk.savetệp sẽ được yêu cầu cho việc xác minh người dùng trong tương lai, vì vậy khuyến nghị sao lưu và lưu trữ chính xác lô khóa zk này.

Xóa dữ liệu kvrocks lịch sử

Nếu chương trình đã được thực thi trước đó, trước khi chạy lại, bạn cần dọn dẹp dữ liệu khóa merkle tài khoản hiện có trong kvrocks, bởi vì mỗi lần cần tạo một cây tài khoản khác nhau.

Văn bản gốc./ công cụ chính clean_kvrocks

Lưu ý: Lệnh này được sử dụng để xóa tất cả dữ liệu trong kvrocks, vì vậy không chia sẻ kvrocks giống với các chương trình khác. Đợi cho đến khi quá trình làm sạch dữ liệu trước đó hoàn tất trước khi bắt đầu tạo bằng chứng.

Khởi tạo dịch vụ chứng kiến

Plaintext./main witness

Sau khi thực hiện hoàn tất, một bảng có hậu tố "witness" sẽ được tạo ra trong cơ sở dữ liệu Mysql (dựa trên DbSuffixtrongconfig.json). Bảng sẽ chứa dữ liệu chứng minh chứng kiến được phân lô, sẽ được sử dụng trong việc tạo chứng minh zk và chứng minh người dùng sau này.

Tạo chứng minh zk

Dịch vụ Prover được sử dụng để tạo ra bằng chứng zk và hỗ trợ thực hiện song song. Nó đọc bằng chứng từ bảng chứng từ trong MySQL.

Chạy lệnh sau để tạo dữ liệu chứng minh zk:

Plaintext./main prover

_Lệnh này hỗ trợ thực thi song song. Bạn cần sao chép tệp chính và các tệp liên quan như zkpor864 sang các máy khác, và đảm bảo cóconfig.json .

Bạn có thể chạy lệnh sau để kiểm tra trạng thái thực hiện:

Plaintext./main công cụ check_prover_status

Quá trình thực hiện sẽ kết thúc và trở lại:

Mục chứng kiến tổng cộng 50, mục đã xuất bản 0, mục đang chờ 0, mục đã hoàn thành 50

Đảm bảo tất cả các mục chứng kiến đều ở trạng thái hoàn thành, cho thấy rằng người chứng minh đã hoàn thành thực hiện.

Sau khi thực hiện dịch vụ bằng chứng, một bảng bổ sung với hậu tố “proof” (dựa trên DbSuffixtrongconfig.jsonBảng này sẽ được tạo trong cơ sở dữ liệu Mysql. Dữ liệu trong bảng này dự kiến sẽ được công khai cho người dùng, cho phép họ xác minh tài sản của sàn giao dịch trong quá trình xác minh sau này. Chi tiết sẽ được giải thích thêm trong phần xác minh bên dưới.

Tạo chứng minh người dùng

Dịch vụ userproof được sử dụng để tạo và duy trì các chứng minh Merkle của người dùng.

Để tạo dữ liệu bằng chứng người dùng, chạy lệnh sau:

Plaintext./main userproof

Hiệu suất: Tạo ra khoảng 10k bằng chứng người dùng mỗi giây trong một máy ảo có bộ nhớ 128GB và 32 nhân.

_Sau khi chạy lệnh userproof, một bảng với tên userproof+số hạng (dựa trên DbSuffixtrongconfig.jsonBảng này sẽ được tạo trong cơ sở dữ liệu MySQL. Bảng này chứa thông tin tài sản người dùng và có thể được sử dụng cho cấu hình quyền theo nhu cầu. Bảng này cần được cung cấp cho người dùng cụ thể để tải xuống, để xác minh tài sản tài khoản của họ. Chi tiết cụ thể sẽ được cung cấp trong phần xác minh sau.

Cung cấp dữ liệu xác minh

Ở đây, chúng tôi cần cung cấp cho người dùng hai loại xác minh:

  • Xác minh tài sản giao dịch
  • Xác minh tài sản của người dùng
    Chúng tôi cần biên dịch các tệp thực thi nhị phân cho các môi trường khác nhau (Mac, Ubuntu, Windows) trước và cung cấp chúng cho người dùng tải xuống. Bạn có thể tham khảo file đính kèm Phát hànhđể biết thêm thông tin.

Xác minh Dữ liệu và Định dạng Tài sản của Sàn giao dịch

Để xác minh tài sản trao đổi, ngoài việc cung cấp cho người dùng một tệp nhị phân, cần cung cấp ba dữ liệu cấu hình sau:

  1. Tải xuốngproof.csv \
    Chúng tôi xuất bảng chứng minh trước đó như một tệp CSV (bao gồm cả phần đầu) trước, chẳng hạn như proof202307.csv, và cung cấp nó cho người dùng để tải xuống.
  1. zkpor864.vk.save \
    Chúng tôi cần cung cấp cho người dùng tập tin khóa xác minh zk864 đã được tạo trước đó.
  1. Giao dịch Tài sản \\
    Khi tệp Proof trên được tạo ra, lệnh sau có thể được sử dụng để truy vấn bản tóm lược dựa trên bảng tài sản người dùng được cung cấp bởi sàn giao dịch:
Plaintext ./main công cụ query_cex_assets
  1. Nhận phản hồi sau:
Văn bản không được mã hóa
  1. Mỗi khi sau khi tạo dữ liệu chứng minh, bạn cần truy vấn tài sản cex một lần và lưu dữ liệu này. Dữ liệu này sẽ được sử dụng trongCexAssetsInfolĩnh vực của cex_config.jsonfile bên dưới.
    Lưu ý: Tệp proof.csv ở đây nên thuộc cùng lô với dữ liệu chứng minh tài sản đã lưu, nếu không, có thể xảy ra sự cố xác minh.

Tệp cấu hình

cex_config.jsonlà tệp cấu hình để xác minh tài sản trao đổi.

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},"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":1410000000000,"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":208490000000,"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":17},{"TotalEquity":192954000,"TotalDebt":0,"BasePrice":166000000,"Symbol":"ankr","Index":18},{"TotalEquity" :2160000,"TotalDebt":0,"BasePrice":209400000000,"Symbol":"ant","Index":19},{"TotalEquity":5995002000,"TotalDebt":0,"BasePrice":40370000000,"Symbol":"ape","Index":20},{"TotalEquity":0,"TotalDebt":0,"BasePrice":1110000000,"Symbol":"api3","Index":21},{"TotalEquity":53728000,"TotalDebt":0,"BasePrice":38560000000,"Symbol":"apt","Index":22},{"TotalEquity":0,"TotalDebt":0,"BasePrice":685000000000,"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":1024500000000,"Symbol":"atom","Index":28},{"TotalEquity":2619441828," TotalDebt":0,"BasePrice":409000000000,"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":682000000000,"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":371000000000,"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":42}374840602180,{"TotalEquity":0,"BasePrice":699700000,"Symbol":"beta","Index":43},{"TotalEquity" :270294580,"TotalDebt":0,"BasePrice":12290900000000,"Ký hiệu":"beth","Chỉ mục":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":25990000000000,"Symbol":"bnb","Index":48},{"TotalEquity":0," TotalDebt":0,"BasePrice":34900000000,"Ký hiệu":"bnt","Chỉ số"::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,"Ký hiệu":"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":52000000000,"Ký hiệu":"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":1079000000000,"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,"Ký hiệu":"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,"Ký hiệu":"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":159200000000,"Symbol":"dego","Index":83},{"TotalEquity" :26105549312822,"TotalDebt":0,"BasePrice":6830000,"Ký hiệu":"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"::"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":89600000000,"Ký hiệu":"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":50900000000,"Symbol":"flux","Index"::"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,"Ký hiệu":"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":202600000000,"Symbol":"gas","Index":124},"Index":124},{"TotalEquity":0,"TotalDebt":0,"BasePrice":18500000000,"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,"Ký hiệu":"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":"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,"Ký hiệu":"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,"Ký hiệu":"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":65900000000,"Symbol":"kava","Index":152},{"TotalEquity":30527442000,"TotalDebt":0,"BasePrice":9480000000,"Ký hiệu":" kda","Index":153},{"TotalEquity":7587760000,"TotalDebt":0,"BasePrice":29350000,"Ký hiệu":"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,"Ký hiệu":" 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," Ký hiệu":"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":45000000000,"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":631000000000,"Symbol":"movr","Index":188},{"TotalEquity":3096000,"TotalDebt":0,"BasePrice":70200000000,"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":239600000000,"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":201}561009012134,{"TotalEquity":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":108400000000,"Symbol":"op","Index":206},{"TotalEquity"11568582000:206,"TotalDebt":0,"BasePrice":7680000000,"Symbol":"orn","Index":207},{" TotalEquity":0,"TotalDebt":0,"BasePrice":72400000000,"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,"Ký hiệu":"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":392000000000,"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,"Ký hiệu":"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,"Ký hiệu":"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,"Ký hiệu":"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"," Chỉ số":262},{"TotalEquity":326978131392,"TotalDebt":0,"BasePrice":50400000,"Ký hiệu":"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," Ký hiệu":"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,"Ký hiệu":"tlm","Chỉ mục":272},{"TotalEquity":2508400,"TotalDebt":0,"BasePrice":27620000000,"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," Ký hiệu":"tru","Index":277},{"TotalEquity":2043669562480,"TotalDebt":0,"BasePrice":524600000,"Ký hiệu":"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":154000000000,"Symbol":"uma","Index":281},{"TotalEquity":19120000,"TotalDebt":0,"BasePrice":39360000000," Ký hiệu":"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," Ký hiệu":"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,"Ký hiệu":"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":849000000000,"Symbol":"zen","Index":313},{"TotalEquity":2075635646560,"TotalDebt":0,"BasePrice":174100000,"Symbol":"zil","Index":314},{"TotalEquity":119194400,"TotalDebt":0,"BasePrice":1603000000,"Symbol":"zrx","Index":315}]}

Bằng chứng dự trữCsv: Chỉ định đường dẫn của bảng proof.csv

ZkKeyVKDirectoryAndPrefix: Chỉ định đường dẫn và tiền tố của khóa xác minh zkpor

CexAssetsInfo: Trao đổi tài sản được thu được từ truy vấn lệnh trên

Xác thực Dữ liệu và Định dạng Cần Thiết cho Tài sản Người dùng

  • Cung cấp user_config.jsontệp
    Chúng tôi cần sử dụnguserproofbảng được tạo ra trong phần chứng thực người dùng trước đó, sau đó, dựa trên mã xác định duy nhất của người dùng trong phần được cung cấpexample_users.csvtìm tệp, tìm người dùng tương ứng tronguserproofbảng sử dụngaccount_idfield. Khôi phục dữ liệucấu hìnhtrường và lưu nó như làuser_config.jsonđể người dùng tải xuống.

Cấu trúc của tệp user_config.json như sau:

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," Vốn chủ sở hữu":70860,"Nợ":0}], "TreeRootHash":"2da42ab6586ef6ad51b4bc8063ce92dcefb951572a26597346b7f78c1329ef0b", "MerkleProofEncode":["EmvQ5Sh50gHD96PfN2/o49gT7xVuuX3P22KLVmpWyVo=",","EmvQ5Sh50gHD96PfN2/",","JLEw2CGGAPi2TWn7GMbdlwT0wJbpVfJ4A+XLXNYz9X4=","BRCCQWeZy3fmPgiciBNdDMmugJtcQnxfI/b0EU4MlR8=","K8P8ZvYSY9iEreGnatTO8h1/I3Q+ZSkBA3TYYI1vN1g=","GwxhwdTBri22QcY4Pj9B3TkkLpOTGlCpqnsmxVquaeQ=","JIB+i/tDXSbEyK5ASwx2Tgbtm2ckJrJ30qnLm3FGhvs="," I0AzcupyH3clJooxcjaZlOIWOTY531UBJIMpfu2ds9o=","GYU5H/xfC18jR4LXz3axjKgJOaAbSAz3vO/taxTTMDE=","GML/iwCEjgYlSAmd4cQQhKsjH+xscIG6hbM5HP+OP/I=","BBXHrrH1oIGsjK1PsZt1d+ovsDW5IvHxFUlt8CJ3j/M=","BBXHrrH1oIGsjK1PsZt1d+ovsDW5IvHxFUlt8CJ3j/M=",","BBXHrrH1oIGsjK1PsZt1d+ovsDW5IvHxFUlt8CJ3j/M=",","BBXHrrH1oIGsjK1PsZt1d+ovsDW5IvHxFUlt8CJ3j/M=",","BBXHrrH1oIGsjK1PsZt1d+ovsDW5IvHxFUlt8CJ3j/M=",","BBXHrrH1oIGsjK1PsZt1d+ovsDW5IvHxFUlt8CJ3j/M=",","BBXHrrH1oIGsjK1PsZt1d+ovsDW5IvHxFUlt8CJ3j/M=",","F6GyEMWOjvKBgKDCCkQiOfc5SvGEt2MWyQTzszXzd6Y=","JDZjD4o0q6cGYJzj0BBaBEBEN4y4UjYgMSNIXf2P6Ps=","C+Mh1228yGv2Or6yQs3U0sjBzxxWJPTyH5GNG3FzMbk=","Jpo3tkE2KgMxWoEdMM1sOyJsM9YjsI9aONsEEqmMPnA=","FaWOvl42fYbklbc9WgWFqeW3Q/54KXT5zYdIGyCh9iE="," EvcLzRuRio6YT9QjSPp0GGGFYSIW8fKOqQlcOXFBBwo=","LJos88T9kz5kG0o+yeNX0ij+WwrOEIqRVpJtOrUrnns=","CFv3HhUsTXNa3iT/cc+GhD9lV+weuSWoJJRVgZmn7fQ=","EyfPjcon6R+nXBDT/9++ddQqlxiBaTMBiC0R6NPoM=",","EyfPjcon6R+nXBDT/9++ddQqlxiBaSaTMBiC0R6NPoM=","EyfPjcon6R+nXBDT HOtPMAkz3JJG3n0bxNIqkR1p/Q758Em1Jjn1KE6A2mg=","Lq3n7B3Bs7ILnDLG17szIf9O0OdotsWpSLwejnJVcLY=","HthvmzZ/MHbOWVSuFyc9sUvuSz0ddveEwoyQExrim5k=","BOxHEGxRtmNch1R57kgKMxiBVnR/tCo9y3XcJco7Saw=","Dilkpy2L945iR+BsbaffA7MBZSNofd2PdZSkzN48DOE=","Fotw+U5orv9231KkpBYOXM+odtZGgCaNw5zOY+xZ5Oc=","J7pOZTvxtC7B8RzevUvrd90GfrH2oxtRqkEF+mFdCuc=","EUZQwQDUH48osqrtgcPuAQsQvdVKTC+hYmKvIhzImZQ=","HKC2vx3pnDTdfyrzYjCbJMcxojJfvuyzj2/rMMiMplQ="]}

Cung cấp Nội dung cuối cùng cho Người dùng

Cấu trúc tệp mà người dùng cuối cùng nhận được khoảng như sau:

Plaintext- config     cex_config.json    user_config.json    proof.csvzkpor864.vk.savemain

Khi tệp nhị phân “main” được cung cấp, có thể được đặt tên khác nhau tùy thuộc vào thiết bị.

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

Xác minh Tài sản Sàn giao dịch

Chạy lệnh sau để bắt đầu xác minh:

Plaintext./main verify cex

Xác minh thành công. Đầu ra sẽ là:

Tất cả các chứng minh đều đã được xác minh thành công!!!

Xác minh Tài sản Người dùng

Văn bản thuần túy./main xác minh người dùng

Xác minh thành công. Đầu ra sẽ là:

Plaintextmerkle leave hash: 164bc38a71b7a757455d93017242b4960cd1fea6842d8387b60c5780205858ceverify pass!!!

Kết luận

Bật zk-SNARK là một bản nâng cấp quan trọng cho Gate.io's bằng chứng dự trữ và một bước quan trọng trong việc bảo vệ tài sản người dùng. Với các biện pháp bảo mật và bảo vệ quyền riêng tư xuất sắc, nó mang lại sự tự tin hơn cho người dùng và thiết lập một tiêu chuẩn mới cho toàn bộ ngành công nghiệp tiền điện tử.

Bạn có thể nhấp ở đâyđể ghé thămGate.ioTruy cập trang frontend Proof of Reserves của ‘s và xem các bằng chứng được tạo ra bởi Gate.iođội sử dụng dự án này. Mã hiện đã công khai trên GitHubChúng tôi mời mọi người quan tâm đến sàn giao dịch phi tập trung, zk-SNARK và công nghệ MerkleTree tham gia dự án này. Cho dù bạn muốn đóng góp ý kiến, báo cáo lỗi, hay nộp mã, sự tham gia của bạn luôn được chào đón.

Autor: Gate learn
Tradutor: Sonia
Revisores: Wayne、KOWEI、Elisa、Ashley、Joyce
* As informações não pretendem ser e não constituem aconselhamento financeiro ou qualquer outra recomendação de qualquer tipo oferecida ou endossada pela Gate.io.
* Este artigo não pode ser reproduzido, transmitido ou copiado sem referência à Gate.io. A contravenção é uma violação da Lei de Direitos Autorais e pode estar sujeita a ação legal.

Hướng dẫn kỹ thuật: Bằng chứng dự trữ dựa trên zkSNARK của Gate.io

Nâng cao12/11/2023, 4:41:28 PM
Là một trong những sàn giao dịch sớm nhất triển khai Bằng chứng Dự trữ, Gate.io một lần nữa nâng cấp giải pháp Bằng chứng Dự trữ của mình bằng công nghệ zk-SNARK. Bài viết này sẽ hướng dẫn bạn cách sử dụng công nghệ mã nguồn mở do Gate.io cung cấp để xác minh tính an toàn của tài sản trên sàn giao dịch và tài sản cá nhân trên thiết bị của bạn.

Giới thiệu

Với 13 triệu người dùng, Gate.iohiểu rõ tầm quan trọng của an ninh quỹ và đã thực hiện các biện pháp hiệu quả trong ngành.Gate.iolà một trong những sàn giao dịch sớm nhất triển khai Bằng chứng dự trữ (PoR), được tiết lộ vào tháng 5 năm 2020. Cho đến khi khủng hoảng thanh khoản và phá sản do FTX biển thủ tài sản người dùng vào năm 2022 thì PoR mới được biết đến như một giải pháp để bảo vệ quỹ người dùng và tăng cường niềm tin vào nền tảng. Gần đây, Gate.iođã công bố một bản nâng cấp cho giải pháp Bằng chứng dự trữ của mình, giới thiệu công nghệ zk-SNARK và Cây Merkle để tăng cường an ninh tài sản và bảo vệ quyền riêng tư.

Bài viết này sẽ đưa bạn qua quá trình phát triển của Gate.io's Bằng chứng dự trữ, từng bước một, để sao chép quá trình xây dựng Bằng chứng dự trữ của sàn giao dịch trên thiết bị của bạn.'

Nền tảng

Merkle Tree là một cây nhị phân của các giá trị băm, trong đó mỗi nút lá đại diện cho một phần dữ liệu hoặc một giá trị băm của dữ liệu. Nó được sử dụng để xác minh tính toàn vẹn của một lượng lớn dữ liệu một cách hiệu quả. Trong quá khứ, một giải pháp chứng minh dự trữ phổ biến liên quan đến việc mã hóa dữ liệu người dùng và tạo Merkle Tree. Tuy nhiên, phương pháp này có những hạn chế, vì nó không thể phát hiện tài khoản có giá trị âm (giá trị tài khoản phải lớn hơn hoặc bằng 0) và không thể bảo vệ đầy đủ quyền riêng tư của người dùng.

zk-SNARK là một công nghệ mật mã mạnh mẽ. Trong giải pháp này, chúng tôi đưa tất cả tiền gửi của người dùng vào một Cây Merkle và sử dụng zk-SNARK để chứng minh rằng tất cả số dư trong cây đều không âm và tổng cộng lên một giá trị được tuyên bố. Nếu tài sản được công bố công khai trên sàn giao dịch vượt quá giá trị này, có thể chứng minh rằng sàn giao dịch có khả năng thanh toán 100%.

Bằng cách kết hợp zk-SNARK với Merkle Tree, chúng ta có thể đồng thời xác minh tính toàn vẹn và nhất quán của dữ liệu trong khi bảo vệ sự riêng tư của các giao dịch. Người chứng minh có thể sử dụng zk-SNARK để chứng minh rằng họ biết một bằng chứng Merkle thỏa mãn các điều kiện cụ thể mà không tiết lộ nội dung cụ thể của bằng chứng. Điều này có lợi cho các sàn giao dịch tiền mã hóa vì nó có thể chứng minh có đủ tiền để đáp ứng tất cả các nợ và bảo vệ sự riêng tư của người dùng.

Cấu trúc chương trình

Văn bản thô- mạch    #thiết kế mạch- khách hàng    #lệnh- cấu hình    #tệp cấu hình- toàn cầu    #biến toàn cầu- dịch vụ        - dịch vụ keygen    #dịch vụ tạo ra các khóa zk        - dịch vụ prover    #dịch vụ tạo ra dữ liệu chứng minh        - dịch vụ công cụ    #công cụ chung        - dịch vụ userproff    #tạo dữ liệu user_proof        - dịch vụ xác minh    #dịch vụ xác minh         - dịch vụ nhân chứng    #dịch vụ tạo dữ liệu nhân chứng- tiện ích    #tập hợp các chức năng chung

Chuẩn bị

Cài đặt cơ sở dữ liệu

  1. Mysql: Lưu bằng chứng, bằng chứng người dùng và nhân chứng
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
  1. Redis: Distributed Lock

    Plaintextdocker run -d --name zk-redis -p 6379:6379 redis
  2. Kvrocks: Lưu trữ cây tài khoản người dùng

    Plaintextdocker run -d --name zk-kvrocks -p 6666:6666 apache/kvrocks
  3. Nếu kết nối với kvrocks thất bại sau khi cài đặt: \
    Kế hoạch 1: Bạn có thể thử sửa đổi tệp /var/lib/kvrocks/kvrocks.conf bên trong container Docker. Thay đổi thànhliên kết 0.0.0.0và khởi động lại phiên bản.
    Kế hoạch 2: Cài đặt dịch vụ bằng cách mã nguồn.

Cài đặt môi trường Go

Để biên dịch chương trình, bạn phải cài đặt môi trường ngôn ngữ lập trình Go. Bạn có thể cài đặt nó tùy theo phiên bản hệ thống của bạn.Tải xuống Go.

Xuất Dữ Liệu Tài Sản Người Dùng Sàn Giao Dịch

Cấu trúc của dữ liệu assets.csv người dùng trao đổi được xuất như sau:

Plaintext- rn    #sequence- id    #unique identifier của người dùng trên sàn giao dịch- e_xtoken   #vốn xtoken của người dùng, chẳng hạn như e_BTC- d_xtoken   #nợ xtoken của người dùng, chẳng hạn như d_BTC- x_token     #giá trị tài sản ròng của người dùng, x_token = e_xtoken - d_xtoken- xtoken_usdt_price   #giá của xtoken- total_net_balance_usdt    #tổng giá trị của tất cả các token trong USDT

Bạn có thể tham khảo ./example_data/example_users.csvđể biết thông tin cụ thể.

Yêu cầu Cấu hình Hệ thống Được Khuyến nghị

Cấu hình tối thiểu được khuyến nghị cho môi trường sản xuất là như sau:

  • 128GB bộ nhớ
  • Máy ảo 32 nhân
  • 50 GB của không gian đĩa

Tập Tin Cấu Hình

Khi tạo khóa zk trong môi trường sản xuất, nên thiết lập biến Batch thành 864, cho biết có bao nhiêu người dùng có thể được tạo ra trong một lô. Giá trị càng lớn, thời gian tạo khóa zk và chứng minh càng lâu. Khi thiết lập thành 864, mất khoảng 6 giờ để tạo khóa zk trên máy ảo 128GB bộ nhớ, 32 nhân, và 105 giây để tạo một lô chứng minh zk.

Vì vậy, trong giai đoạn gỡ lỗi, bạn có thể sửa đổi utils/constants.gotrongSố lần tạo người dùng theo lôđể4và sau đó biên dịch lại. Tuy nhiên, khuyến nghị thiết lập tham số này thành864trong sản xuất thực tế.

Nếu bạn cần chỉnh sửa Batch, các tệp cấu hình cần phải thay đổi là:

  • Sửa ./config/config.json
    "ZkKeyName": "./zkpor864" => "ZkKeyName": "./zkpor4"
  • Sửa đổi ./config/cex_config.json
    "ZkKeyVKDirectoryAndPrefix": "./zkpor864" => "ZkKeyVKDirectoryAndPrefix": "./zkpor4"
  • Sửa ./utils/constants.go
    BatchCreateUserOpsCounts = 864 => BatchCreateUserOpsCounts = 4

Cài đặt Tiền điện tử

  • Sửa ./utils/constants.go

Đếm tiền điện tử

AssetCounts = 350 => AssetCounts = Required Counts

AssetCounts đại diện cho số loại token được bao gồm trong sàn giao dịch, và số lượng thực tế không nên thấp hơn giá trị được cấu hình. Ví dụ, nếu thực sự có 420 token, có thể điều chỉnh thành 500. Xem xét việc sử dụng bộ nhớ, nên thiết lập một giá trị hợp lý dựa trên tình hình.

Độ chính xác giá

AssetTypeForTwoDigitsTrường này là độ chính xác giá của 10^2 cho tài sản như BTTC, SHIB, LUNC, XEC, WIN, BIDR, SPELL, HOT và DOGE. Độ chính xác giá mặc định cho phần còn lại là 10^8.

Thiết lập cấu hình nhân chứng

Witness tạo các chứng nhân cho prover và userproof. Cấu hình cho config.json như sau:

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 : Kết nối cơ sở dữ liệu MySQL
  • DbSuffix: Hậu tố bảng Mysql được tạo ra. Ví dụ, nếu bạn nhập thời gian 202307, nó sẽ tạo ra witness202307, bạn phải sửa đổi nó mỗi lần nó được tạo ra.
  • UserDataFileThư mục của các tệp tài sản người dùng được xuất từ sàn giao dịch, chương trình sẽ đọc tất cả các tệp CSV trong thư mục này.
  • TreeDB : cấu hình liên quan đến kvrocks
  • Redis : cấu hình liên quan đến redis
  • ZkKeyNameThư mục nơi khóa zk được đặt và tiền tố, như zkpor864, sẽ phù hợp với tất cả các tệp có tiền tố zkpor864.* liên quan.
    Trường DbSuffix là hậu tố của bảng và phải được thay đổi mỗi lần. Nếu được tạo ra một lần mỗi tháng, nó cũng có thể được thiết lập theo thời gian, chẳng hạn như 202306, 202307.

Chạy chương trình

Tải dự án xuống máy cục bộ của bạn và bắt đầu biên dịch chương trình.

Biên dịch chương trình

Plaintextmake build

Nếu bạn đang sử dụng mộtMacvà cần biên soạn các tệp nhị phân cho các nền tảng khác, bạn có thể thực thi các lệnh sau:

  • Để biên soạn cho Linux trên Mac: tạo build-linux
  • Để biên soạn cho Windows trên Mac: tạo bản windows

Tạo khóa

Plaintext./main keygen

Dịch vụ keygen sẽ tạo ra một số tệp key trong thư mục hiện tại sau khi hoàn thành, như sau:

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

Nếu Batch được thiết lập thành 4, nó sẽ là zkpor4.*.save.

Bước này mất rất nhiều thời gian để chạy. Khi đặt là 4, nó mất khoảng vài phút để hoàn thành; khi đặt là 864, nó có thể mất vài giờ.

Ghi:

  • Khóa được tạo bởi./main keygenLệnh này có thể được sử dụng trong thời gian dài. Nếu bạn cần tạo dữ liệu xác minh tài sản vào tháng sau, khóa zk vẫn còn hiệu lực.
  • The zkpor864.vk.savetệp sẽ được yêu cầu cho việc xác minh người dùng trong tương lai, vì vậy khuyến nghị sao lưu và lưu trữ chính xác lô khóa zk này.

Xóa dữ liệu kvrocks lịch sử

Nếu chương trình đã được thực thi trước đó, trước khi chạy lại, bạn cần dọn dẹp dữ liệu khóa merkle tài khoản hiện có trong kvrocks, bởi vì mỗi lần cần tạo một cây tài khoản khác nhau.

Văn bản gốc./ công cụ chính clean_kvrocks

Lưu ý: Lệnh này được sử dụng để xóa tất cả dữ liệu trong kvrocks, vì vậy không chia sẻ kvrocks giống với các chương trình khác. Đợi cho đến khi quá trình làm sạch dữ liệu trước đó hoàn tất trước khi bắt đầu tạo bằng chứng.

Khởi tạo dịch vụ chứng kiến

Plaintext./main witness

Sau khi thực hiện hoàn tất, một bảng có hậu tố "witness" sẽ được tạo ra trong cơ sở dữ liệu Mysql (dựa trên DbSuffixtrongconfig.json). Bảng sẽ chứa dữ liệu chứng minh chứng kiến được phân lô, sẽ được sử dụng trong việc tạo chứng minh zk và chứng minh người dùng sau này.

Tạo chứng minh zk

Dịch vụ Prover được sử dụng để tạo ra bằng chứng zk và hỗ trợ thực hiện song song. Nó đọc bằng chứng từ bảng chứng từ trong MySQL.

Chạy lệnh sau để tạo dữ liệu chứng minh zk:

Plaintext./main prover

_Lệnh này hỗ trợ thực thi song song. Bạn cần sao chép tệp chính và các tệp liên quan như zkpor864 sang các máy khác, và đảm bảo cóconfig.json .

Bạn có thể chạy lệnh sau để kiểm tra trạng thái thực hiện:

Plaintext./main công cụ check_prover_status

Quá trình thực hiện sẽ kết thúc và trở lại:

Mục chứng kiến tổng cộng 50, mục đã xuất bản 0, mục đang chờ 0, mục đã hoàn thành 50

Đảm bảo tất cả các mục chứng kiến đều ở trạng thái hoàn thành, cho thấy rằng người chứng minh đã hoàn thành thực hiện.

Sau khi thực hiện dịch vụ bằng chứng, một bảng bổ sung với hậu tố “proof” (dựa trên DbSuffixtrongconfig.jsonBảng này sẽ được tạo trong cơ sở dữ liệu Mysql. Dữ liệu trong bảng này dự kiến sẽ được công khai cho người dùng, cho phép họ xác minh tài sản của sàn giao dịch trong quá trình xác minh sau này. Chi tiết sẽ được giải thích thêm trong phần xác minh bên dưới.

Tạo chứng minh người dùng

Dịch vụ userproof được sử dụng để tạo và duy trì các chứng minh Merkle của người dùng.

Để tạo dữ liệu bằng chứng người dùng, chạy lệnh sau:

Plaintext./main userproof

Hiệu suất: Tạo ra khoảng 10k bằng chứng người dùng mỗi giây trong một máy ảo có bộ nhớ 128GB và 32 nhân.

_Sau khi chạy lệnh userproof, một bảng với tên userproof+số hạng (dựa trên DbSuffixtrongconfig.jsonBảng này sẽ được tạo trong cơ sở dữ liệu MySQL. Bảng này chứa thông tin tài sản người dùng và có thể được sử dụng cho cấu hình quyền theo nhu cầu. Bảng này cần được cung cấp cho người dùng cụ thể để tải xuống, để xác minh tài sản tài khoản của họ. Chi tiết cụ thể sẽ được cung cấp trong phần xác minh sau.

Cung cấp dữ liệu xác minh

Ở đây, chúng tôi cần cung cấp cho người dùng hai loại xác minh:

  • Xác minh tài sản giao dịch
  • Xác minh tài sản của người dùng
    Chúng tôi cần biên dịch các tệp thực thi nhị phân cho các môi trường khác nhau (Mac, Ubuntu, Windows) trước và cung cấp chúng cho người dùng tải xuống. Bạn có thể tham khảo file đính kèm Phát hànhđể biết thêm thông tin.

Xác minh Dữ liệu và Định dạng Tài sản của Sàn giao dịch

Để xác minh tài sản trao đổi, ngoài việc cung cấp cho người dùng một tệp nhị phân, cần cung cấp ba dữ liệu cấu hình sau:

  1. Tải xuốngproof.csv \
    Chúng tôi xuất bảng chứng minh trước đó như một tệp CSV (bao gồm cả phần đầu) trước, chẳng hạn như proof202307.csv, và cung cấp nó cho người dùng để tải xuống.
  1. zkpor864.vk.save \
    Chúng tôi cần cung cấp cho người dùng tập tin khóa xác minh zk864 đã được tạo trước đó.
  1. Giao dịch Tài sản \\
    Khi tệp Proof trên được tạo ra, lệnh sau có thể được sử dụng để truy vấn bản tóm lược dựa trên bảng tài sản người dùng được cung cấp bởi sàn giao dịch:
Plaintext ./main công cụ query_cex_assets
  1. Nhận phản hồi sau:
Văn bản không được mã hóa
  1. Mỗi khi sau khi tạo dữ liệu chứng minh, bạn cần truy vấn tài sản cex một lần và lưu dữ liệu này. Dữ liệu này sẽ được sử dụng trongCexAssetsInfolĩnh vực của cex_config.jsonfile bên dưới.
    Lưu ý: Tệp proof.csv ở đây nên thuộc cùng lô với dữ liệu chứng minh tài sản đã lưu, nếu không, có thể xảy ra sự cố xác minh.

Tệp cấu hình

cex_config.jsonlà tệp cấu hình để xác minh tài sản trao đổi.

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},"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":1410000000000,"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":208490000000,"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":17},{"TotalEquity":192954000,"TotalDebt":0,"BasePrice":166000000,"Symbol":"ankr","Index":18},{"TotalEquity" :2160000,"TotalDebt":0,"BasePrice":209400000000,"Symbol":"ant","Index":19},{"TotalEquity":5995002000,"TotalDebt":0,"BasePrice":40370000000,"Symbol":"ape","Index":20},{"TotalEquity":0,"TotalDebt":0,"BasePrice":1110000000,"Symbol":"api3","Index":21},{"TotalEquity":53728000,"TotalDebt":0,"BasePrice":38560000000,"Symbol":"apt","Index":22},{"TotalEquity":0,"TotalDebt":0,"BasePrice":685000000000,"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":1024500000000,"Symbol":"atom","Index":28},{"TotalEquity":2619441828," TotalDebt":0,"BasePrice":409000000000,"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":682000000000,"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":371000000000,"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":42}374840602180,{"TotalEquity":0,"BasePrice":699700000,"Symbol":"beta","Index":43},{"TotalEquity" :270294580,"TotalDebt":0,"BasePrice":12290900000000,"Ký hiệu":"beth","Chỉ mục":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":25990000000000,"Symbol":"bnb","Index":48},{"TotalEquity":0," TotalDebt":0,"BasePrice":34900000000,"Ký hiệu":"bnt","Chỉ số"::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,"Ký hiệu":"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":52000000000,"Ký hiệu":"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":1079000000000,"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,"Ký hiệu":"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,"Ký hiệu":"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":159200000000,"Symbol":"dego","Index":83},{"TotalEquity" :26105549312822,"TotalDebt":0,"BasePrice":6830000,"Ký hiệu":"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"::"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":89600000000,"Ký hiệu":"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":50900000000,"Symbol":"flux","Index"::"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,"Ký hiệu":"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":202600000000,"Symbol":"gas","Index":124},"Index":124},{"TotalEquity":0,"TotalDebt":0,"BasePrice":18500000000,"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,"Ký hiệu":"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":"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,"Ký hiệu":"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,"Ký hiệu":"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":65900000000,"Symbol":"kava","Index":152},{"TotalEquity":30527442000,"TotalDebt":0,"BasePrice":9480000000,"Ký hiệu":" kda","Index":153},{"TotalEquity":7587760000,"TotalDebt":0,"BasePrice":29350000,"Ký hiệu":"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,"Ký hiệu":" 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," Ký hiệu":"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":45000000000,"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":631000000000,"Symbol":"movr","Index":188},{"TotalEquity":3096000,"TotalDebt":0,"BasePrice":70200000000,"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":239600000000,"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":201}561009012134,{"TotalEquity":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":108400000000,"Symbol":"op","Index":206},{"TotalEquity"11568582000:206,"TotalDebt":0,"BasePrice":7680000000,"Symbol":"orn","Index":207},{" TotalEquity":0,"TotalDebt":0,"BasePrice":72400000000,"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,"Ký hiệu":"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":392000000000,"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,"Ký hiệu":"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,"Ký hiệu":"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,"Ký hiệu":"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"," Chỉ số":262},{"TotalEquity":326978131392,"TotalDebt":0,"BasePrice":50400000,"Ký hiệu":"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," Ký hiệu":"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,"Ký hiệu":"tlm","Chỉ mục":272},{"TotalEquity":2508400,"TotalDebt":0,"BasePrice":27620000000,"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," Ký hiệu":"tru","Index":277},{"TotalEquity":2043669562480,"TotalDebt":0,"BasePrice":524600000,"Ký hiệu":"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":154000000000,"Symbol":"uma","Index":281},{"TotalEquity":19120000,"TotalDebt":0,"BasePrice":39360000000," Ký hiệu":"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," Ký hiệu":"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,"Ký hiệu":"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":849000000000,"Symbol":"zen","Index":313},{"TotalEquity":2075635646560,"TotalDebt":0,"BasePrice":174100000,"Symbol":"zil","Index":314},{"TotalEquity":119194400,"TotalDebt":0,"BasePrice":1603000000,"Symbol":"zrx","Index":315}]}

Bằng chứng dự trữCsv: Chỉ định đường dẫn của bảng proof.csv

ZkKeyVKDirectoryAndPrefix: Chỉ định đường dẫn và tiền tố của khóa xác minh zkpor

CexAssetsInfo: Trao đổi tài sản được thu được từ truy vấn lệnh trên

Xác thực Dữ liệu và Định dạng Cần Thiết cho Tài sản Người dùng

  • Cung cấp user_config.jsontệp
    Chúng tôi cần sử dụnguserproofbảng được tạo ra trong phần chứng thực người dùng trước đó, sau đó, dựa trên mã xác định duy nhất của người dùng trong phần được cung cấpexample_users.csvtìm tệp, tìm người dùng tương ứng tronguserproofbảng sử dụngaccount_idfield. Khôi phục dữ liệucấu hìnhtrường và lưu nó như làuser_config.jsonđể người dùng tải xuống.

Cấu trúc của tệp user_config.json như sau:

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," Vốn chủ sở hữu":70860,"Nợ":0}], "TreeRootHash":"2da42ab6586ef6ad51b4bc8063ce92dcefb951572a26597346b7f78c1329ef0b", "MerkleProofEncode":["EmvQ5Sh50gHD96PfN2/o49gT7xVuuX3P22KLVmpWyVo=",","EmvQ5Sh50gHD96PfN2/",","JLEw2CGGAPi2TWn7GMbdlwT0wJbpVfJ4A+XLXNYz9X4=","BRCCQWeZy3fmPgiciBNdDMmugJtcQnxfI/b0EU4MlR8=","K8P8ZvYSY9iEreGnatTO8h1/I3Q+ZSkBA3TYYI1vN1g=","GwxhwdTBri22QcY4Pj9B3TkkLpOTGlCpqnsmxVquaeQ=","JIB+i/tDXSbEyK5ASwx2Tgbtm2ckJrJ30qnLm3FGhvs="," I0AzcupyH3clJooxcjaZlOIWOTY531UBJIMpfu2ds9o=","GYU5H/xfC18jR4LXz3axjKgJOaAbSAz3vO/taxTTMDE=","GML/iwCEjgYlSAmd4cQQhKsjH+xscIG6hbM5HP+OP/I=","BBXHrrH1oIGsjK1PsZt1d+ovsDW5IvHxFUlt8CJ3j/M=","BBXHrrH1oIGsjK1PsZt1d+ovsDW5IvHxFUlt8CJ3j/M=",","BBXHrrH1oIGsjK1PsZt1d+ovsDW5IvHxFUlt8CJ3j/M=",","BBXHrrH1oIGsjK1PsZt1d+ovsDW5IvHxFUlt8CJ3j/M=",","BBXHrrH1oIGsjK1PsZt1d+ovsDW5IvHxFUlt8CJ3j/M=",","BBXHrrH1oIGsjK1PsZt1d+ovsDW5IvHxFUlt8CJ3j/M=",","BBXHrrH1oIGsjK1PsZt1d+ovsDW5IvHxFUlt8CJ3j/M=",","F6GyEMWOjvKBgKDCCkQiOfc5SvGEt2MWyQTzszXzd6Y=","JDZjD4o0q6cGYJzj0BBaBEBEN4y4UjYgMSNIXf2P6Ps=","C+Mh1228yGv2Or6yQs3U0sjBzxxWJPTyH5GNG3FzMbk=","Jpo3tkE2KgMxWoEdMM1sOyJsM9YjsI9aONsEEqmMPnA=","FaWOvl42fYbklbc9WgWFqeW3Q/54KXT5zYdIGyCh9iE="," EvcLzRuRio6YT9QjSPp0GGGFYSIW8fKOqQlcOXFBBwo=","LJos88T9kz5kG0o+yeNX0ij+WwrOEIqRVpJtOrUrnns=","CFv3HhUsTXNa3iT/cc+GhD9lV+weuSWoJJRVgZmn7fQ=","EyfPjcon6R+nXBDT/9++ddQqlxiBaTMBiC0R6NPoM=",","EyfPjcon6R+nXBDT/9++ddQqlxiBaSaTMBiC0R6NPoM=","EyfPjcon6R+nXBDT HOtPMAkz3JJG3n0bxNIqkR1p/Q758Em1Jjn1KE6A2mg=","Lq3n7B3Bs7ILnDLG17szIf9O0OdotsWpSLwejnJVcLY=","HthvmzZ/MHbOWVSuFyc9sUvuSz0ddveEwoyQExrim5k=","BOxHEGxRtmNch1R57kgKMxiBVnR/tCo9y3XcJco7Saw=","Dilkpy2L945iR+BsbaffA7MBZSNofd2PdZSkzN48DOE=","Fotw+U5orv9231KkpBYOXM+odtZGgCaNw5zOY+xZ5Oc=","J7pOZTvxtC7B8RzevUvrd90GfrH2oxtRqkEF+mFdCuc=","EUZQwQDUH48osqrtgcPuAQsQvdVKTC+hYmKvIhzImZQ=","HKC2vx3pnDTdfyrzYjCbJMcxojJfvuyzj2/rMMiMplQ="]}

Cung cấp Nội dung cuối cùng cho Người dùng

Cấu trúc tệp mà người dùng cuối cùng nhận được khoảng như sau:

Plaintext- config     cex_config.json    user_config.json    proof.csvzkpor864.vk.savemain

Khi tệp nhị phân “main” được cung cấp, có thể được đặt tên khác nhau tùy thuộc vào thiết bị.

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

Xác minh Tài sản Sàn giao dịch

Chạy lệnh sau để bắt đầu xác minh:

Plaintext./main verify cex

Xác minh thành công. Đầu ra sẽ là:

Tất cả các chứng minh đều đã được xác minh thành công!!!

Xác minh Tài sản Người dùng

Văn bản thuần túy./main xác minh người dùng

Xác minh thành công. Đầu ra sẽ là:

Plaintextmerkle leave hash: 164bc38a71b7a757455d93017242b4960cd1fea6842d8387b60c5780205858ceverify pass!!!

Kết luận

Bật zk-SNARK là một bản nâng cấp quan trọng cho Gate.io's bằng chứng dự trữ và một bước quan trọng trong việc bảo vệ tài sản người dùng. Với các biện pháp bảo mật và bảo vệ quyền riêng tư xuất sắc, nó mang lại sự tự tin hơn cho người dùng và thiết lập một tiêu chuẩn mới cho toàn bộ ngành công nghiệp tiền điện tử.

Bạn có thể nhấp ở đâyđể ghé thămGate.ioTruy cập trang frontend Proof of Reserves của ‘s và xem các bằng chứng được tạo ra bởi Gate.iođội sử dụng dự án này. Mã hiện đã công khai trên GitHubChúng tôi mời mọi người quan tâm đến sàn giao dịch phi tập trung, zk-SNARK và công nghệ MerkleTree tham gia dự án này. Cho dù bạn muốn đóng góp ý kiến, báo cáo lỗi, hay nộp mã, sự tham gia của bạn luôn được chào đón.

Autor: Gate learn
Tradutor: Sonia
Revisores: Wayne、KOWEI、Elisa、Ashley、Joyce
* As informações não pretendem ser e não constituem aconselhamento financeiro ou qualquer outra recomendação de qualquer tipo oferecida ou endossada pela Gate.io.
* Este artigo não pode ser reproduzido, transmitido ou copiado sem referência à Gate.io. A contravenção é uma violação da Lei de Direitos Autorais e pode estar sujeita a ação legal.
Comece agora
Inscreva-se e ganhe um cupom de
$100
!