SmartMuv هي أداة تحليل للعقود الذكية واستخراج البيانات في Python 3. يمكن لـ SmartMuv استخراج الحالة/البيانات الكاملة للعقد الذكي وتمكن المستخدمين من ترقية عقودهم الذكية أو ترحيلها إلى جانب البيانات عبر أي blockchain المتوافقة مع EVM. يمكن أيضًا استخدام SmartMuv لتتبع حالة العقد الذكي أو استرداد بيانات العقد الذكي (أي قائمة أصحاب أو قائمة إدخالات أي نوع من أنواع البيانات مثل التعيين أو المصفوفات وما إلى ذلك) حتى رقم كتلة محدد.
نظرًا لأن الصلابة لا تتتبع مفاتيح متغيرات رسم الخرائط ، فإن SmartMUV تستخدم تقنيات تحليل رمز مصدر الوقت الثابت لإجراء تحليل تقريب المفتاح على متغيرات رسم الخرائط. إنه يحلل التصميم الكامل للعقد الذكي ويمكنه استخراج المتغيرات العادية فحسب ، بل أيضًا متغيرات معقدة (أي تعيينات ومصفوفات متعددة الأبعاد) والمتغيرات المعرفة من قبل المستخدم.
git clone https://github.com/WaizKhan7/SmartMuv.git
يمكنك تثبيت جميع الحزم المطلوبة مع الأمر التالي:
python3 setup.py install
يمكنك تثبيت جميع مترجم الصلابة المطلوبة مع الأمر التالي:
python3 install_compilers.py
يستخدم SmartMuv عنوان URL المتوافق مع evm blockchain RPC لاستخراج الحالة ، وحظر واجهات برمجة APIs Explorer IE Etherscan ، polygonscan ، bscscan ، إلخ ، للحصول على معاملات العقود الذكية. يجب إضافة مفاتيح API وعنوان URL لـ RPC و Block Explorers إلى ملف config.ini حتى تعمل الأداة بشكل صحيح.
يمكنك تشغيل SmartMuv مع الأمر التالي على مثال SMART على سبيل المثال:
python3 -m try_smartmuv
حدد العقد الذكي من القائمة المقدمة ، وسيقوم SmartMuv بتحليل واستخراج حالته الكاملة.
1 0xc9ae11a393a08e86d46ce683fde7699db01a5f15 AUX1769
2 0x51bb7917efcad03ec8b1d37251a06cd56b0c4a72 DSRCoin
3 0x24dd6e1fe742bd8fd3a1d144fece1680f16296aa OBK
4 0x143e685dd51d467d77663a3be119217185d81b99 CommunityBankCoin
5 0x145f9bbd9f1ca0923e81e05c2ac04fda2310d774 VACCToken
Select contract no from above to run SmartMuv ->
لتشغيل SmartMuv على عقد Smart Smart من اختيارك ، أضف تفاصيل العقد في ملف smartmuv.py وتشغيله:
python3 -m smartmuv
ملاحظة: أضف الكود المصدر لمشروعك إلى مسار "Contract_directory" المحدد في ملف config.ini . يجب أن يحتوي ملف الرمز على جميع الكود دون أي عبارة import .
slot 0 - mapping balances[address] = uint256;
slot 1 - mapping allowed[address][address] = uint256;
slot 2 - uint256 totalSupply;
slot 3 - string name;
slot 4 - uint8 decimals;
slot 5 - string symbol;
[الاسم ، النوع ، القيمة ، الحجم (بايت) ، رقم الفتحة]
['owner', 'address', '0xb520de5470c80d57f7005d3b771af675ad311f91', 20, '0x0']
['totalSupply', 'uint256', 100000000000000000, 32, '0x1']
['decimals', 'uint8', 6, 1, '0x2']
['name', 'string', 'Community Decentralized Banking>', 32, '0x3']
['symbol', 'string', 'CMD', 32, '0x4']
['tokenIsFrozen', 'bool', 'False', 1, '0x5']
['tokenMintingEnabled', 'bool', 'False', 1, '0x5']
['contractLaunched', 'bool', 'False', 1, '0x5']
['stakingStatus', 'bool', 'False', 1, '0x5']
['balances:key:0xb520de5470c80d57f7005d3b771af675ad311f91', 'uint256', 99000000000000000, 32, '0x4fa3db652fe4fb0b4583b73847299fbd568219c49826e6778a89ecc882273865']
['balances:key:0x5b7b3ccfc5a89caf6a459627029dc1e1255ee360', 'uint256', 999998994679681, 32, '0xb500fc54d70185966c1ff1538715017b5b6b324727f02becd41481a337bcf77a']
['balances:key:0x642481c0d64f1d8a06da621599b9d64cf41740b8', 'uint256', 2023908, 32, '0xb930fddb7465b82ccbad649c33609aafcf74f4f0763fcd3609a15183bb6e2d8e']
['balances:key:0x4a30f1974Ff2338C4d8f8Eb2f7FE11353FE6f71d', 'uint256', 3296411, 32, '0xffb44d017dc752df1a3231eb81905c9cac26214ade36e0a2a3bc72fcdcbef740']
['balances:key:0x38BC418476D274900167f33e2098A86aB01b96Af', 'uint256', 1000000000, 32, '0x430d203e4eb0ef42503559f8c2f4410eef444da81d0b910d2c40ed75d9c2f34a']
python3 -m tests.test_ast_parsing
python3 -m tests.test_slot_analysis
python3 -m tests.test_key_approx_analysis
python3 -m tests.test_state_extraction
تحليل فتحات العقد الذكي ، للحصول على تخطيط تخزين كامل لعقد ذكي.
تدقيق تخزين العقد الذكي.
العقد الذكي أكمل فهرسة البيانات الداخلية لمنصات blockchain explorer .
استخراج الحالة (لقطة) لبيانات العقد الذكي.
إعادة النشر/ترقية العقود الذكية جنبا إلى جنب مع بياناتها الحالية.
ترحيل العقود الذكية جنبا إلى جنب مع بيانات العقد IE L1 إلى L2 أو L2 إلى L2.
في حالة وجود أي استفسار ، يمكنك مراسلتنا عبر البريد الإلكتروني على [email protected]