Exemplo n.º 1
0
def test_ethereum_contracts():
    """Test that all ethereum contract entries have legal data"""
    for _, entry in EthereumConstants().contracts.items():
        assert len(entry) == 3
        assert is_checksum_address(entry['address'])
        assert entry['deployed_block'] > 0
        assert isinstance(entry['abi'], list)
Exemplo n.º 2
0
    def __init__(
        self,
        ethereum_manager: 'EthereumManager',
        database: 'DBHandler',
        premium: Optional[Premium],
        msg_aggregator: MessagesAggregator,
    ) -> None:
        self.ethereum = ethereum_manager
        self.database = database
        self.premium = premium
        self.msg_aggregator = msg_aggregator
        self.session = requests.session()
        self.session.headers.update({'User-Agent': 'rotkehlchen'})
        self.staking_pool = EthereumConstants().contract('ADEX_STAKING_POOL')

        try:
            self.graph = Graph(
                'https://api.thegraph.com/subgraphs/name/adexnetwork/adex-protocol-v2',
            )
        except RemoteError as e:
            self.msg_aggregator.add_error(
                SUBGRAPH_REMOTE_ERROR_MSG.format(error_msg=str(e)))
            raise ModuleInitializationFailure('subgraph remote error') from e
Exemplo n.º 3
0
from rotkehlchen.premium.premium import Premium
from rotkehlchen.typing import ChecksumEthAddress, Timestamp
from rotkehlchen.user_messages import MessagesAggregator
from rotkehlchen.utils.interfaces import EthereumModule
from rotkehlchen.utils.misc import hexstr_to_int

if TYPE_CHECKING:
    from rotkehlchen.chain.ethereum.manager import EthereumManager

ADDRESS_TO_ASSETS = Dict[ChecksumEthAddress, Dict[Asset, Balance]]
BLOCKS_PER_DAY = 4 * 60 * 24
DAYS_PER_YEAR = 365
ETH_MANTISSA = 10**18
A_COMP = EthereumToken('COMP')

COMPTROLLER_PROXY = EthereumConstants().contract('COMPTROLLER_PROXY')
COMP_DEPLOYED_BLOCK = 9601359

LEND_EVENTS_QUERY_PREFIX = """{graph_event_name}
(where: {{blockTime_lte: $end_ts, blockTime_gte: $start_ts, {addr_position}: $address}}) {{
    id
    amount
    to
    from
    blockNumber
    blockTime
    cTokenSymbol
    underlyingAmount
}}}}"""

