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]給我們發送電子郵件