@aztec/foundation 0.87.8 → 0.87.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- export type EnvVar = 'ACVM_BINARY_PATH' | 'ACVM_WORKING_DIRECTORY' | 'GOVERNANCE_CONTRACT_ADDRESS' | 'API_KEY' | 'API_PREFIX' | 'ARCHIVER_MAX_LOGS' | 'ARCHIVER_POLLING_INTERVAL_MS' | 'ARCHIVER_URL' | 'ARCHIVER_VIEM_POLLING_INTERVAL_MS' | 'ARCHIVER_BATCH_SIZE' | 'ASSUME_PROVEN_THROUGH_BLOCK_NUMBER' | 'AZTEC_ADMIN_PORT' | 'AZTEC_NODE_ADMIN_URL' | 'AZTEC_NODE_URL' | 'AZTEC_PORT' | 'BB_BINARY_PATH' | 'BB_SKIP_CLEANUP' | 'BB_WORKING_DIRECTORY' | 'BB_NUM_IVC_VERIFIERS' | 'BOOTSTRAP_NODES' | 'BLOB_SINK_ARCHIVE_API_URL' | 'BLOB_SINK_PORT' | 'BLOB_SINK_URL' | 'BOT_DA_GAS_LIMIT' | 'BOT_FEE_PAYMENT_METHOD' | 'BOT_FLUSH_SETUP_TRANSACTIONS' | 'BOT_FOLLOW_CHAIN' | 'BOT_L2_GAS_LIMIT' | 'BOT_MAX_PENDING_TXS' | 'BOT_NO_START' | 'BOT_NO_WAIT_FOR_TRANSFERS' | 'BOT_L1_MNEMONIC' | 'BOT_L1_PRIVATE_KEY' | 'BOT_PRIVATE_KEY' | 'BOT_ACCOUNT_SALT' | 'BOT_PRIVATE_TRANSFERS_PER_TX' | 'BOT_PUBLIC_TRANSFERS_PER_TX' | 'BOT_PXE_URL' | 'BOT_RECIPIENT_ENCRYPTION_SECRET' | 'BOT_SKIP_PUBLIC_SIMULATION' | 'BOT_TOKEN_CONTRACT' | 'BOT_TOKEN_SALT' | 'BOT_TX_INTERVAL_SECONDS' | 'BOT_TX_MINED_WAIT_SECONDS' | 'BOT_MAX_CONSECUTIVE_ERRORS' | 'BOT_STOP_WHEN_UNHEALTHY' | 'BOT_AMM_TXS' | 'COINBASE' | 'DATA_DIRECTORY' | 'DATA_STORE_MAP_SIZE_KB' | 'ARCHIVER_STORE_MAP_SIZE_KB' | 'BLOB_SINK_MAP_SIZE_KB' | 'P2P_STORE_MAP_SIZE_KB' | 'PROVER_BROKER_STORE_MAP_SIZE_KB' | 'WS_DB_MAP_SIZE_KB' | 'ARCHIVE_TREE_MAP_SIZE_KB' | 'NULLIFIER_TREE_MAP_SIZE_KB' | 'NOTE_HASH_TREE_MAP_SIZE_KB' | 'MESSAGE_TREE_MAP_SIZE_KB' | 'PUBLIC_DATA_TREE_MAP_SIZE_KB' | 'DEBUG' | 'DEBUG_P2P_DISABLE_COLOCATION_PENALTY' | 'DEPLOY_AZTEC_CONTRACTS_SALT' | 'DEPLOY_AZTEC_CONTRACTS' | 'ENFORCE_FEES' | 'ETHEREUM_HOSTS' | 'FEE_JUICE_CONTRACT_ADDRESS' | 'FEE_JUICE_PORTAL_CONTRACT_ADDRESS' | 'FEE_RECIPIENT' | 'FORCE_COLOR' | 'GOVERNANCE_PROPOSER_CONTRACT_ADDRESS' | 'GOVERNANCE_PROPOSER_PAYLOAD_ADDRESS' | 'INBOX_CONTRACT_ADDRESS' | 'L1_CHAIN_ID' | 'L1_CONSENSUS_HOST_URLS' | 'L1_CONSENSUS_HOST_API_KEYS' | 'L1_CONSENSUS_HOST_API_KEY_HEADERS' | 'L1_PRIVATE_KEY' | 'LOG_JSON' | 'LOG_MULTILINE' | 'LOG_LEVEL' | 'MNEMONIC' | 'NETWORK_NAME' | 'NETWORK' | 'NO_PXE' | 'COIN_ISSUER_CONTRACT_ADDRESS' | 'USE_GCLOUD_LOGGING' | 'OTEL_EXPORTER_OTLP_METRICS_ENDPOINT' | 'OTEL_EXPORTER_OTLP_TRACES_ENDPOINT' | 'OTEL_EXPORTER_OTLP_LOGS_ENDPOINT' | 'OTEL_COLLECT_INTERVAL_MS' | 'OTEL_EXCLUDE_METRICS' | 'OTEL_EXPORT_TIMEOUT_MS' | 'OUTBOX_CONTRACT_ADDRESS' | 'P2P_BLOCK_CHECK_INTERVAL_MS' | 'P2P_BLOCK_REQUEST_BATCH_SIZE' | 'P2P_BOOTSTRAP_NODE_ENR_VERSION_CHECK' | 'P2P_BOOTSTRAP_NODES_AS_FULL_PEERS' | 'P2P_ENABLED' | 'P2P_GOSSIPSUB_D' | 'P2P_GOSSIPSUB_DHI' | 'P2P_GOSSIPSUB_DLO' | 'P2P_GOSSIPSUB_DLAZY' | 'P2P_GOSSIPSUB_FLOOD_PUBLISH' | 'P2P_GOSSIPSUB_INTERVAL_MS' | 'P2P_GOSSIPSUB_MCACHE_GOSSIP' | 'P2P_GOSSIPSUB_MCACHE_LENGTH' | 'P2P_GOSSIPSUB_SEEN_TTL' | 'P2P_GOSSIPSUB_TX_INVALID_MESSAGE_DELIVERIES_DECAY' | 'P2P_GOSSIPSUB_TX_INVALID_MESSAGE_DELIVERIES_WEIGHT' | 'P2P_GOSSIPSUB_TX_TOPIC_WEIGHT' | 'P2P_L2_QUEUE_SIZE' | 'P2P_MAX_PEERS' | 'P2P_PEER_CHECK_INTERVAL_MS' | 'P2P_PEER_PENALTY_VALUES' | 'P2P_QUERY_FOR_IP' | 'P2P_REQRESP_INDIVIDUAL_REQUEST_TIMEOUT_MS' | 'P2P_REQRESP_OVERALL_REQUEST_TIMEOUT_MS' | 'P2P_DOUBLE_SPEND_SEVERE_PEER_PENALTY_WINDOW' | 'P2P_LISTEN_ADDR' | 'P2P_PORT' | 'P2P_BROADCAST_PORT' | 'P2P_IP' | 'P2P_ARCHIVED_TX_LIMIT' | 'P2P_TRUSTED_PEERS' | 'P2P_PRIVATE_PEERS' | 'P2P_MAX_TX_POOL_SIZE' | 'P2P_TX_POOL_OVERFLOW_FACTOR' | 'P2P_SEEN_MSG_CACHE_SIZE' | 'PEER_ID_PRIVATE_KEY' | 'PEER_ID_PRIVATE_KEY_PATH' | 'PROVER_AGENT_COUNT' | 'PROVER_AGENT_PROOF_TYPES' | 'PROVER_AGENT_POLL_INTERVAL_MS' | 'PROVER_BROKER_HOST' | 'PROVER_BROKER_JOB_TIMEOUT_MS' | 'PROVER_BROKER_POLL_INTERVAL_MS' | 'PROVER_BROKER_JOB_MAX_RETRIES' | 'PROVER_BROKER_BATCH_INTERVAL_MS' | 'PROVER_BROKER_BATCH_SIZE' | 'PROVER_BROKER_MAX_EPOCHS_TO_KEEP_RESULTS_FOR' | 'PROVER_COORDINATION_NODE_URLS' | 'PROVER_FAILED_PROOF_STORE' | 'PROVER_NODE_FAILED_EPOCH_STORE' | 'PROVER_ID' | 'PROVER_NODE_POLLING_INTERVAL_MS' | 'PROVER_NODE_MAX_PENDING_JOBS' | 'PROVER_NODE_MAX_PARALLEL_BLOCKS_PER_EPOCH' | 'PROVER_NODE_TX_GATHERING_INTERVAL_MS' | 'PROVER_NODE_TX_GATHERING_BATCH_SIZE' | 'PROVER_NODE_TX_GATHERING_MAX_PARALLEL_REQUESTS_PER_NODE' | 'PROVER_PUBLISH_RETRY_INTERVAL_MS' | 'PROVER_PUBLISHER_PRIVATE_KEY' | 'PROVER_REAL_PROOFS' | 'PROVER_TEST_DELAY_FACTOR' | 'PROVER_TEST_DELAY_MS' | 'PROVER_TEST_DELAY_TYPE' | 'PXE_L2_BLOCK_BATCH_SIZE' | 'PXE_PROVER_ENABLED' | 'REGISTRY_CONTRACT_ADDRESS' | 'ROLLUP_CONTRACT_ADDRESS' | 'RPC_SIMULATE_PUBLIC_MAX_GAS_LIMIT' | 'SENTINEL_ENABLED' | 'SENTINEL_HISTORY_LENGTH_IN_EPOCHS' | 'SEQ_MAX_BLOCK_SIZE_IN_BYTES' | 'SEQ_MAX_TX_PER_BLOCK' | 'SEQ_MIN_TX_PER_BLOCK' | 'SEQ_PUBLISH_TXS_WITH_PROPOSALS' | 'SEQ_MAX_DA_BLOCK_GAS' | 'SEQ_MAX_L2_BLOCK_GAS' | 'SEQ_PUBLISH_RETRY_INTERVAL_MS' | 'SEQ_PUBLISHER_PRIVATE_KEY' | 'SEQ_TX_POLLING_INTERVAL_MS' | 'SEQ_ENFORCE_TIME_TABLE' | 'SEQ_MAX_L1_TX_INCLUSION_TIME_INTO_SLOT' | 'SLASH_FACTORY_CONTRACT_ADDRESS' | 'STAKING_ASSET_CONTRACT_ADDRESS' | 'STAKING_ASSET_HANDLER_CONTRACT_ADDRESS' | 'SYNC_MODE' | 'SYNC_SNAPSHOTS_URL' | 'REWARD_DISTRIBUTOR_CONTRACT_ADDRESS' | 'TELEMETRY' | 'TEST_ACCOUNTS' | 'SPONSORED_FPC' | 'TX_GOSSIP_VERSION' | 'TX_PUBLIC_SETUP_ALLOWLIST' | 'TXE_PORT' | 'VALIDATOR_ATTESTATIONS_POLLING_INTERVAL_MS' | 'VALIDATOR_DISABLED' | 'VALIDATOR_PRIVATE_KEY' | 'VALIDATOR_REEXECUTE' | 'ROLLUP_VERSION' | 'WS_BLOCK_CHECK_INTERVAL_MS' | 'WS_PROVEN_BLOCKS_ONLY' | 'WS_BLOCK_REQUEST_BATCH_SIZE' | 'VERIFIER_VIEM_POLLING_INTERVAL_MS' | 'L1_READER_VIEM_POLLING_INTERVAL_MS' | 'PROVER_VIEM_POLLING_INTERVAL_MS' | 'SEQ_VIEM_POLLING_INTERVAL_MS' | 'WS_DATA_DIRECTORY' | 'WS_NUM_HISTORIC_BLOCKS' | 'ETHEREUM_SLOT_DURATION' | 'AZTEC_SLOT_DURATION' | 'AZTEC_EPOCH_DURATION' | 'AZTEC_TARGET_COMMITTEE_SIZE' | 'AZTEC_PROOF_SUBMISSION_WINDOW' | 'AZTEC_MINIMUM_STAKE' | 'AZTEC_MANA_TARGET' | 'AZTEC_PROVING_COST_PER_MANA' | 'AZTEC_SLASHING_QUORUM' | 'AZTEC_SLASHING_ROUND_SIZE' | 'AZTEC_GOVERNANCE_PROPOSER_QUORUM' | 'AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE' | 'L1_GAS_LIMIT_BUFFER_PERCENTAGE' | 'L1_GAS_PRICE_MIN' | 'L1_GAS_PRICE_MAX' | 'L1_BLOB_FEE_PER_GAS_MAX' | 'L1_PRIORITY_FEE_BUMP_PERCENTAGE' | 'L1_PRIORITY_FEE_RETRY_BUMP_PERCENTAGE' | 'L1_FIXED_PRIORITY_FEE_PER_GAS' | 'L1_TX_MONITOR_MAX_ATTEMPTS' | 'L1_TX_MONITOR_CHECK_INTERVAL_MS' | 'L1_TX_MONITOR_STALL_TIME_MS' | 'L1_TX_MONITOR_TX_TIMEOUT_MS' | 'L1_TX_PROPAGATION_MAX_QUERY_ATTEMPTS' | 'FAUCET_MNEMONIC_ACCOUNT_INDEX' | 'FAUCET_ETH_AMOUNT' | 'FAUCET_INTERVAL_MS' | 'FAUCET_L1_ASSETS' | 'K8S_POD_NAME' | 'K8S_POD_UID' | 'K8S_NAMESPACE_NAME' | 'CUSTOM_FORWARDER_CONTRACT_ADDRESS' | 'FEE_ASSET_HANDLER_CONTRACT_ADDRESS' | 'AUTO_UPDATE' | 'AUTO_UPDATE_URL';
1
+ export type EnvVar = 'ACVM_BINARY_PATH' | 'ACVM_WORKING_DIRECTORY' | 'GOVERNANCE_CONTRACT_ADDRESS' | 'API_KEY' | 'API_PREFIX' | 'ARCHIVER_MAX_LOGS' | 'ARCHIVER_POLLING_INTERVAL_MS' | 'ARCHIVER_URL' | 'ARCHIVER_VIEM_POLLING_INTERVAL_MS' | 'ARCHIVER_BATCH_SIZE' | 'ASSUME_PROVEN_THROUGH_BLOCK_NUMBER' | 'AZTEC_ADMIN_PORT' | 'AZTEC_NODE_ADMIN_URL' | 'AZTEC_NODE_URL' | 'AZTEC_PORT' | 'BB_BINARY_PATH' | 'BB_SKIP_CLEANUP' | 'BB_WORKING_DIRECTORY' | 'BB_NUM_IVC_VERIFIERS' | 'BOOTSTRAP_NODES' | 'BLOB_SINK_ARCHIVE_API_URL' | 'BLOB_SINK_PORT' | 'BLOB_SINK_URL' | 'BOT_DA_GAS_LIMIT' | 'BOT_FEE_PAYMENT_METHOD' | 'BOT_FLUSH_SETUP_TRANSACTIONS' | 'BOT_FOLLOW_CHAIN' | 'BOT_L2_GAS_LIMIT' | 'BOT_MAX_PENDING_TXS' | 'BOT_NO_START' | 'BOT_NO_WAIT_FOR_TRANSFERS' | 'BOT_L1_MNEMONIC' | 'BOT_L1_PRIVATE_KEY' | 'BOT_L1_TO_L2_TIMEOUT_SECONDS' | 'BOT_PRIVATE_KEY' | 'BOT_ACCOUNT_SALT' | 'BOT_PRIVATE_TRANSFERS_PER_TX' | 'BOT_PUBLIC_TRANSFERS_PER_TX' | 'BOT_PXE_URL' | 'BOT_RECIPIENT_ENCRYPTION_SECRET' | 'BOT_SKIP_PUBLIC_SIMULATION' | 'BOT_TOKEN_CONTRACT' | 'BOT_TOKEN_SALT' | 'BOT_TX_INTERVAL_SECONDS' | 'BOT_TX_MINED_WAIT_SECONDS' | 'BOT_MAX_CONSECUTIVE_ERRORS' | 'BOT_STOP_WHEN_UNHEALTHY' | 'BOT_AMM_TXS' | 'COINBASE' | 'DATA_DIRECTORY' | 'DATA_STORE_MAP_SIZE_KB' | 'ARCHIVER_STORE_MAP_SIZE_KB' | 'BLOB_SINK_MAP_SIZE_KB' | 'P2P_STORE_MAP_SIZE_KB' | 'PROVER_BROKER_STORE_MAP_SIZE_KB' | 'WS_DB_MAP_SIZE_KB' | 'ARCHIVE_TREE_MAP_SIZE_KB' | 'NULLIFIER_TREE_MAP_SIZE_KB' | 'NOTE_HASH_TREE_MAP_SIZE_KB' | 'MESSAGE_TREE_MAP_SIZE_KB' | 'PUBLIC_DATA_TREE_MAP_SIZE_KB' | 'DEBUG' | 'DEBUG_P2P_DISABLE_COLOCATION_PENALTY' | 'DEPLOY_AZTEC_CONTRACTS_SALT' | 'DEPLOY_AZTEC_CONTRACTS' | 'ENFORCE_FEES' | 'ETHEREUM_HOSTS' | 'FEE_JUICE_CONTRACT_ADDRESS' | 'FEE_JUICE_PORTAL_CONTRACT_ADDRESS' | 'FEE_RECIPIENT' | 'FORCE_COLOR' | 'GOVERNANCE_PROPOSER_CONTRACT_ADDRESS' | 'GOVERNANCE_PROPOSER_PAYLOAD_ADDRESS' | 'INBOX_CONTRACT_ADDRESS' | 'L1_CHAIN_ID' | 'L1_CONSENSUS_HOST_URLS' | 'L1_CONSENSUS_HOST_API_KEYS' | 'L1_CONSENSUS_HOST_API_KEY_HEADERS' | 'L1_PRIVATE_KEY' | 'LOG_JSON' | 'LOG_MULTILINE' | 'LOG_LEVEL' | 'MNEMONIC' | 'NETWORK_NAME' | 'NETWORK' | 'NO_PXE' | 'COIN_ISSUER_CONTRACT_ADDRESS' | 'USE_GCLOUD_LOGGING' | 'OTEL_EXPORTER_OTLP_METRICS_ENDPOINT' | 'OTEL_EXPORTER_OTLP_TRACES_ENDPOINT' | 'OTEL_EXPORTER_OTLP_LOGS_ENDPOINT' | 'OTEL_COLLECT_INTERVAL_MS' | 'OTEL_EXCLUDE_METRICS' | 'OTEL_EXPORT_TIMEOUT_MS' | 'OUTBOX_CONTRACT_ADDRESS' | 'P2P_BLOCK_CHECK_INTERVAL_MS' | 'P2P_BLOCK_REQUEST_BATCH_SIZE' | 'P2P_BOOTSTRAP_NODE_ENR_VERSION_CHECK' | 'P2P_BOOTSTRAP_NODES_AS_FULL_PEERS' | 'P2P_ENABLED' | 'P2P_GOSSIPSUB_D' | 'P2P_GOSSIPSUB_DHI' | 'P2P_GOSSIPSUB_DLO' | 'P2P_GOSSIPSUB_DLAZY' | 'P2P_GOSSIPSUB_FLOOD_PUBLISH' | 'P2P_GOSSIPSUB_INTERVAL_MS' | 'P2P_GOSSIPSUB_MCACHE_GOSSIP' | 'P2P_GOSSIPSUB_MCACHE_LENGTH' | 'P2P_GOSSIPSUB_SEEN_TTL' | 'P2P_GOSSIPSUB_TX_INVALID_MESSAGE_DELIVERIES_DECAY' | 'P2P_GOSSIPSUB_TX_INVALID_MESSAGE_DELIVERIES_WEIGHT' | 'P2P_GOSSIPSUB_TX_TOPIC_WEIGHT' | 'P2P_L2_QUEUE_SIZE' | 'P2P_MAX_PEERS' | 'P2P_PEER_CHECK_INTERVAL_MS' | 'P2P_PEER_PENALTY_VALUES' | 'P2P_QUERY_FOR_IP' | 'P2P_REQRESP_INDIVIDUAL_REQUEST_TIMEOUT_MS' | 'P2P_REQRESP_OVERALL_REQUEST_TIMEOUT_MS' | 'P2P_DOUBLE_SPEND_SEVERE_PEER_PENALTY_WINDOW' | 'P2P_LISTEN_ADDR' | 'P2P_PORT' | 'P2P_BROADCAST_PORT' | 'P2P_IP' | 'P2P_ARCHIVED_TX_LIMIT' | 'P2P_TRUSTED_PEERS' | 'P2P_PRIVATE_PEERS' | 'P2P_MAX_TX_POOL_SIZE' | 'P2P_TX_POOL_OVERFLOW_FACTOR' | 'P2P_SEEN_MSG_CACHE_SIZE' | 'PEER_ID_PRIVATE_KEY' | 'PEER_ID_PRIVATE_KEY_PATH' | 'PROVER_AGENT_COUNT' | 'PROVER_AGENT_PROOF_TYPES' | 'PROVER_AGENT_POLL_INTERVAL_MS' | 'PROVER_BROKER_HOST' | 'PROVER_BROKER_JOB_TIMEOUT_MS' | 'PROVER_BROKER_POLL_INTERVAL_MS' | 'PROVER_BROKER_JOB_MAX_RETRIES' | 'PROVER_BROKER_BATCH_INTERVAL_MS' | 'PROVER_BROKER_BATCH_SIZE' | 'PROVER_BROKER_MAX_EPOCHS_TO_KEEP_RESULTS_FOR' | 'PROVER_COORDINATION_NODE_URLS' | 'PROVER_FAILED_PROOF_STORE' | 'PROVER_NODE_FAILED_EPOCH_STORE' | 'PROVER_ID' | 'PROVER_NODE_POLLING_INTERVAL_MS' | 'PROVER_NODE_MAX_PENDING_JOBS' | 'PROVER_NODE_MAX_PARALLEL_BLOCKS_PER_EPOCH' | 'PROVER_NODE_TX_GATHERING_INTERVAL_MS' | 'PROVER_NODE_TX_GATHERING_BATCH_SIZE' | 'PROVER_NODE_TX_GATHERING_MAX_PARALLEL_REQUESTS_PER_NODE' | 'PROVER_PUBLISH_RETRY_INTERVAL_MS' | 'PROVER_PUBLISHER_PRIVATE_KEY' | 'PROVER_REAL_PROOFS' | 'PROVER_TEST_DELAY_FACTOR' | 'PROVER_TEST_DELAY_MS' | 'PROVER_TEST_DELAY_TYPE' | 'PXE_L2_BLOCK_BATCH_SIZE' | 'PXE_PROVER_ENABLED' | 'REGISTRY_CONTRACT_ADDRESS' | 'ROLLUP_CONTRACT_ADDRESS' | 'RPC_SIMULATE_PUBLIC_MAX_GAS_LIMIT' | 'SENTINEL_ENABLED' | 'SENTINEL_HISTORY_LENGTH_IN_EPOCHS' | 'SEQ_MAX_BLOCK_SIZE_IN_BYTES' | 'SEQ_MAX_TX_PER_BLOCK' | 'SEQ_MIN_TX_PER_BLOCK' | 'SEQ_PUBLISH_TXS_WITH_PROPOSALS' | 'SEQ_MAX_DA_BLOCK_GAS' | 'SEQ_MAX_L2_BLOCK_GAS' | 'SEQ_PUBLISH_RETRY_INTERVAL_MS' | 'SEQ_PUBLISHER_PRIVATE_KEY' | 'SEQ_TX_POLLING_INTERVAL_MS' | 'SEQ_ENFORCE_TIME_TABLE' | 'SEQ_MAX_L1_TX_INCLUSION_TIME_INTO_SLOT' | 'SLASH_FACTORY_CONTRACT_ADDRESS' | 'STAKING_ASSET_CONTRACT_ADDRESS' | 'STAKING_ASSET_HANDLER_CONTRACT_ADDRESS' | 'SYNC_MODE' | 'SYNC_SNAPSHOTS_URL' | 'REWARD_DISTRIBUTOR_CONTRACT_ADDRESS' | 'TELEMETRY' | 'TEST_ACCOUNTS' | 'SPONSORED_FPC' | 'TX_GOSSIP_VERSION' | 'TX_PUBLIC_SETUP_ALLOWLIST' | 'TXE_PORT' | 'VALIDATOR_ATTESTATIONS_POLLING_INTERVAL_MS' | 'VALIDATOR_DISABLED' | 'VALIDATOR_PRIVATE_KEY' | 'VALIDATOR_REEXECUTE' | 'ROLLUP_VERSION' | 'WS_BLOCK_CHECK_INTERVAL_MS' | 'WS_PROVEN_BLOCKS_ONLY' | 'WS_BLOCK_REQUEST_BATCH_SIZE' | 'VERIFIER_VIEM_POLLING_INTERVAL_MS' | 'L1_READER_VIEM_POLLING_INTERVAL_MS' | 'PROVER_VIEM_POLLING_INTERVAL_MS' | 'SEQ_VIEM_POLLING_INTERVAL_MS' | 'WS_DATA_DIRECTORY' | 'WS_NUM_HISTORIC_BLOCKS' | 'ETHEREUM_SLOT_DURATION' | 'AZTEC_SLOT_DURATION' | 'AZTEC_EPOCH_DURATION' | 'AZTEC_TARGET_COMMITTEE_SIZE' | 'AZTEC_PROOF_SUBMISSION_WINDOW' | 'AZTEC_MINIMUM_STAKE' | 'AZTEC_MANA_TARGET' | 'AZTEC_PROVING_COST_PER_MANA' | 'AZTEC_SLASHING_QUORUM' | 'AZTEC_SLASHING_ROUND_SIZE' | 'AZTEC_GOVERNANCE_PROPOSER_QUORUM' | 'AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE' | 'L1_GAS_LIMIT_BUFFER_PERCENTAGE' | 'L1_GAS_PRICE_MIN' | 'L1_GAS_PRICE_MAX' | 'L1_BLOB_FEE_PER_GAS_MAX' | 'L1_PRIORITY_FEE_BUMP_PERCENTAGE' | 'L1_PRIORITY_FEE_RETRY_BUMP_PERCENTAGE' | 'L1_FIXED_PRIORITY_FEE_PER_GAS' | 'L1_TX_MONITOR_MAX_ATTEMPTS' | 'L1_TX_MONITOR_CHECK_INTERVAL_MS' | 'L1_TX_MONITOR_STALL_TIME_MS' | 'L1_TX_MONITOR_TX_TIMEOUT_MS' | 'L1_TX_PROPAGATION_MAX_QUERY_ATTEMPTS' | 'FAUCET_MNEMONIC_ACCOUNT_INDEX' | 'FAUCET_ETH_AMOUNT' | 'FAUCET_INTERVAL_MS' | 'FAUCET_L1_ASSETS' | 'K8S_POD_NAME' | 'K8S_POD_UID' | 'K8S_NAMESPACE_NAME' | 'CUSTOM_FORWARDER_CONTRACT_ADDRESS' | 'FEE_ASSET_HANDLER_CONTRACT_ADDRESS' | 'AUTO_UPDATE' | 'AUTO_UPDATE_URL';
2
2
  //# sourceMappingURL=env_var.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"env_var.d.ts","sourceRoot":"","sources":["../../src/config/env_var.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env_var.d.ts","sourceRoot":"","sources":["../../src/config/env_var.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,8 @@ export type SafeJsonRpcClientOptions = {
