How Offbell works
Offbell is a Solana app for buying tokenized stocks with $BELL at any hour. These docs explain the moving parts, what anyone can check onchain, what still depends on the issuer, and what is live today.
Current status. The app is live in beta with real prices, wallet balances, verifiable file storage and Solana anchors. $BELL launches on Stonk.fun, and the order route that buys stocks with $BELL is still being built. Anything marked as published at launch will appear on this page and on @offbell only.
Overview
Offbell connects three things that already exist on Solana: tokenized stocks issued with one to one backing, a payment token, and swap routing. You pick a stock, pay with $BELL, and the route converts your payment into the tokenized share, which lands in your own wallet.
The difference from a broker is that the token supply and your balance are public at any moment instead of sitting in a private ledger. The difference from a synthetic product is that each token is issued against a real share the issuer holds.
The three parts#
| Part | What it is | Where the trust sits |
|---|---|---|
| Tokenized stocks | Solana tokens such as AAPLx, NVDAx and TSLAx, issued by xStocks | The issuer holds the underlying shares and publishes its backing |
| $BELL | The token you pay with, launched on Stonk.fun | Supply is fixed by the launchpad and readable onchain |
| Order route | Swaps $BELL into the chosen stock through Solana liquidity | Price and minimum received are shown before you sign |
Who does what#
| Actor | Role |
|---|---|
| Trader | Holds $BELL, picks a stock, signs one transaction and keeps the tokens in their own wallet. |
| Issuer | Mints tokenized stocks against shares held in custody, handles redemptions and decides who is eligible. |
| Liquidity | Solana pools and aggregators that quote and fill the swap. |
| Offbell | The app and the route. It shows prices and builds the transaction, and it never holds your funds. |
What is live today
We would rather show an honest table than a finished looking app that does not work yet.
| Piece | Status | Notes |
|---|---|---|
| Website and docs | Live | This site. Prices on the homepage are sample data. |
| $BELL token | Launching | On Stonk.fun. Address published at launch. |
| Order route | In development | Buying stocks with $BELL in one transaction. |
| Live prices and supply | In development | Read directly from Solana instead of sample numbers. |
| App with live prices | Live | xStocks prices from Jupiter, supply and balances read from Solana. |
| Wallet connect | Live | Phantom, Solflare and Backpack. The site reads your address and only asks for a signature when you anchor something. |
| File storage and proofs | Beta | Upload, share, retrieve with verification, live Merkle challenges. |
| Solana anchors and proof ledger | Beta | Memo transactions signed by your wallet and checked by the node. |
| RWA registry | Beta | Registrations backed by anchored documents. Attestors are being onboarded. |
| HTTP API and API keys | Beta | Store and prove files from code. |
The $BELL token
$BELL launches on Stonk.fun, a Solana launchpad where new tokens trade against tokenized stocks and other assets. The launchpad creates the token with a set supply and a bonding curve, and once the address is published anyone can check its mint settings onchain.
The contract address and the final supply will be published here at launch. Until then, treat any address that claims to be $BELL as fake.
| Item | Value |
|---|---|
| Chain | Solana |
| Launch venue | Stonk.fun |
| Contract address | Published at launch |
| Supply | Published at launch |
| Creator fees | 75% to a pool that feeds the $BELL liquidity pool, 25% to ecosystem growth and updates to Offbell |
Creator fees#
Stonk.fun pays a creator fee on $BELL trading volume. 75% flows into a pool that feeds $BELL's own liquidity pool: more volume means deeper liquidity and more fees back to the community. 25% goes to ecosystem growth and updates to Offbell itself.
Only three places will ever show the contract address: this page, the Offbell homepage and @offbell on X.
How tokenized stocks work
A tokenized stock is a token that tracks one share of a listed company. The stocks shown on Offbell are xStocks: tokens issued on Solana with the Token Extensions program, each one backed by a share the issuer holds in custody.
The stocks in the app#
Offbell lists 49 xStocks. Each mint below was checked on Solana: Token Extensions program, matching symbol, and the same issuer update authority.
| Company | Token | Mint address |
|---|---|---|
| Apple | AAPLx | XsbEhLAtcf6HdfpFZ5xEMdqW8nfAvcsP5bdudRLJzJp |
| Microsoft | MSFTx | XspzcW1PRtgf6Wj92HCiZdjzKCyFekVD8P5Ueh3dRMX |
| NVIDIA | NVDAx | Xsc9qvGR1efVDFGLrVsmkzv3qi45LTBjeUKSPmx9qEh |
| Alphabet | GOOGLx | XsCPL9dNWBMvFtTmwcCA5v3xWPSMEBCszbQdiLLq6aN |
| Amazon | AMZNx | Xs3eBt7uRfJX8QUs4suhyU8p2M6DoUDrJyWBa8LLZsg |
| Meta | METAx | Xsa62P5mvPszXL1krVUnU5ar38bBSVcWAB6fmPCo5Zu |
| Tesla | TSLAx | XsDoVfqeBukxuZHWhdvWHBhgEHjGNst4MLodqsJHzoB |
| Broadcom | AVGOx | XsgSaSvNSqLTtFuyWPBhK9196Xb9Bbdyjj4fH3cPJGo |
| TSMC | TSMx | XsafvsGtzFqqHgTnA3aPC83EAMkacU5mcGtcSayhpVV |
| AMD | AMDx | XsXcJ6GZ9kVnjqGsjBnktRcuwMBmvKWh8S93RefZ1rF |
| Intel | INTCx | XshPgPdXFRWB8tP1j82rebb2Q9rPgGX37RuqzohmArM |
| Micron | MUx | XsQLZycSZ7QnBBdBXQaTbQdiUcbRqjNJgyBGAMzhHav |
| Marvell | MRVLx | XsuxRGDzbLjnJ72v74b7p9VY6N66uYgTCyfwwRjVCJA |
| Oracle | ORCLx | XsjFwUPiLofddX5cWFHW35GCbXcSu1BCUGfxoQAQjeL |
| Salesforce | CRMx | XsczbcQ3zfcgAEt9qHQES8pxKAVG5rujPSHQEXi4kaN |
| Palantir | PLTRx | XsoBhf2ufR8fTyNSjqfU71DYGaE6Z3SUGAidpzriAA4 |
| Netflix | NFLXx | XsEH7wWfJJu2ZT3UCFeVfALnVA6CP5ur7Ee11KmzVpL |
| Uber | UBERx | XsAsZLF4MmsvS1sDxRMrUz7REjHfwbC9UAMXSRBqgEB |
| CrowdStrike | CRWDx | Xs7xXqkcK7K8urEqGg52SECi79dRp2cEKKuYjUePYDw |
| AppLovin | APPx | XsPdAVBi8Zc1xvv53k4JcMrQaEDTgkGqKYeh7AYgPHV |
| Coinbase | COINx | Xs7ZdzSHLU9ftNJsii5fCeJhoRWSC32SQGzGQtePxNu |
| Robinhood | HOODx | XsvNBAYkrDRNhA7wPHQfX3ZUXZyZLdnCQDfHZ56bzpg |
| Strategy | MSTRx | XsP7xzNPvEHS1m6qfanPUGjNmdnmsLKEoNAnHjdxxyZ |
| Circle | CRCLx | XsueG8BtpquVJX9LVLLEGuViXUungE6WmK5YZ3p3bd1 |
| Visa | Vx | XsqgsbXwWogGJsNcVZ3TyVouy2MbTkfCFhCGGGcQZ2p |
| Mastercard | MAx | XsApJFV9MAktqnAc6jqzsHVujxkGm9xcSUffaBoYLKC |
| JPMorgan Chase | JPMx | XsMAqkcKsUewDrzVkait4e5u4y8REgtyS7jWgCpLV2C |
| Goldman Sachs | GSx | XsgaUyp4jd1fNBCxgtTKkW64xnnhQcvgaxzsbAq5ZD1 |
| Bank of America | BACx | XswsQk4duEQmCbGzfqUUWYmi7pV7xpJ9eEmLHXCaEQP |
| McDonald's | MCDx | XsqE9cRRpzxcGKDXj1BJ7Xmg4GRhZoyY1KpmGSxAWT2 |
| Coca Cola | KOx | XsaBXg8dU5cPM6ehmVctMkVqoiRG2ZjMo1cyBJ3AykQ |
| PepsiCo | PEPx | Xsv99frTRUeornyvCfvhnDesQDWuvns1M852Pez91vF |
| Walmart | WMTx | Xs151QeqTCiuKtinzfRATnUESM2xTU6V9Wy8Vy538ci |
| Procter & Gamble | PGx | XsYdjDjNUygZ7yGKfQaB6TxLh2gC6RRjzLtLAGJrhzV |
| GameStop | GMEx | Xsf9mBktVB9BSU5kf4nHxPq5hCBJ2j2ui3ecFGxPRGc |
| Eli Lilly | LLYx | Xsnuv4omNoHozR6EEW5mXkw8Nrny5rB3jVfLqi6gKMH |
| UnitedHealth | UNHx | XszvaiXGPwvk2nwb3o9C1CX4K6zH8sez11E6uyup6fe |
| Novo Nordisk | NVOx | XsfAzPzYrYjd4Dpa9BU3cusBsvWfVB9gBcyGC87S57n |
| Johnson & Johnson | JNJx | XsGVi5eo1Dh2zUpic4qACcjuWGjNv8GCt3dm5XcX6Dn |
| Abbott | ABTx | XsHtf5RpxsQ7jeJ9ivNewouZKJHbPxhPoEy6yYvULr7 |
| Exxon Mobil | XOMx | XsaHND8sHyfMfsWPj6kSdd5VwvCayZvjYgKmmcNL5qh |
| Chevron | CVXx | XsNNMt7WTNA2sV3jrb1NNfNgapxRF5i4i6GcnTRRHts |
| SpaceX | SPCXx | Xs3oZwbHvqis4NYcf4YKWmEia2eC84wSiVrcYcTqpH8 |
| S&P 500 ETF | SPYx | XsoCS1TfEyfFhfvj8EtZ528L3CaKBDBRqRapnBbDF2W |
| Nasdaq 100 ETF | QQQx | Xs8S1uUs1zvS2p7iwtsG3b6fkhpvmwz4GYU3gWAmWHZ |
| Nasdaq 100 3x ETF | TQQQx | XsjQP3iMAaQ3kQScQKthQpx9ALRbjKAjQtHg6TFomoc |
| Total Market ETF | VTIx | XsssYEQjzxBCFgvYFFNuhJFBeHNdLWYeUSP8F45cDr9 |
| Russell 2000 ETF | IWMx | XsbELVbLGBkn7xfMfyYuUipKGt1iRUc2B7pYRvFTFu3 |
| Gold ETF | GLDx | Xsv9hRk1z5ystj9MhnA7Lq4vjSsLwzL2nxrwmwtD3re |
Check the mint, not the name. Anyone can create a token called AAPLx. Only the addresses in this table belong to the issuer, and each of them uses 8 decimals.
What a token gives you#
- Price exposure to the underlying share, one token for one share.
- Transfers at any hour of any day, settled on Solana in seconds.
- A balance that sits in your own wallet and that anyone can verify.
It does not give you voting rights in the company. How dividends, splits and other corporate actions are handled is set by the issuer's terms, not by Offbell.
Issuer controls
The xStocks mints use Token Extensions that give the issuer compliance controls. They are visible onchain for every mint in the table above.
| Extension | What it allows |
|---|---|
| Pausable | The issuer can pause transfers of the token. |
| Permanent delegate | The issuer can move or burn tokens in any account, for example to follow a court order. |
| Default account state | New token accounts can start frozen until they are approved. |
| Transfer hook | Every transfer can run an extra check defined by the issuer. |
| Scaled UI amount | Displayed balances can be adjusted for splits and similar corporate actions. |
These controls are normal for regulated securities. Offbell cannot switch them off, and the app will show a clear message if a stock is paused.
Who can buy
Availability depends on where you live. Tokenized stocks are not offered to persons in the United States and in some other countries. The issuer decides who is eligible, and the app will follow those rules. Check what applies to you before you buy.
Buying with $BELL
A purchase is a single Solana transaction that you sign in your own wallet. This is the flow the app is being built around:
- Pick a stock
Choose a stock and an amount. The app shows the current price and how much $BELL it costs.
- Get a quote
The route looks for the best path from $BELL into the stock across Solana liquidity and shows the minimum you will receive.
- Sign once
You sign one transaction. If the price moves past your slippage limit before it lands, the transaction fails and only the network fee is spent.
- Hold or sell
The tokenized shares arrive in your wallet within seconds. Selling is the same flow in reverse.
Fees
| Fee | Amount |
|---|---|
| Solana network fee | A fraction of a cent per transaction. |
| Swap fees | Charged by the pools on the route and included in the quote. |
| Offbell fee | Published before the app goes live. |
Exchange hours
Stocks are priced on their home exchange during fixed hours. Tokenized versions can move around the clock, but the underlying price is only discovered while the home exchange is open. Outside those hours spreads can be wider, and prices can jump at the next open.
| City | Exchange | Regular hours, local time | Days |
|---|---|---|---|
| New York | NYSE, Nasdaq | 09:30 to 16:00 | Mon to Fri |
| London | LSE | 08:00 to 16:30 | Mon to Fri |
| Frankfurt | Xetra | 09:00 to 17:30 | Mon to Fri |
| Dubai | DFM | 10:00 to 15:00 | Mon to Fri |
| Mumbai | NSE | 09:15 to 15:30 | Mon to Fri |
| Hong Kong | HKEX | 09:30 to 12:00 and 13:00 to 16:00 | Mon to Fri |
| Shanghai | SSE | 09:30 to 11:30 and 13:00 to 15:00 | Mon to Fri |
| Tokyo | TSE | 09:00 to 11:30 and 12:30 to 15:30 | Mon to Fri |
| Sydney | ASX | 10:00 to 16:00 | Mon to Fri |
The homepage shows the same exchanges live, with open and closed states in your own time zone: see world exchanges. Public holidays, auctions and extended sessions are not included.
Onchain and offchain
Tokenization moves a lot into the open, but not everything. This is where the line sits.
| Anyone can check onchain | Still depends on the issuer |
|---|---|
| Token supply of each stock | Custody of the underlying shares |
| Your balance and every transfer | Legal title and investor protection |
| Mint address and token controls | Accuracy of published backing reports |
| The minimum you accept in a trade | Eligibility rules for your country |
Check the supply yourself
You do not need Offbell to check a tokenized stock. Any Solana RPC node returns the current supply of a mint. Run this with Node 18 or newer, since public endpoints turn away requests from web pages:
// current supply of AAPLx, straight from Solana const mint = "XsbEhLAtcf6HdfpFZ5xEMdqW8nfAvcsP5bdudRLJzJp"; const res = await fetch("https://api.mainnet.solana.com", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: "getTokenSupply", params: [mint] }), }); const { result } = await res.json(); console.log(result.value.uiAmountString, "AAPLx in circulation");
Compare that number with the backing reports the issuer publishes. If the supply were ever higher than the reported shares, something would be wrong, and you would be able to see it without asking anyone.
The homepage still shows sample figures. When live data ships, the same numbers will be read from Solana.
Verifiable storage
The app includes a storage node, Offbell Node 1, that keeps files and proves it still has them. You can use it without a wallet: the first upload creates an account key in your browser.
| Setting | Value |
|---|---|
| Price | Free during the beta |
| Term | 30 days, renewable up to 360 days ahead |
| Largest file | 25 MB |
| Allowance per account | 250 MB |
| Chunk size | 4 KiB, hashed with SHA-256 |
Every stored file is a storage deal: a Merkle root, a term and, if you choose, an anchor on Solana. When the term ends and the file is not renewed, the node deletes the bytes. A deal is an agreement with the node, not an escrow contract, so there is no collateral to slash. What you can check yourself is the root, a live proof of any chunk, and the anchor transaction.
Keep your account key safe. Files are tied to the key stored in your browser. Export it from the Files page if you want to manage them from another device.
Merkle commitments
Your browser splits the bytes into 4096 byte chunks and builds a binary Merkle tree. The node repeats the calculation on arrival and refuses the upload if the roots differ. Downloads are checked the same way before anything is saved.
leaf = sha256(0x00 || chunk) // an empty file is one empty chunk parent = sha256(0x01 || left || right) // an odd node at the end of a level moves up unchanged root = the single node left at the top
A proof challenge asks the node for one chunk and the sibling hashes on its path to the root. Your browser picks the chunk at random and checks the path, so the node cannot pass without holding that part of the file. Every file page runs one challenge when it opens.
Privacy and encryption
| Mode | What the node stores | Who can open it |
|---|---|---|
| Public | The file as uploaded, with its name | Anyone with the link |
| Password | AES-GCM ciphertext, key derived from your password with PBKDF2 (310,000 rounds) | Anyone with the link and the password |
| Secret link | AES-GCM ciphertext, the 256 bit key lives only in the link after the # | Anyone with the full link |
For private files the name is encrypted too. Browsers never send the part of a link after the # to a server, so the node cannot read secret link files. The Merkle root commits to the ciphertext, which lets the node prove storage without learning the content.
Solana anchors
Anchoring writes one memo transaction to Solana mainnet from your own wallet. It costs the normal network fee, about 0.000005 SOL. The node then fetches the transaction and marks it verified only if your wallet signed it and the memo matches exactly.
| Record | Memo |
|---|---|
| File | offbell:file:v1:<file id>:<merkle root> |
| RWA registration | offbell:rwa:v1:<asset hash> |
| Attestation | offbell:attest:v1:<asset id>:<asset hash> |
The memo program is MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr. Every verified anchor appears in the public proof ledger in the app, with a link to the transaction.
RWA registry
The registry records real world assets whose paperwork lives in anchored storage deals. The owner signs one memo that commits the name, type, declared value, metadata URI and the list of document roots. The asset hash is the SHA-256 of that data as compact JSON with sorted keys.
- Registered
The registration memo is verified on Solana.
- Attested
An approved attestor reviews the documents and signs an attestation memo. It stays current for 90 days.
- Lapsed
If any document is deleted, expires or loses its anchor, the backing breaks and anyone can flag the asset.
A registration is a public record of who committed which documents and when. It is not a token and does not establish legal title, custody or valuation.
HTTP API
All endpoints live under /api/v1 on this site. Create a key on the API keys page and send it as Authorization: Bearer <key>. Errors come back as { "error": string }.
| Method | Path | Purpose |
|---|---|---|
| GET | /api/v1/status | Node capacity, limits and hashing parameters. No key. |
| POST | /api/v1/files | Store a raw body. Optional headers: X-Filename, X-Privacy, X-Merkle-Root, X-Mime. Returns 201 with the file. |
| GET | /api/v1/files | Files on your account. |
| GET | /api/v1/files/:id | Metadata, anchor status and the memo to sign. |
| GET | /api/v1/files/:id/content | The stored bytes with an X-Merkle-Root header. |
| GET | /api/v1/files/:id/proof?index=n | One chunk in base64 and its Merkle path. |
| POST | /api/v1/files/:id/renew | Extend the term by 30 days. |
| POST | /api/v1/files/:id/anchor | Submit { signature, wallet } for a memo you sent. |
| DELETE | /api/v1/files/:id | Delete the bytes. |
| GET | /api/v1/proofs | The public proof ledger. |
| GET | /api/v1/assets | The RWA registry. |
# store a file and check the node's root against your own
curl -X POST "https://<this site>/api/v1/files" \
-H "Authorization: Bearer $OFFBELL_KEY" \
-H "X-Filename: report.pdf" \
--data-binary @report.pdf
Addresses
| Item | Network | Address |
|---|---|---|
| $BELL token | Solana | Published at launch |
| Offbell order route | Solana | Not deployed yet |
| Memo program (anchors) | Solana | MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr |
| AAPLx | Solana | XsbEhLAtcf6HdfpFZ5xEMdqW8nfAvcsP5bdudRLJzJp |
| NVDAx | Solana | Xsc9qvGR1efVDFGLrVsmkzv3qi45LTBjeUKSPmx9qEh |
| TSLAx | Solana | XsDoVfqeBukxuZHWhdvWHBhgEHjGNst4MLodqsJHzoB |
Stay safe. Offbell will never ask for your seed phrase, never send you to another site to claim tokens, and never post an address anywhere except this page and @offbell.
Risks
- Tokenized stocks carry the risk of the issuer and its custodian, on top of the risk of the stock itself.
- Prices can drift while the home exchange is closed and jump when it opens.
- Smart contracts, wallets and bridges can fail. Only use amounts you can afford to lose.
- $BELL is a new token and has no guaranteed value.
- Rules for tokenized securities differ between countries and can change.
Nothing on this site is investment advice.
FAQ
Is Offbell live?
The app is live in beta: live stock prices, wallet balances, file storage, Solana anchors and the RWA registry all work. $BELL launches on Stonk.fun, and buying stocks with $BELL opens once the order route ships. Prices on the homepage are still sample data.
Does Offbell hold my money?
No. Purchases happen in a transaction you sign yourself, and the tokens go straight to your wallet.
Can I trade on weekends?
Tokenized stocks can be transferred and swapped at any time. Liquidity is usually thinner while the home exchange is closed, so check the quote before you sign.
Which wallets will work?
The app is being built for common Solana wallets such as Phantom, Solflare and Backpack. The wallet has to support Token Extensions, which all three do.
Who can see my files?
Public files can be opened by anyone with the link. Password and secret link files are encrypted in your browser, so the node only holds ciphertext. Do not store anything illegal or anything you are not allowed to share.
What happens when a storage term ends?
The node deletes the bytes. The Solana anchor stays on chain, so the record of the root remains, but the file itself is gone unless you renewed it.
Where do I report a fake site or token?
Send a message to @offbell on X.