من مدل‌های محلی را روی ده قرارداد کوچک Solidity آزمایش کردم و باگ‌هایی مانند موارد زیر را در آن‌ها قرار دادم:

  • Reentrancy در توابع withdraw
  • نبود access modifiers
  • خطاهای گرد کردن در ERC4626
  • بررسی‌های نادرست signature
  • باگ‌های منطقی ظریف

من Qwen2.5-Coder را در مقابل DeepSeek-Coder روی مدل‌های 7B (یا کوچک‌تر) از طریق Ollama در WSL2 آزمایش کردم. اگر از مدل‌های 33B استفاده می‌کنید، این بخش را نادیده بگیرید.

برای هر قرارداد، سه پرامپت (prompt) صادر کردم:

  • یک بررسی امنیتی کلی
  • یک بررسی هدفمند برای reentrancy و access control
  • یک گزارش ساختاریافته با برچسب‌های شدت (severity tags)

پیروی از دستورالعمل‌ها

در این بخش Qwen 7B پیروز است. این مدل تقریباً در هر بار، از قوانین سخت‌گیرانه قالب‌بندی پیروی می‌کند. DeepSeek اغلب متن‌های اضافی اضافه می‌کند یا محدودیت‌ها را نادیده می‌گیرد. وقتی خروجی مدل را به یک pipeline خودکار می‌فرستید، ثبات Qwen اهمیت دارد؛ چرا که شکست در parsing، خروجی را بی‌فایده می‌کند.

بررسی‌های هدفمند

Qwen در موضوع باقی می‌ماند. اگر از آن درباره reentrancy بپرسید، درباره reentrancy پاسخ می‌دهد. DeepSeek به سمت gas optimization یا نکات مربوط به سبک کدنویسی منحرف می‌شود و باعث ایجاد نویز می‌شود.

کیفیت توضیحات

Qwen توالی حملات را به وضوح شرح می‌دهد و نشان می‌دهد که یک exploit چگونه پیش می‌رود. DeepSeek پاسخ‌های کلی و کتابی ارائه می‌دهد. هر دو درست هستند، اما جزئیات Qwen به نوشتن گزارش کمک می‌کند.

شکاکیت و توهم (Hallucination)

DeepSeek مسائل بیشتری را علامت‌گذاری می‌کند و مانند یک «تولیدکننده شک» عمل می‌کند. این مدل همچنین در کدهای سالم، مشکلاتی را از خود می‌سازد.

در مقابل، وقتی کد باگ دارد، Qwen سکوت می‌کند. از سوی دیگر، DeepSeek ادعای وجود باگ‌هایی را می‌کند که وجود ندارند.

یک هشدار اشتباه چند دقیقه هزینه دارد؛ اما یک باگِ نادیده گرفته شده می‌تواند همه چیز را از بین ببرد. من برای پیدا کردن موارد جهت بررسی، به DeepSeek تکیه می‌کنم، اما برای اتوماسیون (automation) به Qwen اعتماد دارم.

حکم نهایی من

اندازه مدل مهم‌تر از برند است. یک مدل 1.5B نمی‌تواند در مورد باگ‌های چند مرحله‌ای استدلال کند یا قالب را حفظ کند.

در مقیاس 7B، هر دو نقص‌های اولیه را مدیریت می‌کنند، اما هیچ‌کدام جایگزین یک حسابرس انسانی برای منطق تجاری پیچیده نمی‌شوند. آن‌ها را به عنوان دستیاران تریاژ (triage) در نظر بگیرید، نه حسابرس.

تنظیمات من:

  • Qwen 7B: پیش‌فرض برای بررسی‌های ساختاریافته و pipelineها.
  • DeepSeek: نظر دوم برای یافتن آنچه Qwen از دست می‌دهد.
  • Qwen 1.5B: فقط برای فیلتر کردن سریع و کم‌اهمیت.

بزرگترین مدلی را که سخت‌افزارتان می‌تواند اجرا کند، تهیه کنید. سپس نگران برند باشید.

آیا مدلی را ترجیح می‌دهید که شکاک باشد یا مدلی که دقیق باشد؟

Source: https://dev.to/pavelespitia/qwen25-coder-vs-deepseek-coder-for-solidity-review-what-i-actually-see-locally-4jh8

Optional learning community: https://t.me/GyaanSetuAi