Skip to main content

Verification Ledger

This page is the ledger behind every other page on this site. Each number, address, endpoint, and parameter published on docs.vessel.wtf appears below with the source it was read from and the date it was read. If a claim is not in this ledger, it is not verified, and the page that needs it says so.

Every page footer links here. That is deliberate. A yield protocol asking for deposits owes its readers the provenance of its own documentation.

Method

Facts on this site come from two layers, checked against each other.

  1. MONSKILLS first. MONSKILLS v0.7.2 (skills.devnads.com), installed locally on 2026-08-29, is the first authority for Monad facts: gas semantics, chain endpoints, canonical addresses, execution model, tooling support. Skill tags used on this site: monskills/gas, monskills/addresses, monskills/concepts, monskills/indexer, monskills/tooling-and-infra.
  2. Primary sources second. Every MONSKILLS fact that carries risk was cross-checked against the primary source the same day: docs.monad.xyz, docs.perpl.xyz, docs.kuru.io, the monad-crypto/protocols registry, docs.pendle.finance, viem and ethereum-lists chain definitions, and the projects' own repositories. Where the layers disagree, the primary source wins and the disagreement is recorded in the Conflicts section below — it is not silently resolved.

Every page on this site carries verified_by and verified_at frontmatter. The footer renders both. verified_by lists only the source tags actually used on that page.

Anything that could not be verified renders the amber chip — like this UNVERIFIED — PENDING GATE-0 — or is written out as a gap in plain prose. Nothing on this site is estimated, and no missing fact is omitted silently. The full register of open gaps is the Gaps section below.

THE LEDGER

Every load-bearing claim

All rows verified 2026-08-29 unless a row says otherwise.

Monad network

ClaimValueSourceVerified
Chain ID, mainnet143 (0x8F)docs.monad.xyz + viem + ethereum-lists, all agree2026-08-29
Chain ID, testnet10143 (0x279F)docs.monad.xyz + viem + ethereum-lists, all agree2026-08-29
RPC, mainnethttps://rpc.monad.xyz (primary; QuickNode, 25 rps, batch 100); also rpc1 (Alchemy), rpc2 (Goldsky), rpc3 (Ankr), rpc-mainnet.monadinfra.comdocs.monad.xyz, monskills/addresses2026-08-29
RPC, testnethttps://testnet-rpc.monad.xyz (primary; 50 rps, batch 100, archive; 25 rps for eth_call/eth_estimateGas); also rpc.ankr.com/monad_testnet, rpc-testnet.monadinfra.comdocs.monad.xyz, monskills/addresses2026-08-29
WSS, mainnetWSS variants exist for all five mainnet RPC hostsdocs.monad.xyz2026-08-29
WSS, testnettestnet-rpc.monad.xyz, rpc-testnet.monadinfra.comdocs.monad.xyz2026-08-29
Explorers, mainnetmonadvision.com (BlockVision), monadscan.com (Etherscan)docs.monad.xyz (see Conflict 2)2026-08-29
Explorers, testnettestnet.monadvision.com, testnet.monadscan.comdocs.monad.xyz (see Conflict 2)2026-08-29
Block time300msdocs.monad.xyz (see Conflict 1)2026-08-29
Finality300ms speculative, 600ms fulldocs.monad.xyz (see Conflict 1)2026-08-29

Gas

ClaimValueSourceVerified
Gas is charged on the gas limitVerbatim below this tabledocs.monad.xyz gas-pricing.md, monskills/gas2026-08-29
Block gas limit200Mdocs.monad.xyz gas-pricing.md, monskills/gas (values match)2026-08-29
Per-transaction gas limit30Mdocs.monad.xyz gas-pricing.md, monskills/gas2026-08-29
Minimum base fee100 MON-gweidocs.monad.xyz gas-pricing.md, monskills/gas2026-08-29
Cold access repriced upcold account access 10,100 gas (Ethereum 2,600); cold storage access 8,100 (Ethereum 2,100); warm access 100, unchanged. Affects BALANCE, EXTCODE*, CALL*, SELFDESTRUCT, SLOAD, SSTOREmonskills/gas2026-08-29
Precompiles repriced upecRecover 6,000 (2×); ecAdd 300 (2×); ecMul 30,000 (5×); ecPairing 225,000 (5×); blake2f 2×; point evaluation 200,000 (4×)monskills/gas2026-08-29

