bytecode_analyzer.cpython-311.pyc•2.51 kB
�
�2�g� � �H � d dl mZmZmZ d dlmZ d dlZ G d� d� � ZdS )� )�Dict�List�Optional)�Web3Nc �N � e Zd Zdefd�Zdefd�Zdedee fd�Zdefd�Z dS )�BytecodeAnalyzer�bytecodec �: � || _ t � � | _ dS )z3Initialize the bytecode analyzer with raw bytecode.N)r r �w3)�selfr s �=/Users/arjun/repos/sparkmango/mpc_server/bytecode_analyzer.py�__init__zBytecodeAnalyzer.__init__ s � � ��
��&�&����� �returnc � � | j � d� � r| j dd� n| j }dg g t |� � | � |� � d�}|S )z<Analyze the bytecode and return a structured representation.�0x� N�Unknown)�
contract_name�methods�storage_variables�bytecode_length�opcodes)r �
startswith�len�_get_opcodes)r r �analysiss r
�analyzezBytecodeAnalyzer.analyze sh � � )-�
�(@�(@��(F�(F�Y�4�=����$�$�D�M�� '��!#�"�8�}�}��(�(��2�2�
�
�� �r c � � g }d}|t |� � k ro|||dz � }|sn_| j � t � |� � � � }|� |� � |dz
}|t |� � k �o|S )zConvert bytecode to opcodes.r r )r r �to_hex�bytes�fromhex�append)r r r �i�byte�opcodes r
r zBytecodeAnalyzer._get_opcodes! s� � ���
���#�h�-�-����A�a��c�E�?�D��
�� �W�^�^�E�M�M�$�$7�$7�8�8�F��N�N�6�"�"�"�
��F�A� �#�h�-�-��� �r c � � g | j d�S )z0Generate a basic ABI from the bytecode analysis.)�abir )r )r s r
�generate_abizBytecodeAnalyzer.generate_abi4 s � � ��
�
�
�
r N)
�__name__�
__module__�__qualname__�strr r r r r r) � r r
r r s� � � � � � ��� � � � �
�� � � � �,�S� �T�#�Y� � � � �&
�d�
�
�
�
�
�
r r )�typingr r r �web3r �jsonr r. r r
�<module>r2 sp �� '� '� '� '� '� '� '� '� '� '� � � � � � � ����5
� 5
� 5
� 5
� 5
� 5
� 5
� 5
� 5
� 5
r