ImmutableLaunchpad
0x135492b3ccb2cb64749f91332f929f49a1deed3f
Verification
Verified
v0.8.20+commit.a1b79de6
Type
Contract
24,009 bytes
ABI entries
120
53 read · 17 write
License
none
Contract information
- Address
- 0x135492b3ccb2cb64749f91332f929f49a1deed3f
- Chain
- Robinhood Chain (4663)
- Compiler
- v0.8.20+commit.a1b79de6
- Optimization
- Enabled
- Creator
- 0xD07B1A5110…e07F1C9025
- Creation tx
- 0x64a0b52369…5766370223
Token
Not a token
This contract does not expose ERC-20 metadata.
Read contract (53)
AMM_FC_SPLIT_BPS() → uint16
CURVE_FEE_CREATOR_BPS() → uint16
DEFAULT_CURVE_ID() → uint32
LOCKED_LP() → address
MAX_CURVE_FEE_BPS() → uint16
MAX_GRADUATION_CUT_CAP() → uint16
MIN_CURVE_FEE_BPS() → uint16
MIN_Q0() → uint256
MIN_RAISE_THRESHOLD() → uint256
TOTAL_SUPPLY() → uint256
activeCurveBacking() → uint256
allLaunches(uint256) → address
allLaunchesLength() → uint256
allPairs(uint256) → address
allPairsLength() → uint256
amountRaised(address) → uint256
claimable(address) → uint256
curveComplete(address) → bool
curveCount() → uint32
curveIdOf(address) → uint32
curveImplementation(uint32) → address
curveOf(address) → uint32, address
curves(uint32) → address, bytes32, bool
escrowOf(address) → address
feeController() → address
feeTo() → address
getLaunch(address) → tuple
getPair(address, address) → address
governance() → address
graduationPoolDeployer() → address
guardian() → address
initialize(tuple)
isLaunchToken(address) → bool
isPool(address) → bool
launchEscrowDeployer() → address
launches(address) → address, address, uint16, uint16, uint32, address, uint256, uint256, uint256, bool, address
legacyPoolTokensAtThreshold(uint256, uint256, uint16) → uint256
lpRecipient() → address
managedNative() → uint256
maxGraduationCutBps() → uint16
maxManagedNative() → uint256
minimumManagedNative() → uint256
paused() → bool
poolOf(address) → address
protocolCutBps() → uint16
q0() → uint256
quoteBuy(address, uint256) → uint256
quoteSell(address, uint256) → uint256
raiseThreshold(address) → uint256
raiseThreshold() → uint256
totalClaimableNative() → uint256
treasury() → address
wNative() → address
Events (17)
BuyClaimNativeSkippedClaimedCurveAvailabilitySetCurveFeeCurveRegisteredCurveSelectedGraduatedGuardianSetInitializedLaunchCreatedMaxManagedNativeSetPairCreatedPausedSetPayoutWalletSetSellTreasurySet
ABI
[
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "feeController",
"type": "address"
},
{
"internalType": "address",
"name": "wNative",
"type": "address"
},
{
"internalType": "address",
"name": "governance",
"type": "address"
},
{
"internalType": "address",
"name": "treasury",
"type": "address"
},
{
"internalType": "address",
"name": "guardian",
"type": "address"
},
{
"internalType": "bool",
"name": "initiallyPaused",
"type": "bool"
},
{
"internalType": "uint256",
"name": "q0",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "raiseThreshold",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxManagedNative",
"type": "uint256"
},
{
"internalType": "uint16",
"name": "protocolCutBps",
"type": "uint16"
},
{
"internalType": "uint16",
"name": "maxGraduationCutBps",
"type": "uint16"
},
{
"internalType": "address",
"name": "lpRecipient",
"type": "address"
},
{
"internalType": "address",
"name": "initialCurve",
"type": "address"
},
{
"internalType": "address",
"name": "poolDeployer",
"type": "address"
},
{
"internalType": "address",
"name": "escrowDeployer",
"type": "address"
}
],
"internalType": "struct Launchpad.LaunchpadInitParams",
"name": "params",
"type": "tuple"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AlreadyGraduated",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "cap",
"type": "uint16"
}
],
"name": "CreatorCutTooHigh",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "CurveAlreadyRegistered",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "curveId",
"type": "uint32"
},
{
"internalType": "bytes32",
"name": "expected",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "actual",
"type": "bytes32"
}
],
"name": "CurveCodeChanged",
"type": "error"
},
{
"inputs": [],
"name": "CurveComplete",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "min",
"type": "uint16"
},
{
"internalType": "uint16",
"name": "max",
"type": "uint16"
}
],
"name": "CurveFeeOutOfRange",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "curveId",
"type": "uint32"
},
{
"internalType": "address",
"name": "expected",
"type": "address"
},
{
"internalType": "address",
"name": "actual",
"type": "address"
}
],
"name": "CurveImplementationChanged",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "curveId",
"type": "uint32"
}
],
"name": "CurveNotEnabled",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "curveId",
"type": "uint32"
}
],
"name": "CurveNotRegistered",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "expected",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "actual",
"type": "bytes32"
}
],
"name": "EscrowDeployerCodeChanged",
"type": "error"
},
{
"inputs": [],
"name": "FailedNativeTransfer",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "requiredCreatorBps",
"type": "uint16"
},
{
"internalType": "uint16",
"name": "actualCreatorBps",
"type": "uint16"
}
],
"name": "FeeControllerCapTooLow",
"type": "error"
},
{
"inputs": [],
"name": "ImmutableInitializationDisabled",
"type": "error"
},
{
"inputs": [],
"name": "InvalidCurve",
"type": "error"
},
{
"inputs": [],
"name": "InvalidFeeController",
"type": "error"
},
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [],
"name": "InvalidPayoutWallet",
"type": "error"
},
{
"inputs": [],
"name": "LaunchNotFound",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "currentManagedNative",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "requestedMaxManagedNative",
"type": "uint256"
}
],
"name": "ManagedNativeCapBelowCurrent",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "maxManagedNative",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "attemptedManagedNative",
"type": "uint256"
}
],
"name": "ManagedNativeCapExceeded",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "minimumManagedNative",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "requestedMaxManagedNative",
"type": "uint256"
}
],
"name": "ManagedNativeCapTooLow",
"type": "error"
},
{
"inputs": [],
"name": "NotGraduationReady",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"inputs": [],
"name": "ParamsOutOfDomain",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "expected",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "actual",
"type": "bytes32"
}
],
"name": "PoolDeployerCodeChanged",
"type": "error"
},
{
"inputs": [],
"name": "Slippage",
"type": "error"
},
{
"inputs": [],
"name": "Unauthorized",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "curveId",
"type": "uint32"
},
{
"internalType": "bool",
"name": "expected",
"type": "bool"
},
{
"internalType": "bool",
"name": "actual",
"type": "bool"
}
],
"name": "UnexpectedCurveAvailability",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "expected",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "actual",
"type": "uint32"
}
],
"name": "UnexpectedCurveId",
"type": "error"
},
{
"inputs": [],
"name": "WhenPaused",
"type": "error"
},
{
"inputs": [],
"name": "ZeroAmount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "buyer",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amountIn",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "tokensOut",
"type": "uint256"
}
],
"name": "Buy",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "payoutWallet",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "ClaimNativeSkipped",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Claimed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint32",
"name": "curveId",
"type": "uint32"
},
{
"indexed": false,
"internalType": "bool",
"name": "enabledForNewLaunches",
"type": "bool"
}
],
"name": "CurveAvailabilitySet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "payer",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "creatorFee",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "protocolFee",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bool",
"name": "isBuy",
"type": "bool"
}
],
"name": "CurveFee",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint32",
"name": "curveId",
"type": "uint32"
},
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "codeHash",
"type": "bytes32"
}
],
"name": "CurveRegistered",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "uint32",
"name": "curveId",
"type": "uint32"
},
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "quoteTarget",
"type": "uint256"
}
],
"name": "CurveSelected",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "pool",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "totalRaised",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "creatorCut",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "protocolCut",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "poolQuote",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "poolTokens",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "burnedTokens",
"type": "uint256"
}
],
"name": "Graduated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "oldGuardian",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newGuardian",
"type": "address"
}
],
"name": "GuardianSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "creator",
"type": "address"
},
{
"indexed": false,
"internalType": "uint16",
"name": "creatorBps",
"type": "uint16"
},
{
"indexed": false,
"internalType": "uint16",
"name": "curveFeeBps",
"type": "uint16"
},
{
"indexed": false,
"internalType": "address",
"name": "payoutWallet",
"type": "address"
},
{
"indexed": false,
"internalType": "string",
"name": "metadataURI",
"type": "string"
}
],
"name": "LaunchCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "oldMaxManagedNative",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newMaxManagedNative",
"type": "uint256"
}
],
"name": "MaxManagedNativeSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token0",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token1",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "pair",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "PairCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bool",
"name": "paused",
"type": "bool"
}
],
"name": "PausedSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "oldWallet",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newWallet",
"type": "address"
}
],
"name": "PayoutWalletSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "seller",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "tokensIn",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amountOut",
"type": "uint256"
}
],
"name": "Sell",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "oldTreasury",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newTreasury",
"type": "address"
}
],
"name": "TreasurySet",
"type": "event"
},
{
"inputs": [],
"name": "AMM_FC_SPLIT_BPS",
"outputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "CURVE_FEE_CREATOR_BPS",
"outputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DEFAULT_CURVE_ID",
"outputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "LOCKED_LP",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAX_CURVE_FEE_BPS",
"outputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAX_GRADUATION_CUT_CAP",
"outputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MIN_CURVE_FEE_BPS",
"outputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MIN_Q0",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MIN_RAISE_THRESHOLD",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "TOTAL_SUPPLY",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "activeCurveBacking",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "allLaunches",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "allLaunchesLength",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "allPairs",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "allPairsLength",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "amountRaised",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "minTokensOut",
"type": "uint256"
}
],
"name": "buy",
"outputs": [
{
"internalType": "uint256",
"name": "tokensOut",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "claim",
"outputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "claimAll",
"outputs": [
{
"internalType": "uint256",
"name": "nativeClaimed",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "poolAmount0",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "poolAmount1",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "beneficiary",
"type": "address"
}
],
"name": "claimFor",
"outputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "claimable",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "uint16",
"name": "creatorBps",
"type": "uint16"
},
{
"internalType": "uint16",
"name": "curveFeeBps",
"type": "uint16"
},
{
"internalType": "address",
"name": "payoutWallet",
"type": "address"
},
{
"internalType": "string",
"name": "metadataURI",
"type": "string"
}
],
"name": "createLaunch",
"outputs": [
{
"internalType": "contract LaunchToken",
"name": "token",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "uint16",
"name": "creatorBps",
"type": "uint16"
},
{
"internalType": "uint16",
"name": "curveFeeBps",
"type": "uint16"
},
{
"internalType": "address",
"name": "payoutWallet",
"type": "address"
},
{
"internalType": "string",
"name": "metadataURI",
"type": "string"
},
{
"internalType": "uint32",
"name": "curveId",
"type": "uint32"
}
],
"name": "createLaunch",
"outputs": [
{
"internalType": "contract LaunchToken",
"name": "token",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "uint16",
"name": "creatorBps",
"type": "uint16"
},
{
"internalType": "uint16",
"name": "curveFeeBps",
"type": "uint16"
},
{
"internalType": "address",
"name": "payoutWallet",
"type": "address"
},
{
"internalType": "string",
"name": "metadataURI",
"type": "string"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
}
],
"name": "createLaunchVanity",
"outputs": [
{
"internalType": "contract LaunchToken",
"name": "token",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "uint16",
"name": "creatorBps",
"type": "uint16"
},
{
"internalType": "uint16",
"name": "curveFeeBps",
"type": "uint16"
},
{
"internalType": "address",
"name": "payoutWallet",
"type": "address"
},
{
"internalType": "string",
"name": "metadataURI",
"type": "string"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"internalType": "uint32",
"name": "curveId",
"type": "uint32"
}
],
"name": "createLaunchVanity",
"outputs": [
{
"internalType": "contract LaunchToken",
"name": "token",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "curveComplete",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "curveCount",
"outputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "curveIdOf",
"outputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "curveId",
"type": "uint32"
}
],
"name": "curveImplementation",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "curveOf",
"outputs": [
{
"internalType": "uint32",
"name": "curveId",
"type": "uint32"
},
{
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"name": "curves",
"outputs": [
{
"internalType": "contract ILaunchCurve",
"name": "implementation",
"type": "address"
},
{
"internalType": "bytes32",
"name": "codeHash",
"type": "bytes32"
},
{
"internalType": "bool",
"name": "enabledForNewLaunches",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "escrowOf",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "feeController",
"outputs": [
{
"internalType": "contract IFeeController",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "feeTo",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "getLaunch",
"outputs": [
{
"components": [
{
"internalType": "contract LaunchToken",
"name": "token",
"type": "address"
},
{
"internalType": "address",
"name": "creator",
"type": "address"
},
{
"internalType": "uint16",
"name": "creatorBps",
"type": "uint16"
},
{
"internalType": "uint16",
"name": "curveFeeBps",
"type": "uint16"
},
{
"internalType": "uint32",
"name": "curveId",
"type": "uint32"
},
{
"internalType": "address",
"name": "payoutWallet",
"type": "address"
},
{
"internalType": "uint256",
"name": "tv",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "qv",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "k",
"type": "uint256"
},
{
"internalType": "bool",
"name": "graduated",
"type": "bool"
},
{
"internalType": "address",
"name": "pool",
"type": "address"
}
],
"internalType": "struct Launchpad.Launch",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "getPair",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "governance",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "graduate",
"outputs": [
{
"internalType": "address",
"name": "pool",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "graduationPoolDeployer",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "guardian",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "feeController",
"type": "address"
},
{
"internalType": "address",
"name": "wNative",
"type": "address"
},
{
"internalType": "address",
"name": "governance",
"type": "address"
},
{
"internalType": "address",
"name": "treasury",
"type": "address"
},
{
"internalType": "address",
"name": "guardian",
"type": "address"
},
{
"internalType": "bool",
"name": "initiallyPaused",
"type": "bool"
},
{
"internalType": "uint256",
"name": "q0",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "raiseThreshold",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxManagedNative",
"type": "uint256"
},
{
"internalType": "uint16",
"name": "protocolCutBps",
"type": "uint16"
},
{
"internalType": "uint16",
"name": "maxGraduationCutBps",
"type": "uint16"
},
{
"internalType": "address",
"name": "lpRecipient",
"type": "address"
},
{
"internalType": "address",
"name": "initialCurve",
"type": "address"
},
{
"internalType": "address",
"name": "poolDeployer",
"type": "address"
},
{
"internalType": "address",
"name": "escrowDeployer",
"type": "address"
}
],
"internalType": "struct Launchpad.LaunchpadInitParams",
"name": "",
"type": "tuple"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isLaunchToken",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isPool",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "launchEscrowDeployer",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "launches",
"outputs": [
{
"internalType": "contract LaunchToken",
"name": "token",
"type": "address"
},
{
"internalType": "address",
"name": "creator",
"type": "address"
},
{
"internalType": "uint16",
"name": "creatorBps",
"type": "uint16"
},
{
"internalType": "uint16",
"name": "curveFeeBps",
"type": "uint16"
},
{
"internalType": "uint32",
"name": "curveId",
"type": "uint32"
},
{
"internalType": "address",
"name": "payoutWallet",
"type": "address"
},
{
"internalType": "uint256",
"name": "tv",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "qv",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "k",
"type": "uint256"
},
{
"internalType": "bool",
"name": "graduated",
"type": "bool"
},
{
"internalType": "address",
"name": "pool",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "q0_",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "raiseThreshold_",
"type": "uint256"
},
{
"internalType": "uint16",
"name": "maxGraduationCutBps_",
"type": "uint16"
}
],
"name": "legacyPoolTokensAtThreshold",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "lpRecipient",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "managedNative",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "maxGraduationCutBps",
"outputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "maxManagedNative",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "minimumManagedNative",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "paused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "poolOf",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "protocolCutBps",
"outputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "q0",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amountIn",
"type": "uint256"
}
],
"name": "quoteBuy",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokensIn",
"type": "uint256"
}
],
"name": "quoteSell",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "raiseThreshold",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "raiseThreshold",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
},
{
"internalType": "uint32",
"name": "expectedCurveId",
"type": "uint32"
},
{
"internalType": "bytes32",
"name": "expectedCodeHash",
"type": "bytes32"
}
],
"name": "registerCurve",
"outputs": [
{
"internalType": "uint32",
"name": "curveId",
"type": "uint32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokensIn",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "minAmountOut",
"type": "uint256"
}
],
"name": "sell",
"outputs": [
{
"internalType": "uint256",
"name": "amountOut",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "curveId",
"type": "uint32"
},
{
"internalType": "bool",
"name": "expectedEnabled",
"type": "bool"
},
{
"internalType": "bool",
"name": "newEnabled",
"type": "bool"
},
{
"internalType": "address",
"name": "expectedImplementation",
"type": "address"
},
{
"internalType": "bytes32",
"name": "expectedCodeHash",
"type": "bytes32"
}
],
"name": "setCurveEnabled",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "guardian_",
"type": "address"
}
],
"name": "setGuardian",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "maxManagedNative_",
"type": "uint256"
}
],
"name": "setMaxManagedNative",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "paused_",
"type": "bool"
}
],
"name": "setPaused",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "address",
"name": "newWallet",
"type": "address"
}
],
"name": "setPayoutWallet",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "treasury_",
"type": "address"
}
],
"name": "setTreasury",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "totalClaimableNative",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "treasury",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "wNative",
"outputs": [
{
"internalType": "contract IWNative",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
]Source code
// SPDX-License-Identifier: GPL-3.0
pragma solidity 0.8.20;
import {Launchpad} from "./Launchpad.sol";
/// @title ImmutableLaunchpad
/// @notice Constructor-initialized production Launchpad with no proxy or upgrade path.
/// @dev The inherited external initializer is overridden by a small unconditional revert so the
/// constructor-only validation path is not retained in production runtime bytecode. Governance
/// can operate only the explicit runtime controls exposed by Launchpad, including
/// enabling/disabling append-only curve registrations for future launches; it cannot replace
/// this contract's code or repoint an existing curve ID.
contract ImmutableLaunchpad is Launchpad {
error ImmutableInitializationDisabled();
constructor(LaunchpadInitParams memory params) {
_initialize(params);
}
function initialize(LaunchpadInitParams calldata) external pure override {
revert ImmutableInitializationDisabled();
}
}
Chain explorer2672msChain node80ms