The gas-charging rule, verbatim from the primary source:

"In Monad, the gas charged for a transaction is the gas limit set in the transaction, rather than the gas used in the course of execution."

docs.monad.xyz/developer-essentials/gas-pricing.md

Contract verification procedure

ClaimValueSourceVerified
Verification guidedocs.monad.xyz/guides/verify-smart-contract (Foundry and Hardhat sub-guides)docs.monad.xyz2026-08-29
Sourcify verifier (MonadVision), no API keyhttps://sourcify-api-monad.blockvision.org/docs.monad.xyz2026-08-29
Monadscan path--verifier etherscan --etherscan-api-key ...; Hardhat uses the Etherscan V2 API with chainid=143 (or 10143)docs.monad.xyz2026-08-29
foundry.toml requirementsmetadata = true, metadata_hash = "none", use_literal_content = true; template at monad-developers/foundry-monaddocs.monad.xyz2026-08-29

The Foundry command, verbatim from the guide (use chain 10143 for testnet):

forge verify-contract <addr> <name> --chain 143 --verifier sourcify \
--verifier-url https://sourcify-api-monad.blockvision.org/

Caveat from the guide: verify commands can print errors even when verification succeeded — confirm on the explorer.

Oracles

ClaimValueSourceVerified
Supported on both networksChainlink, Chronicle, Pyth, Redstone, Stork, Supra, Switchboard — listed as "supported", the docs' own word; this ledger does not upgrade it to "live"docs.monad.xyz/tooling-and-infra/oracles2026-08-29
Gelato VRFTestnet table only; absent from the mainnet table, unexplaineddocs.monad.xyz/tooling-and-infra/oracles2026-08-29

Which oracle Vessel itself reads is an open gap — see Gaps below.

Perpl

ClaimValueSourceVerified
StatusLive on Monad mainnet ("Mainnet (the default, live trading)"), plus testnetdocs.perpl.xyz2026-08-29
Exchange contract, mainnet0x34B6552d57a35a1D042CcAe1951BD1C370112a6F — also the sole address in the registry's mainnet perpl.jsoncdocs.perpl.xyz, monad-crypto/protocols2026-08-29
Exchange contract, testnet0x1964C32f0bE608E7D29302AFF5E61268E72080ccdocs.perpl.xyz2026-08-29
REST base, mainnethttps://app.perpl.xyz/api (WS wss://app.perpl.xyz)docs.perpl.xyz2026-08-29
REST base, testnethttps://testnet.perpl.xyz/apidocs.perpl.xyz2026-08-29
Public context endpointGET /api/v1/pub/context returns Context { chain, instances, tokens, markets }, no authdocs.perpl.xyz2026-08-29
Rate-limit modelTrading and market data are separate servers with separate limits. Trading WS /ws/v1/trading: 120 req/min mainnet (60 testnet), 4 connections per wallet address — the cap is keyed on the owning wallet, not the individual key. Market-data WS /ws/v1/market-data: 10 req/min, 16 subscriptions per connectiongithub/PerplFoundation api-docs (see Conflict 3)2026-08-29
Fee field semanticsf is total fees paid, gross (protocol + builder); bfa is the builder portion, omitted when zero — never sum f + bfa. tbf is lifetime builder fees, already included in tf — sibling field, never sum tbf + tf. Fee tier ft (uint8, indexes MarketConfig maker/taker fees) arrives on account update mt 21; earned from rolling 14-day volume, resolved on-chain at fill time — re-read on every update, never cache. mt 24 is OrdersUpdate, mt 25 is FillsUpdate; frames carry arraysgithub/PerplFoundation api-docs2026-08-29
delegated-account"A smart contract that holds an account on the Perpl Exchange with separated owner/operator roles" — BeaconProxy DelegatedAccount; operator restricted by a function-selector allowlist (execOrder, execOrders, ...); withdrawCollateral is owner-only and permanently blocked for the operator. Mainnet Factory 0xc535276e3e446e4f28d95ed27ccd5c32e4c8907a. BUSL-1.1github/PerplFoundation2026-08-29
Brand kitOfficial, PNG-only, Notion page linked from the perpl.xyz footerdocs.perpl.xyz2026-08-29

