# v3 candidate ABI delta

All offsets are zero-based and integers are little endian. The base token program is selected from the verified mint owner. Ordinary v2 orders and transfers retain their data encoding and account lists except new market activation.

| Operation | Data | Account changes |
| --- | --- | --- |
| Activate market, opcode 0 | Existing 65-byte encoding | Append writable canonical founding registry at index 4. Missing/uninitialized/fake registry rejects. |
| Original/metadata token order, opcode 1 | Existing 59 bytes | Token-2022 program remains index 9, original SPL program index 7, system index 8. |
| Taxed sell order, opcode 1 | 75 bytes: existing 59, gross deposit u64 at 59, exact fee u64 at 67 | Same accounts as Token-2022 order. Gross minus fee must equal listed net vault inventory. |
| Taxed buy order, opcode 1 | 69 bytes: existing 59, maker max basis points u16 at 59, maker cumulative max fee u64 at 61 | Same accounts. Limits must equal current mint schedule at creation and are stored immutably. |
| Ordinary fill, opcode 2 | Existing 25 bytes | Same v2 accounts. |
| Taxed fill, opcode 2 | 33 bytes: existing 25, exact token fee u64 at 25 | Same Token-2022 accounts; base token program index 17. Fill quantity is gross token units. |
| Ordinary cancellation/expiry, opcode 3/4 | Existing 1 byte | Same v2 accounts. Buy refunds always use the original form because quote is SOL/USDC. |
| Taxed sell cancellation/expiry, opcode 3/4 | 17 bytes: expected gross vault inventory u64 at 1, exact refund fee u64 at 9 | Token-2022 at index 6; exact base mint at index 7 must be writable for withholding harvest. |
| One-time founding bootstrap, opcode 5 | opcode; 32-byte nonzero snapshot SHA; u8 eligible count; u8 exclusion count; excluded public keys | Owner signer/payer index 0; registry writable index 1; canonical ProgramData index 2; system index 3; eligible existing markets writable from index 4. |

Market PDA seeds and 138-byte layout stay unchanged. `SLMARK01` means existing fee split. `SLMARK02` means all future trading fees to the launcher. No instruction removes or changes founding status.

Order PDA seeds and original 166-byte `SLORDER1` fields stay unchanged. Only new taxed buy orders use `SLORDER2`, length 184: the first 166 bytes retain the same field offsets; the saved max basis points are at 166, max fee at 168 and cumulative actual token tax paid u64 at 176. SOL refund rent reserves use the actual account size. Client decoding requires exact verified v3 capability before accepting this variant.

The founding registry PDA is `findProgramAddress(["founding-sol-v1"], program)`. `SLPROM01` layout: discriminator 0..8, fixed cutoff i64 at 8, initialized timestamp i64 at 16, snapshot SHA256 at 24, current count u8 at 56, bootstrap count u8 at 57, bump at 58, exclusion count u16 at 59, twenty 32-byte eligible market slots at 61, excluded market keys at 701. Total size = 701 + 32 * exclusions; at most sixteen exclusions. Unused eligible slots are zero. Duplicate, zero, overlapping, wrong-owner and wrong-PDA inputs reject. Authority is the current canonical ProgramData upgrade authority; reinitialization rejects.

Token-2022 mint extensions allow only MetadataPointer, TokenMetadata and TransferFeeConfig. Accounts allow only ImmutableOwner and TransferFeeAmount. Tax vault allocation is calculated from TransferFeeAmount requirements. TransferCheckedWithFee specifies current exact fee, mint decimals and net delivery; both account deltas are checked. Taxed buy fills also enforce the immutable cumulative maker ceiling: actual tax paid so far plus the current fill fee must not exceed min(ceil(cumulative filled gross × maker basis points / 10000), maker cap). A partial fill must leave enough of the full-order budget to finish all remaining tokens at the current mint fee; otherwise it rejects before any movement. This prevents per-transfer ceil rounding or repeated capped transfers from multiplying the maker’s approved total tax budget. Refund harvest/close moves only mint-withheld fees to the mint and returns spendable principal to the maker.

New fill logs include the host and platform fee deltas. Discovery validates logs only inside the escrow program's invocation frame. Historical v2 receipts without those fields retain their original split even if their market is later bootstrapped; quote and cumulative fee conservation remain checked.
