انتقل إلى المحتوى الرئيسي
بلوكتشينMar 28, 2026

Deep EVM #20: CI/CD للعقود الذكية — الاختبار وتراجع الغاز والأمان

OS
Open Soft Team

Engineering Team

لماذا CI/CD للعقود الذكية

العقود الذكية لا يمكن تحديثها بعد النشر. خطأ واحد يمكن أن يكلف ملايين. CI/CD يوفر شبكة أمان آلية تكتشف المشاكل قبل وصولها للشبكة الرئيسية.

بنية خط الأنابيب

# .github/workflows/ci.yml
name: Smart Contract CI
on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: foundry-rs/foundry-toolchain@v1
      
      - name: تشغيل الاختبارات
        run: forge test -vvv
      
      - name: اختبار عشوائي موسع
        run: forge test --fuzz-runs 50000
      
      - name: تقرير الغاز
        run: forge test --gas-report > gas-report.txt
      
      - name: فحص حجم العقد
        run: forge build --sizes
  
  security:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Slither
        uses: crytic/slither-action@v0.3.0
      - name: Mythril
        run: myth analyze src/Contract.sol
  
  gas-regression:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: foundry-rs/foundry-toolchain@v1
      - name: مقارنة الغاز
        run: |
          forge test --gas-report --json > current.json
          # مقارنة مع الخط الأساسي
          python scripts/compare_gas.py baseline.json current.json

كشف تراجع الغاز

أداة مقارنة بسيطة:

import json, sys

baseline = json.load(open(sys.argv[1]))
current = json.load(open(sys.argv[2]))

for func in current:
    if func in baseline:
        diff = current[func] - baseline[func]
        pct = (diff / baseline[func]) * 100
        if pct > 5:  # عتبة 5%
            print(f"تراجع: {func}: {baseline[func]} -> {current[func]} ({pct:+.1f}%)")
            sys.exit(1)

الفحص الأمني الآلي

أدوات التحليل الثابت:

  • Slither — محلل ثابت بـ Python، يكتشف أنماط شائعة
  • Mythril — تنفيذ رمزي لاكتشاف الثغرات
  • Aderyn — محلل بـ Rust، سريع جداً

التحقق على Etherscan

forge verify-contract \
    --chain mainnet \
    --etherscan-api-key $ETHERSCAN_KEY \
    <deployed_address> \
    src/Contract.sol:Contract

الخلاصة

CI/CD للعقود الذكية ليس ترفاً — إنه ضرورة. اختبارات آلية، كشف تراجع الغاز، وفحص أمني في كل طلب دمج يقلل بشكل كبير من خطر نشر عقد معيب.