O SmartMuv é uma ferramenta de análise de contrato inteligente e extração de dados no Python 3. O SmartMuv pode extrair o estado/dados completos do contrato inteligente e permitir que os usuários atualizem ou migrassem seus contratos inteligentes junto com os dados em qualquer blockchain compatível com EVM. O SmartMuv também pode ser usado para rastreamento de estado de contrato inteligente ou recuperação de dados de contratos inteligentes (lista de titulares ou entradas ou lista de qualquer tipo de dados, como mapeamento, matrizes etc.) até um número de bloco específico.
Como a solidez não acompanha as chaves das variáveis de mapeamento, o SmartMuv usa técnicas de análise de código -fonte do tempo estático para realizar a análise de aproximação importante nas variáveis de mapeamento. Ele analisa o layout completo de um contrato inteligente e pode extrair não apenas variáveis regulares, mas também variáveis complexas (isto é, mapeamentos e matrizes multidimensionais) e variáveis definidas pelo usuário.
git clone https://github.com/WaizKhan7/SmartMuv.git
Você pode instalar todos os pacotes necessários com o seguinte comando:
python3 setup.py install
Você pode instalar todos os compiladores de solidez necessários com o seguinte comando:
python3 install_compilers.py
O SmartMuv usa URL RPC de blockchain compatível com EVM para extração de estado e Block Explorer APIs IE Etherscan, Polygonscan, BscScan, etc., para obter transações de contrato inteligentes. As teclas e URLs da API para RPC e Block Explorers devem ser adicionados ao arquivo config.ini para que a ferramenta funcione corretamente.
Você pode executar o SmartMuv com o seguinte comando no exemplo fornecido contratos inteligentes:
python3 -m try_smartmuv
Selecione o contrato inteligente na lista fornecida e o SmartMuv analisará e extrairá seu 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 executar o SmartMuv on Solidity Smart Contrato de sua escolha, adicione os detalhes do contrato no arquivo smartmuv.py e execute:
python3 -m smartmuv
NOTA: Adicione o código fonte do seu projeto ao caminho 'contrat_directory' especificado no arquivo config.ini . O arquivo de código deve conter todo o código sem nenhuma instrução 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;
[Nome, tipo, valor, tamanho (bytes), número do 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
Análise de slot de um contrato inteligente , para obter um layout de armazenamento completo de um contrato inteligente.
Auditoria de armazenamento de contrato inteligente.
Contrato inteligente Indexação de dados internos completa para plataformas de explorador de blockchain .
Extração do estado (instantâneo) de dados de contrato inteligente.
Reimplementação/atualização de contratos inteligentes junto com seus dados existentes.
Migração de contratos inteligentes , juntamente com os dados do contrato, IE L1 para Migrações L2 ou L2 para L2.
Em caso de consulta, você pode enviar um e -mail para [email protected]