Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions deploy/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ volumes:
services:
oracle:
container_name: oracle
image: europe-west4-docker.pkg.dev/stakewiselabs/public/oracle:v2.0.0
image: europe-west4-docker.pkg.dev/stakewiselabs/public/oracle:v2.0.1
restart: always
entrypoint: ["python"]
command: ["oracle/oracle/main.py"]
Expand All @@ -30,7 +30,7 @@ services:

keeper:
container_name: keeper
image: europe-west4-docker.pkg.dev/stakewiselabs/public/oracle:v2.0.0
image: europe-west4-docker.pkg.dev/stakewiselabs/public/oracle:v2.0.1
restart: always
entrypoint: ["python"]
command: ["oracle/keeper/main.py"]
Expand Down
1 change: 1 addition & 0 deletions oracle/common/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
REWARD_VOTE_FILENAME = "reward-vote.json"
DISTRIBUTOR_VOTE_FILENAME = "distributor-vote.json"
VALIDATOR_VOTE_FILENAME = "validator-vote.json"
TEST_VOTE_FILENAME = "test-vote.json"

# supported networks
MAINNET = "mainnet"
Expand Down
9 changes: 6 additions & 3 deletions oracle/oracle/clients.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,27 +24,30 @@
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
)

# set default timeout to 5 minutes
DEFAULT_TIMEOUT = 5 * 60


@backoff.on_exception(backoff.expo, Exception, max_time=300)
async def execute_sw_gql_query(query: DocumentNode, variables: Dict) -> Dict:
"""Executes GraphQL query."""
transport = AIOHTTPTransport(url=STAKEWISE_SUBGRAPH_URL)
transport = AIOHTTPTransport(url=STAKEWISE_SUBGRAPH_URL, timeout=DEFAULT_TIMEOUT)
async with Client(transport=transport) as session:
return await session.execute(query, variable_values=variables)


@backoff.on_exception(backoff.expo, Exception, max_time=300)
async def execute_uniswap_v3_gql_query(query: DocumentNode, variables: Dict) -> Dict:
"""Executes GraphQL query."""
transport = AIOHTTPTransport(url=UNISWAP_V3_SUBGRAPH_URL)
transport = AIOHTTPTransport(url=UNISWAP_V3_SUBGRAPH_URL, timeout=DEFAULT_TIMEOUT)
async with Client(transport=transport) as session:
return await session.execute(query, variable_values=variables)


@backoff.on_exception(backoff.expo, Exception, max_time=300)
async def execute_ethereum_gql_query(query: DocumentNode, variables: Dict) -> Dict:
"""Executes GraphQL query."""
transport = AIOHTTPTransport(url=ETHEREUM_SUBGRAPH_URL)
transport = AIOHTTPTransport(url=ETHEREUM_SUBGRAPH_URL, timeout=DEFAULT_TIMEOUT)
async with Client(transport=transport) as session:
return await session.execute(query, variable_values=variables)

Expand Down
23 changes: 11 additions & 12 deletions oracle/oracle/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,27 +5,22 @@
from typing import Any

import aiohttp
from decouple import UndefinedValueError
from eth_account import Account
from eth_account.signers.local import LocalAccount

from oracle.common.health_server import create_health_server_runner, start_health_server
from oracle.common.settings import ENABLE_HEALTH_SERVER, LOG_LEVEL
from oracle.common.settings import ENABLE_HEALTH_SERVER, LOG_LEVEL, TEST_VOTE_FILENAME
from oracle.oracle.distributor.controller import DistributorController
from oracle.oracle.eth1 import (
check_oracle_account,
get_finalized_block,
get_voting_parameters,
submit_vote,
)
from oracle.oracle.health_server import oracle_routes
from oracle.oracle.rewards.controller import RewardsController
from oracle.oracle.rewards.eth2 import get_finality_checkpoints, get_genesis
from oracle.oracle.settings import (
AWS_ACCESS_KEY_ID,
AWS_SECRET_ACCESS_KEY,
ORACLE_PRIVATE_KEY,
ORACLE_PROCESS_INTERVAL,
)
from oracle.oracle.settings import ORACLE_PRIVATE_KEY, ORACLE_PROCESS_INTERVAL
from oracle.oracle.validators.controller import ValidatorsController

logging.basicConfig(
Expand Down Expand Up @@ -60,10 +55,14 @@ def exit_gracefully(self, signum: int, frame: Any) -> None:
async def main() -> None:
oracle: LocalAccount = Account.from_key(ORACLE_PRIVATE_KEY)

if not (AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY):
raise UndefinedValueError(
"AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY env variables must be specified"
)
# try submitting test vote
# noinspection PyTypeChecker
submit_vote(
oracle=oracle,
encoded_data=b"test data",
vote={"name": "test vote"},
name=TEST_VOTE_FILENAME,
)

# check stakewise graphql connection
await get_finalized_block()
Expand Down