Bạn có biết tôi đã mất bao nhiêu đêm để ngủ yên sau khi Tornado Cash bị trừng phạt không?
Câu trả lời là: không một đêm nào. Vì đêm nào tôi cũng thức, đọc lại từng dòng smart contract mình từng audit, tự hỏi liệu có dòng nào đó bị coi là 'công cụ rửa tiền' không.
Đây không phải chuyện Tornado Cash nữa. Đây là tiền lệ: viết code có thể là tội phạm.
Context
Tháng 8/2022, OFAC (Văn phòng Kiểm soát Tài sản Nước ngoài Hoa Kỳ) đưa Tornado Cash vào danh sách trừng phạt. Không phải vì nó là một tổ chức, mà vì nó là một bộ smart contract — một công cụ mã nguồn mở, phi tập trung, không thể kiểm soát. Hậu quả: lập trình viên Alexey Pertsev bị bắt tại Hà Lan, đồng sáng lập Roman Storm bị truy tố tại Mỹ.
Vấn đề: nếu bạn viết một giao thức mà ai đó dùng để làm điều phi pháp, bạn có chịu trách nhiệm hình sự không?
Core
Khi tôi còn làm phân tích cho quỹ Estonian năm 2020, tôi từng audit một privacy protocol nhỏ. Tôi nhớ mình đã viết trong báo cáo: 'Hợp đồng này an toàn, nhưng nếu ai đó dùng nó để ẩn danh giao dịch bất hợp pháp, thì...' — tôi dừng lại. Vì không có khung pháp lý nào trả lời câu hỏi đó. Đến 2022, khung pháp lý ấy xuất hiện, và nó trả lời: 'Có, bạn có tội.'
Hãy nhìn vào thực tế kỹ thuật: Tornado Cash là một bộ hợp đồng không thể nâng cấp. Sau khi deploy, không ai — kể cả tác giả — có thể tắt nó, sửa nó, hay kiểm soát ai dùng nó. Vậy trách nhiệm hình sự đặt vào đâu? Vào dòng code? Hay vào người viết ra dòng code đó 2 năm trước?
OFAC và các cơ quan thực thi pháp luật đã chọn câu trả lời sau. Và hệ quả của nó không dừng lại ở Tornado Cash.
Contrarian
Đừng hỏi 'Tornado Cash có phải công cụ rửa tiền không'. Hãy hỏi 'Uniswap có phải công cụ bán hàng trái phép không'. Hay 'MetaMask có phải công cụ kết nối ví lừa đảo không'. Hay 'Bitcoin có phải công cụ thanh toán cho ransomware không'.
Điểm mù mà số đông bỏ qua: nếu logic của OFAC được áp dụng rộng rãi, bất kỳ lập trình viên mã nguồn mở nào cũng có thể bị truy tố. Bạn viết một thư viện encrypt? Ai đó dùng nó để che giấu tội phạm — bạn có tội. Bạn viết một giao thức messaging? Ai đó dùng nó để lên kế hoạch khủng bố — bạn có tội.
Điều này biến mọi lập trình viên thành người chịu trách nhiệm về hành vi của người dùng cuối. Một tiêu chuẩn mà thế giới phần mềm chưa từng có — và cũng không nên có.
Takeaway
Tôi không viết bài này để bảo vệ Tornado Cash. Tôi viết để cảnh báo: mỗi dòng code bạn viết hôm nay có thể là một chứng cứ buộc tội bạn vào ngày mai. Nếu chúng ta không đặt ra ranh giới rõ ràng giữa công cụ và tội phạm, thì ai sẽ dám viết giao thức privacy tiếp theo? Ai sẽ dám deploy một hợp đồng không thể kiểm soát?
Câu trả lời: không ai. Và đó chính là cái chết của permissionless innovation.