The Scriptorium · 2 open roles

Come and write the alphabet.

We build tools that read the blockchain, for traders and for blockchain experts. A scriptorium was the room where books were copied by hand, by people who knew their work would outlive them. Ours is working out how the world will read the largest book ever written.

Open role

Blockchain developer

Make the chain readable at the source.

You will build the parts of our tools that touch the chain directly: the nodes we run, the indexers that read every block, and the decoders that turn raw transactions and contract events into facts a trader can trust.

What you will do

  • Run and index Bitcoin, Ethereum and Solana nodes, and keep them in step with the chain through reorgs and upgrades.
  • Decode transactions, logs and contract state across EVM chains: swaps, transfers, liquidations and positions.
  • Write and review the Solidity and Rust that our read-only integrations depend on.
  • Design how blocks, wallets and positions are modelled, so every figure traces back to its transaction.

What you bring

  • Deep knowledge of at least one chain from the inside: UTXOs, the EVM or Solana accounts.
  • Solidity or Rust you have shipped, and the habit of reading other people’s contracts.
  • Fluency with JSON-RPC, archive nodes and traces, and the ways they fail.
  • A security mindset: you ask what could go wrong before you ask what could go right.

SolidityFoundryRustGoTypeScriptBitcoin CoreRethGethSolanaJSON-RPC

Take the blockchain test

Open role

Python engineer

Turn raw blocks and order books into figures people trust.

You will build the pipelines behind both tools: services that listen to exchanges and nodes, store what they hear, and serve exact figures to traders and builders within moments.

What you will do

  • Build async services that ingest exchange APIs, WebSocket feeds and our own nodes.
  • Model time series and ledger data in PostgreSQL and ClickHouse, fast enough to read live.
  • Ship the Python client and the API behind the Lexicon, with typed models and clear errors.
  • Write the analytics behind the Reader: true profit after fees and funding, exposure and correlation.

What you bring

  • Strong modern Python: asyncio, type hints and tests you trust.
  • SQL and data modelling, and a feel for what makes a query fast.
  • Experience with streaming data: WebSockets, queues, backpressure and retries.
  • Care with money: decimals over floats, and rounding that is decided, not accidental.

PythonasyncioFastAPIPydanticPolarsPostgreSQLClickHouseRedisKafkaDockerKubernetes

Take the Python test

The workshop

What we build with.

Nodes for three chains, Python services that listen to them and to the exchanges, and fast stores that can answer while the market is still moving.

On chain

  • Bitcoin
  • Ethereum
  • Solana
  • Solidity
  • Foundry
  • Rust
  • Go
  • Ethers
  • Reth and Geth

Data

  • Python
  • FastAPI
  • Pydantic
  • Polars
  • PostgreSQL
  • Timescale
  • ClickHouse
  • Redis
  • Apache Kafka

Platform

  • Docker
  • Kubernetes
  • Terraform
  • Grafana
  • Prometheus
  • GitHub Actions

Interface

  • TypeScript
  • WebGL
  • Astro

How we work

  1. Exact, then fastEvery figure traces back to a transaction. We would rather show a dash than a guess.
  2. Read-only by designOur tools never hold keys or move funds, and that rule shapes every system we build.
  3. Whole problemsA small team means you own a problem from the node to the screen.
  4. Learn in publicWe read public chains, credit our sources, and write down what we find.

How we hire

  1. IThe reading testThree questions in your own field, here in the browser. About five minutes.
  2. IIYour letterTell us who you are and show us something you made.
  3. IIIA conversationWith the people you would work with, about a real problem we have.

The reading test

We do not ask for a résumé first. We ask if you can read.

Choose your field. Three questions, as many tries as you like. Pass, and the application opens.

1In Bitcoin, what does a new transaction actually spend?

2Since EIP-1559, what happens to the base fee paid by every Ethereum transaction?

3A contract sends ether to the caller before it updates the caller’s balance. What is the risk?