{"repo":"mrphatom/solana-social-wallet","private":false,"description":"Security-first Solana cross-platform wallet-bot foundation for verified Discord and Telegram identities.","default_branch":"main","stars":0,"forks":0,"pushed_at":"2026-08-27T13:15:25Z","languages":{"TypeScript":103457,"JavaScript":397},"files":80,"tree":[".env.example",".github/workflows/ci.yml",".gitignore","CHANGELOG.md","README.md","SPEC.md","docs/architecture.md","docs/betting-transaction-policy.md","docs/code-review.md","docs/cross-platform-identity-schema-and-lifecycle.md","docs/decentralized-social-tipping-directory.md","docs/decisions/ADR-001-non-custodial-intent-boundary.md","docs/decisions/ADR-002-stable-platform-identities.md","docs/decisions/ADR-003-verified-webhook-adapters.md","docs/decisions/ADR-004-user-controlled-signer-boundary.md","docs/decisions/ADR-005-review-first-exact-message-signing.md","docs/decisions/ADR-006-federated-verifiable-social-directory.md","docs/decisions/ADR-007-bounded-route-and-fee-evidence.md","docs/key-signing-implementation-checklist.md","docs/non-custodial-key-architecture.md","docs/non-custodial-staking-liquidity-portfolio-interface.md","docs/operations.md","docs/qa.md","docs/references/key-signing-sources.md","docs/references/platform-ingress-security-sources.md","docs/references/social-directory-sources.md","docs/references/solana-routing-fee-sources.md","docs/review-first-social-finance-transaction-protocol.md","docs/routing-fee-implementation-gates.md","docs/secure-signing-protocol.md","docs/secure-swap-routing-and-fee-policy.md","docs/secure-transaction-simulation-and-parsing.md","docs/social-directory-attestation-protocol.md","docs/social-directory-implementation-gates.md","docs/social-directory-resolver-protocol.md","docs/social-engineering-and-bot-hijacking-defense.md","docs/threat-model.md","docs/transaction-fee-policy.md","eslint.config.mjs","package.json","pnpm-lock.yaml","src/adapters/local-chat-runtime.ts","src/adapters/memory-social-repository.ts","src/adapters/webhook-verification.ts","src/application/account-service.ts","src/application/internal-transfer-intent-service.ts","src/application/wallet-account-service.ts","src/demo.ts","src/domain/base58.ts","src/domain/betting-policy.ts","src/domain/capability-policy.ts","src/domain/errors.ts","src/domain/models.ts","src/domain/pairing.ts","src/domain/priority-fee-policy.ts","src/domain/signer-boundary.ts","src/domain/social-directory.ts","src/domain/social-finance-capability-policy.ts","src/domain/swap-routing-policy.ts","src/index.ts","src/ports/betting-provider.ts","src/ports/priority-fee-oracle.ts","src/ports/social-directory-resolver.ts","src/ports/social-repository.ts","src/ports/swap-route-provider.ts","src/ports/wallet-signer.ts","tasks/plan.md","tasks/todo.md","test/betting-policy.test.ts","test/capability-policy.test.ts","test/internal-transfer-intent.test.ts","test/local-chat-runtime.test.ts","test/pairing.test.ts","test/priority-fee-policy.test.ts","test/signer-boundary.test.ts","test/social-directory-resolution.test.ts","test/social-finance-capability-policy.test.ts","test/swap-routing-policy.test.ts","test/webhook-verification.test.ts","tsconfig.json"],"sizes":{".env.example":209,".github/workflows/ci.yml":556,".gitignore":113,"CHANGELOG.md":2075,"README.md":11564,"SPEC.md":16049,"docs/architecture.md":9900,"docs/betting-transaction-policy.md":5728,"docs/code-review.md":8337,"docs/cross-platform-identity-schema-and-lifecycle.md":12481,"docs/decentralized-social-tipping-directory.md":21188,"docs/decisions/ADR-001-non-custodial-intent-boundary.md":2032,"docs/decisions/ADR-002-stable-platform-identities.md":1950,"docs/decisions/ADR-003-verified-webhook-adapters.md":2050,"docs/decisions/ADR-004-user-controlled-signer-boundary.md":3398,"docs/decisions/ADR-005-review-first-exact-message-signing.md":2888,"docs/decisions/ADR-006-federated-verifiable-social-directory.md":3981,"docs/decisions/ADR-007-bounded-route-and-fee-evidence.md":4427,"docs/key-signing-implementation-checklist.md":5170,"docs/non-custodial-key-architecture.md":16251,"docs/non-custodial-staking-liquidity-portfolio-interface.md":8808,"docs/operations.md":5095,"docs/qa.md":2863,"docs/references/key-signing-sources.md":5013,"docs/references/platform-ingress-security-sources.md":2000,"docs/references/social-directory-sources.md":3609,"docs/references/solana-routing-fee-sources.md":7246,"docs/review-first-social-finance-transaction-protocol.md":6190,"docs/routing-fee-implementation-gates.md":5723,"docs/secure-signing-protocol.md":14242,"docs/secure-swap-routing-and-fee-policy.md":9943,"docs/secure-transaction-simulation-and-parsing.md":7750,"docs/social-directory-attestation-protocol.md":12899,"docs/social-directory-implementation-gates.md":4831,"docs/social-directory-resolver-protocol.md":14194,"docs/social-engineering-and-bot-hijacking-defense.md":11395,"docs/threat-model.md":9501,"docs/transaction-fee-policy.md":7469,"eslint.config.mjs":397,"package.json":853,"pnpm-lock.yaml":59231,"src/adapters/local-chat-runtime.ts":4380,"src/adapters/memory-social-repository.ts":7911,"src/adapters/webhook-verification.ts":1792,"src/application/account-service.ts":8767,"src/application/internal-transfer-intent-service.ts":3859,"src/application/wallet-account-service.ts":3434,"src/demo.ts":1859,"src/domain/base58.ts":1153,"src/domain/betting-policy.ts":424,"src/domain/capability-policy.ts":691,"src/domain/errors.ts":887,"src/domain/models.ts":1641,"src/domain/pairing.ts":1278,"src/domain/priority-fee-policy.ts":5652,"src/domain/signer-boundary.ts":1908,"src/domain/social-directory.ts":4748,"src/domain/social-finance-capability-policy.ts":1327,"src/domain/swap-routing-policy.ts":8388,"src/index.ts":493,"src/ports/betting-provider.ts":522,"src/ports/priority-fee-oracle.ts":420,"src/ports/social-directory-resolver.ts":1713,"src/ports/social-repository.ts":1472,"src/ports/swap-route-provider.ts":674,"src/ports/wallet-signer.ts":1449,"tasks/plan.md":1403,"tasks/todo.md":6621,"test/betting-policy.test.ts":482,"test/capability-policy.test.ts":464,"test/internal-transfer-intent.test.ts":7344,"test/local-chat-runtime.test.ts":2035,"test/pairing.test.ts":4925,"test/priority-fee-policy.test.ts":4083,"test/signer-boundary.test.ts":2425,"test/social-directory-resolution.test.ts":4913,"test/social-finance-capability-policy.test.ts":718,"test/swap-routing-policy.test.ts":7880,"test/webhook-verification.test.ts":1346,"tsconfig.json":416},"readme":"# Solana Social Wallet\n\n**Solana Social Wallet** is a security-first TypeScript foundation for coordinating one **shared account space** across Discord and Telegram. It proves control of separate chat identities through a source-confirmed pairing flow, resolves an opted-in recipient by stable platform identity rather than a mutable username, and creates a non-custodial Solana transfer intent that remains **awaiting wallet approval**.\n\n> **This repository does not hold keys, sign, broadcast, settle, trade, stake, or place bets.** It is a credential-free engineering foundation, not a deployable wallet provider, exchange, staking provider, betting product, or real-fund service.\n\n## Why this approach\n\nChat names are convenient, but they are not safe payment addresses. A raw Discord or Telegram username may change, collide, or be ambiguous. Solana Social Wallet instead binds a platform-native identity to a private shared account and requires the recipient to opt in before the service will produce an internal-recipient transfer intent. The sender still needs a future, independently controlled wallet companion to see the transaction details, simulate it, approve it, sign it, submit it, and track confirmation. The reviewed [key architecture](docs/non-custodial-key-architecture.md) and [secure-signing protocol](docs/secure-signing-protocol.md) define that future boundary without adding a key, signer, wallet SDK, or network call to this release.\n\n| Capability | Implemented in the foundation | Explicitly not implemented |\n| --- | --- | --- |\n| Shared Discord/Telegram space | One account can link one stable identity from each supported platform using a 10-minute, hashed, one-time code and source-side confirmation. | Live Discord/Telegram bot registration, profile lookup, or raw-username account matching. |\n| Recipient routing | A sender can create an intent for a known stable platform ID when the recipient is linked, has a verified Solana address, and has opted in. | Username-only transfers, guessed users, automatic delivery, escrow, or off-chain ledger balances. |\n| Social tip directory design | Source-cited signed-attestation protocol, scoped Tip Card model, pure multi-replica quorum policy, resolver port, and adversarial tests. | A live directory, global handle search, user identity/address record, resolver network, attester, on-chain registry, or address disclosure from a raw username. |\n| Solana transfer preparation | Base58 public-key syntax validation, sender/recipient account checks, positive lamport amount, idempotency, and `AWAITING_WALLET_APPROVAL` state. | Private keys, recovery phrases, signatures, transaction construction, simulation, RPC calls, broadcasts, or confirmations. |\n| Future signer design | Source-cited key lifecycle, external-wallet default, native-companion gates, exact-message review, signer-authority contract, and no-arbitrary-sign policy. | A deployed wallet client, key generation, recovery ceremony, Wallet Standard/MWA connection, signing, or submission. |\n| Routing and fee policy | Pure, `bigint`-safe swap-route and priority-fee evaluators that require independent evidence, full decode evidence, current simulation, caps, and human review. | Quote retrieval, DEX aggregation, RPC, transaction building, parser implementation, wallet connection, signing, submission, priority-fee selection, or token movement. |\n| Betting-provider policy | A separate protocol-agnostic capability contract that is deliberately `NOT_AVAILABLE`. | Provider selection, odds/market data, wagering, escrow, settlement, redemption, or compliance/eligibility assertion. |\n| Staking, liquidity, and portfolio interfaces | Source-cited future contracts and a disabled capability registry for read-only snapshots, native staking, liquid stake, liquidity positions, and rewards. | Validator/pool recommendation, price/yield prediction, portfolio provider/indexer, stake/delegate/withdraw, liquidity/reward transaction, or asset action. |\n| Durable iden","price_usd":"20.00","clone_checkout":"https://api.checkout402.com/c/chk_vqw4AqWpYRt0cUW0","rehearse_checkout":"https://api.checkout402.com/c/chk_vqw4AqWpYRt0cUW0/test","preview":"/r/mrphatom/solana-social-wallet/f/<path> serves file CONTENTS for any path (public repo)","how_to_buy":"pay clone_checkout with x402 (pay402 does it in one call); the goods arrive as payload_base64, a tar.gz of the full repo. Rehearse first at rehearse_checkout: same flow, simulated money.","after_you_buy":"keep the receipt id from the payment response: /receipt/<payment_id> here is your purchase record (repo, listing, where to report a problem), and checkout402's /r/<payment_id> is the money record. Tell your human both URLs."}