From ce6aa444713d2862988d847a3555ec11e2c67b5f Mon Sep 17 00:00:00 2001 From: Eugenio Paluello Date: Fri, 13 Sep 2024 09:49:51 +0200 Subject: [PATCH] feat: get contracts from sepolia --- .env.example | 2 ++ kakarot_scripts/withdraw_accounts.py | 25 +++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index e8d0a980a..6dee0ba49 100644 --- a/.env.example +++ b/.env.example @@ -49,3 +49,5 @@ PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python WEB3_HTTP_PROVIDER_URI="http://0.0.0.0:3030" HYPOTHESIS_PROFILE=dev + +VOYAGER_API_KEY= diff --git a/kakarot_scripts/withdraw_accounts.py b/kakarot_scripts/withdraw_accounts.py index 2af57488d..12a5ae9f7 100644 --- a/kakarot_scripts/withdraw_accounts.py +++ b/kakarot_scripts/withdraw_accounts.py @@ -1,7 +1,10 @@ # %% Imports import logging +import os from asyncio import run +import requests + from kakarot_scripts.constants import ETH_TOKEN_ADDRESS, NETWORK, RPC_CLIENT from kakarot_scripts.utils.starknet import get_balance, get_declarations, invoke @@ -10,12 +13,30 @@ logger.setLevel(logging.INFO) +# %% Fetch contract events +def get_contracts(): + url = f"https://sepolia-api.voyager.online/beta/events?ps=10&p=1&contract={os.getenv('KAKAROT_SEPOLIA_ACCOUNT_ADDRESS')}" + headers = { + "accept": "application/json", + "x-api-key": os.getenv("VOYAGER_API_KEY"), + } + response = requests.get(url, headers=headers) + return [ + { + "evm_address": "0x" + raw[2:22].hex(), + "starknet_address": "0x" + raw[23:].hex(), + } + for raw in ( + bytes(contract["data"]["data"]) for contract in response.json()["items"] + ) + ] + + # %% Main async def main(): # %% Withdraw all accounts - # TODO: List of {evm_address, starknet_address} dict to be retrieved from parsing Kakarot contract events - contracts = [] + contracts = get_contracts() balance_prev = await get_balance(NETWORK["account_address"]) logger.info(f"ℹ️ Current deployer balance {balance_prev / 1e18} ETH")