- Python 3.9+ instalado;
- Mythril instalado, pode ser feito com o comando
pip install mythril
OBS: Mythril só tem suporte para sistemas baseados em Linux
O processo de automação das configurações da ferramenta de testes de Smart Contracts chamada Mythril se torna necessário a partir do momento em que os contratos recebem uma grande quantidade de imports, mas também quando precisa-se testar contratos em massa.
O script python myth2json.py automatiza esse processo inteiro de configurações de imports dos contratos em um arquivo temporário, e após utiliza o comando myth analyze -o json --max-depth 25 --solc-json import_assets.json
para análise em si do contrato, retornando o tempo da execução no terminal e um arquivo json com a análise do contrato no padrão NomeDoArquivo_analyzed.json. A profundidade de hashes testados imposta --max-depth 25
é padrão como 22 mas pode ser alterada com essa definição, que pode ser alterada no código dependendo da necessidade. A definição -o json
serve para retornar a análise no formato json, que por padrão é apenas um texto no terminal. A configuração --solc-json import_assets.json
serve para apontar o arquivo import_assets.json (que é o arquivo temporário criado pelo script) como os remapeamentos de imports para a análise do contrato.
Para a utilização do script, basta pô-lo no diretório onde encontram-se os contratos a serem analisados e abrí-lo com o comando python3 myth2json.py
(Linux). Após a inicialização, haverá uma entrada a ser feita com o nome do contrato (sem incluir a extensão .sol) a se analisar, pode ser utilizada a entrada 0 para que se analise todos os contratos do diretório onde o script se encontra.
A DECIDIR: interface gráfica do script, facilitando ainda mais o processo de testes
- Quando um contrato importado por outro usa uma versão diferente de solidity do contrato principal, mythril não completa a análise, retornando um erro no output da análise.
- /contracts/GameVarAndFee.sol: Erro com a versão do authority/Owned.sol, todos os contratos usam solidity 0.5.5 e Owned usa 0.5.0. Alterando a sua versão não muda o resultado.
- /contracts/CronJob.sol: Mesmo erro de versão do authority/Owned.sol
- /contracts/DSNote.sol: Nenhum erro foi detectado. Checar DSNote_analyzed.json no repositório.
- /contracts/authority/Owned.sol: Falha identificada - Exception State: an assertion violation was triggered. Checar Owned_analyzed.json no repositorio.
- /contracts/ethie/EthieToken.sol: Falha identificada - Integer Arithmetic Bugs: é possível de se causar overflow ou underflow de números inteiros a partir de operadores aritméticos. Checar EthieToken_analyzed.json no repositório.
- /contracts/