Tôi không bao giờ tham gia pre-sale. Đây không phải là một tuyên bố, mà là một lựa chọn có hệ thống, được củng cố qua từng dòng code tôi đã đọc.
Họ gửi cho tôi một đề nghị: một suất đầu tư seed, với chiết khấu 30% so với giá mở bán công khai. Dự án là một "DeFi 2.0" hứa hẹn thanh khoản vĩnh viễn, yield farming không rủi ro, và một DAO phi tập trung. Tôi chỉ cần ký NDA, gửi 50 ETH, và nhận token. Tôi không ký.
— Gốc rễ: từ trải nghiệm về các dự án "hứa hẹn". Tôi đã thấy quá nhiều dự án giống hệt nhau. Đằng sau mỗi lời hứa đẹp đẽ là một hợp đồng thông minh thiếu chặt chẽ, một tokenomics gian dối, hoặc một đội ngũ ẩn danh không có danh tiếng. Tôi không tin vào lời hứa, tôi tin vào mã nguồn.
Tôi yêu cầu họ cung cấp quyền truy cập vào kho lưu trữ riêng tư. Sau hai ngày chờ đợi, tôi nhận được một bản sao hợp đồng trên Remix, với gần 2.000 dòng code không có bản sửa đổi. Đó là dấu hiệu đỏ đầu tiên. Không có sổ đăng ký thay đổi (changelog), không có bình luận nội bộ (inline comments), và quan trọng nhất, không có kiểm toán nào từ bên thứ ba.
Tôi dành 8 giờ để đọc từng dòng. Tôi tìm thấy một lỗi nghiêm trọng: cơ chế phân bổ token (token distribution mechanism) dựa trên một biến có thể bị thao túng bởi chính người triển khai (deployer). Hàm allocateTokens(address[] memory recipients, uint256[] memory amounts) không có modifier onlyOwner, nhưng logic bên trong lại kiểm tra msg.sender với một địa chỉ lưu trữ. Tuy nhiên, địa chỉ này được đặt trong constructor, và có một lệnh gọi đến setAllocator() có thể bị kích hoạt bởi bất kỳ ai nếu contract chưa được khởi tạo.

Đây là một lỗi lập trình cổ điển, nhưng lại có hậu quả rất lớn: bất kỳ ai cũng có thể tự bổ nhiệm mình làm người phân bổ, rút toàn bộ token từ quỹ dành cho pre-sale, và bỏ trốn. Tôi báo cáo lỗi này lại cho nhóm dự án. Phản hồi của họ là sự im lặng. Sau ba ngày, họ gửi lại một bản sửa lỗi, nhưng chỉ là một dòng thay đổi: thêm require để kiểm tra msg.sender là deployer. Họ không giải thích tại sao lỗi đó tồn tại, không thông báo cho các nhà đầu tư khác.
Tôi từ chối. Tôi nói: "Tôi không thể tham gia một dự án nơi mã nguồn vẫn còn lỗ hổng cơ bản, và đội ngũ không có quy trình phát hiện lỗi." Họ tức giận. Họ nói tôi đã vi phạm NDA khi tiết lộ lỗi. Tôi không tiết lộ gì cả. Tôi chỉ không đầu tư.
Hãy nhìn vào mặt đối lập: Một số người sẽ nói rằng tôi đã bỏ lỡ cơ hội. Họ có thể đúng. Nếu dự án thành công, phần token đó có thể trị giá hàng triệu đô la. Nhưng đối với tôi, cơ hội không phải là lợi nhuận; cơ hội là danh tiếng. Nếu tôi tham gia một dự án có mã nguồn bị hỏng, tôi sẽ mất đi thứ quan trọng nhất: sự tin tưởng của cộng đồng. Tôi không phải là một nhà đầu tư; tôi là một người kiểm toán. Đạo đức nghề nghiệp của tôi yêu cầu tôi phải từ chối những gì là không an toàn.
Tôi đã từ chối hơn 20 lời mời pre-sale trong năm qua. Một số dự án đã sụp đổ, một số khác vẫn tồn tại. Nhưng không có dự án nào tôi từng tham gia. Tôi không hối tiếc. Bởi vì tôi biết rằng, trong thị trường này, sự sống còn quan trọng hơn lợi nhuận. Và cách duy nhất để sống sót là từ chối những lời hứa không có mã nguồn.

Họ nói tôi là một kẻ bi quan, một kẻ "FUD". Tôi nói tôi là một người thực tế. Tôi không nói "không" với một dự án; tôi nói "không" với một mã nguồn yếu kém. Đó là sự khác biệt. Và đó là lý do tại sao tôi vẫn còn ở đây, trong khi những người khác đã ra đi.
Câu hỏi cuối cùng dành cho bạn: Bạn có đang tự hỏi mã nguồn của dự án mà bạn đang ủy thác tiền của mình trông như thế nào không? Hay bạn chỉ đang theo dõi những lời hứa?