Skip to content

Protocol

  • Overview
  • Revenue

Earn

  • Coins
  • Pulls
  • Bonds

You

  • Portfolio
  • Launch
$PACK
…
$PACK burned
…
/
Solana devnet
  • Terms of service
  • Risk disclosure
  • Security
  1. 1. What this page covers
  2. 2. Trusted off-chain inputs of pack_bond
  3. 3. Program control
  4. 4. Third-party control points
  5. 5. Keys and wallets
  6. 6. Raffle monitor
  7. 7. Reporting a vulnerability
  8. 8. Open source and verification

Security

Last updated: 2026-10-12

This page states what Pack trusts, how Pack's own programs are controlled, who controls the third-party programs and keys that Pack depends on, and how to report a vulnerability. It goes with the terms of service and the risk disclosure.

1. What this page covers

  • The two inputs that the pack_bond program trusts from outside the program (section 2).
  • How Pack's own programs are controlled, the size caps that apply before an external audit, and how Pack reviews its code (section 3).
  • Who controls the third-party programs and keys that Pack depends on, and what they can do (section 4).
  • Pack's keys and wallets (section 5), the raffle monitor (section 6), how to report a vulnerability (section 7) and what is open source (section 8).

Facts about third parties were read from the chain and from public documents on 2026-10-12. Each of them can change at any time, so check the addresses on a block explorer. Where Pack has not verified something, this page says "not verified". Pack's own programs are not on mainnet yet, so statements about them describe how they are built and what Pack will publish at mainnet activation.

2. Trusted off-chain inputs of pack_bond

The pack_bond program holds buyer funds in escrow. It cannot see launchpad fees or prices by itself, so it trusts two inputs that come from outside the program. If either input is wrong, amounts can be wrong.

2.1 The keeper's attestation of the coin record. For each coin, the keeper writes a record of the coin's creator, its launchpad, its fee asset and the creator share. The program accepts a new offering only when the signer is the creator named in that record. The program cannot check the record against the launchpad. While an offering is selling or active, the record cannot be changed.

What a stolen or wrong keeper key can do. It can record a wallet it controls as the creator of a coin and then open an offering in that coin's name. Buyers who fill that offering pay their money to that wallet when the sale closes. That is real money at risk, bounded by the size caps (10 SOL per offering and 100 SOL outstanding in total in SOL, fixed in the program). The program delays it: a new or changed record can open an offering only 24 hours after the change, so during that day the admin can pause new offerings and purchases or replace the keeper, and a monitor can raise the alarm from the record-change event. There is no second signature on a record. What the keeper key cannot do: move escrowed money or yield out of an offering that is already open, raise the caps, change the creator share of a coin while an offering is open, or move the price by more than 20% in one push. The admin can replace the keeper at any time.

2.2 The $PACK price feed. The keeper posts a time-weighted $PACK price. The issuance fee discount uses it. The program rejects a price that is older than 900 seconds (current setting), rejects a price that moves by more than 20% in one step (current setting) and rejects a feed that has never been set. If the feed is stale when a sale closes, the full fee is charged in SOL and no discount applies.

2.3 The keeper deposits the yield. The program cannot see launchpad fees. The keeper reads the fees that reach Pack and deposits each bond's share into the bond's yield vault. If the keeper is down, yield deposits are late, and maturity still happens on schedule.

What this means for bond buyers is in the risk disclosure, section 4.8.

3. Program control

3.1 Pack's own programs. Pack's programs are not on mainnet yet. The table shows what will be published at mainnet activation.

ItemAddressWho controls it
pack_bond programPublished at mainnet activationUpgrade authority: a Squads multisig on mainnet
pack_bond adminPublished at mainnet activationA Squads multisig. It can pause new purchases, change the keeper and set asset caps. By design it cannot move buyer escrow or yield.
TreasuryPublished at mainnet activationAn ordinary wallet of Pack's operator, not a multisig; the keeper only sends to it
Keeper fee walletPublished at mainnet activationThe keeper, a hot wallet with a capped balance (section 5)

3.2 Size caps before an external audit. Each offering is capped at 10 SOL, and all outstanding bonds across Pack are capped at 100 SOL. The program enforces both caps on chain, and a purchase that would break a cap fails. The caps are stored in the program's configuration, and only the admin multisig can change them. Pack's rule is to raise them only after an external audit.

3.3 No external audit yet. The pack_bond program has not been externally audited. AI review is not an audit. Pack's review process reduces risk. It does not replace an audit.

3.4 The review process. Before each mainnet activation, Pack's process requires all of the following. These are steps of a process, not an audit.

  • A code review of every change to a program, with every high and medium finding fixed. This review is AI-assisted.
  • A Solana and Anchor checklist, ticked on every change.
  • Invariant tests that must pass. Two examples: the escrow always covers the deposits of buyers who have not been refunded, and the yield vault always covers the yield that buyers can claim.
  • Fuzzing with at least 1,000,000 iterations per instruction set.
  • An independent review by a separate reviewer that did not write the code, with all high and medium findings fixed and reviewed again.
  • Scenario runs on a local copy of mainnet state: partial sale, cancel and refunds, full sale, many positions, maturity, attempts to break a cap, a stale price and a paused configuration.

