SmartMuv는 Python 3의 스마트 계약 분석 및 데이터 추출 도구입니다. SmartMuv는 스마트 계약의 전체 상태/데이터를 추출 할 수 있으며 사용자는 모든 EVM 호환 블록 체인에서 데이터와 함께 스마트 계약을 업그레이드하거나 마이그레이션 할 수 있습니다. SmartMuv는 스마트 계약 상태 추적 또는 스마트 계약 데이터 (즉, 홀더 목록 또는 매핑, 배열 등과 같은 데이터 유형의 항목 목록)에 사용될 수 있습니다.
Solidity는 매핑 변수의 키를 추적하지 않기 때문에 SmartMuv는 정적 시간 소스 코드 분석 기술을 사용하여 매핑 변수에 대한 주요 근사 분석을 수행합니다. 스마트 계약의 전체 레이아웃을 분석하고 일반 변수뿐만 아니라 복잡한 변수 (예 : 매핑 및 다차원 배열) 및 사용자 정의 변수도 추출 할 수 있습니다.
git clone https://github.com/WaizKhan7/SmartMuv.git
다음 명령으로 필요한 모든 패키지를 설치할 수 있습니다.
python3 setup.py install
다음 명령으로 필요한 모든 Solidity 컴파일러를 설치할 수 있습니다.
python3 install_compilers.py
SmartMuv는 상태 추출을 위해 EVM 호환 블록 체인 RPC URL을 사용하고 블록 탐색기 APIs IE Etherscan, Polygonscan, BSCSCAN 등을 사용하여 스마트 계약 거래를 얻습니다. RPC 및 블록 탐색기의 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 ->
선택한 Solidity Smart Contract에서 SmartMuv를 실행하려면 smartmuv.py 파일에 계약 세부 정보를 추가하고 실행하십시오.
python3 -m smartmuv
참고 : 프로젝트의 소스 코드를 config.ini 파일에 지정된 'contement_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
스마트 계약의 슬롯 분석 , 스마트 계약의 완전한 스토리지 레이아웃을 얻으려면.
스마트 계약 저장 감사 .
스마트 계약 블록 체인 탐색기 플랫폼에 대한 완전한 내부 데이터 인덱싱 .
스마트 계약 데이터의 상태 추출 (스냅 샷) .
기존 데이터와 함께 스마트 계약의 재배치/업그레이드 .
계약 데이터와 함께 스마트 계약의 마이그레이션 IE L1 ~ L2 또는 L2 ~ L2 마이그레이션.
쿼리의 경우 [email protected]로 이메일을 보내주십시오.