diff --git a/spartan/scripts/deploy_network.sh b/spartan/scripts/deploy_network.sh index ad40060dee94..f94f71d7dfed 100755 --- a/spartan/scripts/deploy_network.sh +++ b/spartan/scripts/deploy_network.sh @@ -17,6 +17,18 @@ k8s_denoise() { "${SCRIPT_DIR}/k8s_enriched_denoise" "${NAMESPACE}" "$1" } +tf_str() { + local value="${1:-}" + local default_value="${2:-null}" + if [[ -n "$value" ]]; then + value="${value//\\/\\\\}" # escape backslashes first + value="${value//\"/\\\"}" # then escape double quotes + echo "\"${value}\"" + else + echo "$default_value" + fi +} + # We want to separate out these logs. export DENOISE=1 ######################## @@ -97,6 +109,7 @@ SEQ_MIN_TX_PER_BLOCK=${SEQ_MIN_TX_PER_BLOCK:-0} SEQ_MAX_TX_PER_BLOCK=${SEQ_MAX_TX_PER_BLOCK:-8} SEQ_BLOCK_DURATION_MS=${SEQ_BLOCK_DURATION_MS:-} SEQ_BUILD_CHECKPOINT_IF_EMPTY=${SEQ_BUILD_CHECKPOINT_IF_EMPTY:-} +SEQ_ENFORCE_TIME_TABLE=${SEQ_ENFORCE_TIME_TABLE:-} SEQ_SKIP_CHECKPOINT_PUBLISH_PERCENT=${SEQ_SKIP_CHECKPOINT_PUBLISH_PERCENT:-0} PROVER_REPLICAS=${PROVER_REPLICAS:-4} PROVER_AGENTS_PER_PROVER=${PROVER_AGENTS_PER_PROVER:-1} @@ -357,13 +370,6 @@ ROLLUP_CONTRACTS_START=$(date +%s) DEPLOY_ROLLUP_CONTRACTS_DIR="${SCRIPT_DIR}/../terraform/deploy-rollup-contracts" "${SCRIPT_DIR}/override_terraform_backend.sh" "${DEPLOY_ROLLUP_CONTRACTS_DIR}" "${CLUSTER}" "${BASE_STATE_PATH}/deploy-rollup-contracts" -# Handle NETWORK variable - needs quotes for string values, null for unset -if [[ -n "${NETWORK:-}" ]]; then - NETWORK_TF="\"${NETWORK}\"" -else - NETWORK_TF=null -fi - # Handle ETHERSCAN_API_KEY - only set when deploying or redeploying contracts if [[ "${VERIFY_CONTRACTS:-}" == "true" && ("${CREATE_ROLLUP_CONTRACTS}" == "true" || "${REDEPLOY_ROLLUP_CONTRACTS}" == "true") ]]; then ETHERSCAN_API_KEY_TF="\"${ETHERSCAN_API_KEY:-}\"" @@ -409,7 +415,7 @@ AZTEC_MANA_TARGET = ${AZTEC_MANA_TARGET:-null} AZTEC_PROVING_COST_PER_MANA = ${AZTEC_PROVING_COST_PER_MANA:-null} AZTEC_EXIT_DELAY_SECONDS = ${AZTEC_EXIT_DELAY_SECONDS:-null} ETHERSCAN_API_KEY = ${ETHERSCAN_API_KEY_TF} -NETWORK = ${NETWORK_TF} +NETWORK = $(tf_str "${NETWORK:-}") JOB_NAME = "deploy-rollup-contracts" JOB_BACKOFF_LIMIT = 3 JOB_TTL_SECONDS_AFTER_FINISHED = 3600 @@ -508,6 +514,7 @@ SEQ_MIN_TX_PER_BLOCK = ${SEQ_MIN_TX_PER_BLOCK} SEQ_MAX_TX_PER_BLOCK = ${SEQ_MAX_TX_PER_BLOCK} SEQ_BLOCK_DURATION_MS = ${SEQ_BLOCK_DURATION_MS:-null} SEQ_BUILD_CHECKPOINT_IF_EMPTY = ${SEQ_BUILD_CHECKPOINT_IF_EMPTY:-null} +SEQ_ENFORCE_TIME_TABLE = ${SEQ_ENFORCE_TIME_TABLE:-null} SEQ_SKIP_CHECKPOINT_PUBLISH_PERCENT = ${SEQ_SKIP_CHECKPOINT_PUBLISH_PERCENT} PROVER_MNEMONIC = "${LABS_INFRA_MNEMONIC}" PROVER_PUBLISHER_MNEMONIC_START_INDEX = ${PROVER_PUBLISHER_MNEMONIC_START_INDEX} @@ -531,7 +538,7 @@ OTEL_COLLECTOR_ENDPOINT = "${OTEL_COLLECTOR_ENDPOINT}" DEPLOY_INTERNAL_BOOTNODE = ${DEPLOY_INTERNAL_BOOTNODE:-true} PROVER_REAL_PROOFS = ${PROVER_REAL_PROOFS} TRANSACTIONS_DISABLED = ${TRANSACTIONS_DISABLED:-null} -NETWORK = ${NETWORK_TF} +NETWORK = $(tf_str "${NETWORK:-}") STORE_SNAPSHOT_URL = ${STORE_SNAPSHOT_URL_TF} BOT_RESOURCE_PROFILE = "${BOT_RESOURCE_PROFILE}" BOT_MNEMONIC = "${LABS_INFRA_MNEMONIC}" @@ -594,8 +601,8 @@ DEBUG_P2P_INSTRUMENT_MESSAGES = ${DEBUG_P2P_INSTRUMENT_MESSAGES:-false} PROVER_AGENT_INCLUDE_METRICS = "${PROVER_AGENT_INCLUDE_METRICS-null}" FULL_NODE_INCLUDE_METRICS = "${FULL_NODE_INCLUDE_METRICS-null}" -LOG_LEVEL = "${LOG_LEVEL}" -FISHERMAN_LOG_LEVEL = "${FISHERMAN_LOG_LEVEL}" +LOG_LEVEL = $(tf_str "$LOG_LEVEL") +FISHERMAN_LOG_LEVEL = $(tf_str "$FISHERMAN_LOG_LEVEL") WS_NUM_HISTORIC_CHECKPOINTS = ${WS_NUM_HISTORIC_CHECKPOINTS:-null} diff --git a/spartan/terraform/deploy-aztec-infra/main.tf b/spartan/terraform/deploy-aztec-infra/main.tf index 338cef6dffeb..89f6d5e4c35b 100644 --- a/spartan/terraform/deploy-aztec-infra/main.tf +++ b/spartan/terraform/deploy-aztec-infra/main.tf @@ -148,6 +148,9 @@ locals { service = { p2p = { publicIP = var.P2P_PUBLIC_IP } } + node = { + logLevel = var.LOG_LEVEL + } # spread validator pods to different nodes to avoid having two validators with the same attester keys on the same physical node topologySpreadConstraints = [{ maxSkew = 1 @@ -202,6 +205,7 @@ locals { "validator.node.env.SEQ_MAX_TX_PER_BLOCK" = var.SEQ_MAX_TX_PER_BLOCK "validator.node.env.SEQ_BLOCK_DURATION_MS" = var.SEQ_BLOCK_DURATION_MS "validator.node.env.SEQ_BUILD_CHECKPOINT_IF_EMPTY" = var.SEQ_BUILD_CHECKPOINT_IF_EMPTY + "validator.node.env.SEQ_ENFORCE_TIME_TABLE" = var.SEQ_ENFORCE_TIME_TABLE "validator.node.env.P2P_TX_POOL_DELETE_TXS_AFTER_REORG" = var.P2P_TX_POOL_DELETE_TXS_AFTER_REORG "validator.node.env.L1_PRIORITY_FEE_BUMP_PERCENTAGE" = var.VALIDATOR_L1_PRIORITY_FEE_BUMP_PERCENTAGE "validator.node.env.L1_PRIORITY_FEE_RETRY_BUMP_PERCENTAGE" = var.VALIDATOR_L1_PRIORITY_FEE_RETRY_BUMP_PERCENTAGE @@ -209,7 +213,6 @@ locals { "validator.node.env.P2P_MAX_TX_POOL_SIZE" = var.P2P_MAX_TX_POOL_SIZE "validator.node.env.PROVER_TEST_VERIFICATION_DELAY_MS" = var.PROVER_TEST_VERIFICATION_DELAY_MS "validator.node.env.DEBUG_P2P_INSTRUMENT_MESSAGES" = var.DEBUG_P2P_INSTRUMENT_MESSAGES - "validator.node.logLevel" = var.LOG_LEVEL "validator.node.secret.envEnabled" = true "validator.node.secret.mnemonic" = var.VALIDATOR_MNEMONIC "validator.node.secret.mnemonicIndex" = var.VALIDATOR_MNEMONIC_START_INDEX @@ -305,6 +308,19 @@ locals { service = { p2p = { publicIP = var.P2P_PUBLIC_IP } } + node = { + logLevel = var.LOG_LEVEL + } + } + broker = { + node = { + logLevel = var.LOG_LEVEL + } + } + agent = { + node = { + logLevel = var.LOG_LEVEL + } } })], local.is_kind ? [yamlencode({ agent = { @@ -318,7 +334,6 @@ locals { "node.mnemonic" = var.PROVER_MNEMONIC "node.mnemonicStartIndex" = var.PROVER_PUBLISHER_MNEMONIC_START_INDEX "node.node.proverRealProofs" = var.PROVER_REAL_PROOFS - "node.node.logLevel" = var.LOG_LEVEL "node.node.env.PROVER_FAILED_PROOF_STORE" = var.PROVER_FAILED_PROOF_STORE "node.node.env.PROVER_PROOF_STORE" = var.PROVER_PROOF_STORE "node.node.env.DEBUG_FORCE_TX_PROOF_VERIFICATION" = var.DEBUG_FORCE_TX_PROOF_VERIFICATION @@ -332,7 +347,6 @@ locals { "node.node.secret.mnemonic" = var.PROVER_MNEMONIC "node.node.secret.mnemonicIndex" = var.PROVER_PUBLISHER_MNEMONIC_START_INDEX "broker.node.proverRealProofs" = var.PROVER_REAL_PROOFS - "broker.node.logLevel" = var.LOG_LEVEL "broker.node.env.BOOTSTRAP_NODES" = "asdf" "broker.node.env.PROVER_BROKER_DEBUG_REPLAY_ENABLED" = var.PROVER_BROKER_DEBUG_REPLAY_ENABLED "agent.node.image.repository" = local.prover_agent_image.repository @@ -347,7 +361,6 @@ locals { "agent.node.env.PROVER_AGENT_PROOF_TYPES" = join(",", var.PROVER_AGENT_PROOF_TYPES) "agent.node.env.PROVER_PROOF_STORE" = var.PROVER_PROOF_STORE "agent.node.otelIncludeMetrics" = var.PROVER_AGENT_INCLUDE_METRICS - "agent.node.logLevel" = var.LOG_LEVEL "node.node.env.L1_PRIORITY_FEE_BUMP_PERCENTAGE" = var.PROVER_L1_PRIORITY_FEE_BUMP_PERCENTAGE "node.node.env.L1_PRIORITY_FEE_RETRY_BUMP_PERCENTAGE" = var.PROVER_L1_PRIORITY_FEE_RETRY_BUMP_PERCENTAGE "node.node.env.P2P_MAX_TX_POOL_SIZE" = var.P2P_MAX_TX_POOL_SIZE @@ -382,7 +395,7 @@ locals { "rpc.yaml", "rpc-resources-${var.RPC_RESOURCE_PROFILE}.yaml" ] - inline_values = var.RPC_INGRESS_ENABLED ? [yamlencode({ + inline_values = concat(var.RPC_INGRESS_ENABLED ? [yamlencode({ service = { p2p = { publicIP = var.P2P_PUBLIC_IP } rpc = { @@ -413,7 +426,11 @@ locals { type = local.is_kind ? "ClusterIP" : "LoadBalancer" } } - })] + })], var.FISHERMAN_MODE ? [yamlencode({ + node = { + logLevel = var.FISHERMAN_LOG_LEVEL + } + })] : []) custom_settings = merge({ "replicaCount" = var.RPC_REPLICAS @@ -449,7 +466,6 @@ locals { "node.secret.mnemonic" = var.FISHERMAN_MNEMONIC "node.secret.mnemonicIndex" = var.FISHERMAN_MNEMONIC_START_INDEX "node.env.KEY_INDEX_START" = var.FISHERMAN_MNEMONIC_START_INDEX - "node.logLevel" = var.FISHERMAN_LOG_LEVEL "node.env.VALIDATORS_PER_NODE" = "1" "node.preStartScript" = "source /scripts/get-private-key.sh" } : {} diff --git a/spartan/terraform/deploy-aztec-infra/variables.tf b/spartan/terraform/deploy-aztec-infra/variables.tf index 358e2b0ec335..a03fa5550cc6 100644 --- a/spartan/terraform/deploy-aztec-infra/variables.tf +++ b/spartan/terraform/deploy-aztec-infra/variables.tf @@ -343,6 +343,13 @@ variable "SEQ_MAX_TX_PER_BLOCK" { default = "8" } +variable "SEQ_ENFORCE_TIME_TABLE" { + description = "Whether to enforce the time table when building blocks" + type = string + nullable = true + default = null +} + variable "SEQ_SKIP_CHECKPOINT_PUBLISH_PERCENT" { description = "Percentage probability of skipping checkpoint publishing" type = string