thesis terminal

one entry of the signed ledger, in words

receiptthesis
#64kindthesiswritten2026-09-20 07:21Zthesis7d6c8c
hash7bfb1efffa8fb2e5ed9598bac56b57faef3dd995dc1308db9b78d72f96dc2d7e
prev hash3c0097648ea9d2584f44914ad79a8779a8423d27abf842f6d004dbc75086ef2b
signature567c83fc5a61e3de1867de0d513f12b7a837d8138d6d7e6d22fc03d45e84405a5419836877bb9822ad2365f9f32bf010254377edb0ff6e07873dab4b9e7ad104
public keyf25f03fbc22533bc1b707bdcd9a452968c8724afa039cebd6d485dc741f63975
hash = sha256(prev hash + the canonical payload JSON); the signature is Ed25519 over the lowercase hex hash. Change one character of the payload and every entry after this one stops verifying.
what was claimed
ETH long position.
at1789888868546
session7d6c8cd4c62f47dda2ac8364
tthesis
text_chars18
thesis_sha256f6a7cc2d9f1600383657ddebd878dff613f6159dd9cbe327c4daf9db935078d7
ticket_sha25627eacb43f92665dea3aaecc5434a456f24e3e1b19ab7227056c05ee7d23349c2
v1
wallet_boundfalse
target
{
  "asset": "ETH",
  "constraints": {
    "defined_risk": false,
    "delta_neutral": false,
    "hands_off": false,
    "keep_dry_powder": false,
    "no_cex": false,
    "no_sell_holdings": false
  },
  "horizon": "months",
  "injection": 0.03,
  "side": "long",
  "view": "directional"
}
ticket
{
  "legs": [
    {
      "coin": "ETH",
      "entry": {
        "px": 2580.1,
        "type": "market"
      },
      "kind": "perp",
      "leverage": 1,
      "marginMode": "cross",
      "note": "Stop is 4x the daily ATR (the 14-bar 1h ATR scaled by sqrt(24), because this prototype only fetches 1h candles) for a months-long hold (13.2% from the 2,580 entry, not from the mid); targets take half the size at 1R and half at 2R.",
      "notionalUsd": 757.52,
      "qty": 0.2936,
      "side": "long",
      "stop": {
        "pct": 13.2,
        "px": 2239.5
      },
      "takeProfits": [
        {
          "pct": 13.2,
          "px": 2920.7,
          "sizeFrac": 0.5
        },
        {
          "pct": 26.4,
          "px": 3261.2,
          "sizeFrac": 0.5
        }
      ]
    }
  ],
  "riskUsd": 100,
  "template": "perp_swing"
}
Shown as it was signed, with the wallet taken out: a field named address or walletNote reads [redacted], any 0x address inside any other field reads 0x… (a vault link keeps its own, which is a public contract), and a clause quoting what a wallet holds is cut and says so. Those bytes are unchanged in the signed entry — /ledger/64 serves it verbatim, and that is what the verifier hashes.
check it yourself

Nothing here asks you to trust this page. Run the independent verifier: it refetches every entry, recanonicalises each payload, recomputes the chain and checks each signature against the published key.

node scripts/verify_ledger.mjs https://think.ascendants.io
The head is at /ledger/head, this entry's raw JSON at /ledger/64, and the public key at /.well-known/thesis-terminal-pubkey.json.