owned
Live
NVDAxNVDAx$234.22▲ 1.0%AAPLxAAPLx$332.66▲ 0.9%AMZNxAMZNx$250.81▲ 0.7%COINxCOINx$183.61▼ 3.7%COPXCOPX$84.92▲ 1.5%CRCLxCRCLx$81.65▼ 2.6%DRAMDRAM$61.28▼ 1.4%GLDxGLDx$379.98▼ 0.4%GMExGMEx$25.33▲ 4.4%GOOGLxGOOGLx$342.55▲ 1.2%HOODxHOODx$112.83▼ 0.1%MCDxMCDx$232.50▲ 0.1%METAxMETAx$726.47▼ 0.2%MRNAMRNA$189.29▲ 0.3%MSFTxMSFTx$516.27▲ 0.1%MSTRMSTR$160.94▼ 1.4%MSTRxMSTRx$161.50▼ 0.7%MUMU$1,068.01▼ 1.9%NKENKE$33.85▲ 6.1%PLTRxPLTRx$188.44▼ 1.4%QQQxQQQx$749.77▲ 0.8%SNDKSNDK$1,720.43▼ 3.9%SOLSOL$118.90▼ 0.9%SPCXSPCX$158.82▲ 6.5%SPYxSPYx$770.53▲ 0.7%TSLAxTSLAx$370.57▲ 4.2%NVDAxNVDAx$234.22▲ 1.0%AAPLxAAPLx$332.66▲ 0.9%AMZNxAMZNx$250.81▲ 0.7%COINxCOINx$183.61▼ 3.7%COPXCOPX$84.92▲ 1.5%CRCLxCRCLx$81.65▼ 2.6%DRAMDRAM$61.28▼ 1.4%GLDxGLDx$379.98▼ 0.4%GMExGMEx$25.33▲ 4.4%GOOGLxGOOGLx$342.55▲ 1.2%HOODxHOODx$112.83▼ 0.1%MCDxMCDx$232.50▲ 0.1%METAxMETAx$726.47▼ 0.2%MRNAMRNA$189.29▲ 0.3%MSFTxMSFTx$516.27▲ 0.1%MSTRMSTR$160.94▼ 1.4%MSTRxMSTRx$161.50▼ 0.7%MUMU$1,068.01▼ 1.9%NKENKE$33.85▲ 6.1%PLTRxPLTRx$188.44▼ 1.4%QQQxQQQx$749.77▲ 0.8%SNDKSNDK$1,720.43▼ 3.9%SOLSOL$118.90▼ 0.9%SPCXSPCX$158.82▲ 6.5%SPYxSPYx$770.53▲ 0.7%TSLAxTSLAx$370.57▲ 4.2%

On-chain

Verify it on-chain

How to confirm, without trusting owned, that a coin pays exactly 1%, routes fees where the badge says, and has locked liquidity.

Everything the app claims about a coin is readable from public accounts. This guide uses the Meteora SDK and the Solana CLI; an explorer works too.

1. Find the pool and its config

Open the coin's Info tab and copy the pool address, or derive it from the mint. Fetch the pool and read its config field:

solana account <POOL_ADDRESS> --output json --url mainnet-beta | head

With the SDK:

import { Connection, PublicKey } from '@solana/web3.js';
import { DynamicBondingCurveClient } from '@meteora-ag/dynamic-bonding-curve-sdk';

const client = new DynamicBondingCurveClient(new Connection(RPC), 'confirmed');
const pool = await client.state.getPool(new PublicKey(POOL));
const config = await client.state.getPoolConfig(pool.config);

2. Check the fee

In the decoded config:

FieldExpectedMeaning
poolFees.baseFee.cliffFeeNumerator100000001% of a 1,000,000,000 denominator
poolFees.baseFee.firstFactor0no fee schedule, flat
poolFees.dynamicFee.initialized0no dynamic fee
collectFeeMode0fees collected in the quote stock
migrationFeeOption6customizable migrated-pool fee
migratedPoolFeeBps1001% after graduation
migratedCollectFeeMode0quote only after graduation
migrationFeePercentage0no partner cut at graduation

3. Check the fee mode

FieldHolders modeCreator mode
creatorTradingFeePercentage0100
feeClaimerthe own treasury PDAthe own treasury PDA (receives nothing)
partnerPermanentLockedLiquidityPercentage1000
creatorPermanentLockedLiquidityPercentage0100

The treasury PDA is listed on the addresses page. You can derive it yourself with seeds ["treasury"] under the own program.

Then confirm the config is allowlisted by fetching the own program's quote-config entry at seeds ["quote_config", <config>]; its fee_mode field must match the table above. The own program only allowlists a config after decoding it and checking every field in sections 2 and 3, so an allowlisted config cannot break the rules.

4. Check supply and metadata

spl-token display <MINT>     # Mint authority: (not set)

The mint authority is revoked by Meteora at pool creation and the supply is 1,000,000,000. The Metaplex metadata account has isMutable = false because the config sets tokenUpdateAuthority = 1.

5. Check the lock after graduation

For a graduated coin the Info tab shows the DAMM v2 pool. Fetch the positions of that pool with the DAMM v2 SDK (getAllPositionsByPool) and confirm the launch position has permanentLockedLiquidity equal to its total liquidity and that its NFT is owned by the treasury (Holders mode) or the creator (Creator mode).

6. Watch the treasury

The treasury's token account for each stock is the associated token account of the treasury PDA for that mint. Its balance is the sum of swept, unclaimed rewards across all coins quoted in that stock. The Launch account of each coin records total_swept and total_claimed; the difference across all coins equals the treasury balance.

7. Verify the program binary

The program's source code is open at github.com/OwnedMarkets/owned-program. It is built reproducibly, so you can compile it yourself and compare the result with the deployed binary. The current upgrade authority can be read with:

solana program show 7xmrpjEm6nLQB5yQBYeY9538pBUhNR5q8qWBo9oyown --url mainnet-beta