From eb9648fbcdefbc0367f90e9cb713bfbba27f0875 Mon Sep 17 00:00:00 2001 From: Thomas Marchand Date: Mon, 8 Jan 2024 15:12:34 +0000 Subject: [PATCH] feat: update deployment scripts to support sepolia --- scripts/deploy.py | 25 +++++++++++------ scripts/utils/constants.py | 56 ++++++-------------------------------- scripts/utils/starknet.py | 15 ++++------ 3 files changed, 31 insertions(+), 65 deletions(-) diff --git a/scripts/deploy.py b/scripts/deploy.py index 1ea5945..796b9d2 100644 --- a/scripts/deploy.py +++ b/scripts/deploy.py @@ -17,14 +17,23 @@ logger.setLevel(logging.INFO) load_dotenv() -NETWORK = os.getenv("STARKNET_NETWORK", "devnet") +NETWORK = os.getenv("STARKNET_NETWORK") + # https://api.starknet.id/uri?id= -MAINNET_CONST = [0x68747470733A2F2F6170692E737461726B6E65742E69642F7572693F69643D] -# https://goerli.api.starknet.id/uri?id=" -GOERLI_CONST = [ - 0x68747470733A2F2F676F65726C692E6170692E737461726B6E65742E69642F, - 0x7572693F69643D, -] +if NETWORK == "mainnet": + CONST = [0x68747470733A2F2F6170692E737461726B6E65742E69642F7572693F69643D] +# https://goerli.api.starknet.id/uri?id= +elif NETWORK == "goerli": + CONST = [ + 0x68747470733A2F2F676F65726C692E6170692E737461726B6E65742E69642F, + 0x7572693F69643D, + ] +# https://sepolia.api.starknet.id/uri?id= +elif NETWORK == "sepolia": + CONST = [ + 184555836509371486645449132961545395972629558923458913947591422899062204772, + 3419765288418763837, + ] # %% Main @@ -43,7 +52,7 @@ async def main(): deployments["naming_Identity"] = await deploy_v2( "naming_Identity", account.address, - (MAINNET_CONST if NETWORK == "mainnet" else GOERLI_CONST), + CONST, ) identity_addr = deployments["naming_Identity"]["address"] diff --git a/scripts/utils/constants.py b/scripts/utils/constants.py index 4da64e6..df14c72 100644 --- a/scripts/utils/constants.py +++ b/scripts/utils/constants.py @@ -5,62 +5,22 @@ from dotenv import load_dotenv from starknet_py.net.full_node_client import FullNodeClient from starknet_py.net.models.chains import StarknetChainId +from starknet_py.common import int_from_bytes logging.basicConfig() logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) load_dotenv() -NETWORKS = { - "mainnet": { - "name": "mainnet", - "explorer_url": "https://voyager.online", - "feeder_gateway_url": "https://alpha-mainnet.starknet.io/feeder_gateway", - "gateway_url": "https://alpha-mainnet.starknet.io/gateway", - }, - "testnet": { - "name": "testnet", - "explorer_url": "https://goerli.voyager.online", - "feeder_gateway_url": "https://alpha4.starknet.io/feeder_gateway", - "gateway_url": "https://alpha4.starknet.io/gateway", - }, - "devnet": { - "name": "devnet", - "explorer_url": "", - "rpc_url": "http://127.0.0.1:5050/rpc", - "feeder_gateway_url": "http://localhost:5050/feeder_gateway", - "gateway_url": "http://localhost:5050/gateway", - }, -} - -VARS = NETWORKS[os.getenv("STARKNET_NETWORK", "devnet")] -VARS["account_address"] = os.environ.get(f"{VARS['name'].upper()}_ACCOUNT_ADDRESS") -if VARS["account_address"] is None: - logger.warning( - f"⚠️ {VARS['name'].upper()}_ACCOUNT_ADDRESS not set, defaulting to ACCOUNT_ADDRESS" - ) - VARS["account_address"] = os.getenv("ACCOUNT_ADDRESS") -VARS["private_key"] = os.environ.get(f"{VARS['name'].upper()}_PRIVATE_KEY") -if VARS["private_key"] is None: - logger.warning( - f"⚠️ {VARS['name'].upper()}_PRIVATE_KEY not set, defaulting to PRIVATE_KEY" - ) - VARS["private_key"] = os.getenv("PRIVATE_KEY") -if VARS["name"] == "mainnet": - VARS["rpc_url"] = os.getenv("MAINNET_RPC_URL") - VARS["chain_id"] = StarknetChainId.MAINNET -elif VARS["name"] == "testnet2": - VARS["rpc_url"] = os.getenv("TESTNET2_RPC_URL") - VARS["chain_id"] = StarknetChainId.TESTNET2 -elif VARS["name"] != "devnet": - VARS["rpc_url"] = os.getenv("TESTNET_RPC_URL") - VARS["chain_id"] = StarknetChainId.TESTNET - FULL_NODE_CLIENT = FullNodeClient( - node_url=VARS["rpc_url"], - net=VARS["feeder_gateway_url"], + node_url=os.getenv("RPC_URL"), + net=os.getenv("STARKNET_NETWORK"), ) +ACCOUNT_ADDRESS = os.getenv("ACCOUNT_ADDRESS") +PRIVATE_KEY = os.getenv("PRIVATE_KEY") +CHAIN_ID = int_from_bytes(os.getenv("CHAIN_ID").encode("utf-8")) + ETH_TOKEN_ADDRESS = 0x49D36570D4E46F48E99674BD3FCC84644DDD6B96F7C741B1562B82F9E004DC7 ETH_CLASS_HASH = 0x6A22BF63C7BC07EFFA39A25DFBD21523D211DB0100A0AFD054D172B81840EAF SOURCE_DIR = Path("src") @@ -68,7 +28,7 @@ BUILD_DIR = Path("target/release") BUILD_DIR.mkdir(exist_ok=True, parents=True) -DEPLOYMENTS_DIR = Path("deployments") / VARS["name"] +DEPLOYMENTS_DIR = Path("deployments") / os.getenv("STARKNET_NETWORK") DEPLOYMENTS_DIR.mkdir(exist_ok=True, parents=True) COMPILED_CONTRACTS = [ diff --git a/scripts/utils/starknet.py b/scripts/utils/starknet.py index 7b02e71..16624eb 100644 --- a/scripts/utils/starknet.py +++ b/scripts/utils/starknet.py @@ -23,9 +23,11 @@ # CONTRACTS, DEPLOYMENTS_DIR, ETH_TOKEN_ADDRESS, - VARS, FULL_NODE_CLIENT, # SOURCE_DIR, + ACCOUNT_ADDRESS, + PRIVATE_KEY, + CHAIN_ID ) logging.basicConfig() @@ -44,13 +46,13 @@ async def get_starknet_account( address=None, private_key=None, ) -> Account: - address = address or VARS["account_address"] + address = address or ACCOUNT_ADDRESS if address is None: raise ValueError( "address was not given in arg nor in env variable, see README.md#Deploy" ) address = int(address, 16) - private_key = private_key or VARS["private_key"] + private_key = private_key or PRIVATE_KEY if private_key is None: raise ValueError( "private_key was not given in arg nor in env variable, see README.md#Deploy" @@ -60,7 +62,7 @@ async def get_starknet_account( return Account( address=address, client=FULL_NODE_CLIENT, - chain=VARS["chain_id"], + chain=CHAIN_ID, key_pair=key_pair, ) @@ -124,11 +126,6 @@ def get_artifact(contract_name): def get_alias(contract_name): return snakecase(contract_name) - -def get_tx_url(tx_hash: int) -> str: - return f"{VARS['explorer_url']}/tx/0x{tx_hash:064x}" - - def get_sierra_artifact(contract_name): return BUILD_DIR / f"{contract_name}.contract_class.json"