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
- • Wallet age is derived by binary-searching eth_getTransactionCount across blocks; approximate but honest.
- • Visible 90d volume is proxied from current ETH balance — no full indexer available for Robinhood Chain yet.
- • Robinhood Chain does not enforce arbitrary wallet policies natively; agent-safe wallets isolate risk by separating funds.
- • Lose the vault password → lose the morph wallet. Always export the encrypted vault backup.
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