�
R\�h�$ � �| � d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ ej e
� � Z G d� d� � ZdS )� N)�Web3)�Account)�TransactionNotFoundc �l � e Zd ZdZd� Zd� Zd� Zdd�Zdd
�Zd� Z d� Z
d
� Zd� Zd� Z
dd�Zd� Zd� Zd� ZdS )�
PolygonClientzPolygon blockchain clientc �. � t j dd� � | _ t t j | j � � � � | _ | j � � � st � d� � d S t � d� � d S )N�POLYGON_RPC_URLzhttps://polygon-rpc.comz$Failed to connect to Polygon networkzConnected to Polygon network)
�os�getenv�rpc_urlr �HTTPProvider�w3�is_connected�logger�error�info)�selfs �,/home/runner/workspace/blockchain/polygon.py�__init__zPolygonClient.__init__
s} � ��y�!2�4M�N�N����t�(���6�6�7�7��� �w�#�#�%�%� 8��L�L�?�@�@�@�@�@��K�K�6�7�7�7�7�7� c � � | j j � |� � }| j � |d� � }t |� � S # t
$ r8}t � d|� dt |� � � �� � Y d}~dS d}~ww xY w)zGet MATIC balance for address�etherzFailed to get balance for z: N�0)r �eth�get_balance�from_wei�str� Exceptionr r )r �address�balance_wei�
balance_matic�es r r zPolygonClient.get_balance s� � � ��'�+�1�1�'�:�:�K� �G�,�,�[�'�B�B�M��}�%�%�%��� � � ��L�L�I�g�I�I��Q���I�I�J�J�J��3�3�3�3�3����� ���s �AA �
B
�-B�B
c �� � dddd�gdddd�gdd �dg d
ddd�gdd �g}| j j � ||�
� � }|j � |� � � � � }|j � � � � � � }|d|z z }t |� � S # t $ r5}t �
dt |� � � �� � Y d}~dS d}~ww xY w)z"Get ERC20 token balance on PolygonT�_ownerr ��name�type� balanceOf�balance�uint256�function)�constant�inputsr&