Configure transaction processing, batching, locking, and coalescing in Blnk.
This page covers the settings that control how Blnk executes, batches, and locks transactions.For queue names, sharding, retries, and hot-lane routing, see Queue configuration.
In-memory channel buffer size for the batch worker used by ProcessTransactionInBatches (not a Redis queue depth limit).
1000
BLNK_TRANSACTION_MAX_WORKERS
Concurrency for batch and reconciliation transaction workers. For the main Redis-backed queued transaction pool, use BLNK_QUEUE_TRANSACTION_WORKER_CONCURRENCY and hot-lane settings instead.
10
BLNK_TRANSACTION_INDEX_QUEUE_PREFIX
Collection / index name prefix for transaction search documents (e.g. Typesense), not a Redis transaction queue name.
transactions
BLNK_TRANSACTION_ENABLE_QUEUED_CHECKS
Includes queued debits when loading balances for pre-transaction validation.
When Coalescing is enabled, Blnk identifies the queued transactions based on if they share the same source, destination, and currency, batches them in-memory, and applies them in a single commit.This works best when queued traffic arrives in bursts and many transactions overlap on the same balances.
This controls whether Blnk validates transaction references across the batch before commit.Leaving it as false (the default) is safer because it helps catch duplicate or conflicting references within the same batch, ensuring that your transactions remain idempotent.
Please note: Disabling reference checks may reduce some overhead, but it also increases the risk of duplicate-reference issues slipping through batched execution.
How long a distributed balance lock can live once acquired, in seconds (non-zero values).
1800
BLNK_TRANSACTION_LOCK_WAIT_TIMEOUT
How long Blnk waits when acquiring transaction balance locks (shared path for direct and queued processing, including coalesced batch execution), in seconds.
This controls how long a transaction should wait when acquiring a lock before the transaction fails with a lock error.If locks are not acquired in time, the operation fails with a lock error. For a direct (skip_queue=true) request, that is typically returned to the client. For queued work, workers may retry or reject depending on queue settings, e.g. BLNK_QUEUE_REJECT_LOCK_CONTENTION_IMMEDIATELY and BLNK_QUEUE_MAX_RETRY_ATTEMPTS.
Tip: Keep the default value unless transactions regularly outlive the lock window. This config is especially important for transactions that bypass the queue.
The optional transaction hash chain seals applied transactions into a global tamper-evident sequence. It is disabled by default. When enabled, a background processor backfills unchained rows and appends new transactions after a trailing delay.Run blnk verify-chain from your Core deployment to check chain integrity.In blnk.json, poll_interval and trailing_delay are integer seconds. Environment variables accept Go duration format (for example 5s, 30s).
We are very happy to help you make the most of Blnk, regardless of whether it is your first time or you are switching from another tool.To ask questions or discuss issues, please contact us or join our Discord community.