Loading…
Polling a blockchain is wasteful. You burn compute, miss events between intervals, and rewrite the same retry logic every project.
FalconHook watches every Algorand round in real-time, matches your rules, and delivers a signed webhook to your endpoint, typically under a second after the block lands.
Every event insert uses ON CONFLICT DO NOTHING keyed on tenant, txn, and network. Re-processing a block (whether from a crash recovery or operator replay) is always safe and produces no duplicates.
Webhook URLs are DNS-resolved and pinned at creation time. Private IPs, loopback, and link-local ranges are blocked. DNS pinning prevents TOCTOU rebinding attacks.
Failed deliveries retry with capped exponential delay → min(2^attempt, 60s). After max attempts, they move to a dead-letter queue for manual inspection.
The block fetcher advances its watermark only after a successful push to Redis. Crashes simply re-fetch the last round → no data loss, no gaps.
Every webhook includes an HMAC-SHA256 signature and a timestamp header. Recipients can verify authenticity and reject replayed requests.
Blocks move between Redis lists with BLMOVE → items are only removed from the processing list after the DB transaction commits. Incomplete work is recovered on restart.
Ingest workers and dispatchers are stateless → more instances can be added to increase throughput. Per-destination semaphores prevent one slow endpoint from blocking others.
Deliveries that exhaust all retries land in a dead status visible in the dashboard. No silent failures → you always know when something didn’t make it.