Oracle3
Oracle3: 예측시장 거래 엔진·MCP 서버
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.