SmartMuv adalah analisis kontrak pintar dan alat ekstraksi data di Python 3. SmartMuv dapat mengekstraksi status lengkap/data kontrak pintar dan memungkinkan pengguna untuk meningkatkan atau memigrasi kontrak pintar mereka bersama dengan data di seluruh blockchain yang kompatibel dengan EVM. SmartMuv juga dapat digunakan untuk pelacakan negara bagian kontrak pintar atau mengambil data kontrak pintar (misalnya daftar pemegang atau entri dari jenis data apa pun seperti pemetaan, array, dll.) Sampai nomor blok tertentu.
Karena soliditas tidak melacak kunci variabel pemetaan, SmartMuv menggunakan teknik analisis kode sumber waktu statis untuk melakukan analisis perkiraan kunci pada variabel pemetaan. Ini menganalisis tata letak lengkap dari kontrak pintar dan dapat mengekstrak tidak hanya variabel reguler tetapi juga variabel kompleks (yaitu pemetaan dan array multi-dimensi) dan variabel yang ditentukan pengguna.
git clone https://github.com/WaizKhan7/SmartMuv.git
Anda dapat menginstal semua paket yang diperlukan dengan perintah berikut:
python3 setup.py install
Anda dapat menginstal semua kompiler soliditas yang diperlukan dengan perintah berikut:
python3 install_compilers.py
SmartMuv menggunakan URL RPC blockchain yang kompatibel dengan EVM untuk ekstraksi negara, dan blok Explorer APIs yaitu Etherscan, Polygonscan, BSCSCAN, dll., Untuk mendapatkan transaksi kontrak pintar. Kunci dan URL API untuk RPC dan blok penjelajah harus ditambahkan ke file config.ini agar alat berfungsi dengan baik.
Anda dapat menjalankan SmartMuv dengan perintah berikut pada contoh kontrak pintar yang disediakan:
python3 -m try_smartmuv
Pilih kontrak pintar dari daftar yang disediakan, dan SmartMuv akan menganalisis dan mengekstraksi keadaan lengkapnya.
1 0xc9ae11a393a08e86d46ce683fde7699db01a5f15 AUX1769
2 0x51bb7917efcad03ec8b1d37251a06cd56b0c4a72 DSRCoin
3 0x24dd6e1fe742bd8fd3a1d144fece1680f16296aa OBK
4 0x143e685dd51d467d77663a3be119217185d81b99 CommunityBankCoin
5 0x145f9bbd9f1ca0923e81e05c2ac04fda2310d774 VACCToken
Select contract no from above to run SmartMuv ->
Untuk menjalankan SmartMuv tentang Soliditas Kontrak Cerdas pilihan Anda, tambahkan detail kontrak dalam file smartmuv.py dan jalankan:
python3 -m smartmuv
Catatan: Tambahkan kode sumber proyek Anda ke jalur 'Contract_Directory' yang ditentukan dalam file config.ini . File kode harus berisi semua kode tanpa pernyataan 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;
[Nama, Jenis, Nilai, Ukuran (Bytes), Nomor Slot]
['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
Analisis slot kontrak pintar , untuk mendapatkan tata letak penyimpanan lengkap dari kontrak pintar.
Audit Penyimpanan Kontrak Cerdas.
Kontrak Cerdas Lengkap Pengindeksan Data Internal Untuk Platform Blockchain Explorer .
Ekstraksi status (snapshot) dari data kontrak pintar.
Redeployment/upgrade kontrak pintar bersama dengan data yang ada.
Migrasi kontrak pintar bersama dengan data kontrak yaitu migrasi L1 ke L2 atau L2 ke L2.
Dalam hal pertanyaan apa pun, Anda dapat mengirim email kepada kami di [email protected]