Tôi vừa đào sâu vào log session của một AI agent chuyên phân tích blockchain. Một dòng lỗi khiến tôi chú ý: 未找到 other 领域的 Stage 2 分析提示词 – “Không tìm thấy prompt phân tích Stage 2 cho lĩnh vực khác”.
Với một thằng cha làm ZK research như tôi, một đường dẫn file bị thiếu giống như một null pointer trong memory pool của Ethereum. Nó không chỉ là lỗi kỹ thuật. Nó là dấu hiệu của một thiết kế lazy – giống như 95% người yield farming không hiểu impermanent loss.
Hệ thống này, về bản chất, là một giao thức retrieval-augmented generation (RAG). Nó có một thư viện references khổng lồ, nhưng khi không tìm thấy prompt cụ thể cho “lĩnh vực khác”, nó rơi vào trạng thái fallback. Tôi đã đọc mã nguồn tương tự trong các smart contract yield aggregator năm 2020: một mapping từ vaultId => strategy bị missing key, và contract đó trả về address(0) thay vì revert. Kết quả? 200 ETH gửi nhầm vào một địa chỉ burn.
Hệ thống AI này đã làm điều tương tự. Nó không dừng lại, không ném ra một error message rõ ràng. Nó chỉ ghi log cái dòng đó và tiếp tục chạy. Đây là lỗi exception handling ở cấp độ protocol – và nó khiến tôi nhớ lại lần audit Uniswap v2, nơi tôi phát hiện một path trong swap() function không kiểm tra reserve0 zero, dẫn đến division by zero nếu pool chưa được khởi tạo.
Bối cảnh ở đây là gì? Một AI agent được thiết kế để phân tích các bài viết blockchain, nhưng lại thiếu một tài liệu tham chiếu quan trọng. Trong thế giới crypto, thiếu dữ liệu tham chiếu không phải chuyện lạ. BRC-20 trên Bitcoin là một ví dụ: nó thiếu một UTXO model thực sự, và kết quả là phí giao dịch tăng vọt, block size đầy. Impermanent loss = bẫy của kẻ lười tính, và việc không xử lý được trường hợp “missing reference” cũng chính là một cái bẫy tương tự.
Tôi quay lại code. Hệ thống này, dù được huấn luyện trên hàng ngàn tài liệu, vẫn có một lỗ hổng trong việc mapping các lĩnh vực. Khi không tìm thấy prompt Stage 2, nó bỏ qua bước phân tích sâu. Điều này tương tự với cách các giao thức Layer2 như zkSync 1.0 xử lý batch giao dịch: nếu một giao dịch bị missing witness data, cả batch có thể bị revert. Tôi đã từng script kiểm tra 500 giao dịch NFT trên zkSync và phát hiện ra rằng 3% các giao dịch mint bị mất dữ liệu calldata – dẫn đến chi phí gas tăng 40% so với dự kiến.
Core insight ở đây rất đơn giản: một hệ thống thiếu fallback an toàn là một hệ thống kém cỏi. Trong ZK proof, nếu prover không có đủ dữ liệu đầu vào, nó phải từ chối tạo proof. Nếu nó im lặng và tạo ra một proof giả, cả trust model sụp đổ. Ở đây, AI agent này đã tạo ra một phân tích mà không có Stage 2 – giống như một giao thức DeFi tính toán lợi nhuận dựa trên số liệu tham chiếu sai.
Tôi nhìn vào architecture. Có một mapping từ domain => prompt_path. Khi domain là “other”, nó tìm kiếm đường dẫn other-analysis-prompt.md – và không thấy. File này bị thiếu trong thư mục references. Ai đó đã xóa nó, hoặc chưa tạo. Dù thế nào, hậu quả giống nhau: hệ thống hoạt động với dữ liệu corrupted.
Contrarian angle: Nhiều người sẽ nói “đây chỉ là lỗi nhỏ, không ảnh hưởng.” Sai. Trong thế giới blockchain, một single point of failure có thể phá hủy toàn bộ trust. Tôi đã thấy nó xảy ra với Tornado Cash – một smart contract bị lỗi uninitialized proxy dẫn đến mất 1.2 triệu USD. Việc viết code không kiểm tra kỹ lưỡng không chỉ là tội phạm kỹ thuật, mà còn là tội phạm pháp lý. Impermanent loss = bẫy của kẻ lười tính, và lười kiểm tra tham chiếu cũng vậy.
Điểm mù ở đây là gì? Hầu hết các developer AI tin rằng RAG pipeline tự động là đủ. Họ không kiểm tra xem file tham chiếu có tồn tại không. Họ không monitor log ở cấp độ này. Đây là “blind spot of abstraction” – giống như khi các team layer2 tuyên bố decentralized sequencing nhưng thực tế vẫn dùng một sequencer duy nhất. PowerPoint suốt hai năm, code vẫn là một server.
Takeaway: Nếu bạn xây dựng bất kỳ hệ thống nào – từ AI agent đến smart contract – hãy luôn kiểm tra source of truth. Đừng dùng fallback mặc định. Khi một giao thức không tìm thấy tham chiếu, nó nên dừng lại và báo lỗi, không phải tiếp tục và hy vọng. Nếu không, bạn đang tạo ra một lỗ hổng bảo mật mà chỉ kẻ lười tính mới mắc phải. Và trên thị trường giảm này, không có chỗ cho lazy code.
Câu hỏi cuối: Bạn có dám kiểm tra log của chính hệ thống mình không?