Skip to content
Provatek

Redemption, verified end to end

This page is written for the people at a house who have to sign off on its name being on a portal we run: usually the person responsible for the collection, the house’s counsel, and whoever looks after its systems. It says what happens, in what order, what we check at each stage and against what, and where the record lives afterwards.

Issuing

The house issues a token that entitles its holder to a piece. On Ethereum that is a contract the house already has, or one we deploy for it. On Bitcoin it is a set of inscriptions the house names. Either way the entitlement is public before anyone redeems it, which is what makes the rest of this possible.

A house that already has a contract keeps it. We read from it and we never need to change it. A house issuing for the first time gets a contract that records who redeemed each token permanently, because that record is what our service relies on.

Signing in

A collector holds the token in a wallet of their own. We never take custody, there is no account to create, and there is nothing to deposit. The wallet is the identity, and a collector who holds pieces in several wallets is one person to us with several wallets attached.

Signing in is a signature on a message we issue, verified on our side. It costs nothing and moves nothing. On Bitcoin it is a BIP-322 signature from the ordinals address, which is a different key from the payment address in the same wallet. That distinction is easy to get wrong and we built the flow around getting it right.

Verification

Before a claim can start we read from the chain whether the wallet holds the token now. We ask the contract on Ethereum and an index on Bitcoin, from our servers, at that moment. What the browser says a wallet holds is never treated as evidence, and the interface only ever offers a collector the tokens their wallet actually holds.

The check is done twice, because starting a claim and finishing it are minutes apart and the second is where the piece is won. Both times the wallet has to be one the collector has proven on their account, and both times it has to hold the token.

Redemption

The collector chooses what is to be made where there is a choice, sees what is included and what would be quoted, accepts the house’s terms in the house’s own words, and gives a delivery address. Each accepted term is stored as the exact text that was shown, so the house can say later what the collector agreed to.

On Ethereum the redemption is the contract’s own function, and the wallet shows the collector exactly that and nothing else. On Bitcoin the redemption is a signature. We never ask a Bitcoin wallet for a transaction, because an inscription can only be lost by being spent, and a flow with no transaction in it cannot spend one.

A piece belongs to the wallet that redeemed it.

This is the rule the whole service turns on, and it is worth being precise about. A piece does not belong to the wallet that holds the token now. Tokens keep trading after the piece they entitled has been made and sent, and a portal that read current ownership would either hand a second collector a claim on a piece that already exists, or let a sale of the token redirect a ring that is in transit.

On Ethereum the contract records who called redeem, once, permanently, with no owner-only way to change it, and that is the fact we read when deciding who may see or alter an order. In one collection we operate, about a third of the tokens have changed hands since they were redeemed. Every one of those pieces still answers to the wallet that redeemed it.

On Bitcoin there is no redemption record on the chain, so holding is read once, at the moment of the claim, and written down. From then on our record is the authority, and a later transfer of the inscription cannot reach a piece that has already been claimed.

The record

Each redemption produces one record. It holds the network, the contract or inscription, the token, the wallet that redeemed it, the block and transaction where those can be shown, the date, and what was made. We hold it in the United Kingdom, apart from the house’s own systems, and everything in it that lives on the chain can be checked on a public explorer without us, for as long as the chain exists. On Ethereum that includes the redemption itself, which the contract records. Bitcoin records no redemption, so there the chain shows the inscription and its holder, and the claim is a signed message that anyone can verify against our record.

The order that follows the record is kept alongside it: the options, the quote, the address and the dispatch. Addresses are never overwritten. A change adds a new one and stands the old one down, so the house can always answer where a piece was sent, and every change is signed by the wallet on the account.

Record of redemptionSpecimen
Number
PVK-0000-0052
Network
Ethereum mainnet
Contract
0x51a7…c3e0
Token
52
Redeemed by
0x7c1e…9a42
Block
21 904 118
Recorded
14 March 2025, 16:02 UTC
Piece
Bronze sculpture, edition 3 of 8
Status
Verified against the contract
ProvatekRecorded and verified by ProvatekCheckable against the chain

