SmartMuv es una herramienta de análisis de contrato Smart y extracción de datos en Python 3. SmartMuv puede extraer el estado/datos completos del contrato inteligente y permite a los usuarios actualizar o migrar sus contratos inteligentes junto con los datos en cualquier cadena de bloques compatible con EVM. SmartMuv también se puede utilizar para el seguimiento del estado de contrato inteligente o la recuperación de datos de contrato Smart (es decir, lista de titulares o lista de entradas de cualquier tipo de datos como mapeo, matrices, etc.) hasta un número de bloque específico.
Como la solidez no realiza un seguimiento de las claves de las variables de mapeo, SmartMuv utiliza técnicas de análisis de código fuente de tiempo estático para realizar un análisis de aproximación clave en las variables de mapeo. Analiza el diseño completo de un contrato inteligente y puede extraer no solo variables regulares sino también variables complejas (IE mapeos y matrices multidimensionales) y variables definidas por el usuario.
git clone https://github.com/WaizKhan7/SmartMuv.git
Puede instalar todos los paquetes requeridos con el siguiente comando:
python3 setup.py install
Puede instalar todos los compiladores de solidez requeridos con el siguiente comando:
python3 install_compilers.py
SmartMUV utiliza URL RPC de blockchain compatible con EVM para la extracción de estado, y APIs de explorador de bloques, es decir, Esterscan, Polygonscan, BSCScan, etc., para obtener transacciones contractuales inteligentes. Las teclas API y las URL para RPC y exploradores de bloques se deben agregar al archivo config.ini para que la herramienta funcione correctamente.
Puede ejecutar SmartMuv con el siguiente comando en el ejemplo proporcionado Smart Contracts:
python3 -m try_smartmuv
Seleccione el contrato inteligente de la lista proporcionada, y SmartMuv analizará y extraerá su estado completo.
1 0xc9ae11a393a08e86d46ce683fde7699db01a5f15 AUX1769
2 0x51bb7917efcad03ec8b1d37251a06cd56b0c4a72 DSRCoin
3 0x24dd6e1fe742bd8fd3a1d144fece1680f16296aa OBK
4 0x143e685dd51d467d77663a3be119217185d81b99 CommunityBankCoin
5 0x145f9bbd9f1ca0923e81e05c2ac04fda2310d774 VACCToken
Select contract no from above to run SmartMuv ->
Para ejecutar SmartMuv en Solity Smart Contract de su elección, agregue los detalles del contrato en el archivo smartmuv.py y ejecute:
python3 -m smartmuv
Nota: Agregue el código fuente de su proyecto a la ruta 'Contract_Directory' especificada en el archivo config.ini . El archivo de código debe contener todo el código sin ninguna declaración 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;
[Nombre, tipo, valor, tamaño (bytes), número de ranura]
['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
Análisis de ranura de un contrato inteligente , para obtener un diseño de almacenamiento completo de un contrato inteligente.
Auditoría de almacenamiento de contrato inteligente.
Smart Contract Complete Indexing Intervone Data Indexing para plataformas de explorador de blockchain .
Extracción de estado (instantánea) de datos de contrato inteligente.
Redoblado/actualización de contratos inteligentes junto con sus datos existentes.
Migración de contratos inteligentes junto con los datos del contrato, es decir, L1 a L2 o L2 a L2 migraciones.
En caso de cualquier consulta, puede enviarnos un correo electrónico a [email protected]