Tornado Cash เป็นโซลูชันความเป็นส่วนตัว Ethereum และ ERC20 ที่ไม่อยู่ภายใต้การดูแล โดยอิงจาก zkSNARK ปรับปรุงความเป็นส่วนตัวของธุรกรรมโดยการทำลายลิงก์ออนไลน์ระหว่างผู้รับและที่อยู่ปลายทาง ใช้สัญญาอัจฉริยะที่รับเงินฝาก ETH ที่สามารถถอนออกได้ตามที่อยู่อื่น เมื่อใดก็ตามที่ ETH ถูกถอนออกด้วยที่อยู่ใหม่ จะไม่สามารถเชื่อมโยงการถอนเข้ากับการฝากเงินได้ เพื่อให้มั่นใจถึงความเป็นส่วนตัวโดยสมบูรณ์
ในการฝากเงิน ผู้ใช้จะสร้างความลับและส่งแฮชของมัน (เรียกว่าข้อผูกพัน) พร้อมด้วยจำนวนเงินฝากไปยังสัญญาอัจฉริยะ Tornado สัญญายอมรับเงินฝากและเพิ่มข้อผูกพันในรายการเงินฝาก
ต่อมาผู้ใช้ตัดสินใจถอนเงิน ในการทำเช่นนั้น ผู้ใช้ควรแสดงหลักฐานว่าเขาหรือเธอมีความลับของข้อผูกพันที่ยังไม่ได้ใช้จากรายการเงินฝากของสัญญาอัจฉริยะ เทคโนโลยี zkSnark ช่วยให้สิ่งนั้นเกิดขึ้นได้โดยไม่ต้องเปิดเผยว่าเงินฝากใดตรงกับความลับนี้ สัญญาอัจฉริยะจะตรวจสอบหลักฐานและโอนเงินที่ฝากไปยังที่อยู่ที่ระบุไว้สำหรับการถอนเงิน ผู้สังเกตการณ์ภายนอกจะไม่สามารถระบุได้ว่าการถอนเงินนี้มาจากการฝากเงินใด
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ในบทความสื่อนี้
ทอร์นาโดแคช_ไวท์เปเปอร์_v1.4.pdf
โปรโตคอล วงจร และสัญญาอัจฉริยะของ Tornado.cash ได้รับการตรวจสอบโดยกลุ่มผู้เชี่ยวชาญจาก ABDK Consulting ซึ่งเชี่ยวชาญด้านความรู้เป็นศูนย์ การเข้ารหัส และสัญญาอัจฉริยะ
ในระหว่างการตรวจสอบ ไม่พบปัญหาร้ายแรงและปัญหาที่ค้างอยู่ทั้งหมดได้รับการแก้ไขแล้ว ผลลัพธ์สามารถพบได้ที่นี่:
ขณะนี้การพึ่งพา circomlib ที่สำคัญกำลังได้รับการตรวจสอบ และทีมงานได้เผยแพร่การแก้ไขส่วนใหญ่สำหรับปัญหาที่พบแล้ว
node v11.15.0
npm install -g npx
คุณสามารถดูตัวอย่างการใช้งานใน cli.js ซึ่งทำงานได้ทั้งในคอนโซลและในเบราว์เซอร์
npm install
cp .env.example .env
npm run build
- อาจใช้เวลา 10 นาทีหรือมากกว่านั้นnpx ganache-cli
npm run test
- รันการทดสอบหรือไม่ก็ได้ มันอาจจะล้มเหลวในการลองครั้งแรก เพียงแค่รันอีกครั้งใช้เวอร์ชันเบราว์เซอร์บน Kovan:
vi .env
- เพิ่มคีย์ส่วนตัว Kovan ของคุณเพื่อปรับใช้สัญญาnpm run migrate
npx http-server
- ให้บริการ dir ปัจจุบัน คุณสามารถใช้เซิร์ฟเวอร์ http แบบคงที่อื่น ๆ ได้localhost:8080
ใช้เวอร์ชันบรรทัดคำสั่ง ใช้งานได้กับ Ganache, Kovan และ 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
คอมมิตแฮชเพื่อที่จะทำงานกับการตั้งค่าที่เชื่อถือได้ในท้องถิ่น Tornado-cli ใช้ 4c0af6a8b65aabea3c09f377f63c44e7a58afa6d
กระทำกับการตั้งค่าการผลิตที่เชื่อถือได้ของ tornadoCashตัวอย่าง:
./cli.js deposit ETH 0.1 --rpc https://kovan.infura.io/v3/27a9649f826b4e31a83e07ae09a87448
หมายเหตุของคุณ: พายุทอร์นาโด-eth-0.1-42-0xf73dd6833ccbcc046c44228c8e2aa312bf49e08389dadc7c65e 6a73239867b7ef49c705c4db227e2fadd8489a494b6880bdcb6016047e019d1abec1c7652 ยอดคงเหลือ Tornado ETH คือ 8.9 บัญชีผู้ส่ง ยอด ETH คือ 1004873.470619891361352542 การส่งธุรกรรมการฝากเงิน ยอดคงเหลือ Tornado ETH คือ 9 บัญชีผู้ส่ง ยอด ETH คือ 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
ที่อยู่รีเลย์: 0x6A31736e7490AbE5D5676be059DFf064AB4aC754 รับสถานะปัจจุบันจากสัญญาพายุทอร์นาโด การสร้างหลักฐาน SNARK เวลาพิสูจน์: 9117.051ms การส่งธุรกรรมถอนผ่านการถ่ายทอด ธุรกรรมที่ส่งผ่านรีเลย์ ดูธุรกรรมบน etherscan https://kovan.etherscan.io/tx/0xcb21ae8cad723818c6bc7273e83e00c8393fcdbe74802ce5d562acad691a2a7b ธุรกรรมที่ขุดในบล็อก 17036120 เสร็จสิ้น
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
บันทึก . หากคุณต้องการใช้ตัวตรวจสอบเดียวกันซ้ำสำหรับอินสแตนซ์ทั้งหมด หลังจากที่คุณปรับใช้หนึ่งในอินสแตนซ์ คุณควรดำเนินการย้ายครั้งที่ 4 หรือ 5 สำหรับสัญญา ETH หรือ ERC20 ตามลำดับ ( --f 4 --to 4
หรือ --f 5
).
Resolver
(2)Contract
คลิกที่ Read Contract
แล้วเลื่อนลงไปที่วิธี 5. text
.Query
แล้วคุณจะได้รับชื่อ DNS เพียงเพิ่ม https://
เข้าไปแล้วใช้เป็น relayer url
ขอขอบคุณเป็นพิเศษสำหรับ @barryWhiteHat และ @kobigurk สำหรับข้อมูลอันมีค่า และ @jbaylina สำหรับเฟรมเวิร์ก Circom & Websnark ที่ยอดเยี่ยม
npm i
ganache-cli -d
npm run download
npm run build:contract
cp .env.example .env
npm run migrate:dev
node minimal-demo.js
เตรียมสภาพแวดล้อมการทดสอบ:
yarn install
yarn download
cp .env.example .env
npx ganache-cli > /dev/null &
npm run migrate:dev
ทำการทดสอบ:
yarn test
ครอบคลุมการวิ่ง:
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