Dasar
Spot
Perdagangkan kripto dengan bebas
Perdagangan Margin
Perbesar keuntungan Anda dengan leverage
Konversi & Investasi Otomatis
0 Fees
Perdagangkan dalam ukuran berapa pun tanpa biaya dan tanpa slippage
ETF
Dapatkan eksposur ke posisi leverage dengan mudah
Perdagangan Pre-Market
Perdagangkan token baru sebelum listing
Futures
Akses ribuan kontrak perpetual
TradFi
Emas
Satu platform aset tradisional global
Opsi
Hot
Perdagangkan Opsi Vanilla ala Eropa
Akun Terpadu
Memaksimalkan efisiensi modal Anda
Perdagangan Demo
Pengantar tentang Perdagangan Futures
Bersiap untuk perdagangan futures Anda
Acara Futures
Gabung acara & dapatkan hadiah
Perdagangan Demo
Gunakan dana virtual untuk merasakan perdagangan bebas risiko
Peluncuran
CandyDrop
Koleksi permen untuk mendapatkan airdrop
Launchpool
Staking cepat, dapatkan token baru yang potensial
HODLer Airdrop
Pegang GT dan dapatkan airdrop besar secara gratis
Launchpad
Jadi yang pertama untuk proyek token besar berikutnya
Poin Alpha
Perdagangkan aset on-chain, raih airdrop
Poin Futures
Dapatkan poin futures dan klaim hadiah airdrop
Investasi
Simple Earn
Dapatkan bunga dengan token yang menganggur
Investasi Otomatis
Investasi otomatis secara teratur
Investasi Ganda
Keuntungan dari volatilitas pasar
Soft Staking
Dapatkan hadiah dengan staking fleksibel
Pinjaman Kripto
0 Fees
Menjaminkan satu kripto untuk meminjam kripto lainnya
Pusat Peminjaman
Hub Peminjaman Terpadu
Pemulihan sosial terpadu: Bagaimana zk-SNARKs mewujudkan pemisahan logika transaksi dompet dan aset?
Penulis asli: @Toni Wahrstätter
Tanggal rilis: 12 September 2023
Terjemahan: Lembaga Penelitian DeBox
Kata Pengantar
Vitalik merekomendasikan penggunaan zk-SNARKs untuk memisahkan akun logika perdagangan dari akun yang menyimpan aset. Hal ini meningkatkan privasi, pengalaman pengguna, dan pemulihan sosial sekali klik. Peneliti Ethereum Toni Wahrstätter memberikan analisis mendetail tentang prototipe dompet ini, mencakup alur kerja dan keuntungannya.
Mengelola banyak akun dapat menjadi tantangan karena berbagai alasan, termasuk masalah pemulihan sosial, privasi, L2, dan pengalaman pengguna secara keseluruhan. Menggunakan alamat tersembunyi membuat segalanya menjadi lebih rumit karena setiap interaksi memerlukan akun baru. Vitalik merekomendasikan penggunaan zk-SNARKs untuk memisahkan akun logika perdagangan dari akun yang menyimpan aset. Hal ini meningkatkan privasi, pengalaman pengguna, dan pemulihan sosial sekali klik.
Singkatnya, apa yang ingin kami capai adalah:
**Pemulihan sosial terpadu tanpa mengorbankan privasi. **
1. Cara tradisional
Penerapan yang sederhana namun membahayakan privasi terlihat seperti ini:
Kerugiannya adalah hal ini secara publik menghubungkan akun logis dan akun penyimpanan aset, sehingga membahayakan privasi.
2. Gunakan ZK-SNARK
Dengan menggunakan zk-SNARKs, pengguna dapat membuktikan bahwa mereka berwenang untuk membelanjakan uang tanpa mengungkapkan hubungan antara akun penyimpanan logis dan akun penyimpanan aset.
Alur kerjanya adalah sebagai berikut:
1.1 Pohon Merkle pada dasarnya berisi nilai slot0 dan slot1 dari setiap kontrak yang ada, diurutkan berdasarkan tanggal atau nama.
1.2 Setiap pengguna dapat membangun pohon Merkle secara lokal berdasarkan status terkini.
Pengguna membuat bukti zk untuk membuktikan bahwa dia mengetahui rahasia dalam akun penyimpanan logis. Buktikan secara detail nanti.
Pengguna mengirimkan bukti zk ke akun penyimpanan aset.
Sertifikat verifikasi akun penyimpanan aset, yang mengonfirmasi hal-hal berikut:
4.1 Pengguna mengetahui di mana logikanya.
4.2 Pengguna mengetahui nilai rahasia yang di-hash dan dipetakan ke nilai yang disimpan di akun penyimpanan logis.
4.3 Pengguna dapat merekonstruksi status akun Akar pohon Merkle yang dipertahankan dalam rantai kanonik (misalnya, sudah dikompilasi sebelumnya)
4.4 Gunakan nomor acak yang benar (digunakan untuk mengganti kunci di rekening penyimpanan logis).
Pada dasarnya, pengguna dapat mengatakan, “Saya memiliki izin yang dapat dibuktikan dari akun penyimpanan logis untuk melakukan tindakan ini, dan saya mengetahui lokasi akun logis tersebut.”
keuntungan
Selain itu, dengan menambahkan kontrak (agregator) lain antara logika dan kontrak kepemilikan aset, beberapa bukti dari akun penyimpanan aset yang berbeda dapat diberikan dalam satu transaksi, sehingga akun tersebut diperlakukan hampir seperti UTXO. Agregator akan dapat memperoleh beberapa sertifikat zk dan meneruskannya ke akun penyimpanan aset masing-masing untuk verifikasi. Tentu saja, agregator semacam itu dapat membuat tautan – termasuk privasi – antara masing-masing akun penyimpanan aset.
detail teknis
Pengaturan zk-SNARK mencakup elemen pribadi:
1. Rekening penyimpanan logis
Prototipe untuk rekening penyimpanan logis mungkin terlihat seperti ini:
soliditas pragma >=0.7.0 <0.9.0;
kontrak LogicHoldingAccount Dapat Dimiliki { uint256 public slot0 = 0x1234; // rahasia hash uint256 public nonce = 0; // melacak perubahan penting alamat pemilik publik;
fungsi updateOwner(uint256 newValue) public onlyOwner { nonce += 1; slot0 = Nilai baru;
Kontrak ini melacak logika pengeluaran pemilik saat ini (slot0) dan mengizinkan pembaruan melalui fungsi updateOwner.
2. Rekening induk
soliditas pragma >=0.7.0 <0.9.0;
kontrak AssetHoldingAccount { uint256 public logicHoldingAccountHash = 1234…;
// Ukuran bidang skalar, Ukuran bidang dasar, Data Kunci Verifikasi, dll. // …
fungsi verifikasiBukti( uint [2] data panggilan _pA, uint [2] [2] data panggilan _pB, uint [2] data panggilan _pC, uint [2] calldata _pubSignals) tampilan publik kembali (bool val) { // Kode rakitan Snarkjs untuk verifikasi bukti… // … }
// _pubSinyal [0] - akar pohon contract-slot0||nonce Merkle // _pubSignals [1] - fungsi alamat pemegang logika hased ute (alamat dibayarkan ke, jumlah uint256, uint [2] data panggilan _pA, uint [2] [2] data panggilan _pB, uint [2] data panggilan _pC, uint [2] calldata _pubSignals) public { contractRootPrecompile.getRoot(block.number) uint256 ditentukanLogicHolder = _pubSignals [1] ; memerlukan(specifiedLogicHolder == logicHoldingAccountHash, “Tidak diizinkan”);
bool validProof = verifikasiProof(_pA, _pB, _pC, _pubSignals) == benar; if (validProof) { (bool sukses,) = to.call{value:amount}(“”); membutuhkan (sukses); } }
menerima() hutang eksternal {
Akun penyimpanan aset menyimpan aset seperti ETH dan memungkinkan pengguna mengirimkan bukti penarikan. Dengan memverifikasi bahwa ditentukanLogicHolder cocok dengan logicHoldingAccountHash, pemilik dapat memastikan bahwa kontrak penyimpanan aset hanya menerima bukti dari kontrak penyimpanan logis yang sah, bukan kontrak sewenang-wenang.
Rahasia yang diberikan sebagai sinyal pribadi ketika membuat bukti memastikan bahwa hanya pemilik akun yang berisi logika pengeluaran yang dapat mengakses dana dari akun penyimpanan aset.
3. Sirkuit
Rangkaian berikut dikembangkan menggunakan circom, kode lengkapnya dapat dilihat di sini.
pragma sirkum 2.0.2;
sertakan “./modules/merkleTree.circom”; sertakan “./modules/commitmentHasher.circom”;
templat Utama(level) { akar masukan sinyal; logika masukan sinyalHoldingAddressHash; logika input sinyalHoldingAddress; rahasia masukan sinyal; masukan sinyal nonce; jalur masukan sinyalElemen [levels] ; jalur masukan sinyalIndeks [levels] ; komponen secretHasher = SecretHasher(); rahasiaHasher.rahasia <== rahasia; komponen hasher = CommitmentHasher(); hasher.logicHoldingAddress <== logikaHoldingAddress; hasher.rahasia <== secretHasher.hashedSecret; hasher.nonce <== nonce; hasher.logicHoldingAddressHash === logikaHoldingAddressHash; pohon komponen = MerkleTreeChecker(level); pohon.leaf <== hasher.komitmen; pohon.root <== akar; untuk ( i = 0; i < level; i++) { tree.pathElements [i] <== elemen jalur [i] ; tree.pathIndices [i] <== pathIndices [i] ;
komponen main {public [root,logicHoldingAddressHash]} = Main(N);
Sirkuit ini memiliki total 7 sinyal, 2 di antaranya bersifat publik, yaitu akar pohon Merkle dan alamat hash dari akun penyimpanan logis (yang harus di-hash sebelum dikodekan ke dalam kontrak kepemilikan aset untuk mencegah pengamat menggabungkan akun) kelas) berdasarkan logika yang sama dengan akun pemegang).
Kesimpulannya
Di dunia di mana pengguna harus mengelola banyak akun, kebutuhan akan fungsi pemulihan sosial terpadu menjadi semakin penting. Zk-SNARK dapat digunakan dalam dompet yang menerapkan pemisahan logika/aset, memungkinkan pengguna menggunakan “logika” Akun A untuk berbelanja dari Akun B tanpa membuat tautan di antara keduanya. Sebagai langkah pertama, bukti SNARK dapat digunakan untuk tindakan yang risikonya lebih kecil dibandingkan pengeluaran aset. Misalnya, titik awal yang baik adalah mengizinkan pengguna memulai “permintaan penarikan”. Jika pemilik kontrak penyimpanan logika tidak mengajukan keberatan, pengguna dapat menyelesaikan permintaan setelah jangka waktu tertentu.
Dengan cara ini, pemilik kontrak kepemilikan logis masih dapat melakukan intervensi, meskipun dengan cara yang melanggar privasi, jika terjadi sesuatu yang tidak terduga.