SmartMuvは、Python 3のSmart Contract Analysis and Data抽出ツールです。SmartMuvは、Smart契約の完全な状態/データを抽出し、ユーザーがEVM互換ブロックチェーンのデータとともにSMARTコントラクトをアップグレードまたは移行できるようにすることができます。 SMARTMUVは、SMARTコントラクト状態追跡またはSMART契約データ(IE Holdersリストまたはマッピング、配列などのデータ型のエントリリスト)に特定のブロック番号まで使用することもできます。
Solidityはマッピング変数のキーを追跡しないため、SmartMuvは静的時間ソースコード分析手法を使用して、マッピング変数で重要な近似分析を実行します。スマートコントラクトの完全なレイアウトを分析し、通常の変数だけでなく、複雑な変数(つまりマッピングと多次元配列)およびユーザー定義変数も抽出できます。
git clone https://github.com/WaizKhan7/SmartMuv.git
次のコマンドで必要なすべてのパッケージをインストールできます。
python3 setup.py install
次のコマンドを使用して、必要なすべてのSolidityコンパイラをインストールできます。
python3 install_compilers.py
SMARTMUVは、状態抽出にEVM互換ブロックチェーンRPC URLを使用し、Smart Contractトランザクションを取得するために、エクスプロラーAPIs ETHERSCAN、POLYGONSCAN、BSCSCANなどをブロックします。 RPCおよびブロックエクスプローラーのAPIキーとURLは、適切に動作するためにツールをconfig.iniファイルに追加する必要があります。
SmartMuvを実行すると、SmartCrontionの例で次のコマンドを実行できます。
python3 -m try_smartmuv
提供されたリストからSmart Contractを選択すると、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ファイルで指定された「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]までメールでお問い合わせください