diff --git a/README.md b/README.md index 11cd160e..37ed2eb5 100644 --- a/README.md +++ b/README.md @@ -140,7 +140,7 @@ Now, the CU service will be running alongside the ar.io gateway. Within the dock ## Configuration When running via `docker compose`, it will read a `.env` file in the project root -directory and use the environment variables set there. +directory and use the environment variables set there. Refer to [ENVIRONMENT.md](./ENVIRONMENT.md) for a list of all available environment variables and their default values. ### GraphQL Pass-Through diff --git a/docker-compose.ao.yaml b/docker-compose.ao.yaml index cf0f013c..fbec106e 100644 --- a/docker-compose.ao.yaml +++ b/docker-compose.ao.yaml @@ -20,6 +20,7 @@ services: ENABLE_METRICS_ENDPOINT: ${ENABLE_METRICS_ENDPOINT:-} DB_MODE: ${DB_MODE:-} DB_URL: ${DB_URL:-} + UNIT_MODE: ${UNIT_MODE:-cu} PROCESS_WASM_MEMORY_MAX_LIMIT: ${PROCESS_WASM_MEMORY_MAX_LIMIT:-} PROCESS_WASM_COMPUTE_MAX_LIMIT: ${PROCESS_WASM_COMPUTE_MAX_LIMIT:-} PROCESS_WASM_SUPPORTED_FORMATS: ${PROCESS_WASM_SUPPORTED_FORMATS:-} @@ -35,6 +36,7 @@ services: PROCESS_MEMORY_CACHE_CHECKPOINT_INTERVAL: ${PROCESS_MEMORY_CACHE_CHECKPOINT_INTERVAL:-} PROCESS_CHECKPOINT_CREATION_THROTTLE: ${PROCESS_CHECKPOINT_CREATION_THROTTLE:-} DISABLE_PROCESS_CHECKPOINT_CREATION: ${DISABLE_PROCESS_CHECKPOINT_CREATION:-} + DISABLE_PROCESS_FILE_CHECKPOINT_CREATION: ${DISABLE_PROCESS_FILE_CHECKPOINT_CREATION:-} EAGER_CHECKPOINT_ACCUMULATED_GAS_THRESHOLD: ${EAGER_CHECKPOINT_ACCUMULATED_GAS_THRESHOLD:-} MEM_MONITOR_INTERVAL: ${MEM_MONITOR_INTERVAL:-} BUSY_THRESHOLD: ${BUSY_THRESHOLD:-} diff --git a/docs/envs.md b/docs/envs.md index c7e927d9..8f77a516 100644 --- a/docs/envs.md +++ b/docs/envs.md @@ -1,77 +1,220 @@ -# ENVs - -This document describes the environment variables that can be used to configure the `ar.io` node. - -| ENV_NAME | TYPE | DEFAULT_VALUE | DESCRIPTION | -| ---------------------------------------- | -------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | -| START_HEIGHT | Number or "Infinity" | 0 | Starting block height for node synchronization (0 = start from the beginning) | -| STOP_HEIGHT | Number or "Infinity" | "Infinity" | Stop block height for node synchronization (Infinity = keep syncing until stopped) | -| TRUSTED_NODE_URL | String | "https://arweave.net" | Arweave node to use for fetching data | -| TRUSTED_GATEWAY_URL | String | "https://arweave.net" | Arweave node to use for proxying requests | -| TRUSTED_GATEWAYS_URLS | String | TRUSTED_GATEWAY_URL | A JSON map of gateways and priority | -| TRUSTED_ARNS_GATEWAY_URL | String | "https://__NAME__.arweave.dev" | ArNS gateway | -| INSTANCE_ID | String | "" | Adds an "INSTANCE_ID" field to output logs | -| LOG_FORMAT | String | "simple" | Sets the format of output logs, accepts "simple" and "json" | -| SKIP_CACHE | Boolean | false | If true, skips the local cache and always fetches headers from the node | -| PORT | Number | 4000 | ar.io node exposed port number | -| SIMULATED_REQUEST_FAILURE_RATE | Number | 0 | Number from 0 to 1, representing the probability of a request failing | -| AR_IO_WALLET | String | "" | Arweave wallet address used for staking and rewards | -| ADMIN_API_KEY | String | Generated | API key used for admin API requests (if not set, it's generated and logged into the console) | -| ADMIN_API_KEY_FILE | String | Generated | Alternative way to set the API key used for admin API requests via filepath, it takes precedene over ADMIN_API_KEY if defined | -| BACKFILL_BUNDLE_RECORDS | Boolean | false | If true, ar.io node will start indexing missing bundles | -| FILTER_CHANGE_REPROCESS | Boolean | false | If true, all indexed bundles will be reprocessed with the new filters (you can use this when you change the filters) | -| ON_DEMAND_RETRIEVAL_ORDER | String | s3,trusted-gateways,chunks,tx-data | Data source retrieval order for on-demand data requests | -| BACKGROUND_RETRIEVAL_ORDER | String | chunks,s3,trusted-gateways,chunks,tx-data | Data source retrieval order for background data requests (i.e., unbundling) | -| ANS104_UNBUNDLE_FILTER | String | {"never": true} | Only bundles compliant with this filter will be unbundled | -| ANS104_INDEX_FILTER | String | {"never": true} | Only bundles compliant with this filter will be indexed | -| ANS104_DOWNLOAD_WORKERS | String | 5 | Sets the number of ANS-104 bundles to attempt to download in parallel | -| ANS104_UNBUNDLE_WORKERS | Number | 0, or 1 if filters are set | Sets the number of workers used to handle unbundling | -| DATA_ITEM_FLUSH_COUNT_THRESHOLD | Number | 1000 | Sets the number of new data items indexed before flushing to to stable data items | -| MAX_FLUSH_INTERVAL_SECONDS | Number | 600 | Sets the maximum time interval in seconds before flushing to stable data items | -| WRITE_ANS104_DATA_ITEM_DB_SIGNATURES | Boolean | true | If true, the data item signatures will be written to the database. | -| WRITE_TRANSACTION_DB_SIGNATURES | Boolean | true | If true, the transactions signatures will be written to the database. | -| ENABLE_DATA_DB_WAL_CLEANUP | Boolean | false | If true, the data database WAL cleanup worker will be enabled | -| ENABLE_BACKGROUND_DATA_VERIFICATION | Boolean | false | If true, unverified data will be verified in background | -| MAX_DATA_ITEM_QUEUE_SIZE | Number | 100000 | Sets the maximum number of data items to queue for indexing before skipping indexing new data items | -| ARNS_ROOT_HOST | String | undefined | Domain name for ArNS host | -| SANDBOX_PROTOCOL | String | undefined | Protocol setting in process of creating sandbox domain in ArNS (ARNS_ROOT_HOST needs to be set for this env to have any effect) | -| START_WRITERS | Boolean | true | If true, start indexing blocks, tx, ANS104 bundles | -| RUN_OBSERVER | Boolean | true | If true, runs the Observer alongside the gateway to generate Network compliance reports | -| MIN_RELEASE_NUMBER | String | 0 | Sets the minimum Gateway release version to check while doing a gateway version assessment | -| AR_IO_NODE_RELEASE | String | 0 | Sets the current ar.io node version to be set on X-AR-IO-Node-Release header on requests to the reference gateway | -| OBSERVER_WALLET | String | "" | The public wallet address of the wallet being used to sign report upload transactions and contract interactions for Observer | -| CHUNKS_DATA_PATH | String | "./data/chunks" | Sets the location for chunked data to be saved. If omitted, chunked data will be stored in the `data` directory | -| CONTIGUOUS_DATA_PATH | String | "./data/contiguous" | Sets the location for contiguous data to be saved. If omitted, contiguous data will be stored in the `data` directory | -| HEADERS_DATA_PATH | String | "./data/headers" | Sets the location for header data to be saved. If omitted, header data will be stored in the `data` directory | -| SQLITE_DATA_PATH | String | "./data/sqlite" | Sets the location for sqlite indexed data to be saved. If omitted, sqlite data will be stored in the `data` directory | -| DUCKDB_DATA_PATH | String | "./data/duckdb" | Sets the location for duckdb data to be saved. If omitted, duckdb data will be stored in the `data` directory | -| TEMP_DATA_PATH | String | "./data/tmp" | Sets the location for temporary data to be saved. If omitted, temporary data will be stored in the `data` directory | -| LMDB_DATA_PATH | String | "./data/LMDB" | Sets the location for LMDB data to be saved. If omitted, LMDB data will be stored in the `data` directory | -| CHAIN_CACHE_TYPE | String | "redis" | Sets the method for caching chain data, defaults redis if gateway is started with docker-compose, otherwise defaults to LMDB | -| REDIS_CACHE_URL | String (URL) | "redis://localhost:6379" | URL of Redis database to be used for caching | -| REDIS_CACHE_TTL_SECONDS | Number | 28800 | TTL value for Redis cache, defaults to 8 hours (28800 seconds) | -| ENABLE_FS_HEADER_CACHE_CLEANUP | Boolean | true if starting with docker, otherwise false | If true, periodically deletes cached header data | -| NODE_JS_MAX_OLD_SPACE_SIZE | Number | 2048 or 8192, depending on number of workers | Sets the memory limit, in Megabytes, for NodeJs. Default value is 2048 if using less than 2 unbundle workers, otherwise 8192 | -| SUBMIT_CONTRACT_INTERACTIONS | Boolean | true | If true, Observer will submit its generated reports to the ar.io Network | -| REDIS_MAX_MEMORY | String | 256mb | Sets the max memory allocated to Redis | -| REDIS_EXTRA_FLAGS | String | --save "" --appendonly no | Additional CLI flags passed to Redis | -| WEBHOOK_TARGET_SERVERS | String | undefined | Target servers for webhooks | -| WEBHOOK_INDEX_FILTER | String | {"never": true} | Only emit webhooks for transactions and data items compliant with this filter | -| WEBHOOK_BLOCK_FILTER | String | {"never": true} | Only emit webhooks for blocks compliant with this filter | -| CONTIGUOUS_DATA_CACHE_CLEANUP_THRESHOLD | Number | undefined | Sets the age threshold in seconds; files older than this are candidates for contiguous data cache cleanup | -| ENABLE_MEMPOOL_WATCHER | Boolean | false | If true, the observer will start indexing pending tx from the mempool | -| MEMPOOL_POLLING_INTERVAL_MS | Number | 30000 | Sets the mempool polling interval in milliseconds | -| TAG_SELECTIVITY | String | Refer to config.ts | A JSON map of tag names to selectivity weights used to order SQLite tag joins | -| MAX_EXPECTED_DATA_ITEM_INDEXING_INTERVAL_SECONDS | Number | undefined | Sets the max expected data item indexing interval in seconds | -| AR_IO_SQLITE_BACKUP_S3_BUCKET_NAME | String | "" | S3-compatible bucket name, used by the Litestream backup service | -| AR_IO_SQLITE_BACKUP_S3_BUCKET_REGION | String | "" | S3-compatible bucket region, used by the Litestream backup service | -| AR_IO_SQLITE_BACKUP_S3_BUCKET_ACCESS_KEY | String | "" | S3-compatible bucket access_key credential, used by Litestream backup service, omit if using resource-based IAM role | -| AR_IO_SQLITE_BACKUP_S3_BUCKET_SECRET_KEY | String | "" | S3-compatible bucket access_secret_key credential, used by Litestream backup service, omit if using resource-based IAM role | -| AR_IO_SQLITE_BACKUP_S3_BUCKET_PREFIX | String | "" | A prepended prefix for the S3 bucket where SQLite backups are stored. | -| AWS_ACCESS_KEY_ID | String | undefined | AWS access key ID for accessing AWS services | -| AWS_SECRET_ACCESS_KEY | String | undefined | AWS secret access key for accessing AWS services | -| AWS_REGION | String | undefined | AWS region where the resources are located | -| AWS_ENDPOINT | String | undefined | Custom endpoint for AWS services | -| AWS_S3_CONTIGUOUS_DATA_BUCKET | String | undefined | AWS S3 bucket name used for storing data | -| AWS_S3_CONTIGUOUS_DATA_PREFIX | String | undefined | Prefix for the S3 bucket to organize data | -| CHUNK_POST_MIN_SUCCESS_COUNT | String | "3" | minimum count of 200 responses for of a given chunk to be considered properly seeded | +# Environment Variables + +A list of environment variables that are used by the ar.io node and its +components. These can be found in the [`src/config.ts`][src/config.ts] file. + +## Server Configuration + +| Variable | Description | Default | +| ----------------------------- | --------------------------------------------- | ------------ | +| PORT | HTTP server port | 4000 | +| ADMIN_API_KEY | API key for accessing admin HTTP endpoints | Random value | +| ADMIN_API_KEY_FILE | File containing admin API key | - | +| HEALTHCHECK_INTERVAL_SECONDS | Interval for healthcheck | 60 | +| HEALTHCHECK_TIMEOUT_SECONDS | Timeout for healthcheck | 10 | +| HEALTHCHECK_FAILURE_THRESHOLD | Failure threshold for healthcheck | 3 | +| HEALTHCHECK_SUCCESS_THRESHOLD | Success threshold for healthcheck | 2 | +| NODE_JS_MAX_OLD_SPACE_SIZE | Sets the memory limit for NodeJs in Megabytes | 2048/8192 | +| ENABLE_METRICS_ENDPOINT | Enable metrics endpoint | - | +| LOG_LEVEL | Logging level | debug | + +## File Configuration + +| CHUNKS_DATA_PATH | Sets the location for chunked data | "./data/chunks" | +| CONTIGUOUS_DATA_PATH | Sets the location for contiguous data | "./data/contiguous" | +| HEADERS_DATA_PATH | Sets the location for header data | "./data/headers" | +| SQLITE_DATA_PATH | Sets the location for sqlite indexed data | "./data/sqlite" | +| DUCKDB_DATA_PATH | Sets the location for duckdb data | "./data/duckdb" | +| TEMP_DATA_PATH | Sets the location for temporary data | "./data/tmp" | +| LMDB_DATA_PATH | Sets the location for LMDB data | "./data/LMDB" | + +## AWS Configuration + +| Variable | Description | Default | +| ---------------------------------------- | ------------------------------------------------------------------------ | ------- | +| AWS_ACCESS_KEY_ID | AWS access key ID | - | +| AWS_SECRET_ACCESS_KEY | AWS secret access key | - | +| AWS_REGION | AWS region | - | +| AWS_ENDPOINT | AWS endpoint URL | - | +| AWS_S3_CONTIGUOUS_DATA_BUCKET | S3 bucket for contiguous data | - | +| AWS_S3_CONTIGUOUS_DATA_PREFIX | S3 prefix for contiguous data | - | +| AR_IO_SQLITE_BACKUP_S3_BUCKET_NAME | S3-compatible bucket name for Litestream backup service | "" | +| AR_IO_SQLITE_BACKUP_S3_BUCKET_REGION | S3-compatible bucket region for Litestream backup service | "" | +| AR_IO_SQLITE_BACKUP_S3_BUCKET_ACCESS_KEY | S3-compatible bucket access key credential for Litestream backup service | "" | +| AR_IO_SQLITE_BACKUP_S3_BUCKET_SECRET_KEY | S3-compatible bucket secret key credential for Litestream backup service | "" | +| AR_IO_SQLITE_BACKUP_S3_BUCKET_PREFIX | Prepended prefix for the S3 bucket where SQLite backups are stored | "" | + +## AR.IO Network + +| Variable | Description | Default | +| ------------------ | ------------------ | ------- | +| AR_IO_WALLET | AR.IO wallet | - | +| IO_PROCESS_ID | AR.IO process ID | - | +| AR_IO_NODE_RELEASE | AR.IO node release | - | + +## AO Configuration + +| Variable | Description | Default | +| -------------- | ----------------------- | ------- | +| AO_MU_URL | AO Memory Unit URL | - | +| AO_CU_URL | AO Compute Unit URL | - | +| AO_GRAPHQL_URL | AO GraphQL endpoint URL | - | +| AO_GATEWAY_URL | AO Gateway URL | - | + +## ARNS Configuration + +| Variable | Description | Default | +| --------------------------------------------------------- | ------------------------------------------------------ | ----------------- | +| ARNS_ROOT_HOST | Root host for ARNS | - | +| ARNS_CACHE_TYPE | Cache type for ARNS resolution data | lmdb | +| ARNS_CACHE_MAX_KEYS | Maximum number of keys to store in cache | 10000 | +| ARNS_CACHE_TTL_SECONDS | TTL for resolved data in cache | 3600 | +| ARNS_NAMES_CACHE_TTL_SECONDS | TTL for base names in cache | 300 | +| ARNS_NAME_LIST_CACHE_MISS_REFRESH_INTERVAL_SECONDS | Refresh interval of base ArNS name cache on cache miss | 10 | +| ARNS_NAME_LIST_CACHE_HIT_REFRESH_INTERVAL_SECONDS | Refresh interval of base ArNS name cache on cache hit | 3600 | +| ARNS_RESOLVER_OVERRIDE_TTL_SECONDS | Override ANT record TTL | 0 | +| ARNS_RESOLVER_PRIORITY_ORDER | Resolution priority order | on-demand,gateway | +| TRUSTED_ARNS_GATEWAY_URL | Trusted ArNS gateway URL | - | +| ARNS_ON_DEMAND_CIRCUIT_BREAKER_TIMEOUT_MS | AO CU response timeout | 15000 | +| ARNS_ON_DEMAND_CIRCUIT_BREAKER_ERROR_THRESHOLD_PERCENTAGE | Circuit breaker error threshold | 50 | +| ARNS_ON_DEMAND_CIRCUIT_BREAKER_ROLLING_COUNT_TIMEOUT_MS | Circuit breaker rolling count timeout | 60000 | +| ARNS_ON_DEMAND_CIRCUIT_BREAKER_RESET_TIMEOUT_MS | Circuit breaker reset timeout | 300000 | +| ARNS_ANT_STATE_CACHE_MISS_REFRESH_INTERVAL_SECONDS | Refresh interval of ANT state cache on cache miss | 10 | +| ARNS_ANT_STATE_CACHE_HIT_REFRESH_INTERVAL_SECONDS | Refresh interval of ANT state cache on cache hit | 300 | + +## Sandboxing + +| Variable | Description | Default | +| ------------------- | ------------------------------------ | ------- | +| SANDBOX_PROTOCOL | Protocol for sandboxing redirects | https | +| SANDBOX_HOST | Host for sandboxing redirects | - | +| SANDBOX_PORT | Port for sandboxing redirects | - | +| SANDBOX_PATH_PREFIX | Path prefix for sandboxing redirects | - | + +## Arweave Nodes + +| Variable | Description | Default | +| -------------------------------------- | ------------------------------------------ | ---------------------------- | +| TRUSTED_NODE_URL | Trusted Arweave node URL | https://arweave.net | +| TRUSTED_GATEWAY_URL | Trusted gateway URL | https://arweave.net | +| TRUSTED_GATEWAYS_URLS | Trusted gateways URLs and weights | { 'https://arweave.net': 1 } | +| CHUNK_POST_URLS | Chunk POST URLs | https://arweave.net/chunk | +| SECONDARY_CHUNK_POST_URLS | Secondary chunk POST URLs | - | +| SECONDARY_CHUNK_POST_CONCURRENCY_LIMIT | Secondary chunk POST concurrency limit | - | +| SECONDARY_CHUNK_POST_MIN_SUCCESS_COUNT | Secondary chunk POST minimum success count | - | +| CHUNK_POST_RESPONSE_TIMEOUT_MS | Chunk POST response timeout | - | +| CHUNK_POST_ABORT_TIMEOUT_MS | Chunk POST abort timeout | - | +| CHUNK_POST_MIN_SUCCESS_COUNT | Chunk POST minimum success count | - | + +## Header Cache + +| Variable | Description | Default | +| ----------------------- | -------------------------------------- | --------------------------- | +| CHAIN_CACHE_TYPE | Cache type for chain data | lmdb | +| REDIS_CACHE_URL | Redis URL | - | +| REDIS_USE_TLS | Whether to use TLS | false | +| REDIS_MAX_MEMORY | Sets the max memory allocated to Redis | "256mb" | +| REDIS_EXTRA_FLAGS | Additional CLI flags passed to Redis | "--save "" --appendonly no" | +| REDIS_CACHE_TTL_SECONDS | TTL value for Redis cache | 28800 | +| SKIP_CACHE | Whether to bypass header cache | false | + +## Data Retrieval + +| Variable | Description | Default | +| ----------------------------------- | ------------------------------------------- | ------- | +| ON_DEMAND_RETRIEVAL_ORDER | Order for on-demand data retrieval | - | +| BACKGROUND_RETRIEVAL_ORDER | Order for background data retrieval | - | +| GET_DATA_CIRCUIT_BREAKER_TIMEOUT_MS | Circuit breaker timeout for data operations | 500 | + +## Contiguous Data Cache + +| Variable | Description | Default | +| --------------------------------------- | ------------------------------------------- | ------- | +| CONTIGUOUS_DATA_CACHE_CLEANUP_THRESHOLD | Threshold for contiguous data cache cleanup | - | + +## Data Verification + +| Variable | Description | Default | +| --------------------------------------------- | ----------------------------------------- | ------- | +| ENABLE_BACKGROUND_DATA_VERIFICATION | Enable background data verification | false | +| BACKGROUND_DATA_VERIFICATION_INTERVAL_SECONDS | Interval for background data verification | 600 | + +## Filesystem Cleanup + +| Variable | Description | Default | +| ---------------------------------------- | --------------------------------------------------------------------------- | ------- | +| FS_CLEANUP_WORKER_BATCH_SIZE | Number of files to process in each batch | 2000 | +| FS_CLEANUP_WORKER_BATCH_PAUSE_DURATION | Pause duration between batches in milliseconds | 5000 | +| FS_CLEANUP_WORKER_RESTART_PAUSE_DURATION | Pause duration before restarting cleanup from the beginning in milliseconds | 3600000 | +| ENABLE_FS_HEADER_CACHE_CLEANUP | Whether to enable filesystem header cache cleanup | false | + +## Indexing + +| Variable | Description | Default | +| ------------------------------------------------ | ------------------------------------------------------------------------------------------------------- | ------- | +| START_HEIGHT | Starting block height | - | +| STOP_HEIGHT | Stopping block height | - | +| WRITE_TRANSACTION_DB_SIGNATURES | Whether to write transaction signatures to the database | false | +| FILTER_CHANGE_REPROCESS | Whether to attempt to rematch old bundles using the current filter | false | +| BACKFILL_BUNDLE_RECORDS | Whether to backfill bundle records (only needed for DBs that existed before unbundling was implemented) | false | +| MAX_DATA_ITEM_QUEUE_SIZE | Maximum number of data items to queue for indexing before skipping indexing new data items | 100000 | +| BUNDLE_DATA_IMPORTER_QUEUE_SIZE | Maximum number of bundles to queue for unbundling before skipping unbundling new bundles | 1000 | +| DATA_ITEM_FLUSH_COUNT_THRESHOLD | Maximum number of data items indexed to flush stable data items | 1000 | +| MAX_FLUSH_INTERVAL_SECONDS | Maximum interval in seconds to flush stable data items | 600 | +| ENABLE_DATA_DB_WAL_CLEANUP | Whether to enable the data database WAL cleanup worker | false | +| MAX_EXPECTED_DATA_ITEM_INDEXING_INTERVAL_SECONDS | Maximum expected data item indexing interval in seconds | - | + +## Mempool Watcher + +| Variable | Description | Default | +| --------------------------- | ---------------------------- | ------- | +| ENABLE_MEMPOOL_WATCHER | Enable mempool watcher | false | +| MEMPOOL_POLLING_INTERVAL_MS | Interval for mempool polling | 30000 | + +## ANS104 Configuration + +| Variable | Description | Default | +| ------------------------------------ | --------------------------------------------------------- | ------- | +| ANS104_UNBUNDLE_FILTER | Filter for unbundling transactions | - | +| ANS104_INDEX_FILTER | Filter for indexing bundle items | - | +| ANS104_UNBUNDLE_WORKERS | Number of ANS-104 unbundling workers | 1 | +| ANS104_DOWNLOAD_WORKERS | Number of ANS-104 bundle downloads to attempt in parallel | 5 | +| WRITE_ANS104_DATA_ITEM_DB_SIGNATURES | Whether to write data item signatures to the database | false | +| WRITE_TRANSACTION_DB_SIGNATURES | Whether to write transaction signatures to the database | false | + +## GraphQL Configuration + +| Variable | Description | Default | +| --------------- | -------------------- | ------- | +| GRAPHQL_URL | GraphQL URL | - | +| TAG_SELECTIVITY | Selectivity for tags | - | + +## ClickHouse Configuration + +| Variable | Description | Default | +| -------------- | -------------- | ------- | +| CLICKHOUSE_URL | ClickHouse URL | - | + +## Webhook Configuration + +| Variable | Description | Default | +| ---------------------- | ---------------------------------------------- | ------- | +| WEBHOOK_TARGET_SERVERS | Comma-separated list of webhook target servers | - | +| WEBHOOK_INDEX_FILTER | Filter for triggering webhooks | - | +| WEBHOOK_BLOCK_FILTER | Filter for block-based webhook triggers | - | + +## AR.IO Observer Configuration + +| Variable | Description | Default | +| ---------------------------- | ------------------------------------------------------------------------------------------ | ------- | +| RUN_OBSERVER | If true, runs the Observer alongside the gateway to generate Network compliance reports | true | +| MIN_RELEASE_NUMBER | Sets the minimum Gateway release version to check while doing a gateway version assessment | 0 | +| OBSERVER_WALLET | The public wallet address used to sign report upload transactions | - | +| SUBMIT_CONTRACT_INTERACTIONS | If true, Observer will submit its generated reports to the ar.io Network | true | + +## Development, Testing, and Debugging + +| Variable | Description | Default | +| ------------------------------ | --------------------------------------- | ------- | +| SIMULATED_REQUEST_FAILURE_RATE | Rate to simulate request failures (0-1) | 0 | +| AR_IO_SDK_LOG_LEVEL | SDK logging level | none |