One attribution guard: the phrase "programmable smart account with whitelist-only DeFi delegation" describes a different PerplFoundation repo (invairiant), not delegated-account. This site does not use it for either.

Kuru

ClaimValueSourceVerified
StatusLive on mainnet and testnet — docs publish addresses for both; the registry's kuru.jsonc has live: true on bothdocs.kuru.io, monad-crypto/protocols2026-08-29
Core addresses, mainnetKuruFlowEntrypoint 0xb3e6778480b2E488385E8205eA05E20060B813cb; Router (market factory) 0xd651346d7c789536ebf06dc72aE3C8502cd695CC; MarginAccount 0x2A68ba1833cDf93fa9Da1EEbd7F46242aD8E90c5; markets MON-USDC 0x065C9d28E428A0db40191a54d33d5b7c71a9C394, MON-AUSD 0x131a2e70a5b31a517a74b8c567149bc294470da9docs.kuru.io (label caveat: Conflict 5)2026-08-29
Core addresses, testnetRouter 0x7EFbE105Ca7415dE98F96622173458ac1c054630; MarginAccount 0xd029C2D98ff85D8F64799017fE00a59B1159CE02; market MON-USDC 0xa241896A7Dbe8a550D2E5fF7A914bB1989ceD2D9docs.kuru.io2026-08-29
OrderBook entry pointsVerbatim signatures published at docs.kuru.io, e.g. addBuyOrder(uint32 _price, uint96 _size, bool _postOnly), placeAndExecuteMarketBuy(uint96 _quoteSize, uint96 _minOut, bool _isMargin, bool _isFOK) external payable, batchCancelOrders(uint40[] _orderIds)docs.kuru.io2026-08-29
Brand kitNone published — this site renders a text wordmark onlydocs.kuru.io2026-08-29

PuddleSwap

ClaimValueSourceVerified
ExistsLive landing page and app; "Forked from Uniswap V2, deployed on Monad Testnet"; contracts stated stock/unmodified V2 by its own READMEpuddleswap.org2026-08-29
NetworksTestnet only. No mainnet deployment exists; this site publishes no PuddleSwap mainnet addresspuddleswap.org2026-08-29
Testnet addresses (chain 10143)UniswapV2Router02 0x430c23895c8D44883526e3E0B09327dAD8766660; UniswapV2Factory 0xd498f5beBD0C9f1FE0135a0Cf942dA67Ee6e8A9B; WMON 0x97B3070F9Da6C002343862b35E68Bd8e22608943; USDC 0x534b2f3A21130d7a60830c2Df862319e593943A3 — consistent across its README, llms.txt, and address configpuddleswap.org (single-party)2026-08-29
Single-party caveatThese addresses are project-published only. No third-party registry vouches for them, and the deployed bytecode has not been independently checked against stock V2. PuddleSwap describes itself as unaudited, testnet-only softwarepuddleswap.org2026-08-29
Registry presenceAbsent from monad-crypto/protocols — full tree checkedmonad-crypto/protocols2026-08-29

Pendle

