Bạn đã bao giờ debug một contract mã nguồn mở với 300 dòng code, nhưng phải mất 30 phút để đọc hiểu intent của người viết? Tôi đã từng — và tôi ghét nó. Mỗi bản nâng cấp là một cánh cửa cho lỗ hổng mới, nhưng "cánh cửa" đó thường được viết bằng ngôn ngữ mơ hồ, đầy biến complex và modifier ẩn dụ. Karpathy gần đây chia sẻ một phương pháp làm việc với AI gọi là "long-form verbal prompting" — nó giống như cách tôi audit contract, nhưng ở cấp độ cao hơn: thay vì đọc bytecode, bạn nói chuyện với model như một đồng nghiệp kỹ thuật.
Hãy tạm quên NFT và Layer2. Thị trường giảm đang giết chết những dự án không có thực chất. Trong bối cảnh đó, câu chuyện về cách chúng ta tương tác với AI — đặc biệt là với các mô hình ngôn ngữ lớn (LLM) — có ý nghĩa sống còn cho tương lai của ngành. Karpathy không nói về blockchain, nhưng bài học của ông là chìa khóa để giải mã một nghịch lý kỹ thuật: các công cụ phát triển ngày càng mạnh, nhưng code trên chain ngày càng dễ bị tấn công.
Cơ chế giao thức ẩn sau mẹo nhỏ
Phương pháp của Karpathy dựa trên một thực tế: tốc độ nói (khoảng 150 từ/phút) cao hơn gấp 3 lần tốc độ gõ (40 từ/phút). Nhưng điều quan trọng hơn là cognitive load — khi nói, bạn không phải đồng thời quản lý cú pháp, chính tả và cấu trúc câu. Điều này tương tự như cách một core developer đọc contract: bạn không đọc từng dòng, bạn "nói chuyện" với code, hỏi nó các câu hỏi về intent, về edge case.
Trong blockchain, điều này là một cuộc cách mạng. Hãy tưởng tượng một junior developer muốn kiểm tra một contract Uniswap V2 mới. Theo cách truyền thống, họ sẽ đọc whitepaper, sau đó mở Etherscan, copy code vào Remix, thêm vài test. Mất ít nhất 2 giờ. Với phương pháp "verbal prompting", họ chỉ cần nói: "Tôi có một contract AMM. Nó dùng mô hình x*y=k. Nhưng tôi thấy có một hàm swap với tham số amount0Out và amount1Out. Tôi nghi ngờ có lỗ hổng reentrancy." AI sẽ lập tức hiểu bối cảnh, và có thể hỏi lại: "Bạn có thấy nó implement nonReentrant modifier không? Hãy kiểm tra hàm _update."
Đây không chỉ là tiết kiệm thời gian. Đó là giảm thiểu rủi ro do thiếu kinh nghiệm. Trong audit, lỗi thường xảy ra không phải vì code khó, mà vì developer bỏ sót một số flow. Verbal prompting, với khả năng "hỏi ngược" của AI, có thể bắt được những lỗi này.
Phân tích cấp code: Từ "nói chuyện" đến "viết contract"
Hãy đi vào một case study thực tế từ kinh nghiệm audit của tôi. Năm 2023, tôi làm việc với một giao thức lending mới. Whitepaper của họ nói về "flash loan resistant" — một khái niệm marketingspeak mơ hồ. Tôi mở code. 500 dòng. Có vẻ ổn. Nhưng thay vì đọc từng dòng, tôi áp dụng nguyên tắc của Karpathy: bắt đầu bằng một câu hỏi mở.
"Đây là contract lending pool. Tôi thấy nó dùng transfer thay vì call. Hãy phân tích flow thanh lý. Cụ thể, liquidate() gọi hàm gì trước, và gì sau?"
AI trả lời: "liquidate() trước gọi _updateState(), sau đó chuyển collateral. _updateState() cập nhật biến accountLiquidity. Nếu có reentrancy, _updateState() có thể bị gọi lại trước khi collateral được chuyển đi, dẫn đến accountLiquidity sai."
Điểm mấu chốt: AI không chỉ liệt kê code. Nó hiểu intent và state transition. Đó là điều mà một audit công cụ (Slither, Mythril) không làm được. Slither báo lỗi reentrancy, nhưng không nói cho bạn biết tại sao nó là lỗi trong ngữ cảnh này.
Contrarian Angle: Tại sao tôi vẫn sợ
Tôi là INTJ. Tôi thích kiểm soát. Tôi không tin tưởng bất kỳ công cụ nào mà tôi không hiểu rõ giới hạn của nó. Và verbal prompting cũng có điểm mù.
Nguy cơ đầu tiên: model hallucination. Khi tôi nói "Tôi có một contract AMM", AI có thể hiểu đó là Uniswap V2, nhưng thực tế đó là một biến thể với logic khác. Nếu AI suy diễn sai intent, nó sẽ đưa ra phân tích sai. Trong audit, một giả định sai có thể khiến bạn bỏ sót lỗi critical.
Nguy cơ thứ hai: over-reliance. Nếu bạn quen nói chuyện với AI, bạn có thể mất khả năng đọc code thủ công. Giống như học sinh dùng máy tính để giải phương trình, nhưng không hiểu bản chất. Khi AI gặp một cấu trúc lạ — ví dụ, một custom fallback function với logic phức tạp — nó có thể bỏ qua, và bạn cũng vậy.
Nguy cơ thứ ba: bảo mật thông tin. Trong một thị trường giảm, các dự án cạnh tranh khốc liệt. Nếu bạn nói chuyện với AI về một protocol mới, bạn có thể vô tình rò rỉ chiến lược. Hãy tưởng tượng nói: "Tôi đang xây dựng một Layer2 với sequencer phi tập trung. Cơ chế của nó là..." — điều đó có thể biến thành một bài báo trên The Block ngay ngày hôm sau.
Takeaway: Tương lai của phát triển giao thức
Tôi tin rằng trong 2-3 năm tới, mọi core developer sẽ dùng một số hình thức "verbal prompting" như một phần của workflow. Nhưng nó sẽ không thay thế audit. Nó sẽ thay thế những giờ đầu tiên của quá trình đọc code. Giống như Git không thay thế developer, nó chỉ giúp quản lý code tốt hơn.
Câu hỏi để kết thúc: khi công cụ phát triển mạnh đến mức ai cũng có thể "nói chuyện" với chain, liệu lỗ hổng bảo mật sẽ giảm, hay chỉ thay đổi hình dạng — từ lỗi cú pháp sang lỗi logic do hiểu sai intent? Tôi đặt cược vào điều thứ hai. Và đó là lý do tôi vẫn sẽ tiếp tục đọc bytecode, dù có AI hay không.