05 · claimable escrow
claimable escrow.
the part that does the actual work. how creators with no solana wallet still get paid.
when you launch with claimer = @somecreator and @somecreator has no wallet linked to gud.tek yet, we do this:
- generate a fresh solana keypair
(pk, sk)scoped to that handle. - encrypt
skusing a KMS-backed envelope key. aws kms, gcp kms, anything with a real access policy and audit log. - set
pkas the claimer on the pool. - publish the
@somecreator → pkmapping. that wallet is visible on chain forever.
the token launches. fees accumulate to pk. nobody at gud.tek can spend that money without a verified claim. the kms access policy says: decrypt only when (a) the request carries a real oauth handshake against the right handle, and (b) the audit log records it.
// the access pattern, roughly
async function claim(identity, walletAddr, oauthProof) {
if (!verifyOAuth(identity, oauthProof)) {
throw new Error("not your handle, fam")
}
const wrapped = await db.escrow.findOne({ identity })
const sk = await kms.decrypt(wrapped.cipher, {
context: { identity, claimant: walletAddr, ts: now() }
})
const tx = buildTransferTx({
from: wrapped.pk,
to: walletAddr,
sk,
amount: ALL,
})
return solana.send(tx)
}the claim flow
real owner of @somecreator shows up at some later point:
- they oauth with X. handshake proves they control the handle right now.
- they connect a solana wallet (phantom, backpack, whatever).
- our signer decrypts
sk, signs a transfer of everything inpkto the connected wallet. - the pool's claimer field rotates to the new wallet. from now on, fees go straight there. no more escrow in the middle.
that's the whole loop. you didn't need a wallet to launch. you only need one to collect.