All posts
Engineering6 min read

Why we anchor licences on Solana

Licence records are worthless if the vendor can quietly rewrite them. Here is why we put provenance on a public ledger, and what that costs us.

Every licensing system eventually runs into the same question: who gets to decide what a licence said yesterday? For most platforms the answer is a row in a database owned by the vendor, and that row can change without anyone noticing.

The trust problem

When a studio buys a perpetual licence, they are buying a promise that outlives the vendor's roadmap. A mutable row is a weak promise. We wanted a record that a developer could verify without asking us for permission.

If your customer has to trust your database to prove what they bought, they do not own the licence. You do.

What we anchor, and what we do not

We do not put personal data on chain. What gets anchored is a commitment: a hash of the licence terms, the issuing product, and the issuance moment. Everything identifying stays in Postgres where it can be deleted on request.

  • Anchored: licence hash, product identifier, issuance timestamp
  • Off chain: customer identity, email, device fingerprints, activation history
  • Never anchored: anything a GDPR erasure request could touch

The honest trade-offs

Anchoring costs latency and money. We batch writes and settle asynchronously, which means a licence is usable before it is anchored. For most vendors that gap is irrelevant. For the ones it is not, we expose the settlement state directly in the API.