ClaimValueSourceVerified
StatusPendle core contracts are deployed on Monad mainnet — the Deployments page lists Monad (143); router bytecode confirmed live via rpc.monad.xyz this session. No Vessel or Hull market exists on itdocs.pendle.finance, on-chain check2026-08-29
Core addresses, mainnetRouter 0x888888888889758F76e7103c6CbF23ABbF58F946; syFactory 0x466CeD3b33045Ea986B2f306C8D0aA8067961CF8 (143-core.json, pendle-core-v2-public)docs.pendle.finance2026-08-29
StandardSY (Standardized Yield) is the Pendle-authored wrapping standard; the formal spec is ERC-5115 (Draft)eips.ethereum.org, docs.pendle.finance2026-08-29
Listing rulesMost non-ERC-4626 assets need a custom SY contract; the underlying must be a fully transferable ERC-20 with no locking or vesting and up-only yield; "All custom SY contracts must be audited." SY deployment and market creation are permissionless; a market takes an expiry timestampdocs.pendle.finance2026-08-29

Ecosystem registry and brand assets

ClaimValueSourceVerified
monad-crypto/protocolsPer-protocol address registry: 177 mainnet files, 17 testnet files. kuru on both networks; perpl, pendle, uniswap mainnet only; puddleswap absentgithub.com/monad-crypto/protocols2026-08-29
Monad brand assetsOfficial kit at monad.xyz/brand-and-media-kit — SVGs downloadable; primary color #6E54FF; fonts Britti Sans, Inter, Roboto Mono. Logomark self-hosted on this site at /logos/monad.svgmonad.xyz/brand-and-media-kit2026-08-29

Vessel

Hull's rate is a contract parameter, not a yield forecast. Every row below is a design parameter from the litepaper, restated here exactly as published.

ClaimValueSourceVerified
Hull rate formular_H = clamp(EWMA_30d(net funding APR) × (1 − h), 0, r_cap) — a contract parametervessel.wtf/litepaper2026-08-29
Haircut h40%vessel.wtf/litepaper2026-08-29
Rate cap r_cap15% APR (a parameter ceiling, not a projection)vessel.wtf/litepaper2026-08-29
Subordination floorB / (H + B) ≥ θ_min = 20%, enforced at all times; constrains new Hull issuance and Ballast withdrawalsvessel.wtf/litepaper2026-08-29
Reserve target2% of TVL, funded from the protocol-fee splitvessel.wtf/litepaper2026-08-29
Ballast cooldown48 hours, plus the subordination floorvessel.wtf/litepaper2026-08-29
Protocol fee10% of max(G, 0); half to Reserve until target, rest to treasuryvessel.wtf/litepaper2026-08-29
Conservation invariantΔNAV_Hull + ΔNAV_Ballast + ΔReserve + fees = G every epoch; enforced in code and fuzzedvessel.wtf/litepaper2026-08-29
Leverageλ ≤ 2 at launch; spot λ/(1+λ), short margin 1/(1+λ), hedged notional λ/(1+λ)vessel.wtf/litepaper2026-08-29
Delta bandNet delta within 1% of gross notional; rebalance on band breach or a 4-hour timervessel.wtf/litepaper2026-08-29
Liquidation safetyShort-leg liquidation price sits ≥ 40% above mark; a buffer breach triggers automatic de-risking, never added leveragevessel.wtf/litepaper2026-08-29
Idle buffer10% idle USDC held unhedgedvessel.wtf/litepaper2026-08-29
Hedge venue todaySimVenue SIMVENUE — SIMULATED — a simulated venue with an owner-settable funding rate, behind the IVenue interface; Perpl integration is nextvessel-team-brief2026-08-29
Public repositorygithub.com/Lemma-Development-Labs/vessel contains only a README and LICENSE as of 2026-08-29 — no contracts, no addresses, no ABIs. Every contract-level artifact is therefore unverified and rendered as design-stagevessel-repo2026-08-29
testnet.vessel.wtfDNS does not resolve as of 2026-08-29. Not live; not linked as a working URL anywhere on this site. The testnet app is reached from vessel.wtfvessel-repo session check, user-confirmed2026-08-29

Conflicts