6
6
  fetch?: JsonRpcFetch;
7
7
  log?: Logger;
8
8
  batchWindowMS?: number;
9
+ maxBatchSize?: number;
10
+ maxRequestBodySize?: number;
9
11
  onResponse?: (res: {
10
12
  response: any;
11
13
  headers: {
@@ -1 +1 @@
1
- {"version":3,"file":"safe_json_rpc_client.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/client/safe_json_rpc_client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAkB,KAAK,YAAY,EAAmB,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,KAAK,YAAY,EAAgB,MAAM,YAAY,CAAC;AAO7D,MAAM,MAAM,wBAAwB,GAAG;IACrC,gBAAgB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAClC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE;QACjB,QAAQ,EAAE,GAAG,CAAC;QACd,OAAO,EAAE;YAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;SAAE,CAAC;KACjE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB,CAAC;AA6BF;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,MAAM,EACtD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EACvB,MAAM,GAAE,wBAA6B,GACpC,CAAC,CAqIH;AAED;;GAEG;AACH,wBAAsB,KAAK,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,EACtD,MAAM,EAAE,CAAC,GACR,OAAO,CAAC;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,CAuBtD"}
1
+ {"version":3,"file":"safe_json_rpc_client.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/client/safe_json_rpc_client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAkB,KAAK,YAAY,EAAmB,MAAM,sBAAsB,CAAC;AAE1F,OAAO,EAAE,KAAK,YAAY,EAAgB,MAAM,YAAY,CAAC;AAa7D,MAAM,MAAM,wBAAwB,GAAG;IACrC,gBAAgB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAClC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE;QACjB,QAAQ,EAAE,GAAG,CAAC;QACd,OAAO,EAAE;YAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;SAAE,CAAC;KACjE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB,CAAC;AA6BF;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,MAAM,EACtD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EACvB,MAAM,GAAE,wBAA6B,GACpC,CAAC,CA0KH;AAED;;GAEG;AACH,wBAAsB,KAAK,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,EACtD,MAAM,EAAE,CAAC,GACR,OAAO,CAAC;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,CAuBtD"}
@@ -2,11 +2,16 @@ import { format } from 'util';
2
2
  import { createLogger } from '../../log/pino-logger.js';
3
3
  import { promiseWithResolvers } from '../../promise/utils.js';
4
4
  import { schemaHasMethod } from '../../schemas/api.js';
5
+ import { jsonStringify } from '../convert.js';
5
6
  import { defaultFetch } from './fetch.js';
6
7
  // batch window of 0 would capture all requests in the current sync iteration of the event loop
7
8
  // and send them all at once in a single batch
8
9
  // minimal latency
9
10
  const DEFAULT_BATCH_WINDOW_MS = 0;
11
+ // the maximum size of a batched request
12
+ const DEFAULT_MAX_BATCH_SIZE = 100;
13
+ // 10 mb
14
+ const DEFAULT_MAX_REQUESTY_BODY_SIZE = 10 * 1024 * 1024;
10
15
  // expose helpful information on the RPC clients such that we can recognize them later
11
16
  const SEND_BATCH = Symbol('JsonRpcClient.sendBatch');
12
17
  const CLIENT_ID = Symbol('JsonRpcClient.clientId');
@@ -22,21 +27,40 @@ const clients = new Map();
22
27
  */ export function createSafeJsonRpcClient(host, schema, config = {}) {
23
28
  const fetch = config.fetch ?? defaultFetch;
24
29
  const log = config.log ?? createLogger('json-rpc:client');
25
- const { namespaceMethods = false, batchWindowMS = DEFAULT_BATCH_WINDOW_MS } = config;
30
+ const { namespaceMethods = false, batchWindowMS = DEFAULT_BATCH_WINDOW_MS, maxBatchSize = DEFAULT_MAX_BATCH_SIZE, maxRequestBodySize = DEFAULT_MAX_REQUESTY_BODY_SIZE } = config;
26
31
  let id = 0;
27
32
  let sendBatchTimeoutHandle;
28
- let queue = [];
33
+ const queue = [];
29
34
  const sendBatch = async ()=>{
30
35
  if (sendBatchTimeoutHandle !== undefined) {
31
36
  clearTimeout(sendBatchTimeoutHandle);
32
37
  sendBatchTimeoutHandle = undefined;
33
38
  }
34
- const rpcCalls = queue;
35
- queue = [];
39
+ const rpcCalls = [];
40
+ let bodySize = 0;
41
+ while(queue.length > 0 && rpcCalls.length < maxBatchSize && bodySize < maxRequestBodySize){
42
+ const item = queue[0];
43
+ if (!item) {
44
+ break;
45
+ }
46
+ const tmpBodySize = bodySize + item.encodedLength;
47
+ if (tmpBodySize >= maxRequestBodySize) {
48
+ break;
49
+ }
50
+ bodySize = tmpBodySize;
51
+ queue.shift();
52
+ rpcCalls.push(item);
53
+ }
54
+ // no-op
36
55
  if (rpcCalls.length === 0) {
37
56
  return;
38
57
  }
39
- log.debug(`Executing JSON-RPC batch of size: ${rpcCalls.length}`, {
58
+ // schedule another call if there are more items to send
59
+ if (queue.length > 0) {
60
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
61
+ sendBatchTimeoutHandle = setTimeout(sendBatch, batchWindowMS);
62
+ }
63
+ log.debug(`Executing JSON-RPC batch of size: ${rpcCalls.length} body size: ${bodySize} bytes`, {
40
64
  methods: rpcCalls.map(({ request })=>request.method)
41
65
  });
42
66
  try {
@@ -115,9 +139,14 @@ const clients = new Map();
115
139
  params
116
140
  };
117
141
  const deferred = promiseWithResolvers();
142
+ const encodedLength = jsonStringify(body).length;
143
+ if (encodedLength >= maxRequestBodySize) {
144
+ throw new Error(`Request body too large: ${encodedLength}`);
145
+ }
118
146
  queue.push({
119
147
  request: body,
120
- deferred
148
+ deferred,
149
+ encodedLength
121
150
  });
122
151
  if (sendBatchTimeoutHandle === undefined) {
123
152
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/foundation",
3
- "version": "0.87.8",
3
+ "version": "0.87.9",
4
4
  "type": "module",
5
5
  "main": "./dest/index.js",
6
6
  "types": "./dest/index.d.ts",
@@ -100,7 +100,7 @@
100
100
  ]
101
101
  },
102
102
  "dependencies": {
103
- "@aztec/bb.js": "0.87.8",
103
+ "@aztec/bb.js": "0.87.9",
104
104
  "@koa/cors": "^5.0.0",
105
105
  "@noble/curves": "^1.2.0",
106
106
  "c-kzg": "4.0.0-alpha.1",
@@ -32,6 +32,7 @@ export type EnvVar =
32
32
  | 'BOT_NO_WAIT_FOR_TRANSFERS'
33
33
  | 'BOT_L1_MNEMONIC'
34
34
  | 'BOT_L1_PRIVATE_KEY'
35
+ | 'BOT_L1_TO_L2_TIMEOUT_SECONDS'
35
36
  | 'BOT_PRIVATE_KEY'
36
37
  | 'BOT_ACCOUNT_SALT'
37
38
  | 'BOT_PRIVATE_TRANSFERS_PER_TX'
@@ -3,6 +3,7 @@ import { format } from 'util';
3
3
  import { type Logger, createLogger } from '../../log/pino-logger.js';
4
4
  import { type PromiseWithResolvers, promiseWithResolvers } from '../../promise/utils.js';
5
5
  import { type ApiSchema, type ApiSchemaFor, schemaHasMethod } from '../../schemas/api.js';
6
+ import { jsonStringify } from '../convert.js';
6
7
  import { type JsonRpcFetch, defaultFetch } from './fetch.js';
7
8
 
8
9
  // batch window of 0 would capture all requests in the current sync iteration of the event loop
@@ -10,11 +11,19 @@ import { type JsonRpcFetch, defaultFetch } from './fetch.js';
10
11
  // minimal latency
11
12
  const DEFAULT_BATCH_WINDOW_MS = 0;
12
13
 
14
+ // the maximum size of a batched request
15
+ const DEFAULT_MAX_BATCH_SIZE = 100;
16
+
17
+ // 10 mb
18
+ const DEFAULT_MAX_REQUESTY_BODY_SIZE = 10 * 1024 * 1024;
19
+
13
20
  export type SafeJsonRpcClientOptions = {
14
21
  namespaceMethods?: string | false;
15
22
  fetch?: JsonRpcFetch;
16
23
  log?: Logger;
17
24
  batchWindowMS?: number;
25
+ maxBatchSize?: number;
26
+ maxRequestBodySize?: number;
18
27
  onResponse?: (res: {
19
28
  response: any;
20
29
  headers: { get: (header: string) => string | null | undefined };
@@ -62,26 +71,58 @@ export function createSafeJsonRpcClient<T extends object>(
62
71
  ): T {
63
72
  const fetch = config.fetch ?? defaultFetch;
64
73
  const log = config.log ?? createLogger('json-rpc:client');
65
- const { namespaceMethods = false, batchWindowMS = DEFAULT_BATCH_WINDOW_MS } = config;
74
+ const {
75
+ namespaceMethods = false,
76
+ batchWindowMS = DEFAULT_BATCH_WINDOW_MS,
77
+ maxBatchSize = DEFAULT_MAX_BATCH_SIZE,
78
+ maxRequestBodySize = DEFAULT_MAX_REQUESTY_BODY_SIZE,
79
+ } = config;
66
80
 
67
81
  let id = 0;
68
82
  let sendBatchTimeoutHandle: NodeJS.Timeout | undefined;
69
- let queue: Array<{ request: JsonRpcRequest; deferred: PromiseWithResolvers<JsonRpcResponse> }> = [];
83
+ const queue: Array<{
84
+ request: JsonRpcRequest;
85
+ deferred: PromiseWithResolvers<JsonRpcResponse>;
86
+ encodedLength: number;
87
+ }> = [];
70
88
 
71
- const sendBatch = async () => {
89
+ const sendBatch = async (): Promise<void> => {
72
90
  if (sendBatchTimeoutHandle !== undefined) {
73
91
  clearTimeout(sendBatchTimeoutHandle);
74
92
  sendBatchTimeoutHandle = undefined;
75
93
  }
76
94
 
77
- const rpcCalls = queue;
78
- queue = [];
95
+ const rpcCalls: typeof queue = [];
96
+ let bodySize = 0;
97
+
98
+ while (queue.length > 0 && rpcCalls.length < maxBatchSize && bodySize < maxRequestBodySize) {
99
+ const item = queue[0];
100
+ if (!item) {
101
+ break;
102
+ }
103
+
104
+ const tmpBodySize = bodySize + item.encodedLength;
105
+ if (tmpBodySize >= maxRequestBodySize) {
106
+ break;
107
+ }
108
+
109
+ bodySize = tmpBodySize;
110
+ queue.shift();
111
+ rpcCalls.push(item);
112
+ }
79
113
 
114
+ // no-op
80
115
  if (rpcCalls.length === 0) {
81
116
  return;
82
117
  }
83
118
 
84
- log.debug(`Executing JSON-RPC batch of size: ${rpcCalls.length}`, {
119
+ // schedule another call if there are more items to send
120
+ if (queue.length > 0) {
121
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
122
+ sendBatchTimeoutHandle = setTimeout(sendBatch, batchWindowMS);
123
+ }
124
+
125
+ log.debug(`Executing JSON-RPC batch of size: ${rpcCalls.length} body size: ${bodySize} bytes`, {
85
126
  methods: rpcCalls.map(({ request }) => request.method),
86
127
  });
87
128
  try {
@@ -161,7 +202,12 @@ export function createSafeJsonRpcClient<T extends object>(
161
202
  const body: JsonRpcRequest = { jsonrpc: '2.0', id: id++, method, params };
162
203
 
163
204
  const deferred = promiseWithResolvers<JsonRpcResponse>();
164
- queue.push({ request: body, deferred });
205
+ const encodedLength = jsonStringify(body).length;
206
+ if (encodedLength >= maxRequestBodySize) {
207
+ throw new Error(`Request body too large: ${encodedLength}`);
208
+ }
209
+
210
+ queue.push({ request: body, deferred, encodedLength });
165
211
 
166
212
  if (sendBatchTimeoutHandle === undefined) {
167
213
  // eslint-disable-next-line @typescript-eslint/no-misused-promises