Reference / SHOOK
Errors and recovery Common reverts and the next state or input to inspect.
Error Inspect FormationNotOpen Block timestamp versus immutable opensAt. FormationComplete / FormationReady graduated, currentTarget, and circulation; refresh the market route or call eligible syncFormation. DeadlineExpired The transaction’s Unix-second deadline; create a fresh quote and deadline. SlippageExceeded Input/output bounds, available value, and price movement since the quote. InsufficientInventory Requested SHOOK output versus the current formation target. NativeTransferFailed Whether the payer or receiver contract can accept the relevant refund or payout.
Error Inspect NotActive Whether formation has graduated and activated staking. InsufficientPrincipal / InsufficientShares The caller’s position, not just its external token balance. SharePrecisionExceeded Rounding at the requested amount; simulate a different amount or complete close. ZeroAmount Zero deposit, zero withdraw, or no claimable reward. OnlyReserveVault / IncorrectAsset Supplemental funding caller and token; do not fund through a direct transfer.
Error Inspect InvalidStream / UnauthorizedSource Registered source, enabled state, and asset; owner changes may affect source actions. InvalidRoute Effective destination and route basis points. BetBelowInitialBet The first wager from a new Coinflip wallet must match the original creator wager minimum. SideCannotChange That wallet’s already registered side. RandomnessTimeoutOpen / ResponseWindowOpen Wait until the exact eligible deadline before a timeout or finalization. RandomnessWindowClosed Use the game-specific cancellation or epoch rollover path if eligible. NotPlayer Tic-Tac-Toe start or dispute opening must come from a participant wallet. NothingToClaim / NotWinner Claim status, position owner, and final outcome.
Use the compiled ABI to decode custom errors, including inherited ERC-20, signature, and reentrancy errors. Similar names across contracts do not imply identical recovery rules. Simulate against the current state and verify the exact function and status before retrying.
A failed approval or reverted state-changing call is not proof that a second call will succeed. Correct the allowance, balance, receiver, deadline, route, or lifecycle first. For a pending transaction, inspect the original hash and nonce before sending another state-changing request.
Source reference Checked against the source shipped with this documentation. Contract calls and units are detailed in the contract reference .
contracts/src/formation/FormationMarket.solcontracts/src/market/PermanentMarketRouter.solcontracts/src/staking/StakingVault.solcontracts/src/reserve/ReserveVault.solcontracts/src/game/ShookCoinflip.solcontracts/src/game/ShookTurnBasedGame.solcontracts/src/game/ShookDailyLottery.solcontracts/src/formation/FormationMath.solcontracts/src/liquidity/LiquidityVault.solcontracts/src/market/SHOOKVanillaHook.solcontracts/src/game/ShookTicTacToe.solcontracts/src/game/ShookRandomnessCoordinator.solcontracts/src/game/ShookGameFeeRouter.solcontracts/src/token/SHOOKToken.solImported source files 68 Supporting contracts, interfaces, and libraries imported by the sources above, including their dependencies.
contracts/src/game/IShookDailyLottery.solcontracts/src/game/IShookGameFeeRouter.solcontracts/src/game/IShookSettledGameLottery.solcontracts/src/liquidity/ILiquidityVault.solcontracts/src/reserve/IReserveRouteReceiver.solcontracts/src/reserve/IReserveVault.solcontracts/src/staking/IStakingVault.solcontracts/src/token/IProtocolToken.solcontracts/src/vendor/drand/BLS.solcontracts/src/vendor/drand/ModExp.solcontracts/src/vendor/drand/Precompiles.sol@openzeppelin/contracts/access/Ownable.sol@openzeppelin/contracts/access/Ownable2Step.sol@openzeppelin/contracts/interfaces/IERC1363.sol@openzeppelin/contracts/interfaces/IERC165.sol@openzeppelin/contracts/interfaces/IERC20.sol@openzeppelin/contracts/interfaces/IERC5267.sol@openzeppelin/contracts/interfaces/draft-IERC6093.sol@openzeppelin/contracts/token/ERC20/ERC20.sol@openzeppelin/contracts/token/ERC20/IERC20.sol@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol@openzeppelin/contracts/utils/Bytes.sol@openzeppelin/contracts/utils/Context.sol@openzeppelin/contracts/utils/Nonces.sol@openzeppelin/contracts/utils/Panic.sol@openzeppelin/contracts/utils/ReentrancyGuardTransient.sol@openzeppelin/contracts/utils/ShortStrings.sol@openzeppelin/contracts/utils/StorageSlot.sol@openzeppelin/contracts/utils/Strings.sol@openzeppelin/contracts/utils/TransientSlot.sol@openzeppelin/contracts/utils/cryptography/ECDSA.sol@openzeppelin/contracts/utils/cryptography/EIP712.sol@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol@openzeppelin/contracts/utils/introspection/IERC165.sol@openzeppelin/contracts/utils/math/Math.sol@openzeppelin/contracts/utils/math/SafeCast.sol@openzeppelin/contracts/utils/math/SignedMath.sol@uniswap/v4-core/src/interfaces/IExtsload.sol@uniswap/v4-core/src/interfaces/IExttload.sol@uniswap/v4-core/src/interfaces/IHooks.sol@uniswap/v4-core/src/interfaces/IPoolManager.sol@uniswap/v4-core/src/interfaces/IProtocolFees.sol@uniswap/v4-core/src/interfaces/callback/IUnlockCallback.sol@uniswap/v4-core/src/interfaces/external/IERC20Minimal.sol@uniswap/v4-core/src/interfaces/external/IERC6909Claims.sol@uniswap/v4-core/src/libraries/BitMath.sol@uniswap/v4-core/src/libraries/CustomRevert.sol@uniswap/v4-core/src/libraries/FixedPoint96.sol@uniswap/v4-core/src/libraries/FullMath.sol@uniswap/v4-core/src/libraries/Hooks.sol@uniswap/v4-core/src/libraries/LPFeeLibrary.sol@uniswap/v4-core/src/libraries/ParseBytes.sol@uniswap/v4-core/src/libraries/SafeCast.sol@uniswap/v4-core/src/libraries/TickMath.sol@uniswap/v4-core/src/types/BalanceDelta.sol@uniswap/v4-core/src/types/BeforeSwapDelta.sol@uniswap/v4-core/src/types/Currency.sol@uniswap/v4-core/src/types/PoolId.sol@uniswap/v4-core/src/types/PoolKey.sol@uniswap/v4-core/src/types/PoolOperation.sol@uniswap/v4-periphery/src/base/ImmutableState.sol@uniswap/v4-periphery/src/interfaces/IImmutableState.sol@uniswap/v4-periphery/src/libraries/LiquidityAmounts.sol@uniswap/v4-periphery/src/utils/BaseHook.sol← Previous Events and accountingNext → Official parametersSHOOK docs Official protocol · Mainnet parameters