4. Third-party control points

Pack depends on programs and keys that it does not control. The table lists what Pack verified on 2026-10-12. "Off-curve" means that no private key can sign for the address directly, so it is a program-derived account or similar. "On-curve" means an ordinary wallet address that a private key controls. Addresses are shown in full so that you can check them.

ComponentAddressWho controls itWhat it can doVerification status
pump.fun pump program6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6PUpgrade authority 7gZufwwAo17y5kg8FMyJy2phgpvv9RSdzWtdXiWHjFr8, one plain walletReplace the program code at any time, with no delayRead on chain. Who holds the wallet's key: not verified.
pump.fun pump_amm programpAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEASame upgrade authoritySameRead on chain.
pump.fun pump_fees programpfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZSame upgrade authoritySameRead on chain.
pump.fun mayhem programMAyhSmzXzV1pTf7LsNkrNwkWKTo4ougAJ1PPg47MD4eSame upgrade authoritySameRead on chain.
pump.fun takeover admin (admin_cto)UqN2p5bAzBqYdHXcgB6WLtuVrdvmy9JSAtgqZb3CMKwOne plain wallet, named in pump.fun's Global account as the admin that can set a creator authorityTake over a coin's creator authority (its fee-sharing config is rewritten to a new creator at 100%), or convert a coin to Holder RewardsRead on chain and in the SDK. Who holds the wallet's key: not verified.
Meteora DBC programdbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqNUpgrade authority JADaUV8kvDpDbJr55wxXJHVaBS3VCj8thZZHjfeuCVLd, a system-owned accountReplace the program codeRead on chain. Whether this authority is a multisig: not verified.
ORAO VRF programVRFzZoJdhFWL8rkvu87LpKM3RbcVezpMEc6X5GVDr7yUpgrade authority 9ZTHWWZDpB36UFe1vszf2KEpt83vwi27jDqtHQ7NSXyR, one keypair that belongs to the ORAO operator. It is not a multisig. On chain it is also ORAO's fee treasury, its config authority and one of its three authorities.Replace the program code. As one of the three authorities, it signs random values.Read on chain. Last deployed 2024-06-10. Whether the other two authorities are independent: not verified.
Collector Crypt card collection CCryptUfeFSZ3Fgc9FLeKrhLVAP67FSqi1GuVoj9CRac: update authorityDQPERZ9e86pNJ4mhUnCEP8V75yxZofsipoVrRWT5WdxdAn off-curve account. Which program or party controls it: not identified.Move or burn any card in any wallet without the holder's signature (permanent transfer and burn delegates)Shown by an unsigned simulation. Controller: not verified.
Collector Crypt card collection: freeze authorityEZnkm3wLDss1voAv6NioqWDRVW3n9DTevCLeRcUWAMxgAn off-curve account. It appears to be used through Collector Crypt's delegate program CCgATEbadTFJZGdwkHDmMWXWExvEhfXud4xJzvGETq5F by a backend key. This is inferred from two transactions.Freeze any card, which blocks a transfer by the holderShown by an unsigned simulation. Controller: not verified.
Collector Crypt gacha wallet, prize wallet and backend co-signerGachaNgyXTU3zFogQ8Z5jR2BLXs8215X2AtEH18VxJq3, Low6UekJP3QrFVMfNRTL8CPK2SiGFhvp57sgF2pkmVu, cc3novbXuNSe292qKH2gGhxToaWjuBvJbA7zQf8NVxiSingle hot keysCo-sign pack payments, deliver won cards and co-sign marketplace buysRead on chain. Who holds the keys: not verified.
Collector Crypt cc-vrf, cc_buyback and delegate programsccvrfu3fSpbnPLiUqdWAt85Zn9nq96ekwGTbHqGtdgQ, CcBuyM7sDhedBGLZxivBvgZVdqzrQAG66KYHgnTTEpLF, CCgATEbadTFJZGdwkHDmMWXWExvEhfXud4xJzvGETq5FOne upgrade key, daxsSgG4iPvhxWr2jrY76HKtRSjWjQLFveKHdmZKJFc, a single keyReplace the program codeRead on chain.
Collector Crypt marketplace programCcmRKTuZCGJBWQwMHvDYApBRvSZNHqGJXkznqpDTSQUrUpgrade authority 2Ef85QR7xrGJPdSvFcDz6X9ctqUoSptpi4vsnejpPAZQ, a Squads v4 vault (a multisig)Replace the program code, with the multisig's approvalRead on chain. Members and threshold: not verified.
Tokenized stocks issuer: mint authority7pt9tkctJPK7PPNQJ77GKg8ZffSF6QxoMiCFYHxrtaCjAn ordinary keypair walletMint more tokensRead on chain. The same on all 1,374 Solana mints checked. Who holds the key: not verified.
Tokenized stocks issuer: freeze and pause authorityJDq14BWvqCRFNu1krb12bcRpbGtJZ1FLEakMw6FdxJNsAn off-curve account. Its kind is not verified.Freeze accounts and pause all transfers of an assetRead on chain. Who controls it: not verified.
Tokenized stocks issuer: permanent delegate and transfer hook authority5aMNNLQJwAEeoemTEMkv5NVjqKwvvefRYCQ5Z67HFvEqAn off-curve accountMove or burn tokens in any holder's account. Set a transfer hook program on an asset at any time.Read on chain. Who controls it: not verified.
Tokenized stocks issuer: display multiplier authorityS7vYFFWH6BjJyEsdrPQpqpYTqLTrPRK6KW3VwsJuRaSAn on-curve walletChange the multiplier by which balances are displayedRead on chain. Who holds the key: not verified.
Jupiter (swap API) and Jito (block engine)Not applicable (web services)Their operatorsThey hold no Pack funds or keys and cannot move Pack funds. They can rate-limit, change routes or fees, or fail.Pack's keeper builds and signs each transaction it sends. Not tested with a live send in Phase 0.

