SmartMUV est un outil d'instruction et d'extraction de données intelligents dans Python 3. SmartMUV peut extraire l'état / les données complet du contrat intelligent et permet aux utilisateurs de mettre à niveau ou de migrer leurs contrats intelligents ainsi que les données sur toute blockchain compatible EVM. SmartMUV peut également être utilisé pour le suivi de l'état de contrat intelligent ou la récupération des données de contrat intelligentes (listes des détenteurs de Smart ou Liste des entrées de tout type de données comme le mappage, les tableaux, etc.) jusqu'à un numéro de bloc spécifique.
Comme la solidité ne garde pas une trace des clés des variables de cartographie, SmartMUV utilise des techniques statiques d'analyse de code source de temps pour effectuer une analyse d'approximation clé sur les variables de cartographie. Il analyse la disposition complète d'un contrat intelligent et peut extraire non seulement des variables régulières mais également des variables complexes (cage de cartographies et des tableaux multidimensionnels) et des variables définies par l'utilisateur.
git clone https://github.com/WaizKhan7/SmartMuv.git
Vous pouvez installer tous les packages requis avec la commande suivante:
python3 setup.py install
Vous pouvez installer tous les compilateurs de solidité requis avec la commande suivante:
python3 install_compilers.py
SmartMUV utilise URL RPC Blockchain compatible EVM pour l'extraction d'état et bloque APIs d'explorateur IE Etherscan, Polygonscan, BSCSCAN, etc., pour obtenir des transactions de contrat intelligentes. Les clés et les URL de l'API pour RPC et les explorateurs de blocs doivent être ajoutées au fichier config.ini pour que l'outil fonctionne correctement.
Vous pouvez exécuter SmartMUV avec la commande suivante sur l'exemple fourni des contrats intelligents:
python3 -m try_smartmuv
Sélectionnez le contrat intelligent dans la liste fournie, et SmartMUV analysera et extraire son état complet.
1 0xc9ae11a393a08e86d46ce683fde7699db01a5f15 AUX1769
2 0x51bb7917efcad03ec8b1d37251a06cd56b0c4a72 DSRCoin
3 0x24dd6e1fe742bd8fd3a1d144fece1680f16296aa OBK
4 0x143e685dd51d467d77663a3be119217185d81b99 CommunityBankCoin
5 0x145f9bbd9f1ca0923e81e05c2ac04fda2310d774 VACCToken
Select contract no from above to run SmartMuv ->
Pour exécuter SmartMuv sur Solidity Smart Contrat de votre choix, ajoutez les détails du contrat dans le fichier smartmuv.py et exécutez:
python3 -m smartmuv
Remarque: Ajoutez le code source de votre projet au chemin «contracte_directory» spécifié dans le fichier config.ini . Le fichier de code doit contenir tout le code sans aucune instruction 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;
[Nom, type, valeur, taille (octets), numéro de fente]
['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
Analyse des emplacements d'un contrat intelligent , pour obtenir une disposition de stockage complète d'un contrat intelligent.
Audit de stockage des contrats intelligents.
Contrat intelligent Complete Indexation des données internes pour les plates-formes d'explorateur de blockchain .
Extraction d'état (instantané) des données de contrat intelligentes.
Redéploiement / mise à niveau des contrats intelligents ainsi que leurs données existantes.
Migration des contrats intelligents ainsi que des données de contrat, c'est-à-dire L1 vers L2 ou L2 vers les migrations L2.
En cas de question, vous pouvez nous envoyer un e-mail à [email protected]