Skip to Content
solidondocs

Stocks

The eight stocks a Solidon meme can hold, how they are priced, and their synthetic tokens and trading venues on each treasury chain.

The factory lists eight stocks, fixed at init. A creator picks one as the meme's thesis stock in create_meme(thesis_stock); it cannot be changed. Read the list with get_stocks on solidon.testnet.

Testnet tokens

Every stock token on this page is synthetic: a Solidon-deployed token with a Solidon-seeded pool, priced from the real Chainlink feed. They are not tokenized shares and have no value.

The list

TickerCompanyOracle feed id (price_id)Chainlink proxy (Robinhood Chain mainnet)
NVDANVIDIAb1073854ed24cbc755dc527418f52b7d271f6cc967bbf8d8129112b18860a5930x379EC4f7C378F34a1B47E4F3cbeBCbAC3E8E9F15
AAPLApple49f6b65cb1de6b10eaf75e7c03ca029c306d0357e91b5311b175084a5ad556880x6B22A786bAa607d76728168703a39Ea9C99f2cD0
MSFTMicrosoftd0ca23c1cc005e004ccf1db5bf76aeb6a49218f43dac3d4b275e92de12ded4d10x45C3C877C15E6BA2EBB19eA114Ea508d14C1Af2E
GOOGLAlphabet5a48c03e9b9cb337801073ed9d166817473697efff0d138874e0f6a33d6d5aa60xF6f373a037c30F0e5010d854385cA89185AE638b
AMZNAmazonb5d0e0fa58a1f8b81498ae670ce93c872d14434b72c364885d4fa1b257cbb07a0xD5a1508ceD74c084eBf3cBe853e2C968fB2a651C
METAMeta Platforms78a3e3b8e676a8f73c439f5d749737034b139bbbe899ba5775216fba596607fe0x7C38C00C30BEe9378381E7B6135d7283356D71b1
TSLATesla16dad506d7db8da01c87581c87ca897a012a153557d4d578c3b9c9e1bc0632f10x4A1166a659A55625345e9515b32adECea5547C38
SPCXSpaceX8a593d6edde7a3095213c88116d8840d01e93c2ddeb800bc891772eb8b93bb940xB265810950ba6c5C0Ff821c9963014a56fD8Bffb

Sources: contracts/stocks/feeds.json (feed ids) and CHAINLINK_PROXIES in backend/keeper/src/config.js.

Pricing

The keeper reads latestRoundData() from the official Chainlink proxies on Robinhood Chain mainnet. These are 24/5 equity feeds with 8 decimals.

The keeper writes the mock oracle

Every ORACLE_INTERVAL_SECS (300 s) the keeper calls set_price(price_id, price, expo) on pyth.solidon.testnet for all eight stocks in one NEAR transaction. The feed id is the Pyth id of Equity.US.<TICKER>/USD, used as the oracle key. A Chainlink answer older than 25 hours (weekend or broken feed) is not pushed.

The contract reads one price per stock

The meme calls get_price_no_older_than(price_id, 900). A price older than 15 minutes is stale: rebalance, redeem, fund_chain and the stock buys then do nothing. The same price values the stock held on every chain.

Buys are bounded by the oracle

buy_stock and buy_stock_solana sign a swap with minOut = oracle value of the USDC in, minus 1%. If the pool fills worse than that, the swap reverts on the destination chain.

The mock oracle is open on testnet (anyone can call set_price), so testnet mNAV numbers are a demo, not a market signal. See mNAV.

Tokens per chain

ChainToken standardSymbolDecimalsVenuePool feeCash proof
Base SepoliaERC-20 (MockERC20)NVDAc, AAPLc, ...8Uniswap v3 (SwapRouter02 exactInputSingle)0.3%MPC-verified (credit_cash)
Robinhood Chain testnetERC-20 (MockERC20)NVDA, AAPL, ...18Uniswap v3 (SwapRouter02 exactInputSingle)0.3%Relayer (report_cash)
Solana devnetToken-2022 mint with metadataNVDAx, AAPLx, ...8Raydium CLMM (swap_v2)0.05%Relayer (report_cash)

Every listed stock has one venue on each of the three chains. Each token address, pool and explorer link is on Deployments.

USDC per chain: Circle USDC (6 decimals) on Base Sepolia, the testnet USDC (18 decimals) on Robinhood, Circle devnet USDC (6 decimals) on Solana. The contract normalises all of them to 6 decimals in NAV.

How the pools were seeded

ChainScriptLiquidity
Base Sepolia, Robinhood testnetcontracts/evm/deploy-testnet-stocks.pyOne-sided stock liquidity worth $50,000, from the reference price at creation to about 2x
Solana devnetbackend/solana-spike/1_setup.jsSame, on Raydium CLMM; vault, observation and bitmap accounts checked by contracts/stocks/solana-accounts.py

Reference prices at creation (10 Nov 2026), USD:

NVDAAAPLMSFTGOOGLAMZNMETATSLASPCX
177.56350.44544.15290.38268.14642.58376.77141.18

On Solana the NVDA reference was 176.59.

Re-peg

One-sided liquidity starts at the reference price. When the stock falls, a buy still fills at the range edge, above the oracle, and the treasury's swap fails its minOut. The keeper's re-peg pass (every 30 minutes in production) moves any pool whose next buy fills more than 0.5% above Chainlink to 0.995 x Chainlink and adds $50,000 of new stock liquidity. A pool below the oracle is left alone. See Keeper.

Registries

FileContent
contracts/stocks/feeds.jsonOracle feed id per ticker
contracts/stocks/base-sepolia.jsonUSDC, Uniswap v3 factory, SwapRouter02, position manager, and per stock: token, symbol, decimals, pool, fee, reference price, tick range
contracts/stocks/hood-testnet.jsonSame for Robinhood Chain testnet
contracts/stocks/solana-devnet.jsonUSDC mint and token programs, Raydium CLMM program and AMM config, and per stock: mint, pool, usdc_vault, stock_vault, observation, bitmap_extension

contracts/deploy-testnet.sh builds the factory's init args from these files; DRY_RUN=1 ./deploy-testnet.sh prints them without sending.

On this page