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)
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
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}
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,
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,
def test_ethereum_abi(): """Test that the ethereum abi entries have legal data""" for _, entry in EthereumConstants().abi_entries.items(): assert isinstance(entry, list)
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',
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,
) 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 }}}}"""