[Release 59] - 2025-11-24
This is a recommended release due to important fixes for nested bundle data
item offset handling that could cause incorrect data retrieval. The release
fixes offset calculations in both the TurboDynamoDB data source and database
root TX lookups, ensuring correct data is served for deeply nested bundle
items. It also includes fixes for ArNS manifest path encoding and Observer
wallet failure reporting for shared FQDN gateways. New features include a
dry-run mode for testing transaction uploads without posting to the network,
and a monitoring tool for historical DHA chunk nodes.
Added
-
Historical DHA Chunk Nodes Monitoring Tool: New operator utility for
monitoring response times and availability of Arweave data endpoints
(tools/monitor-historical-dha-chunk-nodes)- Monitors data-N (1-17) and tip-N (1-5) endpoints with configurable ranges
- Continuous monitoring mode with real-time table output and statistics
- JSON export with detailed results and metadata
- Note: This is a special-purpose tool included for reference and potential
usefulness to operators debugging data retrieval issues
-
Dry-Run Mode for Upload Testing: New
ARWEAVE_POST_DRY_RUNenvironment
variable enables testing transaction and chunk uploads without posting to the
Arweave network- When enabled, both
POST /txandPOST /chunkrequests are simulated with
200 OK responses - Works on both port 3000 (Envoy) and port 4000 (direct to Node.js app)
- Envoy routing is conditional: routes to core for dry-run, to Arweave nodes
when disabled - Perfect for testing apps like ArDrive and large uploads without burning AR
tokens - By default, transactions are validated (signature verification) and chunks
are validated (merkle proof verification) before returning success - Set
ARWEAVE_POST_DRY_RUN_SKIP_VALIDATION=trueto skip validation for faster
testing - Only the final network broadcast is skipped
- When enabled, both
Changed
- When CDP API keys are provided (
CDP_API_KEY_IDandCDP_API_KEY_SECRET),
the gateway now automatically uses the Coinbase facilitator with enhanced
Onramp integration, overriding theX_402_USDC_FACILITATOR_URLsetting
Fixed
-
PostgreSQL SSL Configuration: Fixed inverted SSL flag logic where
LEGACY_PSQL_SSL_REJECT_UNAUTHORIZED=true(default) was incorrectly disabling
certificate validation instead of enabling it- Now correctly applies strict SSL validation by default
- Set to
falseto disable certificate validation for cloud providers with
self-signed certificates
-
PostgreSQL Connection Timeouts: Added timeout configuration for the legacy
PostgreSQL chunk metadata source to prevent system hangs- Server-side
statement_timeout(default: 5s) prevents queries from running
forever idle_in_transaction_session_timeout(default: 10s) cleans up stuck
transactions- Connection pool settings:
max,idle_timeout,connect_timeout,
max_lifetime - All settings configurable via environment variables
(LEGACY_PSQL_STATEMENT_TIMEOUT_MS, etc.) - Graceful Postgres connection cleanup on shutdown
- Prevents the chunk serving system from becoming completely unresponsive when
Postgres is slow or unreachable
- Server-side
-
Security Dependency Updates: Fixed 6 security vulnerabilities identified by
yarn audit- Added
tar@7.5.2resolution to fix moderate severity race condition in
duckdb-async dependency chain - Upgraded
@cucumber/cucumber,@testcontainers/localstack,testcontainers,
andrimrafto fix high severity glob CLI command injection vulnerabilities - Upgraded
viemto ^2.39.3 - All existing resolutions (secp256k1, elliptic, ws, semver) remain required for
vulnerabilities in@dha-team/arbundlestransitive dependencies
- Added
-
ArNS Manifest Path Encoding: Fixed manifest paths with URL-encoded
characters (e.g., spaces as%20) failing when accessed via ArNS subdomain- Direct TX ID access worked because Express auto-decodes
req.params - ArNS subdomain access failed because
req.pathis not auto-decoded - Now decodes manifest paths in the ArNS middleware for consistent behavior
- Direct TX ID access worked because Express auto-decodes
-
TurboDynamoDB Data Source: Fixed nested bundle data items having incorrect
rootDataItemOffsetvalues when retrieved from Turbo's DynamoDB- The raw data path was overwriting correct absolute offsets cached from the
rootParentInfopath with incorrect values (offset: 0, dataOffset: payloadDataStart) - Now preserves the correct offsets by only caching size and contentType from raw data
- The raw data path was overwriting correct absolute offsets cached from the
-
Database Root TX Offset Lookup: Fixed
getRootTxFromDatareturning incorrect
offset for nested bundle data items- Was returning
root_parent_offset(parent bundle offset) instead of
root_data_item_offset(absolute data item offset) - Added fallback calculations for
rootDataItemOffsetandrootDataOffsetwhen
pre-computed values are NULL
- Was returning
-
Observer: Updated to 2515e6a - Fixed incorrect wallet failure reporting
for shared FQDN gateways- When multiple wallets share the same FQDN, now correctly identifies which
specific wallets failed ownership verification - Reports non-matching wallets as failed even when gateway passes overall
- Ensures save-observations contract interactions accurately reflect actual
ownership failures
- When multiple wallets share the same FQDN, now correctly identifies which
-
BUNDLER_URLS environment variable was missing from docker-compose.yaml
-
x402 payment processor now correctly uses Coinbase CDP facilitator when CDP
credentials are configured
Docker Images
ghcr.io/ar-io/ar-io-envoy:4755fa0a2deb258bfaeaa91ba3154f1f7ef41fdaghcr.io/ar-io/ar-io-core:4fc4c14ec6ef220298cfaad313f9448c286feec3ghcr.io/ar-io/ar-io-clickhouse-auto-import:4512361f3d6bdc0d8a44dd83eb796fd88804a384ghcr.io/ar-io/ar-io-litestream:be121fc0ae24a9eb7cdb2b92d01f047039b5f5e8