One small client.
Pin trust once. Look up or watch an address.
import { Argyle } from "./argyle-v1.js";
const argyle = new Argyle({
publicKey: "PINNED_YACHTCLUB_ED25519_PUBLIC_KEY"
});
const state = await argyle.lookup("bc1q…", { since: orderCreatedAt });
console.log(state.pendingSats, state.confirmedSats, state.outputs);
for await (const update of argyle.watch("bc1q…", { signal })) {
render(update);
}
Copy the v1 module into the consuming application and pin its authority key through the same trusted build handoff. Fetching both code and trust from this site is convenient, but it is not independent verification.
The static API
manifest.json signed current snapshot
i/<sha256>.json immutable bucket index
o/<sha256>.json immutable observation rows
The root is /v1/btc/mainnet/. Poll only the manifest. If one bucket's index hash changes, fetch that index and any object hashes the client does not already have. The supplied client limits itself to four concurrent object reads.
How a lookup works
- Decode a mainnet address and construct its lowercase
scriptPubKeyhex. - SHA-256 the ASCII hex. The first 16 digest bytes are the exact lookup key; the first byte is its two-hex-digit bucket.
- Verify the signed manifest using the pinned Yacht Club Ed25519 key.
- Fetch
i/<manifest bucket index>.json, then hash-check only its relevant objects. - Exact-match the lookup key and reduce observations by
txid:vout.
Rows
["scriptHash","txid",0,12345,"m",1787932800]
["scriptHash","txid",0,12345,"c",1787932861,964499,"blockHash"]
- m
- Seen in peer relay; pending only.
- c
- Seen in a block on Argyle's observed header chain.
- Value
- Integer satoshis.
- Identity
txid:vout; a current confirmation supersedes mempool.
Application rules
- Reject a stale or invalid manifest and retain the last verified application state.
- Never treat a bucket match as an address match.
- Persist accepted outpoints; the public 48-hour window is not an order database.
- Use a unique merchant-controlled receive address per order.
- Apply your own confirmation and independent-verification policy.
The complete fields, bounds, caching rules, and reduction semantics are in the plain-text contract. Return to Argyle.
YCR