SmartMuv เป็นเครื่องมือวิเคราะห์สัญญาอัจฉริยะและเครื่องมือสกัดข้อมูลใน Python 3. SmartMuv สามารถแยกสถานะ/ข้อมูลที่สมบูรณ์ของสัญญาอัจฉริยะและช่วยให้ผู้ใช้สามารถอัพเกรดหรือย้ายสัญญาอัจฉริยะพร้อมกับข้อมูลในบล็อกเชนที่เข้ากันได้กับ EVM SmartMuv ยังสามารถใช้สำหรับการติดตามสถานะสัญญาอัจฉริยะหรือดึงข้อมูลสัญญาอัจฉริยะ (เช่นรายชื่อผู้ถือหรือรายการรายการข้อมูลใด ๆ เช่นการแมป, อาร์เรย์ ฯลฯ ) จนถึงหมายเลขบล็อกเฉพาะ
เนื่องจากความแข็งแกร่งไม่ได้ติดตามคีย์ของตัวแปรการทำแผนที่ SmartMuv ใช้เทคนิคการวิเคราะห์รหัสแหล่งเวลาคงที่เพื่อทำการวิเคราะห์การประมาณคีย์ในตัวแปรการทำแผนที่ มันวิเคราะห์เค้าโครงที่สมบูรณ์ของสัญญาอัจฉริยะและสามารถแยกตัวแปรปกติไม่เพียง แต่ตัวแปรที่ซับซ้อน (เช่นการแมปและอาร์เรย์หลายมิติ) และตัวแปรที่ผู้ใช้กำหนด
git clone https://github.com/WaizKhan7/SmartMuv.git
คุณสามารถติดตั้งแพ็คเกจที่จำเป็นทั้งหมดด้วยคำสั่งต่อไปนี้:
python3 setup.py install
คุณสามารถติดตั้งคอมไพเลอร์ที่เป็นกรดที่จำเป็นทั้งหมดด้วยคำสั่งต่อไปนี้:
python3 install_compilers.py
SmartMuv ใช้ URL RPC blockchain ที่เข้ากันได้กับ EVM สำหรับการสกัดรัฐและบล็อก Explorer APIs เช่น Etherscan, Polygonscan, Bscscan ฯลฯ เพื่อรับธุรกรรมสัญญาอัจฉริยะ คีย์ API และ URL สำหรับ RPC และ Block Explorers จะต้องเพิ่มลงในไฟล์ config.ini สำหรับเครื่องมือในการทำงานอย่างถูกต้อง
คุณสามารถเรียกใช้ SmartMuv ด้วยคำสั่งต่อไปนี้ในตัวอย่าง Smart Contracts:
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 ในสัญญาที่แข็งแกร่งของคุณเลือกที่คุณเลือกให้เพิ่มรายละเอียดสัญญาในไฟล์ 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
การวิเคราะห์สล็อตของสัญญาอัจฉริยะ เพื่อรับเค้าโครงจัดเก็บข้อมูลที่สมบูรณ์ของสัญญาอัจฉริยะ
การตรวจสอบการจัดเก็บ สัญญาอัจฉริยะ
Smart Contract การจัดทำดัชนีข้อมูลภายในที่สมบูรณ์สำหรับแพลตฟอร์ม Blockchain Explorer
การสกัดสถานะ (สแน็ปช็อต) ของข้อมูลสัญญาอัจฉริยะ
การปรับใช้/อัปเกรดสัญญาอัจฉริยะ พร้อมกับข้อมูลที่มีอยู่
การโยกย้ายสัญญาอัจฉริยะ พร้อมกับข้อมูลสัญญาเช่น L1 ถึง L2 หรือ L2 ถึง L2 การย้ายถิ่น
ในกรณีที่มีการสอบถามใด ๆ คุณสามารถส่งอีเมลถึงเราได้ที่ [email protected]