diff --git a/kakarot_scripts/constants.py b/kakarot_scripts/constants.py index c2a65152e..79195b300 100644 --- a/kakarot_scripts/constants.py +++ b/kakarot_scripts/constants.py @@ -223,7 +223,7 @@ class ChainId(IntEnum): ETH_TOKEN_ADDRESS = 0x49D36570D4E46F48E99674BD3FCC84644DDD6B96F7C741B1562B82F9E004DC7 COINBASE = int( os.getenv("KAKAROT_COINBASE_RECIPIENT") - or "0x20eB005C0b9c906691F885eca5895338E15c36De", + or "0x20eB005C0b9c906691F885eca5895338E15c36De", # Defaults to faucet on appchain sepolia 16, ) CAIRO_ZERO_DIR = Path("src") diff --git a/kakarot_scripts/deploy_kakarot.py b/kakarot_scripts/deploy_kakarot.py index 3ebffeb45..d87b9060e 100644 --- a/kakarot_scripts/deploy_kakarot.py +++ b/kakarot_scripts/deploy_kakarot.py @@ -26,7 +26,7 @@ ) from kakarot_scripts.utils.kakarot import dump_deployments as dump_evm_deployments from kakarot_scripts.utils.kakarot import get_deployments as get_evm_deployments -from kakarot_scripts.utils.starknet import declare +from kakarot_scripts.utils.starknet import call, declare from kakarot_scripts.utils.starknet import deploy as deploy_starknet from kakarot_scripts.utils.starknet import ( dump_declarations, @@ -63,9 +63,14 @@ async def main(): class_hash["account_contract"], # account_contract_class_hash_ class_hash["uninitialized_account"], # uninitialized_account_class_hash_ class_hash["Cairo1Helpers"], - COINBASE, BLOCK_GAS_LIMIT, ) + await invoke( + "EVM", + "set_coinbase", + COINBASE, + address=starknet_deployments["EVM"]["address"], + ) starknet_deployments["Counter"] = await deploy_starknet("Counter") starknet_deployments["MockPragmaOracle"] = await deploy_starknet( "MockPragmaOracle" @@ -105,7 +110,6 @@ async def main(): class_hash["account_contract"], # account_contract_class_hash_ class_hash["uninitialized_account"], # uninitialized_account_class_hash_ class_hash["Cairo1Helpers"], - COINBASE, BLOCK_GAS_LIMIT, ) await invoke( @@ -149,6 +153,12 @@ async def main(): ) await invoke("kakarot", "set_coinbase", int(bridge.address, 16)) + coinbase = (await call("kakarot", "get_coinbase")).coinbase + if coinbase == 0: + logger.error("❌ Coinbase is set to 0, all transaction fees will be lost") + else: + logger.info(f"✅ Coinbase set to: 0x{coinbase:040x}") + weth = await deploy_evm("WETH", "WETH9") evm_deployments["WETH"] = { "address": int(weth.address, 16), diff --git a/src/kakarot/kakarot.cairo b/src/kakarot/kakarot.cairo index ddcc71c1b..07a8558a5 100644 --- a/src/kakarot/kakarot.cairo +++ b/src/kakarot/kakarot.cairo @@ -78,7 +78,6 @@ func constructor{syscall_ptr: felt*, pedersen_ptr: HashBuiltin*, range_check_ptr account_contract_class_hash: felt, uninitialized_account_class_hash: felt, cairo1_helpers_class_hash: felt, - coinbase: felt, block_gas_limit: felt, ) { return Kakarot.constructor( @@ -87,7 +86,6 @@ func constructor{syscall_ptr: felt*, pedersen_ptr: HashBuiltin*, range_check_ptr account_contract_class_hash, uninitialized_account_class_hash, cairo1_helpers_class_hash, - coinbase, block_gas_limit, ); } diff --git a/src/kakarot/library.cairo b/src/kakarot/library.cairo index 5a4af623d..4b48922eb 100644 --- a/src/kakarot/library.cairo +++ b/src/kakarot/library.cairo @@ -43,14 +43,12 @@ namespace Kakarot { // @param account_contract_class_hash The clash hash of the contract account. // @param uninitialized_account_class_hash The class hash of the uninitialized account used for deterministic address calculation. // @param cairo1_helpers_class_hash The precompiles class hash for precompiles not implemented in Kakarot. - // @param coinbase The EOA whose key is owned by the deployer (or known to be owned by Coinbase) func constructor{syscall_ptr: felt*, pedersen_ptr: HashBuiltin*, range_check_ptr}( owner: felt, native_token_address, account_contract_class_hash, uninitialized_account_class_hash, cairo1_helpers_class_hash, - coinbase, block_gas_limit, ) { Ownable.initializer(owner); @@ -58,7 +56,6 @@ namespace Kakarot { Kakarot_account_contract_class_hash.write(account_contract_class_hash); Kakarot_uninitialized_account_class_hash.write(uninitialized_account_class_hash); Kakarot_cairo1_helpers_class_hash.write(cairo1_helpers_class_hash); - Kakarot_coinbase.write(coinbase); Kakarot_block_gas_limit.write(block_gas_limit); return (); } diff --git a/tests/fixtures/EVM.cairo b/tests/fixtures/EVM.cairo index 63576efa9..169db874e 100644 --- a/tests/fixtures/EVM.cairo +++ b/tests/fixtures/EVM.cairo @@ -33,6 +33,7 @@ from kakarot.kakarot import ( get_account_contract_class_hash, get_cairo1_helpers_class_hash, get_native_token, + set_coinbase, ) from backend.starknet import Starknet, Internals as StarknetInternals from utils.dict import dict_keys, dict_values diff --git a/tests/utils/constants.py b/tests/utils/constants.py index 55a0ab7b3..fcf8c4bf5 100644 --- a/tests/utils/constants.py +++ b/tests/utils/constants.py @@ -19,11 +19,6 @@ # Account balance is the amount of funds that the account has after being deployed ACCOUNT_BALANCE = PRE_FUND_AMOUNT -# Coinbase address is the address of the sequencer -MOCK_COINBASE_ADDRESS = ( - 0x388CA486B82E20CC81965D056B4CDCAACDFFE0CF08E20ED8BA10EA97A487004 -) - # STACK STACK_MAX_DEPTH = 1024