Five source conflicts were recorded during the 2026-08-29 verification sweep. None is resolved silently; each resolution is stated with its reason.

  1. Block time and finality. Current docs.monad.xyz says 300ms blocks, 300ms speculative / 600ms full finality. MONSKILLS v0.7.2 and the Vessel litepaper itself still say 400ms / 800ms. Resolution: docs.monad.xyz wins; the other two are stale. This site never ships 400ms/800ms as current, and notes where relevant that the litepaper predates the current network figures.
  2. Testnet explorer. docs.monad.xyz lists testnet.monadvision.com and testnet.monadscan.com; viem and ethereum-lists still list testnet.monadexplorer.com, which current docs.monad.xyz does not reference. Resolution: ship the docs.monad.xyz set.
  3. Perpl WebSocket rate limits. The api-docs README describes separate trading and market-data servers with wallet-keyed connection caps; docs.perpl.xyz websocket.md says roughly 50 messages/sec per connection and roughly 5 connections per IP, combined. Both are official. Resolution: this site states the api-docs model and notes the discrepancy wherever limits appear.
  4. Perpl testnet collateral token. Two official sources (api-docs and docs.perpl.xyz) disagree on the address. Resolution: unresolved; this site publishes neither address.
  5. Kuru router labels. 0x0d3a1BE29E9dEd63c7a5678b31e847D68F71FFa2 is labelled "KuruFlowRouter" by the docs but "KuruFlowRouterV2" by the registry, whose plain KuruFlowRouter is 0x465D06d4521ae9Ce724E0c182Daad5D8a2Ff7040. Resolution: any page listing either address cites which source supplied the label.

Gaps

The unverified register. Each item below is something this site wanted to publish and could not verify on 2026-08-29. None is estimated; each renders the amber chip or a plain-prose gap wherever it would otherwise appear.

  • Vessel contract addresses, ABIs, and event signatures UNVERIFIED — PENDING GATE-0 — the public repository holds only a README and LICENSE; nothing deployed is publicly attributable to Vessel yet.
  • Indexer endpoint UNVERIFIED — PENDING GATE-0 — no Envio GraphQL API URL exists to publish. The pipeline itself is documented (monskills/indexer), and it requires a deployed, explorer-verified contract before import — which is blocked on the gap above.
  • Perpl builder-code value UNVERIFIED — PENDING GATE-0 — the litepaper names execution rebates via a Perpl builder code; the code itself is unpublished.
  • Security contact UNVERIFIED — PENDING GATE-0 — no published disclosure address or policy.
  • Oracle wiring UNVERIFIED — PENDING GATE-0 — which of the supported providers Vessel reads, and which feed IDs, is not published.
  • Vessel–Kuru route status UNVERIFIED — PENDING GATE-0 — the spot-leg integration is stated as in development; no deployed route is publicly verifiable.
  • Formal whitepaper UNVERIFIED — PENDING GATE-0 — the litepaper is the only published specification.
  • Testnet app URL UNVERIFIED — PENDING GATE-0 — testnet.vessel.wtf does not resolve; until it does, the app is reached from vessel.wtf and no standalone testnet URL is published.

Re-verification

This ledger is not a one-time artifact.

  • A full verification sweep runs before any demo. Nothing above is presented live without a same-day re-check of the rows it depends on.
  • Integration tier claims are re-derived from deployed state, not from prior pages: code presence via cast code <addr> --rpc-url <rpc>, endpoints by calling them, addresses against the registries named above.
  • Every row carries its verification date. When a row is re-verified, the date changes; when a source changes, the row changes and the conflict — if one appears — is recorded here, not smoothed over.

If you find a row this ledger gets wrong, that is a finding this protocol wants.

Verified from: vessel.wtf · vessel.wtf/litepaper · vessel-repo · vessel-team-brief · monskills/gas · monskills/addresses · monskills/concepts · monskills/indexer · monskills/tooling-and-infra · docs.monad.xyz · viem/ethereum-lists · docs.perpl.xyz · github/PerplFoundation · docs.kuru.io · monad-crypto/protocols · puddleswap.org · docs.pendle.finance · eips.ethereum.org · monad.xyz/brand-and-media-kit — Sat Aug 29 2026 00:00:00 GMT+0000 (Coordinated Universal Time) · How we verify this site →