Bui Duc An
senior backend engineer · Ho Chi Minh City

Case study · Regulated fintech

Project Revival

My scope inside FTX Japan's customer asset return. A restrained account, kept to what is publicly safe to share.

Some of what happened inside this project belongs in a conversation, not on a public page. This writeup stays inside publicly reported facts and the scope I personally owned. The reasoning behind specific technical choices lives with me and my former colleagues.

Context

FTX Group filed for bankruptcy on 11 November 2022. The collapse froze customer assets across most of the group's entities and became one of the largest sudden losses of customer funds in crypto's history.

FTX Japan was different. Under Japan's Financial Services Agency, a licensed crypto exchange must keep customer assets segregated from company operating funds, a rule that predates FTX by years and that Japan enforced strictly. When the global bankruptcy hit, FTX Japan's customer balances were still there. What was missing was not the money. It was an authoritative way to move the money back to the right people.

There was a further wrinkle. FTX had acquired Liquid Group in early 2022, and the two platforms had been in the middle of merging when the parent company failed. Some customers held balances on both sides. Some existed only on one. Some existed on both under slightly different identities.

What had to happen

Reopen customer withdrawals safely, under regulator scrutiny, without inheriting anything ambiguous from the parent's failure. The forcing functions were straightforward and non-negotiable: every customer must be recognised as the correct person, be credited with the correct balance, and, once they clicked withdraw, receive exactly what they were owed and not a satoshi more or less. The system had to survive an audit that was going to happen whether we asked for it or not.

Constraints

  • Active bankruptcy proceedings surrounding the parent company.
  • JFSA scrutiny: the regulator was watching every step, and any misstep would push the reopening further out.
  • A timeline measured in months, not quarters: the goal was to restore access as quickly as possible while doing it right.
  • Six people at peak. Small enough that individual scope was visible; large enough that no one person could hold the whole system.
  • A data landscape that had been mid-migration when the parent collapsed: FTX-side records and Liquid-side records covering overlapping customer populations, with the merge unfinished.

My role

The overall design of the balance-confirmation and withdrawal flow was owned by my boss and the team, together. I owned two focused implementation pieces inside that design, pieces that other people depended on but were not building themselves.

Balance verification. The component that computed, per customer, the authoritative amount to be returned at withdrawal time. Deterministic and re-runnable (running it twice on the same input had to produce the same output), so it could be executed under scrutiny without side effects, and so any discrepancy pointed at data, not at the code.

User matching across the FTX and Liquid ledgers. Identity resolution across the two customer populations, so that the same person appeared once in the return flow with the correct combined balance. Wrong joins had two failure modes, both unacceptable: shorting a customer their own money, or crediting the wrong account.

Neither piece is glamorous. Both are the kind of quiet reconciliation work a regulator asks about first, and the kind that, when done right, no customer ever notices.

Shape of the design

At the level of "what an engineer would sketch on a napkin," the flow was: identity resolution first, so the system knew who was who; then balance verification against the ledger of record, so it knew what each identity was owed; then a gated withdrawal execution that read from that verified balance and nothing else; then a post-execution reconciliation pass that closed the loop on every moved asset.

Everything upstream of the money movement was idempotent by design. Everything downstream was audited by default. The operational discipline came from what my boss and the team had already thought through before I joined the piece; my job was to make my two components deserve the trust the rest of the flow placed in them.

Result

FTX Japan reopened customer withdrawals on 21 February 2023. The publicly reported figure returned to customers was approximately US$140 million (¥19.6 billion). FTX Japan was the first FTX entity anywhere in the world to give customers their funds back.

The entity survived the parent's failure, later transferring to bitFlyer Group and continuing as Custodiem: a different owner, the same platform I've been part of since 2016.

What this page deliberately does not cover

The internal balance model, the specific rules for identity matching, the eligibility logic that gated withdrawals, and every "we thought X and it turned out to be Y" moment along the way: all of that lives in conversation, not on a public page. If you'd like to walk through those in an interview, the shape of the two problems above is where we'd start.

Working on something similar?

I'm open to remote contractor or EOR engagement from Ho Chi Minh City for regulated-fintech and crypto-infrastructure teams. Get in touch →