Tornado Cash: Protokol Privasi Ethereum Non-Kustodial dengan zk-SNARK

Penulis Semenov, Roman; Storm, Alexey; Pertsev, Alexey
Tahun 2019
Proyek Tornado Cash
Lisensi MIT
Sumber Resmi tornado.cash/whitepaper_v1.4.pdf
Disclaimer: Halaman ini merupakan ringkasan dan analisis edukatif dari whitepaper atau makalah teknis resmi. Konten ini disajikan untuk tujuan pendidikan semata dan bukan merupakan saran investasi atau keuangan. Selalu baca dokumen asli dan lakukan riset mandiri sebelum mengambil keputusan keuangan apa pun.

“Tornado Cash: Ethereum Privacy Solution” adalah dokumentasi oleh Roman Semenov, Alexey Storm, dan Alexey Pertsev dari tim Tornado Cash, diterbitkan pada 2019. Tornado Cash adalah protokol transaksi privat terdesentralisasi, non-kustodial di Ethereum: pengguna menyetor jumlah tetap ETH (atau token ERC-20) dan kemudian dapat menarik ke alamat segar, dengan tautan deposit-penarikan diputus oleh bukti zk-SNARK. Pada Agustus 2022, Departemen Keuangan AS (OFAC) menyanksi alamat smart contract Tornado Cash — tindakan regulasi bersejarah terhadap kode smart contract yang tidak dapat diubah itu sendiri. Alexey Pertsev kemudian dihukum di Belanda karena pencucian uang (2024) dalam persidangan yang menjadi preseden bagi pengembang protokol privasi.

Publikasi dan Konteks

Pada 2019, Ethereum tidak memiliki privasi native. Setiap transaksi ETH terlihat publik: dari alamat mana ke alamat mana, kapan, dan berapa jumlahnya. Tornado Cash mengambil langsung dari pekerjaan akademis tim Zcash/Zerocash: menggunakan zk-SNARK untuk membuktikan bahwa penarikan diotorisasi oleh seseorang yang melakukan deposit yang valid, tanpa mengungkapkan deposit mana. Perbedaan utama dari Zcash: Tornado Cash adalah smart contract Ethereum, bukan blockchain terpisah.

Desain Inti: Skema Commitment-Nullifier

Deposit:

  1. Pengguna menghasilkan rahasia acak: 31 byte nullifier dan 31 byte secret
  2. Menghitung commitment: C = hash(nullifier || secret)
  3. Menyetor tepat 1 ETH (atau 10 ETH, 100 ETH — denominasi tetap) beserta C ke dalam kontrak
  4. C dimasukkan ke dalam Merkle tree yang dipertahankan oleh kontrak
  5. Pengguna menyimpan (nullifier, secret) mereka secara offline — ini adalah “tiket penarikan” mereka

Penarikan:

  1. Pengguna menghasilkan bukti zk-SNARK yang menunjukkan bahwa mereka mengetahui pasangan (nullifier, secret) sehingga hash(nullifier || secret) adalah daun dalam Merkle tree kontrak, dan hash nullifier (H(nullifier)) belum pernah digunakan sebelumnya
  2. Pengguna mengirim bukti + hash nullifier ke kontrak, yang mentransfer 1 ETH ke alamat penerima yang ditentukan
  3. Kontrak menyimpan hash nullifier untuk mencegah double-spending

Hasilnya: tidak ada cara on-chain untuk menautkan alamat deposan ke alamat penerima.

Denominasi Tetap

Tornado Cash menggunakan denominasi tetap (0,1 ETH; 1 ETH; 10 ETH; 100 ETH) bukan jumlah arbitrer. Ini penting untuk privasi: jika jumlah penarikan bervariasi, mudah mencocokkan deposit dan penarikan berdasarkan jumlah. Denominasi tetap membuat semua deposit dan penarikan dalam kelompok yang sama terlihat identik.

Sanksi OFAC Agustus 2022

Pada 8 Agustus 2022, OFAC AS menyanksi 45 alamat Ethereum terkait Tornado Cash, termasuk alamat smart contract yang tidak dapat diubah. Ini berarti warga AS secara hukum dilarang berinteraksi dengan kontrak-kontrak ini — bahkan untuk penggunaan yang sah. Tindakan ini sangat kontroversial karena menyanksi kode, bukan individu.

Dampak Hukum

Alexey Pertsev ditangkap di Belanda (Agustus 2022), diadili, dan dihukum 5 tahun 4 bulan penjara (Mei 2024) karena pencucian uang terkait penggunaan Tornado Cash oleh Lazarus Group Korea Utara. Persidangan ini menetapkan preseden yang mengkhawatirkan bagi pengembang protokol privasi open-source.

Istilah Terkait

Referensi