Delivery

The house makes the piece and dispatches it. The collector follows it on the same portal, accepts or declines a quote there if there is one, and is told by the house when something needs them. Declining a quote never affects a redemption; the collector keeps an included option instead.

After delivery the token stays with the collector and the record stays with the piece. If the token is sold later, the piece does not go with it, and the record says who it went to.

Ethereum and Bitcoin

On Ethereum, wallets connect through the discovery standard every modern wallet supports, or by QR code from a phone. Sign-in is a signed message. Redemption is the contract’s own function, and the contract names the redeemer for good.

On Bitcoin, wallets connect through the ordinals-native wallets, which expose the ordinals address separately from the payment address. Sign-in and the claim are a BIP-322 signature from a mainnet taproot address, verified on our side. There is no transaction, no PSBT and no transfer anywhere in the flow. Holding is read once from an index and recorded, and the wallet’s own claim about what it holds is never evidence.

As far as we have been able to find, nobody else runs redemption as a service on both chains for a house. Bitcoin redemption has been done as one-off drops. We built it as something a house can commission.

Security

A wallet reaches a portal in one of two ways. A wallet in the browser is found through the EIP-6963 discovery standard and speaks to the page directly; nothing passes through us. A wallet on a phone connects through the WalletConnect relay, where the portal and the wallet agree a key by X25519 and encrypt every message with ChaCha20-Poly1305 before it leaves either device, so the relay carries ciphertext it cannot read. A Bitcoin wallet connects through the ordinals-native standard, which keeps the ordinals address separate from the payment address.

Signing in is a signed message in the Sign-In with Ethereum form (EIP-4361), bound to this domain, to a nonce we issued and to the time, so it cannot be replayed on another site or later. On Bitcoin it is a BIP-322 signature from a mainnet taproot address. Both are verified on our servers, which hold no keys and cannot sign for anyone. A claim is bound to a proven wallet at the start and again at the finish, and a change of address is one signature for one address. The only transaction ever requested is the contract’s own redeem on Ethereum, which the wallet shows in full before the member approves it.

Every connection uses TLS 1.3 with forward-secret key exchange and, where the browser supports it, a hybrid post-quantum exchange combining X25519 with ML-KEM-768, so a recording of today’s traffic cannot be opened by a future quantum computer. Plain HTTP is refused, and every response tells the browser to use only HTTPS for the next two years. Data is encrypted at rest with AES-256, with keys held in a managed key service, rotated and access-logged, and backups encrypted the same way. Sign-in codes are stored only as hashes and expire within minutes. Sessions travel in cookies marked HttpOnly, Secure and SameSite, so no script on the page can read them and no other site can send them.

Every page ships with a content security policy carrying a per-request nonce and no inline scripts, so nothing the portal did not ship can run on it, and the wallet origins it admits were taken from observed traffic rather than guessed. Console access is resolved on every request, so revoking it takes effect at once. Audit entries, on-chain redemptions and accepted terms cannot be altered or deleted once written. Email is encrypted in transit but not end to end, because no email is, which is why nothing sent by email can move a piece on its own.

Working with us

The house gives us the contract address, or the list of inscriptions, or tells us it wants to issue. It gives us the catalogue, which is what each token entitles, the options, what is included and what is quoted, and the terms a collector accepts before redeeming, in the house’s own words. It gives us a mark and a palette. The portal carries our mark beside the house’s, and everything a collector chooses or agrees to is in the house’s own words.

We provide the portal, on a subdomain of provatek.io in the house’s name, the console for the workshop, the record, and the notices collectors receive on the steps that need them. A house with an existing contract is usually live within weeks, and the first thing we do together is reconcile whatever was redeemed before we arrived.

For anything this page does not cover, enquire and we will answer directly.

Enquire