SmartMuv是Python 3中的Smart合同分析和数据提取工具。SmartMuv可以提取智能合约的完整状态/数据,并使用户能够升级或迁移其智能合约以及跨任何EVM兼容区块链的数据。 SmartMuv还可以用于智能合约状态跟踪或检索智能合约数据(例如持有者列表或任何数据类型的条目,例如映射,数组等),直到特定的块号为止。
由于坚固性无法跟踪映射变量的键,因此SmartMuv使用静态时间源代码分析技术在映射变量上执行密钥近似分析。它分析了智能合约的完整布局,不仅可以提取常规变量,还可以提取复杂的变量(即映射和多维阵列)和用户定义的变量。
git clone https://github.com/WaizKhan7/SmartMuv.git
您可以使用以下命令安装所有必需的软件包:
python3 setup.py install
您可以使用以下命令安装所有必需的坚固编译器:
python3 install_compilers.py
SmartMuv使用与EVM兼容的区块链RPC URL进行状态提取,并且Block Explorer APIs IE Etherscan,Polygonscan,BSCSCAN等来获取智能合同交易。 RPC和Block Explorer的API键和URL必须添加到config.ini文件中,以使工具正常工作。
您可以在提供的示例智能合约上使用以下命令运行SmartMuv:
python3 -m try_smartmuv
从提供的列表中选择智能合约,SmartMuv将分析和提取其完整状态。
1 0xc9ae11a393a08e86d46ce683fde7699db01a5f15 AUX1769
2 0x51bb7917efcad03ec8b1d37251a06cd56b0c4a72 DSRCoin
3 0x24dd6e1fe742bd8fd3a1d144fece1680f16296aa OBK
4 0x143e685dd51d467d77663a3be119217185d81b99 CommunityBankCoin
5 0x145f9bbd9f1ca0923e81e05c2ac04fda2310d774 VACCToken
Select contract no from above to run SmartMuv ->
要运行SmartMuv您选择的SOLIDITY SMART合同,请在smartmuv.py文件中添加合同详细信息并运行:
python3 -m smartmuv
注意:将项目的源代码添加到config.ini文件中指定的“ Contract_Directory”路径。代码文件应包含所有代码,而无需任何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;
[名称,类型,值,大小(字节),插槽号]
['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
智能合约的插槽分析,以获取智能合约的完整存储布局。
智能合约存储审核。
智能合约完成区块链资源管理器平台的内部数据索引。
智能合约数据的状态提取(快照) 。
重新部署/升级智能合约及其现有数据。
智能合约以及合同数据的迁移,即L1到L2或L2迁移到L2迁移。
如果有任何查询,您可以通过[email protected]给我们发送电子邮件