Tôi đã thử nghiệm các mô hình chạy cục bộ trên mười hợp đồng Solidity nhỏ, cài cắm các lỗi như:
- Lỗi reentrancy trong các hàm rút tiền
- Thiếu các access modifier (kiểm soát quyền truy cập)
- Lỗi làm tròn ERC4626
- Kiểm tra chữ ký bị lỗi
- Các lỗi logic tinh vi
Tôi đã chạy so sánh Qwen2.5-Coder với DeepSeek-Coder trên các mô hình 7B (hoặc nhỏ hơn) thông qua Ollama trên WSL2. Nếu bạn sử dụng các mô hình 33B, hãy bỏ qua phần này.
Với mỗi hợp đồng, tôi đã đưa ra ba câu lệnh (prompt):
- Một bản đánh giá bảo mật tổng quát
- Một đợt kiểm tra chuyên biệt cho reentrancy và kiểm soát quyền truy cập
- Một báo cáo có cấu trúc với các thẻ mức độ nghiêm trọng
Khả năng tuân thủ chỉ dẫn
Qwen 7B chiến thắng ở phần này. Nó tuân thủ các quy tắc định dạng nghiêm ngặt trong hầu hết mọi lần. DeepSeek thường thêm văn bản thừa hoặc bỏ qua các giới hạn. Khi bạn đưa đầu ra của mô hình vào một quy trình tự động (automated pipeline), sự nhất quán của Qwen là rất quan trọng—một lỗi phân tách dữ liệu (parsing-fail) sẽ khiến mọi thứ trở nên vô dụng.
Kiểm tra chuyên biệt
Qwen luôn bám sát chủ đề. Nếu bạn hỏi về reentrancy, nó sẽ trả lời về reentrancy. DeepSeek lại lan man sang tối ưu hóa gas hoặc các lưu ý về phong cách viết code, gây thêm nhiễu.
Chất lượng giải thích
Qwen trình bày các chuỗi tấn công một cách rõ ràng, cho thấy cách một lỗ hổng bị khai thác diễn ra như thế nào. DeepSeek đưa ra các câu trả lời mang tính lý thuyết sách giáo khoa chung chung. Cả hai đều đúng, nhưng sự chi tiết của Qwen giúp ích nhiều hơn cho việc viết báo cáo.
Sự hoài nghi và Ảo giác
DeepSeek gắn cờ nhiều vấn đề hơn, đóng vai trò như một "máy tạo sự nghi ngờ". Nó cũng tự tạo ra các vấn đề trong những đoạn code sạch.
Ngược lại, Qwen sẽ giữ im lặng khi code không có lỗi. Trong khi đó, DeepSeek lại khẳng định có lỗi ở những nơi không tồn tại.
Một cảnh báo giả chỉ tốn vài phút; nhưng một lỗi bị bỏ lỡ có thể khiến bạn mất tất cả. Tôi dựa vào DeepSeek để phát hiện các vấn đề cần điều tra, nhưng tôi tin dùng Qwen cho việc tự động hóa.
Kết luận cuối cùng của tôi
Kích thước mô hình quan trọng hơn thương hiệu. Một mô hình 1.5B không thể suy luận qua các lỗi nhiều bước hoặc tuân thủ định dạng.
Ở mức 7B, cả hai đều xử lý được các lỗi cơ bản, nhưng không cái nào có thể thay thế một kiểm toán viên con người đối với các logic nghiệp vụ phức tạp. Hãy coi chúng như những trợ lý phân loại (triage assistants), chứ không phải kiểm toán viên.
Thiết lập của tôi:
- Qwen 7B: Lựa chọn mặc định cho các đánh giá có cấu trúc và quy trình tự động.
- DeepSeek: Ý kiến thứ hai để bắt được những gì Qwen bỏ lỡ.
- Qwen 1.5B: Chỉ dùng để lọc nhanh cho các trường hợp ít rủi ro.
Hãy mua mô hình lớn nhất mà phần cứng của bạn có thể chạy được. Sau đó hãy lo về thương hiệu.
Bạn thích một mô hình hay nghi ngờ hay một mô hình chính xác hơn?
Optional learning community: https://t.me/GyaanSetuAi
