بلوكتشين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 للعقود الذكية ليس ترفاً — إنه ضرورة. اختبارات آلية، كشف تراجع الغاز، وفحص أمني في كل طلب دمج يقلل بشكل كبير من خطر نشر عقد معيب.