Work

What I've built, and why it needed building.

Chiliz

Blockchain Engineer · Remote · Feb 2022 – present

Chiliz Chain

A layer 1 public blockchain. I work on its Geth-based client, in Go.

Most of that work is hard forks: network upgrades every node operator has to adopt at the same block height, so there's no gradual rollout and no cheap rollback. It's ongoing rather than a project with an end date. Areas I've worked on include token issuance rules and validator payout mechanics.

  • Go
  • Geth
  • Solidity

Validator health monitoring

Chiliz is accountable for a network it mostly doesn't run. I built the visibility.

The chain has 13+ validators, the nodes that produce blocks, and Chiliz operates two of them. Partners run the rest. I wrote an OpenTelemetry exporter that pushes node metrics into Datadog, and the dashboards the team reads them on.

  • Go
  • OpenTelemetry
  • Datadog

Staking smart contract

Holds over $2M of user funds. No security incidents.

I designed and built it for Socios.com and Peppercoin. It's upgradeable, so the design had to survive being changed later. Most of the effort went into pulling exact requirements out of several teams and settling on something maintainable, rather than into writing the Solidity.

  • Solidity
  • Foundry

Fireblocks MPC signing

Integrated it into Socios.com's blockchain services, then unblocked it.

MPC signing splits a private key into shares held by separate parties, so no single machine ever holds the whole key. Good for custody, not free in latency.

At peak hours it showed. The signing service ran on a cycle of roughly 300ms and handled one request per cycle, so a single slow request held up everything queued behind it. I got it to three per cycle. As far as I know the service is no longer used in production.

  • Fireblocks

governance.chiliz.com

Built the first version: the indexers, the API and the frontend.

It gives CHZ holders somewhere to stake on validators and vote on chain proposals. The frontend has been heavily modified since, so I wouldn't claim the site as it stands today. The indexers I wrote still run.

Chiliz Bridge

Forked ChainBridge into the bridge Chiliz runs in production.

It moves CHZ between Chiliz Chain and Ethereum. Forking was the point. Bridges are attacked constantly, and a codebase that has already survived production isn't something you reproduce on a deadline.

Later I cut its transaction fees by about 15%. The relayers, which watch one chain and submit the matching transaction on the other, had been paying a flat gas price on everything. I moved them to EIP-1559, which prices gas against current demand, so the bridge stops overpaying when the network is quiet.

  • Go
  • Solidity
  • EIP-1559

Bridge monitoring platform

A live view of every transfer, so operations stopped asking engineers.

A TypeScript indexer follows both sides of the bridge and records what it sees, a REST API sits on top, and a React dashboard shows where any given transfer currently is.

  • TypeScript
  • React

Cross-chain token deployment

60+ tokens deployed, and the tooling that let other people deploy them.

They run on Chiliz Chain, Base, Solana and Robinhood Chain via LayerZero, which lets one token exist on several chains and move between them.

Each deployment is a long sequence of steps that has to happen in order and in the right places, which meant it only happened when I was free. So I wrapped the whole sequence in CLI tooling that people outside the team can run themselves. That took about five days, working with Claude Code.

  • LayerZero

Biznetx

Full-stack Developer · Hybrid, Tbilisi · Jul 2017 – Feb 2022

Crypto payment platform

Built it and ran it.

It processed transactions across Bitcoin, Ethereum, Ripple, Stellar and Tron. Each of those has its own idea of what a transaction is, when it counts as final, and how it can fail. The job was hiding all of that behind one API.

  • Node.js
  • Express
  • Bitcoin
  • Ethereum
  • Ripple
  • Stellar
  • Tron

Stuck withdrawals, handled automatically

Ended all the manual work.

A withdrawal gets stuck when it goes out with a fee the network no longer thinks is worth mining, and then it just sits there. Someone used to have to spot it, find it and resend it by hand. Now they resend themselves, with fees that track what the network is charging at the time.

Cheaper Bitcoin transactions

Brought our Bitcoin fees down.

A Bitcoin fee scales with how large the transaction is in bytes, and that depends on how many earlier payments you pull in to fund it. I reworked how we picked those inputs and arranged the outputs.

Internal operations dashboard

The tool the operations team opened every day.

It tracked payments across all of those networks and let people dig into the ones that failed or got stuck, including payments running through outside providers. It also had tooling to replay a transaction by hand when that was what the situation needed. One place to look instead of several.

  • Node.js

Wenu

Backend and API for a contactless ordering platform for restaurants.

Scan a QR code at the table, browse the menu on your phone, order and pay from it. It landed while reusable paper menus were banned in Georgia. Wenu won a ₾100,000 GITA grant and reached more than 3,500 users across five restaurants.

  • Node.js
  • PostgreSQL

Earlier work

  • Vintage, a location-based marketplace for second-hand items. I owned the backend. Over 40k registered users; discontinued.
  • Agronavti, news and planning for Georgian farmers. Backend, plus the API reference the mobile developers worked from. Over 4k active users; looks abandoned now.
  • Eth-price.com, a real-time dashboard for 150+ cryptocurrencies. Backend, and server-side rendering for the React frontend.
  • Eldocs.net, project tracking for Georgian NGOs. Backend, and some of the frontend.
  • Tbilisi B&RF, an event app for forum attendees. I built the chat module, backend and React Native.

One thing worth stating plainly, because job descriptions tend to blur it: I use Kubernetes through kubectl and OpenLens to inspect and debug running services. I haven't set up clusters.