STASH is a student and community project: send SOL on Solana to another person using X (Twitter) as identity, with on-chain escrow, clear previews, and no custodial hot wallet run by the app. If you are the recipient, you do not have to have used STASH or signed up in advance as long as you sign in on xstash.app with the same X account the sender used. This repository holds the open Anchor program and developer docs. The product itself lives at the website below.
Website: xstash.app (also linked from @XStashApp on X).
- Open the app at xstash.app. Sign in with your X account. STASH uses that identity; there is no separate password for the core flow.
- Receiving (no prior app use required). A send is addressed to an X identity, not a pre-registered account. The recipient can be someone who has never opened STASH before. When they are ready, they open xstash.app, sign in with the X account that was named for the send, and complete the receive flow. The in-browser signing key is created in that session if it is their first time.
- Preview before you sign (senders). You see what you are about to confirm on chain before you commit, including on first-time sends.
- Wallets and SOL (important): the app uses a non-custodial model: the service does not hold your SOL in a shared company wallet. You need SOL in the key the app uses to sign (created in the browser for your session). If you are on devnet or a test network, you must fund that with test SOL:
- Use any reliable Solana devnet faucet (or your wallet’s “Get SOL” / similar if the UI offers it). Paste the public receive address the app shows you for funding. Never share a private key or seed to a site or a person.
- If you are testing with the Solana CLI in parallel, you can airdrop to a CLI keypair: see SOLANA.md (
solana airdropon devnet). That is a different keypair from the in-browser one unless you export/import (advanced; not required to try the app).
- Mainnet settles in real SOL. There is no test faucet on mainnet (faucets are for devnet only). The app is built to be used for real transfers: read the preview, confirm the recipient and amount, then sign.
- More detail on CLI install,
config, and safety: SOLANA.md. Updates and announcements: @XStashApp.
git clone https://github.com/xMrGeo/STASH-public.git
cd STASH-public/contract
npm install
anchor buildUse Anchor 0.30.1 (see contract/Anchor.toml). You need the Solana CLI, Rust toolchain, and Node 18+ before this will work. If solana is missing or you need a wallet and devnet SOL, go to the docs below.
xstash.app
Web app (sign in with X, send and claim flows; see Use the app above).
SOLANA.md
Install Solana CLI, set cluster, new keypair, balance / airdrop, optional vanity grind, safety notes.
contract/DEPLOY.md
Build, devnet script, mainnet deploy, Config PDA initialize, anchor test, Orb explorer links.
contract/README.md
Program name, file map, copy-paste commands.
@XStashApp
Project account on X.
Anchor program: stash_escrow
3NMdsV1a6nfZAfSEWTCZYwjtEqBV5RhAC2hGx6nkEHVq
Orb (Helius): mainnet · devnet
cd STASH-public/contract
anchor testWindows: use WSL for anchor and the bash deploy script. Native long paths can break Rust/Solana builds.
- Do not commit or publish private keys, keypair JSON, or mnemonics.
initializeonly needs the attestor public key in env. Keep signing keys off-repo.contract/.gitignoreignorestarget/andnode_modules/. Keep local key paths out of git.
assets/icons (X, Solana, STASH) andfavicon.svgcontract/stash_escrowprogram (Rust), tests, scripts