BORROW_EVENTS_QUERY_PREFIX = """{graph_event_name}
Exemplo n.º 4
0
from rotkehlchen.constants.assets import A_ETH
from rotkehlchen.constants.ethereum import EthereumConstants
from rotkehlchen.db.eth2 import ETH2_DEPOSITS_PREFIX, DBEth2
from rotkehlchen.fval import FVal
from rotkehlchen.history.price import query_usd_price_zero_if_error
from rotkehlchen.inquirer import Inquirer
from rotkehlchen.typing import ChecksumEthAddress, Timestamp
from rotkehlchen.user_messages import MessagesAggregator
from rotkehlchen.utils.misc import from_gwei, ts_now

if TYPE_CHECKING:
    from rotkehlchen.chain.ethereum.manager import EthereumManager
    from rotkehlchen.db.dbhandler import DBHandler
    from rotkehlchen.externalapis.beaconchain import BeaconChain

ETH2_DEPOSIT = EthereumConstants().contract('ETH2_DEPOSIT')
ETH2_DEPLOYED_TS = Timestamp(1602667372)
EVENT_ABI = [x for x in ETH2_DEPOSIT.abi if x['type'] == 'event'][0]

REQUEST_DELTA_TS = 60 * 60  # 1


def _get_eth2_staking_deposits_onchain(
        ethereum: 'EthereumManager',
        addresses: List[ChecksumEthAddress],
        msg_aggregator: MessagesAggregator,
        from_ts: Timestamp,
        to_ts: Timestamp,
) -> List[Eth2Deposit]:
    events = ETH2_DEPOSIT.get_logs(
        ethereum=ethereum,
Exemplo n.º 5
0
    YEARN_USDC_VAULT,
    YEARN_USDT_VAULT,
    YEARN_WETH_VAULT,
    YEARN_YCRV_VAULT,
    YEARN_YFI_VAULT,
    EthereumConstants,
    EthereumContract,
)
from rotkehlchen.constants.misc import ONE
from rotkehlchen.fval import FVal
from rotkehlchen.typing import Price

if TYPE_CHECKING:
    from rotkehlchen.chain.ethereum.manager import EthereumManager

CURVEFI_YSWAP = EthereumConstants().contract('CURVEFI_YSWAP')
CURVEFI_PAXSWAP = EthereumConstants().contract('CURVEFI_PAXSWAP')
CURVEFI_BUSDSWAP = EthereumConstants().contract('CURVEFI_BUSDSWAP')
CURVEFI_RENSWAP = EthereumConstants().contract('CURVEFI_RENSWAP')
CURVEFI_SRENSWAP = EthereumConstants().contract('CURVEFI_SRENSWAP')
CURVEFI_SUSDV2SWAP = EthereumConstants().contract('CURVEFI_SUSDV2SWAP')
CURVEFI_3POOLSWAP = EthereumConstants().contract('CURVEFI_3POOLSWAP')
CURVEFI_A3CRVSWAP = EthereumConstants().contract('CURVEFI_A3CRVSWAP')
CURVEFI_GUSDC3CRVSWAP = EthereumConstants().contract('CURVEFI_GUSDC3CRVSWAP')

HARVEST_VAULTS = (
    A_FARM_USDC,
    A_FARM_USDT,
    A_FARM_DAI,
    A_FARM_WETH,
    A_FARM_TUSD,
Exemplo n.º 6
0
def test_ethereum_abi():
    """Test that the ethereum abi entries have legal data"""
    for _, entry in EthereumConstants().abi_entries.items():
        assert isinstance(entry, list)
Exemplo n.º 7
0
    YEARN_USDC_VAULT,
    YEARN_USDT_VAULT,
    YEARN_WETH_VAULT,
    YEARN_YCRV_VAULT,
    YEARN_YFI_VAULT,
    EthereumConstants,
    EthereumContract,
)
from rotkehlchen.constants.misc import ONE
from rotkehlchen.fval import FVal
from rotkehlchen.typing import Price

if TYPE_CHECKING:
    from rotkehlchen.chain.ethereum.manager import EthereumManager

CURVEFI_YSWAP = EthereumConstants().contract('CURVEFI_YSWAP')
CURVEFI_PAXSWAP = EthereumConstants().contract('CURVEFI_PAXSWAP')
CURVEFI_BUSDSWAP = EthereumConstants().contract('CURVEFI_BUSDSWAP')
CURVEFI_RENSWAP = EthereumConstants().contract('CURVEFI_RENSWAP')
CURVEFI_SRENSWAP = EthereumConstants().contract('CURVEFI_SRENSWAP')
CURVEFI_SUSDV2SWAP = EthereumConstants().contract('CURVEFI_SUSDV2SWAP')
CURVEFI_3POOLSWAP = EthereumConstants().contract('CURVEFI_3POOLSWAP')
CURVEFI_GUSDC3CRVSWAP = EthereumConstants().contract('CURVEFI_GUSDC3CRVSWAP')
YEARN_CONTROLLER = EthereumConstants().contract('YEARN_CONTROLLER')

HARVEST_VAULTS = ('fUSDC', 'fUSDT', 'fDAI', 'fWETH', 'fTUSD', 'fWBTC',
                  'frenBTC', 'fcrvRenWBTC')


def _handle_yearn_curve_vault(
    ethereum: 'EthereumManager',
Exemplo n.º 8
0
from typing import TYPE_CHECKING, Optional

from rotkehlchen.constants.ethereum import EthereumConstants, EthereumContract
from rotkehlchen.fval import FVal
from rotkehlchen.typing import Price

if TYPE_CHECKING:
    from rotkehlchen.chain.ethereum.manager import EthereumManager

YEARN_YCRV_VAULT = EthereumConstants().contract('YEARN_YCRV_VAULT')
CURVEFI_YSWAP = EthereumConstants().contract('CURVEFI_YSWAP')
CURVEFI_PAXSWAP = EthereumConstants().contract('CURVEFI_PAXSWAP')
YEARN_DAI_VAULT = EthereumConstants().contract('YEARN_DAI_VAULT')
YEARN_WETH_VAULT = EthereumConstants().contract('YEARN_WETH_VAULT')
YEARN_YFI_VAULT = EthereumConstants().contract('YEARN_YFI_VAULT')
YEARN_ALINK_VAULT = EthereumConstants().contract('YEARN_ALINK_VAULT')
YEARN_USDT_VAULT = EthereumConstants().contract('YEARN_USDT_VAULT')
YEARN_USDC_VAULT = EthereumConstants().contract('YEARN_USDC_VAULT')
YEARN_TUSD_VAULT = EthereumConstants().contract('YEARN_TUSD_VAULT')
CURVEFI_BUSDSWAP = EthereumConstants().contract('CURVEFI_BUSDSWAP')
YEARN_BCURVE_VAULT = EthereumConstants().contract('YEARN_BCURVE_VAULT')
CURVEFI_RENSWAP = EthereumConstants().contract('CURVEFI_RENSWAP')
CURVEFI_SRENSWAP = EthereumConstants().contract('CURVEFI_SRENSWAP')
YEARN_SRENCURVE_VAULT = EthereumConstants().contract('YEARN_SRENCURVE_VAULT')
CURVEFI_SUSDV2SWAP = EthereumConstants().contract('CURVEFI_SUSDV2SWAP')
YEARN_CONTROLLER = EthereumConstants().contract('YEARN_CONTROLLER')


def _handle_yearn_curve_vault(
    ethereum: 'EthereumManager',
    curve_contract: EthereumContract,
Exemplo n.º 9
0
)
from rotkehlchen.typing import BalanceType, ChecksumEthAddress, Timestamp
from rotkehlchen.user_messages import MessagesAggregator
from rotkehlchen.utils.interfaces import EthereumModule
from rotkehlchen.utils.misc import hex_or_bytes_to_int

if TYPE_CHECKING:
    from rotkehlchen.chain.ethereum.manager import EthereumManager

ADDRESS_TO_ASSETS = Dict[ChecksumEthAddress, Dict[Asset, Balance]]
BLOCKS_PER_DAY = 4 * 60 * 24
DAYS_PER_YEAR = 365
ETH_MANTISSA = 10**18
A_COMP = EthereumToken('COMP')

COMPTROLLER_PROXY = EthereumConstants().contract('COMPTROLLER_PROXY')
COMPTROLLER_ABI = EthereumConstants.abi('COMPTROLLER_IMPLEMENTATION')
COMP_DEPLOYED_BLOCK = 9601359


LEND_EVENTS_QUERY_PREFIX = """{graph_event_name}
(where: {{blockTime_lte: $end_ts, blockTime_gte: $start_ts, {addr_position}: $address}}) {{
    id
    amount
    to
    from
    blockNumber
    blockTime
    cTokenSymbol
    underlyingAmount
}}}}"""