Tornado Cash adalah solusi privasi Ethereum dan ERC20 non-penahanan berdasarkan zkSNARKs. Ini meningkatkan privasi transaksi dengan memutus tautan on-chain antara alamat penerima dan tujuan. Ini menggunakan kontrak pintar yang menerima setoran ETH yang dapat ditarik melalui alamat berbeda. Setiap kali ETH ditarik melalui alamat baru, tidak ada cara untuk menghubungkan penarikan ke deposit, sehingga memastikan privasi penuh.
Untuk melakukan deposit, pengguna membuat rahasia dan mengirimkan hashnya (disebut komitmen) bersama dengan jumlah deposit ke kontrak pintar Tornado. Kontrak menerima simpanan dan menambahkan komitmen ke dalam daftar simpanannya.
Nantinya, pengguna memutuskan untuk melakukan penarikan. Untuk melakukan itu, pengguna harus memberikan bukti bahwa dia memiliki rahasia komitmen yang belum terpakai dari daftar simpanan kontrak pintar. Teknologi zkSnark memungkinkan hal itu terjadi tanpa mengungkapkan deposit mana yang sesuai dengan rahasia ini. Kontrak pintar akan memeriksa bukti dan mentransfer dana yang disimpan ke alamat yang ditentukan untuk penarikan. Pengamat eksternal tidak akan dapat menentukan dari mana penarikan ini berasal.
Anda dapat membaca lebih lanjut di artikel Medium ini
TornadoCash_whitepaper_v1.4.pdf
Protokol, sirkuit, dan kontrak pintar Tornado.cash diaudit oleh sekelompok ahli dari ABDK Consulting, yang berspesialisasi dalam pengetahuan nol, kriptografi, dan kontrak pintar.
Selama audit, tidak ditemukan permasalahan kritis dan seluruh permasalahan yang belum terselesaikan telah diperbaiki. Hasilnya dapat ditemukan di sini:
Ketergantungan sircomlib yang mendasari saat ini sedang diaudit, dan tim telah menerbitkan sebagian besar perbaikan untuk masalah yang ditemukan
node v11.15.0
npm install -g npx
Anda dapat melihat contoh penggunaan di cli.js, ini berfungsi baik di konsol dan di browser.
npm install
cp .env.example .env
npm run build
- ini mungkin memerlukan waktu 10 menit atau lebihnpx ganache-cli
npm run test
- menjalankan pengujian secara opsional. Mungkin gagal pada percobaan pertama, jalankan saja lagi.Gunakan versi browser di Kovan:
vi .env
- tambahkan kunci pribadi Kovan Anda untuk menerapkan kontraknpm run migrate
npx http-server
- melayani direktori saat ini, Anda dapat menggunakan server http statis lainnyalocalhost:8080
Gunakan versi baris perintah. Berfungsi untuk Ganache, Kovan, dan Mainnet:
cp .env.example .env
npm run download
npm run build:contract
ganache-cli -i 1337
npm run migrate:dev
./cli.js test
./cli.js --help
2041cfa5fa0b71cd5cca9022a4eeea4afe28c9f7
melakukan hash agar dapat bekerja dengan pengaturan tepercaya lokal. Tornado-cli menggunakan komitmen 4c0af6a8b65aabea3c09f377f63c44e7a58afa6d
dengan pengaturan produksi tornadoCash yang tepercayaContoh:
./cli.js deposit ETH 0.1 --rpc https://kovan.infura.io/v3/27a9649f826b4e31a83e07ae09a87448
Catatan Anda: tornado-eth-0.1-42-0xf73dd6833ccbcc046c44228c8e2aa312bf49e08389dadc7c65e 6a73239867b7ef49c705c4db227e2fadd8489a494b6880bdcb6016047e019d1abec1c7652 Saldo ETH Tornado adalah 8,9 Saldo ETH akun pengirim adalah 1004873.470619891361352542 Mengirimkan transaksi deposit Saldo ETH Tornado adalah 9 Saldo ETH akun pengirim adalah 1004873.361652048361352542
./cli.js withdraw tornado-eth-0.1-42-0xf73dd6833ccbcc046c44228c8e2aa312bf49e08389dadc7c65e6a73239867b7ef49c705c4db227e2fadd8489a494b6880bdcb6016047e019d1abec1c7652 0x8589427373D6D84E98730D7795D8f6f8731FDA16 --rpc https://kovan.infura.io/v3/27a9649f826b4e31a83e07ae09a87448 --relayer https://kovan-frelay.duckdns.org
Alamat relai: 0x6A31736e7490AbE5D5676be059DFf064AB4aC754 Mendapatkan status saat ini dari kontrak tornado Menghasilkan bukti SNARK Waktu bukti: 9117.051ms Mengirim transaksi penarikan melalui relai Transaksi dikirimkan melalui relai. Lihat transaksi di etherscan https://kovan.etherscan.io/tx/0xcb21ae8cad723818c6bc7273e83e00c8393fcdbe74802ce5d562acad691a2a7b Transaksi ditambang di blok 17036120 Selesai
cp .env.example .env
npx truffle migrate --network kovan --reset --f 2 --to 4
cp .env.example .env
npx truffle migrate --network kovan --reset --f 2 --to 3
npx truffle migrate --network kovan --reset --f 5
Catatan . Jika Anda ingin menggunakan kembali pemverifikasi yang sama untuk semua instans, maka setelah Anda menerapkan salah satu instans, Anda sebaiknya hanya menjalankan migrasi ke-4 atau ke-5 untuk masing-masing kontrak ETH atau ERC20 ( --f 4 --to 4
atau --f 5
).
Resolver
(2) Contract
. Klik Read Contract
dan gulir ke bawah ke metode 5. text
.Query
dan Anda akan mendapatkan nama DNS. Cukup tambahkan https://
ke dalamnya dan gunakan sebagai relayer url
Terima kasih khusus kepada @barryWhiteHat dan @kobigurk atas masukan berharganya, dan @jbaylina atas kerangka kerja Circom & Websnark yang luar biasa
npm i
ganache-cli -d
npm run download
npm run build:contract
cp .env.example .env
npm run migrate:dev
node minimal-demo.js
Siapkan lingkungan pengujian:
yarn install
yarn download
cp .env.example .env
npx ganache-cli > /dev/null &
npm run migrate:dev
Jalankan tes:
yarn test
Jalankan cakupan:
yarn coverage
cargo install zkutil
npx circom circuits/withdraw.circom -o build/circuits/withdraw.json
zkutil setup -c build/circuits/withdraw.json -p build/circuits/withdraw.params
zkutil export-keys -c build/circuits/withdraw.json -p build/circuits/withdraw.params -r build/circuits/withdraw_proving_key.json -v build/circuits/withdraw_verification_key.json
zkutil generate-verifier -p build/circuits/withdraw.params -v build/circuits/Verifier.sol
sed -i -e ' s/pragma solidity ^0.6.0/pragma solidity 0.5.17/g ' ./build/circuits/Verifier.sol