install sdklocal package
hoodmorph://install
# Inside this monorepo, the SDK lives at:
#   src/lib/blockmorph/sdk.ts
#
# As an external user:
import { parseCapsuleJson, verifyCapsule, HoodMorphClient } from "@/lib/blockmorph/sdk";
chainrobinhood mainnet
hoodmorph://chain
Robinhood Chain Mainnet
  chainId:  4663 (0x1237)
  currency: ETH
  rpc:      https://rpc.mainnet.chain.robinhood.com
  explorer: https://robinhoodchain.blockscout.com
verify a capsule locallyno network
hoodmorph://verify_local
import { parseCapsuleJson, verifyCapsule } from "@/lib/blockmorph/sdk";

const capsule = parseCapsuleJson(jsonString);
const result = verifyCapsule(capsule, {
  issuerPublicKey: ISSUER_PUBLIC_KEY,
  minTier: 2,
});
// { valid: true, capsule }
capsule schema (v1)json
hoodmorph://terminal
{
  "type": "blockmorph_capsule_v1",
  "policyVersion": "blockmorph-policy-v1",
  "issuer": "HoodMorph",
  "issuerPublicKey": "<base58 ed25519>",
  "capsuleId": "<base58 16 bytes>",
  "campaignId": "demo-presale",
  "tier": 2,
  "tierLabel": "SILVER",
  "morphWallet": "<0x EVM address, 42 chars>",
  "nullifier": "<sha256 hex>",
  "policyHash": "<sha256 hex>",
  "issuedAt": "ISO-8601",
  "expiresAt": "ISO-8601",
  "proofMode": "issuer-signed",
  "signature": "<base58 ed25519 sig of canonical body>"
}
tiersdefault policy
  • BRONZE · age ≥ 30d · tx ≥ 10
  • SILVER · age ≥ 90d · tx ≥ 50 · ≥ 0.5 ETH OR ≥ 5 ETH recent
  • GOLD · age ≥ 180d · tx ≥ 100 · ≥ 25 ETH recent
  • OBSIDIAN · age ≥ 365d · tx ≥ 250 · ≥ 100 ETH recent
privacy modelbe accurate
  • • Capsule never contains the proving wallet.
  • • In issuer-signed mode, HoodMorph sees the proving wallet to compute eligibility.
  • • Morph wallet secret keys never leave the browser.
  • • Vault uses WebCrypto AES-GCM + PBKDF2 (250k iters).
  • • Nullifier prevents double-registration per campaign.
  • • ZK mode planned (Noir + Barretenberg); not live yet.
security limitationsknown
environment.env
hoodmorph://terminal
VITE_ROBINHOOD_RPC_URL=https://rpc.mainnet.chain.robinhood.com   # client
ROBINHOOD_RPC_URL=https://rpc.mainnet.chain.robinhood.com         # server
HOODMORPH_ISSUER_SECRET_KEY=<base58 64-byte ed25519 sk>          # server only
HOODMORPH_ISSUER_PUBLIC_KEY=<base58 32-byte ed25519 pk>          # server, returned by /api/issuer
HOODMORPH_NULLIFIER_PEPPER=<base58 random>                       # server only