How Pack responds to these control points:

  • pump.fun and Meteora. Pack watches the programs for new deploys. For pump.fun, Pack reads each coin's configuration again every cycle and pauses the coin if it changes. For Meteora, Pack reads the configuration back after each launch and refuses a coin that does not match.
  • Cards. Before a card enters a raffle, and again before a claim, Pack reads the card from the chain to check that it is not frozen and that the prize vault owns it. If a won card cannot be transferred to the winner, Pack redraws the raffle.
  • Tokenized stocks. Pack checks for an active transfer hook or a transfer fee before it buys and again at payout, and skips an asset that fails.
  • ORAO. The raffle monitor in section 6 applies.

5. Keys and wallets

5.1 Pack never holds creator keys. A launch transaction is built by the Pack API and signed by the creator's wallet.

5.2 Pack's hot wallets hold capped balances. The keeper fee wallet holds at most 1 SOL (current setting). Above that, the keeper sweeps the excess to the Treasury. The keeper's working balance for ORAO requests is at most 0.02 SOL (current setting), and the excess is swept.

5.3 Buyer funds in bonds are held only by the pack_bond program, never by the keeper.

5.4 The upgrade authority and the admin of Pack's programs are held in a Squads multisig on mainnet. The Treasury is an ordinary wallet of Pack's operator. The keeper holds none of them, and no automatic transaction needs the Treasury's key.

5.5 The keeper's seed is encrypted at rest.

5.6 Every Pack wallet address is published on the dashboard.

6. Raffle monitor

Raffles use the ORAO VRF service by default. The upgrade key of the ORAO program is held by one keypair that belongs to the ORAO operator. It is not a multisig. Whoever holds that key can replace the program. On chain, that same key is also ORAO's fee treasury and one of the three authorities. All three authorities must answer for a request to complete.

6.1 Pack checks the ORAO program's last deploy and its upgrade authority every day.

6.2 If either changes, Pack pauses raffles automatically. While raffles are paused, prizes and funds stay in the prize vault.

6.3 Raffles resume only after Pack has reviewed the change.

6.4 The check runs once a day, so a change made between two checks is found at the next check. The check shows that the program has not been redeployed and that its upgrade authority has not changed. It does not show that ORAO behaves correctly.

6.5 For every raffle, Pack publishes on the coin page the ORAO request (the transaction signature and the request account), the randomness proof (the three authority signatures and the XOR check) and the snapshot hash.

6.6 A commit-reveal scheme exists only as an emergency fallback. Pack switches to it only through a deliberate, logged change. A raffle drawn this way is labelled "commit-reveal" and is weaker: a block producer can influence the block hash, and an operator who tries many snapshot variants can publish only the one that suits them.

7. Reporting a vulnerability

7.1 Scope. The pack_* programs and the keeper's fund paths. A problem in a third-party program listed in section 4 is out of scope. Report it to the party that controls that program.

7.2 Rewards. Rewards for reports are set case by case by the team. No amount is promised.

7.3 Contact. X: @packprotocol (opens in a new tab). Pack will never send you a private message first.

7.4 Official accounts. The only official Pack account on X is @packprotocol (opens in a new tab). Any other account that uses the Pack name, logo or a similar handle is not Pack's. Pack never asks anyone for a seed phrase or a private key, and never asks anyone to send funds to receive a reward. Check every link against this page before you sign anything.

8. Open source and verification

8.1 The code is not public today.

8.2 Pack plans to publish the pack_bond source (the repository, or a public mirror of the programs/ folder) before mainnet activation. Pack also plans to publish a verified build of the mainnet program, made with solana-verify, so that anyone can check that the deployed program matches the published source. These are plans and not facts. Nothing is promised about the date.

Pack Protocol. Provided as is, use at your own risk.

  • Wallets
  • Terms
  • Risk
  • Security
  • X @packprotocol
  • Notices