Exemple #1
0
    def __init__(self,
                 provider=empty,
                 middlewares=None,
                 modules=None,
                 ens=empty):
        if modules is None:
            modules = {
                'hls': (Hls, ),
                'eth': (Hls, ),
                'personal': (Personal, ),
                "net": (Net, ),
                "admin": (Admin, ),
            }
        else:
            modules['hls'] = (Hls, )
            modules['eth'] = (Eth, )
            modules['personal'] = (Personal, )
            modules['net'] = (Net, )
            modules['admin'] = (Admin, )

        if middlewares is None:
            middlewares = [
                (name_to_address_middleware(self), 'name_to_address'),
                (attrdict_middleware, 'attrdict'),
                (pythonic_middleware, 'pythonic'),
                (abi_middleware, 'abi'),
            ]

        super().__init__(provider=provider,
                         middlewares=middlewares,
                         modules=modules,
                         ens=ens)
Exemple #2
0
def new_default_middlewares(self, web3):
    return [
        (request_parameter_normalizer, 'request_param_normalizer'),
        (gas_price_strategy_middleware, 'gas_price_strategy'),
        (name_to_address_middleware(web3), 'name_to_address'),
        (attrdict_middleware, 'attrdict'),
        (pythonic_middleware, 'pythonic'),
        (normalize_errors_middleware, 'normalize_errors'),
        (validation_middleware, 'validation'),
        (abi_middleware, 'abi'),
    ]
Exemple #3
0
 def default_middlewares(web3):
     '''
     List the default middlewares for the request manager.
     Leaving ens unspecified will prevent the middleware from resolving names.
     '''
     return [
         (name_to_address_middleware(web3), 'name_to_address'),
         (attrdict_middleware, 'attrdict'),
         (pythonic_middleware, 'pythonic'),
         (abi_middleware, 'abi'),
     ]
Exemple #4
0
 def default_middlewares(web3):
     '''
     List the default middlewares for the request manager.
     Leaving ens unspecified will prevent the middleware from resolving names.
     '''
     return [
         (gas_price_strategy_middleware, 'gas_price_strategy'),
         (name_to_address_middleware(web3), 'name_to_address'),
         (attrdict_middleware, 'attrdict'),
         (pythonic_middleware, 'pythonic'),
         (abi_middleware, 'abi'),
     ]
Exemple #5
0
 def default_middlewares(web3):
     '''
     List the default middlewares for the request manager.
     Leaving ens unspecified will prevent the middleware from resolving names.
     '''
     return [
         (gas_price_strategy_middleware, 'gas_price_strategy'),
         (name_to_address_middleware(web3), 'name_to_address'),
         (attrdict_middleware, 'attrdict'),
         (pythonic_middleware, 'pythonic'),
         (normalize_errors_middleware, 'normalize_errors'),
         (validation_middleware, 'validation'),
         (abi_middleware, 'abi'),
     ]
Exemple #6
0
 def default_middlewares(web3: 'Web3') -> List[Tuple[Middleware, str]]:
     """
     List the default middlewares for the request manager.
     Leaving ens unspecified will prevent the middleware from resolving names.
     """
     return [
         (request_parameter_normalizer,
          'request_param_normalizer'),  # Delete
         (gas_price_strategy_middleware, 'gas_price_strategy'),
         (name_to_address_middleware(web3), 'name_to_address'),  # Add Async
         (attrdict_middleware, 'attrdict'),  # Delete
         (pythonic_middleware, 'pythonic'),  # Delete
         (validation_middleware, 'validation'),
         (abi_middleware, 'abi'),  # Delete
         (buffered_gas_estimate_middleware, 'gas_estimate'),
     ]
Exemple #7
0
 def default_middlewares(web3):
     """
     List the default middlewares for the request manager.
     Leaving ens unspecified will prevent the middleware from resolving names.
     """
     return [
         (request_parameter_normalizer,
          'request_param_normalizer'),  # Delete
         (gas_price_strategy_middleware, 'gas_price_strategy'),  # Add Async
         (name_to_address_middleware(web3), 'name_to_address'),  # Add Async
         (attrdict_middleware, 'attrdict'),  # Delete
         (pythonic_middleware, 'pythonic'),  # Delete
         (normalize_errors_middleware, 'normalize_errors'),  # Add async
         (validation_middleware, 'validation'),  # Add async
         (abi_middleware, 'abi'),  # Delete
     ]
def w3():
    w3 = Web3(providers=[BaseProvider()], middlewares=[])
    w3.ens = TempENS({NAME: ADDRESS})
    w3.middleware_stack.add(name_to_address_middleware(w3))
    return w3
def w3():
    w3 = Web3(provider=BaseProvider(), middlewares=[])
    w3.ens = TempENS({NAME: ADDRESS})
    w3.middleware_onion.add(name_to_address_middleware(w3))
    return w3
Exemple #10
0
import sys
import json
from dataclasses import dataclass
from web3.auto import w3
from web3.middleware import name_to_address_middleware
from web3.contract import Contract

SWAP_ADDRESS = '0xe5FdBab9Ad428bBB469Dee4CB6608C0a8895CbA5'
TOKEN_ADDRESS = '0xDBe281E17540Da5305Eb2AeFB8CeF70E6dB1A0A9'
ABI = json.load(open('curve.abi'))

w3.middleware_onion.add(name_to_address_middleware(w3))

swap = w3.eth.contract(SWAP_ADDRESS, abi=ABI['swap']).caller()
token = w3.eth.contract(TOKEN_ADDRESS, abi=ABI['erc20']).caller()


@dataclass
class Coin:
    coin: Contract
    underlying: Contract
    decimals: int
    reserve: float

    @classmethod
    def from_index(cls, i):
        coin = w3.eth.contract(swap.coins(i), abi=ABI['cerc20']).caller()
        underlying = w3.eth.contract(swap.underlying_coins(i), abi=ABI['erc20']).caller()
        decimals = underlying.decimals()
        reserve = swap.balances(i) / 1e18 * coin.exchangeRateCurrent() / 10 ** decimals
        return cls(coin=coin, underlying=underlying, decimals=decimals, reserve=reserve)