← Registry

Merkle Allowlist

allowlist-merkle@1.0.3 · by OpenGate

Only allowlisted recipients can receive the token.

VerifiedMock program
Identity
Name
Merkle Allowlist
Program ID
MrkLEvwY…HtSaM4V3
Version
1.0.3
Source
hookaway-mock/allowlist-merkle@wxhmp25
Upgrade authority
none (immutable)
Verification
source-verified
Audit status
Sable Review (mock) · 2026-05-02
CPI behaviour
none
Trust labels
  • VerifiedSource verified against the deployed program and manifest reviewed by HOOKAWAY.
Usage
Tokens using it
2
Transfers (30d, mock)
15.9K
Transaction success rate
95.6%

Success rate = HOOKAWAY-built transactions that confirmed ÷ submitted. Blocks by the hook's own rules are not failures.

Compatibility
  • Direct transfer●
  • Meridian AMM●
  • Orbit CLMM●
  • Relay AggregatorHook needs 4 extra accounts; Relay Aggregator forwards at most 3.×
  • Basin Legacy AMMBasin Legacy AMM cannot forward transfer-hook accounts.×
  • HOOKAWAY Launch Curve●
Config schema
  • authorityAllowlist managerpubkey
Extra account schema
AccountDerivationWS
config
Per-mint hook configuration.
pda(hook, ["config", acct[1]:mint])··
recipient-entry
allow record for the destination owner.
pda(hook, ["allow", acct[1]:mint, acct[3]:destination owner])··
Errors & restrictions
  • 6010Recipient is not on this token’s allowlist.
  • —Recipient owner must have an allowlist entry PDA.
Manifest
cross-check passed
  • ✓ Schema valid (manifest v0.1)
  • ✓ Program ID matches mint’s TransferHook extension
  • ✓ Upgrade authority matches declared authority
  • ✓ Declared accounts match on-chain ExtraAccountMetaList
  • ✓ All accounts derivable without off-chain input
{
  "$schema": "https://hookaway.dev/schema/manifest/v0.1.json",
  "manifestVersion": "0.1",
  "name": "allowlist-merkle",
  "version": "1.0.3",
  "program": "MrkLEvwYsRzz8KwPAyzAPALKtZmyBYgsu1zeHtSaM4V3",
  "programAuthority": null,
  "description": "Only allowlisted recipients can receive the token.",
  "source": {
    "repo": "https://github.com/hookaway-mock/allowlist-merkle",
    "commit": "wxhmp25",
    "verifiedBuild": true
  },
  "config": {
    "fields": [
      {
        "key": "authority",
        "type": "pubkey",
        "description": "Allowlist manager"
      }
    ]
  },
  "accounts": [
    {
      "name": "config",
      "derivation": {
        "kind": "pda",
        "programId": "hook",
        "seeds": [
          {
            "kind": "literal",
            "value": "config"
          },
          {
            "kind": "account",
            "index": 1,
            "label": "mint"
          }
        ]
      },
      "writable": false,
      "signer": false,
      "description": "Per-mint hook configuration."
    },
    {
      "name": "recipient-entry",
      "derivation": {
        "kind": "pda",
        "programId": "hook",
        "seeds": [
          {
            "kind": "literal",
            "value": "allow"
          },
          {
            "kind": "account",
            "index": 1,
            "label": "mint"
          },
          {
            "kind": "account",
            "index": 3,
            "label": "destination owner"
          }
        ]
      },
      "writable": false,
      "signer": false,
      "description": "allow record for the destination owner."
    }
  ],
  "compatibility": {
    "transfer": true,
    "venues": "any-hook-aware",
    "maxExtraAccounts": 2
  },
  "transaction": {
    "computeUnits": 19000,
    "requiresLookupTable": false,
    "cpi": "none"
  },
  "simulation": {
    "adapter": "allowlist"
  },
  "explain": {
    "6010": "Recipient is not on this token’s allowlist."
  },
  "restrictions": [
    "Recipient owner must have an allowlist entry PDA."
  ]
}
Tokens using it (2)