diff --git a/eth_defi/lagoon/deployment.py b/eth_defi/lagoon/deployment.py index 5d0bec01..dd61e4bd 100644 --- a/eth_defi/lagoon/deployment.py +++ b/eth_defi/lagoon/deployment.py @@ -12,6 +12,7 @@ """ import logging import os +import time from dataclasses import dataclass, asdict from io import StringIO from pathlib import Path @@ -30,6 +31,7 @@ from eth_defi.lagoon.beacon_proxy import deploy_beacon_proxy from eth_defi.lagoon.vault import LagoonVault from eth_defi.middleware import construct_sign_and_send_raw_middleware_anvil +from eth_defi.provider.anvil import is_anvil from eth_defi.safe.deployment import deploy_safe, add_new_safe_owners from eth_defi.token import get_wrapped_native_token_address, fetch_erc20_details from eth_defi.trace import assert_transaction_success_with_explanation @@ -414,6 +416,7 @@ def deploy_automated_lagoon_vault( any_asset: bool = False, etherscan_api_key: str = None, use_forge=False, + between_contracts_delay_seconds=10.0, ) -> LagoonAutomatedDeployment: """Deploy a full Lagoon setup with a guard. @@ -446,6 +449,10 @@ def deploy_automated_lagoon_vault( parameters.safe = safe.address + if not is_anvil(web3): + logger.info("Between contracts deployment delay: Sleeping %s for new nonce to propagade", between_contracts_delay_seconds) + time.sleep(between_contracts_delay_seconds) + vault_contract = deploy_lagoon( web3=web3, deployer=deployer, @@ -457,6 +464,10 @@ def deploy_automated_lagoon_vault( use_forge=use_forge, ) + if not is_anvil(web3): + logger.info("Between contracts deployment delay: Sleeping %s for new nonce to propagade", between_contracts_delay_seconds) + time.sleep(between_contracts_delay_seconds) + module = deploy_safe_trading_strategy_module( web3=web3, deployer=deployer, diff --git a/eth_defi/middleware.py b/eth_defi/middleware.py index 9d35091c..ab4d0129 100644 --- a/eth_defi/middleware.py +++ b/eth_defi/middleware.py @@ -228,6 +228,12 @@ def is_retryable_http_exception( if message in retryable_rpc_error_messages: return True + for string_check in retryable_rpc_error_messages: + if string_check in message: + # Some RPCs add their own crap to the error messages, so exact error + # message matching does not seem to work + return True + return False if isinstance(exc, ProbablyNodeHasNoBlock): diff --git a/eth_defi/safe/deployment.py b/eth_defi/safe/deployment.py index c5056c32..23fe9970 100644 --- a/eth_defi/safe/deployment.py +++ b/eth_defi/safe/deployment.py @@ -69,6 +69,8 @@ def deploy_safe( # Check that we can read back Safe data retrieved_owners = safe.retrieve_owners() assert retrieved_owners == owners + + logger.info("Safe deployed at %s", safe.address) return safe