
Tornado Cash là giao thức phi tập trung mã nguồn mở dùng công nghệ zero-knowledge proof để trộn tiền crypto, giúp che giấu danh tính và nguồn của tài sản trên chuỗi Ethereum.
Tornado Cash là gì?
Trong thế giới blockchain, mọi giao dịch đều công khai và có thể truy vết. Điều đó tạo ra vấn đề riêng tư khi người dùng muốn chuyển tiền mà không bị theo dõi. Tornado Cash ra đời để giải quyết đúng điểm này bằng cách trộn nhiều địa chỉ ví thành một địa chỉ chung trước khi rút ra.
Dựa trên hệ sinh thái Ethereum, Tornado Cash hoạt động như một hợp đồng thông minh (smart contract) thay vì một tổ chức trung tâm. Người dùng gửi tiền vào một hợp đồng riêng, sau đó rút ra bằng proof chứng minh họ từng nạp tiền mà không tiết lộ giao dịch cụ thể nào.


Nguyên lý hoạt động của zero-knowledge proof
Zero-knowledge proof (ZK proof) cho phép chứng minh một mệnh đề là đúng mà không cần tiết lộ bất kỳ thông tin nào ngoài chính mệnh đề đó. Ví dụ: bạn chứng minh “tôi biết mật khẩu mà không cần nói mật khẩu đó”.
Trong Tornado Cash, người dùng nhận về một note chứa ba thành phần: khóa công khai của người gửi, khóa công khai của người nhận và một phần bí mật riêng. Khi rút tiền, họ cung cấp Merkle proof chứng minh note của họ nằm trong cây Merkle của pool, cùng với một bằng chứng hợp lệ.
Vì sao không thể rút hai lần từ một note?
Mỗi note có một giá trị bí mật duy nhất. Hợp đồng thông minh duy trì một cây Merkle với các lá đã rút; khi có ai đó rút, lá tương ứng bị đánh dấu đã dùng. Nếu thử tái sử dụng cùng một Merkle root, hợp đồng sẽ từ chối giao dịch.
Hai loại hợp đồng chính
| Loại | Cơ chế | Đặc điểm |
|---|---|---|
| Tornado Cash Classic | Hợp đồng tin cậy | Có người quản trị, có thể thu hồi quỹ |
| Tornado Cash Nova | Phi tập trung | Dùng ZK proof, không có người trung tâm |
Phiên bản Nova dùng cặp đường cong elliptic lặn và thư viện circomlib để tạo bằng chứng, chạy hoàn toàn trên hợp đồng mà không cần ví ký giao dịch của bên thứ ba.
Quy trình sử dụng cơ bản
- Chọn pool: người dùng chọn mức tiền (ví dụ 1 ETH, 0.1 ETH hay 100 DAI) và nhận một note.
- Chờ đủ người nạp: pool cần có người nạp trước khi tạo được Merkle root mới.
- Sinh proof: người dùng chạy mã sinh bằng chứng ngay trên máy của mình, hoàn toàn offline.
- Rút tiền: gửi giao dịch lên hợp đồng kèm proof, ETH/DAI được chuyển tới địa chỉ mới.
Điểm mấu chốt: quá trình sinh proof diễn ra cục bộ, không ai — kể cả nhà phát triển — có thể xem khóa bí mật hay liên kết note với địa chỉ ví của bạn.

Tính bất biến và trạng thái pháp lý
Tính năng nổi bật nhất của Tornado Cash là immutability: mã hợp đồng đã triển khai không thể thay đổi, và không có cơ chế tắt dịch vụ. Chính vì vậy mà khi Bộ Tài chính Hoa Kỳ (OFAC) ra lệnh trừng phạt vào năm 2022, toàn bộ website và hợp đồng proxy của Tornado Cash trên Ethereum đã bị đóng băng.
Nhiều nhà phát triển cũng phải bỏ dự án vì lo ngại pháp lý. Điều đó đặt ra câu hỏi lớn về ranh giới giữa công cụ bảo vệ quyền riêng tư và hoạt động rửa tiền.
Rủi ro và hạn chế
- Pháp lý: nhiều quốc gia đã siết chặt quy định về dịch vụ trộn tiền, kể cả xử phạt hành vi sử dụng.
- Rủi ro hợp đồng thông minh: bất kỳ lỗi nào trong mã ZK proof cũng có thể dẫn tới mất tiền.
- Không thể hoàn tác: giao dịch đã thực hiện không thể đảo ngược, kể cả khi bị nhập nhằng.
- Phụ thuộc hạ tầng: phí gas cao khi thị trường bùng nổ có thể làm giảm hiệu quả trộn.
Các lựa chọn thay thế
Do pháp lý siết chặt, nhiều giao thức mới đã ra đời để đáp ứng nhu cầu riêng tư: Ashigaru và stealth address giải quyết góc độ khác — che giấu địa chỉ nhận thay vì trộn số dư. Samourai Wallet cũng từng cung cấp các công cụ tương tự trước khi bị phát tện và đóng cửa năm 2024.
Kết luận
Tornado Cash là ví dụ điển hình cho thế bất đối xứng giữa quyền riêng tư và quản lý của nhà nước trong không gian Web3. Công nghệ ZK proof nó tạo ra hoàn toàn có thể kỹ thuật, nhưng việc sử dụng hay không lại phụ thuộc vào pháp luật từng quốc gia. Nếu bạn muốn tìm hiểu sâu hơn, hãy đọc tài liệu chính thức và các bài phân tích về zk-SNARK trên blog chuyên về blockchain.
