gnosis.eth.oracles package
Subpackages
Submodules
gnosis.eth.oracles.oracles module
- class gnosis.eth.oracles.oracles.AaveOracle(ethereum_client: EthereumClient, price_oracle: PriceOracle)
Bases:
PriceOracle
- get_price(token_address: str) float
- class gnosis.eth.oracles.oracles.BalancerOracle(ethereum_client: EthereumClient, price_oracle: PriceOracle)
Bases:
PricePoolOracle
Oracle for Balancer. More info on https://balancer.exchange
- get_pool_token_price(pool_token_address: ChecksumAddress) float
Estimate balancer pool token price based on its components
- Parameters
pool_token_address – Balancer pool token address
- Returns
Eth price for pool token
- Raises
CannotGetPriceFromOracle
- exception gnosis.eth.oracles.oracles.CannotGetPriceFromOracle
Bases:
OracleException
- class gnosis.eth.oracles.oracles.ComposedPriceOracle
Bases:
ABC
- abstract get_underlying_tokens(*args) List[Tuple[UnderlyingToken]]
- class gnosis.eth.oracles.oracles.CreamOracle(ethereum_client: EthereumClient, price_oracle: PriceOracle)
Bases:
PriceOracle
- get_price(token_address: str) float
- class gnosis.eth.oracles.oracles.CurveOracle(ethereum_client: EthereumClient, zerion_adapter_address: Optional[str] = None)
Bases:
ZerionComposedOracle
Curve pool Oracle. More info on https://curve.fi/
- ZERION_ADAPTER_ADDRESS = '0x99b0bEadc3984eab9842AF81f9fad0C2219108cc'
- get_underlying_tokens(token_address: ChecksumAddress) List[UnderlyingToken]
Check if passed token address is a Curve gauge deposit token, if it’s a gauge we replace the address with the corresponding LP token address More info on https://resources.curve.fi/base-features/understanding-gauges
- class gnosis.eth.oracles.oracles.EnzymeOracle(ethereum_client: EthereumClient, zerion_adapter_address: Optional[str] = None)
Bases:
ZerionComposedOracle
Enzyme pool Oracle. More info on https://enzyme.finance/
- ZERION_ADAPTER_ADDRESS = '0x9e71455D748C23566b19493D09435574097C7D67'
- exception gnosis.eth.oracles.oracles.InvalidPriceFromOracle
Bases:
OracleException
- class gnosis.eth.oracles.oracles.KyberOracle(ethereum_client: EthereumClient, kyber_network_proxy_address: Optional[str] = None)
Bases:
PriceOracle
- ADDRESSES = {<EthereumNetwork.MAINNET: 1>: '0x9AAb3f75489902f3a48495025729a0AF77d4b11e', <EthereumNetwork.RINKEBY: 4>: '0x0d5371e5EE23dec7DF251A8957279629aa79E9C5', <EthereumNetwork.ROPSTEN: 3>: '0xd719c34261e099Fdb33030ac8909d5788D3039C4', <EthereumNetwork.KOVAN: 42>: '0xc153eeAD19e0DBbDb3462Dcc2B703cC6D738A37c'}
- ETH_TOKEN_ADDRESS = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE'
- get_price(token_address_1: str, token_address_2: str = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE') float
- property kyber_network_proxy_address
- property kyber_network_proxy_contract
- class gnosis.eth.oracles.oracles.MooniswapOracle(ethereum_client: EthereumClient, price_oracle: PriceOracle)
Bases:
BalancerOracle
- get_pool_token_price(pool_token_address: ChecksumAddress) float
Estimate balancer pool token price based on its components
- Parameters
pool_token_address – Moniswap pool token address
- Returns
Eth price for pool token
- Raises
CannotGetPriceFromOracle
- exception gnosis.eth.oracles.oracles.OracleException
Bases:
Exception
- class gnosis.eth.oracles.oracles.PoolTogetherOracle(ethereum_client: EthereumClient, zerion_adapter_address: Optional[str] = None)
Bases:
ZerionComposedOracle
PoolTogether pool Oracle. More info on https://pooltogether.com/
- ZERION_ADAPTER_ADDRESS = '0xb4E0E1672fFd9b128784dB9f3BE9158fac3f1DFc'
- class gnosis.eth.oracles.oracles.PricePoolOracle
Bases:
ABC
- abstract get_pool_token_price(pool_token_address: ChecksumAddress) float
- class gnosis.eth.oracles.oracles.SushiswapOracle(ethereum_client: EthereumClient, router_address: Optional[str] = None)
Bases:
UniswapV2Oracle
- pair_init_code = HexBytes('0xe18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303')
- router_address: str = '0xd9e1cE17f2641f24aE83637ab66a2cca9C378B9F'
- class gnosis.eth.oracles.oracles.UnderlyingToken(address: <function NewType.<locals>.new_type at 0x7fe1df3cab80>, quantity: int)
Bases:
object
- address: ChecksumAddress
- quantity: int
- class gnosis.eth.oracles.oracles.UniswapOracle(ethereum_client: EthereumClient, uniswap_factory_address: Optional[str] = None)
Bases:
PriceOracle
- ADDRESSES = {<EthereumNetwork.MAINNET: 1>: '0xc0a47dFe034B400B47bDaD5FecDa2621de6c4d95', <EthereumNetwork.RINKEBY: 4>: '0xf5D915570BC477f9B8D6C0E980aA81757A3AaC36', <EthereumNetwork.ROPSTEN: 3>: '0x9c83dCE8CA20E9aAF9D3efc003b2ea62aBC08351', <EthereumNetwork.KOVAN: 42>: '0xD3E51Ef092B2845f10401a0159B2B96e8B6c3D30', <EthereumNetwork.GOERLI: 5>: '0x6Ce570d02D73d4c384b46135E87f8C592A8c86dA'}
- get_price(token_address: str) float
- get_uniswap_exchange(token_address: str) str
- property uniswap_factory
- property uniswap_factory_address
- class gnosis.eth.oracles.oracles.UniswapV2Oracle(ethereum_client: EthereumClient, router_address: Optional[str] = None)
Bases:
PricePoolOracle
,PriceOracle
- calculate_pair_address(token_address: str, token_address_2: str)
Calculate pair address without querying blockchain. https://uniswap.org/docs/v2/smart-contract-integration/getting-pair-addresses/#docs-header
- Parameters
token_address –
token_address_2 –
- Returns
Checksummed address for token pair. It could be not created yet
- property factory
- property factory_address: str
- Returns
Uniswap factory checksummed address
- Raises
BadFunctionCallOutput: If router contract is not deployed
- get_decimals(token_address: str, token_address_2: str) Tuple[int, int]
- get_pair_address(token_address: str, token_address_2: str) Optional[str]
Get uniswap pair address. token_address and token_address_2 are interchangeable. https://uniswap.org/docs/v2/smart-contracts/factory/
- Parameters
token_address –
token_address_2 –
- Returns
Address of the pair for token_address and token_address_2, if it has been created, else None.
- get_pool_token_price(pool_token_address: ChecksumAddress) float
Estimate pool token price based on its components
- Parameters
pool_token_address –
- Returns
Pool token eth price per unit (total pool token supply / 1e18)
- Raises
CannotGetPriceFromOracle
- get_price(token_address: str, token_address_2: Optional[str] = None) float
- get_price_without_exception(token_address: str, token_address_2: Optional[str] = None) float
- Parameters
token_address –
token_address_2 –
- Returns
Call get_price, return 0. instead on an exception if there’s any issue
- get_reserves(pair_address: str) Tuple[int, int]
Returns the Also returns the block.timestamp (mod 2**32) of the last block during which an interaction occured for the pair. https://uniswap.org/docs/v2/smart-contracts/pair/ :return: Reserves of token_address and token_address_2 used to price trades and distribute liquidity.
- pair_init_code = HexBytes('0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f')
- router_address: str = '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D'
- property weth_address: str
- Returns
Wrapped ether checksummed address
- Raises
BadFunctionCallOutput: If router contract is not deployed
- class gnosis.eth.oracles.oracles.UsdPricePoolOracle
Bases:
ABC
- abstract get_pool_usd_token_price(pool_token_address: ChecksumAddress) float
- class gnosis.eth.oracles.oracles.YearnOracle(ethereum_client: EthereumClient, yearn_vault_token_adapter: Optional[str] = '0xb460FcC1B6c1CBD7D03F47B6BD5F03994d286c75', iearn_token_adapter: Optional[str] = '0x65B23774daE2a5be02dD275918DDF048d177a5B4')
Bases:
ComposedPriceOracle
Yearn oracle. More info on https://docs.yearn.finance
- get_underlying_tokens(token_address: ChecksumAddress) List[Tuple[float, ChecksumAddress]]
- Parameters
token_address –
- Returns
Price per share and underlying token
- Raises
CannotGetPriceFromOracle
- class gnosis.eth.oracles.oracles.ZerionComposedOracle(ethereum_client: EthereumClient, zerion_adapter_address: Optional[str] = None)
Bases:
ComposedPriceOracle
- ZERION_ADAPTER_ADDRESS = None
- get_underlying_tokens(token_address: ChecksumAddress) List[UnderlyingToken]
Use Zerion Token adapter to return underlying components for pool
- Parameters
token_address – Pool token address
- Returns
Price per share and underlying token
- Raises
CannotGetPriceFromOracle
- property zerion_adapter_contract: Optional[Contract]