尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Inheritance for Stellar accounts, enforced by the protocol (CAP-21 preconditions + pre-auth signers)
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Inheritance for Stellar accounts, enforced by the Stellar protocol itself. No custodian, no seed-phrase sharing, no smart contract to trust.
Riktha (Sanskrit): inherited wealth; the estate left by the dead.
/evidence (data)When a crypto holder dies without passing on their keys, the assets are gone: chain data can't tell "the owner is gone" from "the owner is quiet". Chainalysis-based estimates put 2.3–3.7 million BTC as permanently lost. Tokenized real-world assets on Stellar passed $3.9B in 2026, and none of the existing inheritance products (Casa, Unchained, Liana, Nunchuk, Sarcophagus…) supports Stellar. Today a Stellar holder can share the seed phrase (and risk a leak), put it in a will (and show it to everyone who reads it), or lose everything.
The owner signs one setup transaction. It registers two pre-authorized transactions (preauth_tx signers) on their own account, each guarded by CAP-21 preconditions:
| Phase | Valid when | Effect |
|---|---|---|
| 1. Notice | the owner has sent nothing for the inactivity window (minSeqAge = I, minSeqNum = X) | a no-op BumpSequence to sequence s1: the public "a claim has started" signal |
| 2. Handover | the grace window has passed since the notice and the owner has sent nothing since (minSeqAge = G, sequence must be exactly s1) | SetOptions adds the heir as a signer; the heir can now move every asset |
owner signs setup ──► 2 preauth signers on the owner's account
… any tx the owner sends resets the clock (seqTime) …
inactivity window passes ──► keeper (or anyone) submits Notice, fee-bumped ──► owner alerted on 3 channels
… any tx from the owner now consumes s1+1 and kills the Handover forever …
grace window passes ──► heir submits Handover, fee-bumped ──► heir is a signer ──► heir moves assets
Why it's safe (all enforced by validators, not by Riktha):
/claim (no login, no database) or with any Stellar tool.An owner can name an heir by email only. The owner's browser creates a fresh key for the heir and locks it with a 6-word claim code (PBKDF2-SHA256 at 600k iterations, then AES-256-GCM). The owner keeps the code with their will. Riktha stores only the locked kit and never sees the code. When it's time, the heir opens the link from their email, types the code, and claims. The heir needs no wallet and no XLM: the handover is submitted without a wallet, and afterwards the owner's account is their wallet, ready to send funds to any address or exchange (with a memo). See ARCHITECTURE §15.
This design is only possible because Stellar has, at protocol level, transaction preconditions (minSeqAge, minSeqNum; Protocol 19), pre-authorized transaction signers, fee-bump transactions, and Soroban auth that goes through classic signers. CAP-21 itself lists time-delayed key recovery as a goal. Riktha turns that designed-in, unused capability into a product. It doesn't port as-is to most chains.
pnpm spike, results in docs/PROGRESS.md)sequence_time is absent on fresh accounts until their first V3-extension update (setup provides it).Uint8Array from tx.hash() and text memos. .toString("hex") silently produces "1,2,3…", so we use explicit helpers (txHashHex, memoText).Browser (Next.js) lib/core: builders, state machine, packet ◄── same code on the server
Freighter signs ──────────► Horizon (user txs go straight to the network)
│ /api/*
Vercel (Next.js routes) ── Neon Postgres (cache + contacts; the chain is the source of truth)
/api/cron/tick ◄── cron-job.org every minute: derive state → notify → auto-submit Notice
notifications ──► dashboard · email (SMTP) · Telegram bot
lib/core/state.ts); the DB only caches it.lib/core).Full specs: docs/PRD.md · docs/ARCHITECTURE.md · progress log docs/PROGRESS.md.
Requires Node 22+, pnpm, the Freighter extension set to Testnet, and a free Neon Postgres database.
pnpm install
cp .env.example .env.local # add DATABASE_URL (Neon) and, optionally, SMTP + Telegram values
pnpm gen-secrets # fills JWT/cron/webhook secrets, a SEP-10 key and a funded testnet keeper
pnpm db:push # creates the tables
pnpm dev # http://localhost:3000
Try it with fresh demo accounts: pnpm seed-demo creates a funded owner (holding XLM and a test asset) and a funded heir, and saves their secret keys to demo-accounts.local.json (git-ignored) for importing into Freighter. Choose the Demo preset (2-minute windows) when creating a plan. To run the keeper locally, call it with your cron secret:
curl -X POST http://localhost:3000/api/cron/tick -H "Authorization: Bearer $CRON_SECRET"
| Variable | Purpose |
|---|---|
NEXT_PUBLIC_NETWORK | testnet (mainnet is disabled) |
NEXT_PUBLIC_APP_URL | links in emails and Telegram messages |
DATABASE_URL / DATABASE_URL_UNPOOLED | Neon Postgres |
JWT_SECRET | session cookies |
SEP10_SIGNING_SECRET | server key that signs sign-in challenges (no funds needed) |
KEEPER_SECRET | funded testnet account that pays Notice fee-bumps |
CRON_SECRET | bearer secret for /api/cron/tick |
SMTP_HOST SMTP_PORT SMTP_USER SMTP_PASS MAIL_FROM | email (e.g. a Gmail app password) |
TELEGRAM_BOT_TOKEN TELEGRAM_BOT_USERNAME TELEGRAM_WEBHOOK_SECRET | Telegram alerts |
pnpm test # unit tests: builders, state machine, packet, errors, eligibility, notifications
pnpm scenarios # the 10 protocol scenarios on live testnet → docs/evidence.json
pnpm test:auth # sign-in e2e against a running app
pnpm test:plans # plan API e2e on testnet
pnpm test:lifecycle # arm → keeper notice → handover → estate, plus re-arm and revoke
pnpm test:kit # heir named by email → claim code → handover with no wallet → heir spends
pnpm db:push, then copy secrets with pnpm push-env.https://api.telegram.org/bot<TOKEN>/setWebhook?url=<APP_URL>/api/telegram/webhook&secret_token=<TELEGRAM_WEBHOOK_SECRET>.POST <APP_URL>/api/cron/tick every minute with Authorization: Bearer <CRON_SECRET>. Vercel Hobby cron runs only daily, so vercel.json keeps a daily run as a backup.Cash-out for claim-kit heirs (convert to USDC and withdraw to a bank through a SEP-24 anchor); multiple heirs with weights; staged release; a wallet SDK so Freighter/Lobstr/xBull can offer "Set up inheritance" natively; anchor and RWA-issuer integrations; hardware wallets; mainnet after an audit.