labs@atheron:~/open-source/lens$ lens scan ./contracts
Atheron Lens
ڈیپلائے سے پہلے کنٹریکٹ کی خامیاں پکڑیں۔
اسمارٹ کنٹریکٹس کے لیے ایک اوپن سورس اسٹیٹک تجزیہ کار۔ یہ آپ کا کوڈ پڑھتا ہے، وہ خامیاں نمایاں کرتا ہے جو آڈیٹر سب سے زیادہ پاتے ہیں، اور ہر ایک کو ٹھیک کرنے کا طریقہ بتاتا ہے۔
// صورتحال
تیاری میں۔
Lens ابھی بن رہا ہے۔ سورس کوڈ لانچ پر GitHub پر کھلے گا، اور اسی دن اس صفحے پر لنک آ جائے گا۔
- سورس کوڈ
- لانچ پر کھلے گا
- لائسنس
- Apache-2.0 اور MIT
- کمانڈ
lens
// یہ کیا کرتا ہے
ہر کمٹ پر ایک اور نظر۔
Lens آپ کے کنٹریکٹس کو چلائے بغیر جانچتا ہے۔ یہ خطرے کے معلوم نمونے تلاش کرتا ہے اور ہر نتیجہ بتاتا ہے: وہ کہاں ہے، کیوں اہم ہے، اور اسے ٹھیک کرنے کا اشارہ۔
- پہلے ورژن میں تقریباً ۲۵ مؤثر جانچیں: ری اینٹرنسی، بغیر جانچی کالز، رسائی کا کنٹرول، tx.origin، delegatecall اور پراکسیز، انیشیلائزرز، درستی، دستخط کا دوبارہ استعمال، بے ترتیبی، اوریکل میں ہیرا پھیری، اور گیس کے ذریعے سروس کی بندش۔
- GitHub کوڈ اسکیننگ کے لیے SARIF میں رپورٹیں، اور لوگوں کے لیے Markdown میں۔
- ہر پلیٹ فارم کے لیے ایک ہی فائل، اتنی تیز کہ بڑا منصوبہ چند سیکنڈ میں جانچ لے۔
- جانچ کے دوران کوئی نیٹ ورک کال نہیں۔ آپ کا کوڈ آپ کی مشین پر رہتا ہے۔
// کس کے لیے
ہر اس شخص کے لیے جو کنٹریکٹ جاری کرتا ہے۔
01
کنٹریکٹ ڈیولپرز
02
آڈٹ سے پہلے ٹیمیں
03
جائزہ کار اور آڈیٹر
// زبانیں
کنٹریکٹس کی تمام بڑی زبانیں۔
ایک ہی انجن، ہر زبان ایک ماڈیول کے طور پر۔ پہلا ورژن EVM کا احاطہ کرتا ہے؛ باقی اسی ترتیب سے آئیں گی۔
- EVM
- Solidity اور Vyperپہلا ورژن
- Rust
- Solana (نیٹو اور Anchor)، CosmWasm، ink!اس کے بعد
- Move
- Aptos اور Suiاس کے بعد
- Cairo
- Starknetاس کے بعد
- WebAssembly
- کمپائل شدہ Wasm کنٹریکٹس، چاہے کسی بھی زبان سے بنے ہوںاس کے بعد
// فوری آغاز
جانچ کے لیے ایک کمانڈ۔
Lens ایک کمانڈ لائن ٹول ہے جس کا نام lens ہے۔ جو ورژن ہم بنا رہے ہیں اس میں یہ ایسے کام کرتا ہے؛ لانچ سے پہلے تفصیلات بدل سکتی ہیں۔
// کنٹریکٹس کا ایک فولڈر جانچیں
lens scan ./contracts// GitHub کوڈ اسکیننگ کے لیے SARIF رپورٹ لکھیں
lens scan ./contracts --format sarif > lens.sarif// ہر پُل ریکویسٹ پر اسے چلائیں
- name: Atheron Lens
run: lens scan ./contracts --format sarif > lens.sarifہر پلیٹ فارم کے لیے انسٹال کرنے کے مراحل لانچ پر سورس کوڈ کے ساتھ شائع ہوں گے۔
// نمونہ رپورٹ
ایک نتیجہ ایسا دکھتا ہے۔
ایک نتیجے کے لیے Lens کی لکھی رپورٹ کا نمونہ۔ کنٹریکٹ اور لائن اس صفحے کے لیے فرضی ہیں۔
HIGH reentrancy contracts/Vault.sol:42
withdraw() sends ETH before it updates balances[msg.sender].
A contract that calls back into withdraw() can drain the vault.
fix: update the balance first (checks, effects, interactions),
or guard withdraw() with a reentrancy lock.// آپ کے ایڈیٹر میں
ٹائپ کرتے ہی نتائج۔
کمانڈ لائن کے بعد، Lens ایک لینگویج سرور کے ذریعے ایڈیٹرز میں آئے گا، اس ترتیب سے:
- VS Code، Marketplace اور Open VSX پر (یوں Cursor، Windsurf اور VSCodium میں بھی)
- Remix IDE
- JetBrains کے آئی ڈی ای
- Neovim، Zed، Helix، Sublime Text اور Emacs
// لائسنس
مفت، دو لائسنسوں کے تحت۔
Lens دوہرے لائسنس، Apache-2.0 اور MIT کے تحت ہے۔ جو آپ کے لیے موزوں ہو، وہ چنیں۔
// مزید ضرورت
ساتھ میں کوئی انسان بھی چاہیے؟
ٹول نمونے پکڑتا ہے۔ ہمارے انجینئر Lens سے شروع کر کے آپ کے کنٹریکٹس کا ہاتھ سے جائزہ لے سکتے ہیں۔