Docs

How Array works, end to end.

An array is a basket of bonded Pump.fun coins you can buy in one go. Every array is backed 1:1 by the real coins, held in its own reserve, and you can sell out anytime. This page covers the whole thing in plain terms.

What Array is

Array is a basket launchpad for bonded Pump.fun coins on Solana. Instead of buying ten coins by hand, you buy one array and get a slice of all of them in a single transaction. Anyone can build an array, and anyone can buy into one that is already taking off.

The price of an array tracks the real coins inside it, live. When the coins move, the array moves. Because the coins really sit in the array’s reserve, your share is always redeemable for its slice of the real holdings, not an IOU.

The honest part

A basket spreads risk. It does not remove it. Pump.fun coins are volatile and many go to zero. Array is custodial in v1, so you trust the operator, not a contract. The real coins sit 1:1 in the reserve and you can always sell out. This is experimental software. Only risk what you can afford to lose.

How an array works

Every array is three things: a set of coins, a weight for each coin, and a reserve that holds them.

01

A builder picks the coins

Between 2 and 15 eligible bonded coins, each with a target weight. No single coin can be more than 60% of the array, and the weights add up to 100%.

02

The first buy seeds it

A seed buy of at least 0.1 SOL launches the array. That first buy sets the starting price reference and fills the reserve with the real coins at their target weights.

03

Anyone buys or sells a share

Your SOL buys the whole basket at once and mints you a share of the array. Selling a share returns its live slice of the reserve back to you in SOL.

The array’s price (sometimes called NAV) is just the value of everything in the reserve divided by the number of shares outstanding. Buy in and the reserve grows in step with the shares you are minted, so existing holders are never diluted.

Which coins qualify

Not every Pump.fun coin can join an array. A coin is eligible only if all of the following hold. These rules keep arrays tradeable and keep pricing honest.

Bonded

The coin has graduated off the Pump.fun bonding curve and trades on a real AMM. A coin still on the curve is treated as unbonded and rejected.

Has a SOL pool

There is a tradeable pair quoted in SOL. Markets quoted only in USDC or other tokens are ignored for both eligibility and pricing.

Has a valid price

The SOL pool reports a real, non-zero price.

Deep enough

The chosen SOL pool holds at least $10,000 of liquidity, so buys and sells do not wreck the price.

Pricing comes from the deepest SOL pool a coin trades in. If a coin fails eligibility at build time, it cannot be added to an array. If it drifts out of eligibility later, the holdings table flags it.

Buying in

A buy happens in clear stages, and you always see exactly what you get before you confirm. The quote you see is frozen for 30 seconds so the number does not move under you.

01

Quote

Array reads a fresh price for every coin, works out the fees and a small gas reserve, checks the buy is not too large for any one pool, and freezes the result for 30 seconds.

02

Fund

You sign one transaction sending SOL toward the array’s reserve.

03

Execute

The execution service buys each coin into the reserve at the array’s target weights, routed through Jupiter, retrying any leg that fails.

04

Settle

Your shares are minted, the trade is recorded, and a fresh price snapshot is taken. If a leg cannot be completed, your full SOL is refunded so nothing is left stranded.

The amount that actually buys coins, shown as invested in the quote, is your SOL minus the fees and the gas reserve. You always send a little more than ends up invested, and the breakdown is never hidden.

Selling out

Selling mirrors buying. You can sell any time, even if an array has been closed by its builder, because 1:1 backing is the entire point.

01

Quote

Array prices your shares against the live value of the reserve and shows the gross SOL and the fees, frozen for 30 seconds.

02

Execute

Your proportional slice of every coin is sold out of the reserve through Jupiter.

03

Settle

You receive your payout, your shares are burned, and the supply drops. A fresh price snapshot is taken.

Your payout is the value of your slice minus fees. You are selling the real coins behind your share, so what you get back reflects exactly what those coins are worth at that moment.

Fees

There are three things taken out of a trade. All of them are shown in the quote before you confirm.

