Skip to content
Omkar
§01/work

Bitzees Tech

Centralized crypto exchange

The complete backend of a centralized exchange — architecture, APIs, services. Deposits and withdrawals across five chains, with full nodes running on EC2 behind monitoring APIs.

Role
Senior Blockchain / Node.js Developer
Period
December 2022 – May 2024
Stack
Node.js · Express · PostgreSQL · AWS EC2 · Ethers.js

What it was

A centralized cryptocurrency exchange. I built the backend — architecture through to the APIs the rest of the product was assembled on top of. End-to-end ownership, which in practice meant that if a withdrawal didn't arrive, it was mine to explain.

What I built

Deposit and withdrawal APIs across five chains. Ethereum, BSC, Polygon, Avalanche and Solana. Four of those are EVM chains and share most of their integration surface. Solana does not, and needed its own path for address derivation, transaction construction and confirmation semantics.

Full nodes on AWS EC2. Rather than depending entirely on third-party RPC providers, the exchange ran its own nodes, with APIs in front of them for integration and health monitoring. Running your own nodes trades a vendor bill for an operational burden, and the operational burden is real: five chains, five sync models, five distinct ways to fall behind the head of the chain without saying so.

High-throughput transaction processing. Deposit detection, confirmation tracking, and withdrawal dispatch, all of which have to remain correct while running concurrently against chains that reorganise.

The part that was actually hard

Nothing about a single transfer is difficult. The difficulty is that a deposit is not an event — it is a claim that becomes progressively more credible as confirmations arrive, and can be retracted. The backend has to hold a position on how certain it is about somebody's balance, at every moment, across five chains with different finality guarantees, without ever crediting the same deposit twice.

That is a bookkeeping problem wearing a blockchain costume, and it is where the design time went.

TODO(omkar): if you can share throughput, chain counts at peak, or the confirmation thresholds you settled on per chain, they belong here. Real numbers do more work than a paragraph.

← All work