SkyhookChain Finality

One-Shot Finality

One-shot finality is a way for a single swap to finalize its own Zcash payment without waiting for, or joining, someone else’s rollup. The swap initiates a rollup, satisfies its tail samples and finalizes it, all in one transaction. When oracles have already stored the blocks it needs, initiation costs about 1.4M gas for a 1,000-block gap (1.1M for the main block (about 950k to verify its Equihash, plus the storage writes that create the rollup) plus 2,100 gas to read each stored sample) and cementing 1.3–1.5M (another Equihash verification plus bookkeeping), so a one-shot costs about 2.7–2.9M gas plus finalizing its own transaction. On Base, at around 0.005 gwei, that is roughly four cents at an ETH price of $2,500. If the blocks aren’t stored, the swap submits them itself at about 950k gas each; with full sampling that takes several transactions, about nine for a 1,000-block gap, and costs a little under two dollars.

One-shot finality is not a stronger form of finality. All finality in Skyhook is trustless, and a rollup finalized in one shot is checked exactly as a shared one is: the same Equihash verification, the same difficulty rules and the same full FlyClient samples. The only difference is who pays and when. Joining a shared rollup spreads the cost across many transactions but means waiting for one that covers the payment; one-shot finality removes the wait by having the swap act as its own validator, for the case where the only client is the swap itself.

Shared rollup or one shot?Interactive
    Transactions
    Waits for others?
    Gas you pay directly
    Checks performed
    Identical
    Both paths run the same Equihash, difficulty and full FlyClient checks; one-shot finality is not stronger or weaker, only solitary. On the shared path your swap pays a fee instead of the rollup's gas. With the blocks already stored by oracles, a rollup for a 1,000-block gap costs about 1.4M gas to initiate and 1.3–1.5M to cement, plus finalizing: roughly four cents on Base at ~0.005 gwei for a one-shot. Without oracles, the one-shot swap submits the blocks itself over several transactions.

    Near misses

    One-shot finality is also the natural response to just missing a rollup. A transaction that arrives too late for one can initiate its own straight away. The gap between the last finalized block, the previous rollup’s main block, and the current block is very short, so it needs only two sampling runs and few samples, and those blocks have probably already been uploaded by oracles or by the previous rollup. The rollup mostly references existing blocks and is very cheap.

    Missed the rollup? Finalize anywayInteractive
    Blocks your rollup needs
    Already on-chain
    To submit yourself

    Your one-shot rollup takes your payment's block as its main block, the 3 blocks after it, and tail samples from the history since the previous rollup's main block. A gap this short needs only two sampling runs. Blocks already submitted by oracles or by the previous rollup are referenced by hash; any that are missing you submit yourself, at about 950k gas each to verify their Equihash solution.

    Reuse

    A rollup finalized in one shot doesn’t disappear after serving its swap. Like any finalized rollup it stays on-chain, and later swaps can reference it in their own finalization, so a one-shot finalization also contributes to the shared record that other users rely on.

    See also