Protocol fee0.3%Charged on both buys and sells. Funds the protocol.
Builder fee0% to 1%Set by whoever built the array, at build time. This is how builders earn.
Gas reserveVariableOn buys only. Covers the on-chain swaps and account rent. Sells pay gas out of the proceeds.

Fees always round up and minted shares always round down by a tiny amount, so the reserve can never end up owing more than it holds. The numbers you see in a quote are the numbers you pay.

The reserve and 1:1 backing

The reserve is the address that holds an array’s real coins. One array, one reserve. Every share you hold is a proportional claim on the coins sitting in that reserve. There are no synthetic positions and no lending against the holdings.

In v1, Array is custodial. The reserve key is encrypted at rest with AES-256-GCM, and the master key lives in a hardware-backed key service (AWS KMS). Only the isolated execution service can decrypt it in memory to sign a swap, and every signature is logged. You are trusting the operator to run this honestly, which is why the holdings are kept verifiable on-chain and reconciled on a schedule.

The core invariant is simple: the total shares outstanding always correspond to the real coins in the reserve. A future v2 moves this on-chain so the backing is enforced by a program and the share becomes a real SPL token, removing the custodial trust entirely.

Weights and drift

A builder sets each coin’s target weight when the array is created. After launch, those weights drift as prices move. Winners grow their share of the array and losers shrink. This drift is expected and is shown in the holdings table as the gap between the target weight and the live weight.

By default an array is static: the reserve is left alone after launch and the basket is simply allowed to ride. Fresh buys always purchase at the target weights, which gently nudges a drifted array back toward its targets over time. A future opt-in periodic mode lets a builder have the array corrected back toward target weights only when drift gets large, so it does not churn on every small move.

The $Array token

$Array is the protocol token, and it is tied directly to arrays doing well. On any profitable exit, 5% of the realized gain is used to buy $Array on the open market. Losses and breakeven sells contribute nothing, so the buy pressure is funded purely from upside and never from anyone’s principal.

This ships after flocks are trading with real funds. Until then, treat it as planned, not live.

How it is built

Array is a TypeScript monorepo. The pieces are split so the part that can move funds is small, isolated, and the only thing that can touch a reserve key.

Web appNext.js 15 (App Router) and React 19. Server-rendered pages, a live price chart, and a wallet connect flow.
APIA Fastify service that serves arrays, quotes, trades, portfolio, and stats over a REST API backed by Postgres via Prisma.
Execution serviceAn isolated worker that holds the only path to a reserve key. It signs and sends the per-coin swaps through Jupiter, with idempotent retries.
KeeperBackground jobs: price snapshots, deposit watching, and refunds. Driven by a Redis-backed queue.
PricingA price package that checks eligibility and reads live prices and pool liquidity from Dexscreener, cached in Redis.
Core mathA pure package with the price, fee, weighting, and quote math. No I/O, fully testable, the single source of truth for the numbers.

Swaps route through Jupiter. Solana reads, writes, and webhooks go through Helius. Reserve keys are wrapped by AWS KMS. The economic constants (the 0.3% fee, the 2 to 15 coin range, the $10k liquidity floor, the 30 second quote window, and the rest) live in one config package and are never inlined anywhere.

FAQ

Do I actually own the coins?

You own a share of the array, which is a proportional claim on the real coins held in its reserve. Sell the share and you get that slice back in SOL.

Can I always sell?

Yes. You can sell out at any time, including after a builder closes an array to new buys. Redeemability is the point of the 1:1 backing.

What happens if a buy fails partway through?

If any leg cannot be completed, the whole buy is unwound and your full SOL is refunded. No funds are left stranded in a half-filled state.

How many coins can an array hold?

Between 2 and 15. No single coin can exceed 60% of the array, and the weights must add up to 100%.

Why was my coin rejected?

A coin must be bonded, trade in a SOL pool with a valid price, and have at least $10,000 of liquidity in that pool. If any of those fail, it cannot join an array.

Is this custodial?

In v1, yes. The operator holds the reserve keys under hardware-backed encryption. A future v2 moves backing on-chain and removes the custodial trust.