Case study · Taurus · 2018 — 2019

Crypto custody built to a bank’s standard, before banks held crypto.

Taurus set out in 2018 to become the first cryptocurrency custody solution for financial institutions. In its first year we built two products together: a regulated crypto exchange, and a desktop custody client where no transaction leaves without hardware-signed approvals from independent teams.

Client
Taurus, Geneva
Industry
Fintech · Digital assets
What we did
Product engineering, blockchain integration, security, DevOps
Engagement
Feb 2018 — Feb 2019
The custody client in 2018: every transfer approved by independent teams, tracked from creation to broadcast.
products in one year: a regulated exchange and a desktop custody client
2
independent team approvals before any transaction leaves custody
3
crypto exchanges integrated behind one shared interface
5
lines of code across the exchange’s front end and back end
~40k

The opportunity

Crypto was changing finance. Banks had nowhere safe to hold it.

In early 2018, cryptocurrency was one of the most important technologies reshaping the financial sector. But the institutions that wanted in had no custody that met their standards for security, control and regulation.

Taurus was founded in Geneva that year by former executives of major banks, who saw the chance to lead the space: custody built the way a bank would build it.

We joined in February 2018 as the engineering team. The first goal was a web exchange where private and corporate clients could sign up, pass verification and buy or sell crypto. Then came the harder one: a custody client for managing wallets, addresses and outgoing transactions.

Product one · Spring — summer 2018

The exchange

01Compliance

Onboarding a Swiss regulator would accept

  • Two verification flows. Private clients upload identity documents and a selfie. Companies add company details. Declarations are generated as PDFs, and documents are screened against AML watchlists.
  • Locked-down accounts. Mandatory two-factor authentication, phone verification with one-time codes, validated IBANs and whitelisted withdrawal addresses.
  • Sensible limits. A cap on a new client’s first order. The whole flow runs in English and French.
Taurus exchange 2018: identity verification step with personal details, phone verification and financial profile
2018 · Verify identity
Taurus exchange 2018: document upload step for ID, selfie and proof of address
2018 · Upload documents and selfie
Taurus exchange 2018: bank details step with IBAN and BIC for multiple currencies
2018 · Validated bank accounts
02Trading

One interface, five exchanges

Client orders in Bitcoin and Ethereum, paid in CHF, EUR or USD, were executed on external exchanges. Bitstamp was the default, with Kraken, GDAX, Bitfinex and Coinbase integrated behind one shared interface, so a venue could be added or swapped without touching the rest.

Live prices and order status were pushed to clients in real time, with tiered fees that fell as order size grew.

Taurus exchange 2018: buying bitcoin with CHF, showing fees and estimated cost
2018 · Buy with live rates and fees
Taurus exchange 2018: order confirmation summary before a market order
2018 · Order confirmation
Taurus exchange 2018: Bitcoin in CHF intraday chart with market stats
2018 · Markets, priced in CHF
03Reliability

Designed to miss messages, and still be right.

The Bitcoin and Ethereum nodes behind the exchange regularly lagged, dropped connections or returned incomplete data. So we built the Observer, a dedicated service that watches the networks for activity on the platform’s addresses and reports new and pending transactions.

Instead of hoping every update arrives, it assumes some won’t.

  1. CompareThe back end and the Observer regularly compare fingerprints of the address and transaction lists.
  2. Re-syncAny mismatch triggers a full re-sync, not another incremental update.
  3. Repeat safelyUpdates can be applied again and again without creating duplicate records.
04Accuracy

Every franc accounted for

Signing a transaction doesn’t finish it. After broadcast, the exchange tracked each one to final confirmation and handled the ones that stalled or were rejected, so clients’ orders and withdrawals always showed the right status.

The internal ledger had to match three outside sources at once: the blockchain, the exchanges where orders were executed, and client bank transfers. Every deposit, order, withdrawal and fee reconciles, because any difference is real money unaccounted for.

Product two · Autumn 2018

The custody client

05Hardware

Keys that never touch a server

Private keys and signing could never live on a server. Every transaction and whitelist change had to be signed by an operator on a personal YubiKey, so we built a local signing layer into a desktop app for macOS and Windows.

It talks to the hardware token directly, handles PIN entry and locked tokens, and turns hardware errors like “no token inserted” into clear messages for the operator. The data being signed is encoded in a strict binary format, so every signer signs exactly the same bytes.

06Zero trust

Don’t trust the server, verify

In custody software, the client can’t simply believe what the back end tells it. Before the app shows a whitelisted or deposit address as valid, it checks the address’s signature chain locally against known operator public keys.

If an address can’t be verified, it isn’t shown. Even a compromised or faulty back end can’t trick an operator into sending funds to an address nobody approved.

07Control

Four eyes on everything

Every outgoing transaction passed validations by three independent teams before it was released. Administrative changes, from users and trading rules to limits and whitelist entries, needed a second person’s approval before taking effect.

Each role, whether initiator, validator or admin, sees only the screens it needs. Reviewers get before-and-after comparisons and every transaction’s full approval history, without slowing down day-to-day operations.

Taurus custody client 2018: signing a bitcoin transfer from the cold storage vault, with the six-stage transaction lifecycle beside it
2018 · Sign, with the lifecycle in view
Taurus custody client 2018: in-house transactions list showing each transfer at its approval stage
2018 · Every transfer at its approval stage
Taurus custody client 2018: completed outgoing transaction with a timestamped audit trail from team validations to confirmation
2018 · A timestamped audit trail

Feb 2018 — Feb 2019 · The outcome

Two products. One year.

A regulated exchange with full client onboarding, order routing and a reconciled ledger. And a desktop custody client, packaged for macOS and Windows, where every transaction is approved by independent teams and signed on hardware.

What happened next

Taurus became bank infrastructure

Our part ended in early 2019. Taurus went on to become a FINMA-authorised provider of digital asset infrastructure for regulated financial institutions.

clients, including Deutsche Bank, State Street and Swissquote
40+
offices, from Geneva to New York and Singapore
14
authorised and supervised in Switzerland
FINMA

Source: taurushq.com

Looking back

What made it work

  1. 01

    Assume the network will fail

    Fingerprints, full re-syncs and repeatable updates kept balances right even when blockchain nodes weren’t.

  2. 02

    Trust only what you can verify

    Keys on hardware, signatures checked on the client, and identical bytes for every signer.

  3. 03

    Security without friction

    Role-based screens, clear hardware errors and before-and-after reviews made strict controls fast to use.

Tech stack

Exchange webReactServer-side renderingRedux-SagaSocket.IOHighchartsStorybook
Exchange APINode.jsExpressPostgreSQLRedisZeroMQKYC and AML screening
BlockchainBitcoin (bcoin, Electrum)Ethereum (web3)HD wallets (BIP44)Bitstamp, Kraken, GDAX, Bitfinex, Coinbase
Custody clientElectronReactAnt DesignYubiKey (PKCS#11)ECDSA secp256r1Protocol Buffers
DevOpsDockerTravis CIAutomated deploys

Bring us
the hard part.

Complex platforms, overdue rewrites, agentic workflows. That’s the work we enjoy most.

Contact Us