Documentation
Contracts
Every deployed contract: functions, events and errors.
TartarusFeeEscrow#
0x44D1065fD59280cFa26B7BE3dBf13F364314616F
Functions an application calls#
balanceOf(address)#
0x70a08231 · view · view
Returns the claimable native HYPE balance for recipient.
Claimable native HYPE.
Parameters
| Name | Type | Description |
|---|---|---|
recipient | address |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | uint256 |
balanceOfToken(address,address)#
0xf59e38b7 · view · view
Returns the claimable balance of token for recipient.
(recipient, token). Read this rather than an indexer if you want on-chain truth for a claim button.
Parameters
| Name | Type | Description |
|---|---|---|
recipient | address | |
token | address |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | uint256 |
claim(uint256)#
0x379607f5 · nonpayable · Pull-only, msg.sender.
Pays out amount of the caller's claimable native HYPE balance.
Partial native claim.
Parameters
| Name | Type | Description |
|---|---|---|
amount | uint256 |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | uint256 |
claim()#
0x4e71d92d · nonpayable · Pull-only, msg.sender.
Pays out the caller's entire claimable native HYPE balance.
Native HYPE balance — the creator fees of every HYPE-quoted launch.
Returns
| Name | Type | Description |
|---|---|---|
amount | uint256 |
Reverts
NoBalanceTransferFailed— the caller rejected HYPE
claimToken(address,uint256)#
0x1698755f · nonpayable · Pull-only, msg.sender.
Pays out amount of the caller's claimable balance of token.
A recipient's balance aggregates credits from every launch and creditToken is permissionless, so a third party can enlarge that figure at will. Against a token with a fixed maximum per transfer, a single full-balance claim would then revert and leave the recipient unable to draw any of it. Choosing the amount keeps the aggregate from being a single point of failure, and lets a recipient work around any per-transfer limit its quote asset imposes.
Partial claim, for a quote asset with a per-transfer limit.
Parameters
| Name | Type | Description |
|---|---|---|
token | address | |
amount | uint256 |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | uint256 |
Reverts
InsufficientBalanceNoBalance
claimToken(address)#
0x32f289cf · nonpayable · Pull-only — claims the balance of msg.sender. You cannot claim for someone else.
Pays out the caller's entire claimable balance of token.
The escrow holds ONE balance per (recipient, asset), aggregated across every launch. Use this for an ERC-20 quote asset; native HYPE fees are claimed with claim().
Parameters
| Name | Type | Description |
|---|---|---|
token | address |
Returns
| Name | Type | Description |
|---|---|---|
amount | uint256 |
Reverts
NoBalance— nothing accrued for you in that token
Other functions#
| Signature | Selector | Mutability |
|---|---|---|
credit(address) | 0xd5d44d80 | payable |
creditToken(address,address,uint256) | 0x09ad4dd9 | nonpayable |
Events#
| Event | topic0 |
|---|---|
Claimed(address,uint256) | 0xd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a |
ClaimedToken(address,address,uint256) | 0xdbc1ea3a8459e4c7e11fb385b52bbb5cc8c8ab85eec5d883ac9aa78c171f5141 |
Credited(address,address,uint256) | 0x4e45da441832cf53bdaa69235704fc0575e68210f459ee1562911024b12967d5 |
CreditedToken(address,address,address,uint256) | 0x5d104c62f50449fadfe6f4013c8f36588d32737f94b5ac9b83ddad33b3e1ffdf |
Errors#
| Error | Selector |
|---|---|
InsufficientBalance(uint256,uint256) | 0xcf479181 |
NoBalance() | 0xc2caa2a6 |
ReentrancyGuardReentrantCall() | 0x3ee5aeb5 |
SafeERC20FailedOperation(address) | 0x5274afe7 |
TransferFailed() | 0x90b8ec18 |
ZeroAddress() | 0xd92e233d |
TartarusMemeHook#
0x00b2Ff65E61aD8c57F957624EDc6C81908Ade044
Functions an application calls#
currentFeePolicy(uint16)#
0xf28f0e1b · view · view
Returns the terms a launch choosing creatorFeeBps would snapshot immutably right now. Reverts when the choice is outside the live bounds, so the factory cannot register a tranche the owner has not allowed.
The terms a launch choosing creatorFeeBps would freeze now. A launch keeps its own copy, so later policy changes do not touch it.
Parameters
| Name | Type | Description |
|---|---|---|
creatorFeeBps | uint16 |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | (address,uint16,uint16,uint16) |
pendingFees(bytes32,address)#
0x359b4f30 · view · view
Fees collected per pool and currency, held as this hook's ERC-6909 claims on the pool manager until a sweep or rescue redeems them.
(poolId, currency) — fees collected and not yet swept, held as ERC-6909 claims on the pool manager.
Parameters
| Name | Type | Description |
|---|---|---|
arg0 | bytes32 | |
currency | address |
Returns
| Name | Type | Description |
|---|---|---|
amount | uint256 |
sweepPoolFees(bytes32,uint256)#
0xebe51768 · nonpayable · The fee-sweep operator, or the pool's creator when no internal conversion is needed.
Converts any pending memecoin-denominated fee into the quote against the pool's own liquidity, then splits the combined quote total between protocol and creator in proportion to their frozen tranches. The trusted sweep operator is required whenever the sweep would execute an internal conversion. The creator may still distribute already-quoted fees when no internal swap is needed.
Converts any pending memecoin-denominated fee into the quote against the pool's own liquidity, then credits protocol and creator shares into the fee escrow in proportion to their frozen tranches. A conversion needs the operator and a non-zero minConversionQuoteOut.
Parameters
| Name | Type | Description |
|---|---|---|
poolId | bytes32 | |
minConversionQuoteOut | uint256 |
Reverts
InternalSwapRequiresOperatorMinimumOutputRequiredSlippageExceededUnknownPool
sweepPoolQuoteFees(bytes32)#
0x9f8e76a7 · nonpayable · The fee-sweep operator or the pool's creator.
Pays out a pool's quote-denominated fees and leaves its memecoin bucket pending, without the internal conversion. For a memecoin bucket too small to convert: with no LP fee, a few million wei of memecoin fills for zero quote, so sweepPoolFees would revert on any minimum and refuse a zero one, and anyone could keep a pool's quote fees stuck that way with a dust-sized buy. No swap runs here, so there is nothing to manipulate and the creator may call it as well as the operator. The memecoin stays pending for the next sweepPoolFees, once it is worth converting.
Pays out the quote-denominated fees only and leaves the memecoin bucket pending. No swap runs, so the creator can always use it to release their quote fees.
Parameters
| Name | Type | Description |
|---|---|---|
poolId | bytes32 |
Reverts
UnknownPool
Other functions#
| Signature | Selector | Mutability |
|---|---|---|
acceptOwnership() | 0x79ba5097 | nonpayable |
afterAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes) | 0x9f063efc | nonpayable |
afterDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes) | 0xe1b4af69 | nonpayable |
afterInitialize(address,(address,address,uint24,int24,address),uint160,int24) | 0x6fe7e6eb | nonpayable |
afterRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes) | 0x6c2bbe7e | nonpayable |
afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes) | 0xb47b2fb1 | nonpayable |
beforeAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes) | 0x259982e5 | nonpayable |
beforeDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes) | 0xb6a8b0fa | nonpayable |
beforeInitialize(address,(address,address,uint24,int24,address),uint160) | 0xdc98354e | nonpayable |
beforeRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes) | 0x21d0ee70 | nonpayable |
beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes) | 0x575e24b4 | nonpayable |
factory() | 0xc45a0155 | view |
feeEscrow() | 0xc4b7de97 | view |
feeSweepOperator() | 0x8a36a6bb | view |
getHookPermissions() | 0xc4e833ce | pure |
launches(bytes32) | 0xad091230 | view |
MAX_TOTAL_FEE_BPS() | 0x431a9caa | view |
maxCreatorFeeBps() | 0x0a3c0856 | view |
maxInternalPriceImpactBps() | 0x90addc1e | view |
minCreatorFeeBps() | 0x88f4684d | view |
owner() | 0x8da5cb5b | view |
pendingOwner() | 0xe30c3978 | view |
poolManager() | 0xdc4c90d3 | view |
protocolFeeBps() | 0x35659fb8 | view |
protocolFeeRecipient() | 0x64df049e | view |
registerPool((address,address,uint24,int24,address),address,address,(address,uint16,uint16,uint16)) | 0x7337a8b7 | nonpayable |
renounceOwnership() | 0x715018a6 | pure |
rescuePoolFees(bytes32) | 0x5cbe8117 | nonpayable |
setCreatorFeeBounds(uint256,uint256) | 0x9f4042a2 | nonpayable |
setCreatorFeeRecipient(bytes32,address) | 0xed8ef7a3 | nonpayable |
setFactory(address) | 0x5bb47808 | nonpayable |
setFeeSweepOperator(address) | 0x54faf9c3 | nonpayable |
setMaxInternalPriceImpactBps(uint256) | 0xb89eddab | nonpayable |
setProtocolFeeBps(uint256) | 0xc0417e58 | nonpayable |
setProtocolFeeRecipient(address) | 0xe521cb92 | nonpayable |
transferOwnership(address) | 0xf2fde38b | nonpayable |
unlockCallback(bytes) | 0x91dd7346 | nonpayable |
Events#
| Event | topic0 |
|---|---|
CreatorFeeBoundsUpdated(uint256,uint256) | 0x7da93c15168a31f5bef5eb6ae509ab6c0af7799e7a17a7f1ace13cc30012b96e |
CreatorFeeRecipientUpdated(bytes32,address,address) | 0xb45e6b72a7de9a2077babe9717744436f3880e114099956ca85f91a77469a532 |
FactorySet(address) | 0x1edf3afd4ac789736e00d216cd88be164ddcef26a6eedcc30cdb0cb62f3741b1 |
FeeSweepOperatorUpdated(address) | 0xae994ca926e252e299c3df7516cb609272a57bf80b0e0715297e55939f873420 |
HookFeeCollected(bytes32,address,uint256) | 0xcf54f8cbb5f9c3a7061090beb81e0337579190a0137ed295e96cfecd9bab9542 |
MaxInternalPriceImpactUpdated(uint256) | 0x6968b68c1fb468c8b257b012290bf803a6a6d7e79468e0326050724f7573cf01 |
OwnershipTransferred(address,address) | 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 |
OwnershipTransferStarted(address,address) | 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700 |
PoolConversionSkipped(bytes32,uint256) | 0xeed2d18eb96f3c2cb8c7b6993512a506c170e17d29355f2d7a0d5961f338de09 |
PoolFeesRescued(bytes32,address,uint256,uint256) | 0x0fbb28f9c335f55dcc5cc19e595ab55f9e6a0fd1b58ad77be3a98f99901daaff |
PoolFeesSwept(bytes32,uint256,uint256) | 0x2b33b68d948eb789fd57906bde3dc24d9f748c1df9b98d7359910f6aa1c06e2f |
PoolRegistered(bytes32,address,address,address) | 0x01bf263a1db1652580721573296e1a1fa70b3d4c87f61d02a69c4e1109d2d573 |
ProtocolFeeBpsUpdated(uint256) | 0x0c69d666e7ba3ce81300fa14cb3e9c03596138bfc8ecec0eacb0a8ef31442cdc |
ProtocolFeeRecipientUpdated(address) | 0xc1b5345cce283376356748dc57f2dfa7120431d016fc7ca9ba641bc65f91411d |
Errors#
| Error | Selector |
|---|---|
AlreadyRegistered() | 0x3a81d6fc |
AlreadySet() | 0xa741a045 |
CreatorFeeOutOfBounds(uint256,uint256,uint256) | 0x87ab5572 |
HookNotImplemented() | 0x0a85dc29 |
InexactQuoteTransfer(address,uint256,uint256) | 0x197001d6 |
InternalSwapRequiresOperator() | 0x31cdb504 |
InvalidBps() | 0xc6cc5d7f |
InvalidPoolKey() | 0xc256622b |
MinimumOutputRequired() | 0x3672d25f |
NotFactory() | 0x32cc7236 |
NotFeeSweepOperator() | 0x8d42130c |
NothingToRescue() | 0x00f6b210 |
NotPoolManager() | 0xae18210a |
OwnableInvalidOwner(address) | 0x1e4fbdf7 |
OwnableUnauthorizedAccount(address) | 0x118cdaa7 |
OwnershipCannotBeRenounced() | 0x2fab92ca |
ReentrancyGuardReentrantCall() | 0x3ee5aeb5 |
SafeCastOverflowedIntToUint(int256) | 0xa8ce4432 |
SafeCastOverflowedUintToInt(uint256) | 0x24775e06 |
SafeERC20FailedOperation(address) | 0x5274afe7 |
SlippageExceeded(uint256,uint256) | 0x71c4efed |
UnknownPool() | 0xf7139e33 |
ZeroAddress() | 0xd92e233d |
TartarusLaunchLocker#
0x8fABb780838c1662235002F70A94a7ef882a9598
Other functions#
| Signature | Selector | Mutability |
|---|---|---|
acceptOwnership() | 0x79ba5097 | nonpayable |
factory() | 0xc45a0155 | view |
isLocked(address) | 0x4a4fbeec | view |
lockedPositions(address) | 0xfa22143d | view |
lockedTokenSupply(address) | 0x732e78e4 | view |
lockPosition(address,uint256) | 0x292d5732 | nonpayable |
lockTokenSupply(address,uint256) | 0xb8a0d7ab | nonpayable |
onERC721Received(address,address,uint256,bytes) | 0x150b7a02 | view |
owner() | 0x8da5cb5b | view |
pendingOwner() | 0xe30c3978 | view |
positionManager() | 0x791b98bc | view |
renounceOwnership() | 0x715018a6 | pure |
setFactory(address) | 0x5bb47808 | nonpayable |
transferOwnership(address) | 0xf2fde38b | nonpayable |
Events#
| Event | topic0 |
|---|---|
FactorySet(address) | 0x1edf3afd4ac789736e00d216cd88be164ddcef26a6eedcc30cdb0cb62f3741b1 |
OwnershipTransferred(address,address) | 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 |
OwnershipTransferStarted(address,address) | 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700 |
PositionLocked(address,uint256) | 0x2cabb2a2973327d5863ceb4707e9441851243897e86d587ee35943599752eb54 |
TokenSupplyLocked(address,uint256) | 0xaf33c4aba92959b3e7ddc83ab728938262da159a6c05ca836f6c46f9bcb2c740 |
Errors#
| Error | Selector |
|---|---|
AlreadyInitialized() | 0x0dc149f0 |
NotFactory() | 0x32cc7236 |
NotPositionManager() | 0x20fdc658 |
OwnableInvalidOwner(address) | 0x1e4fbdf7 |
OwnableUnauthorizedAccount(address) | 0x118cdaa7 |
OwnershipCannotBeRenounced() | 0x2fab92ca |
PositionAlreadyLocked() | 0xfe3099b6 |
PositionNotHeld() | 0x6b49c94a |
SafeERC20FailedOperation(address) | 0x5274afe7 |
ZeroAddress() | 0xd92e233d |
TartarusLaunchFactory#
0x765f2ce211050ec8280257d76072cAa480D75A00
Functions an application calls#
bridgeWalletFor(address)#
0x31682149 · view · view
The Elysium bridge escrow wallet created for token, or zero if none exists yet. Reverts while no bridge factory is configured.
The Elysium bridge wallet created at launch, or zero. Reverts while no bridge factory is configured.
Parameters
| Name | Type | Description |
|---|---|---|
token | address |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | address |
canLaunch(address)#
0x58373f04 · view · view
Whether launcher may launch right now: true while the public gate is open, and true for whitelisted addresses while it is closed. The same predicate launchToken enforces on its caller, exposed so routers like TartarusLaunchAndBuy can hold their own callers to this single list instead of maintaining a second one.
Check this before showing a launch form; while the public gate is closed only whitelisted launchers pass.
Parameters
| Name | Type | Description |
|---|---|---|
launcher | address |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | bool |
executeCreatorFeeRecipientChange(address)#
0x3d3d2d58 · nonpayable · Permissionless once the timelock has elapsed.
Applies a protocol-owner's proposed creator fee recipient change once its timelock has elapsed. Permissionless: anyone can execute an already-matured proposal.
Applies a protocol-owner override proposed with setCreatorFeeRecipient. The API reports one as creatorFeeRecipientPending on the token.
Parameters
| Name | Type | Description |
|---|---|---|
token | address |
Reverts
NoPendingChangeTimelockNotElapsedTimelockExpired
getLaunchConfig(uint256)#
0x1cad862d · view · view
Parameters
| Name | Type | Description |
|---|---|---|
id | uint256 |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | (address,int24,int24,bool) |
getLaunchedToken(address)#
0x3cf28b5a · view · view
Returns the immutable record for a token created by this factory.
The immutable launch record: deployer, quote asset, config, pool id and the frozen fee tranches.
Parameters
| Name | Type | Description |
|---|---|---|
token | address |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | (address,address,address,address,bytes32,uint256,int24,int24,bool) |
getLaunchFeePolicy(address)#
0x470ef5fc · view · view
Returns the fee policy frozen for a launch.
Parameters
| Name | Type | Description |
|---|---|---|
token | address |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | (address,uint16,uint16,uint16) |
HOLDER_REWARDS()#
0x1acda2e3 · view · view
Pass as TokenParams.creatorFeeRecipient to pay the creator tranche to the launch's holders. The factory then resolves the recipient to the launch's rewards distributor itself, from the same inputs TartarusRewardsDistributorFactory.deploy checks later, so the address can never be mispredicted. A keyless address: it has no known preimage, so nobody can ever hold or spend from it.
The sentinel to pass as TokenParams.creatorFeeRecipient for a holder-rewards launch. The factory resolves it to the launch's distributor.
Returns
| Name | Type | Description |
|---|---|---|
arg0 | address |
holderRewardsDistributorUsed(address)#
0x7ca38ca2 · view · view
Holder-rewards distributors already bound to a launch. A distributor's address depends only on (creator, salt, quote), while the token's also depends on its metadata, tranche and config, so a creator reusing a salt could otherwise send two launches' fees into one distributor that only the first can ever register, and the second's holders would get nothing.
True once a distributor is bound to a launch; a second holder-rewards launch with the same (creator, salt, quote) would revert.
Parameters
| Name | Type | Description |
|---|---|---|
distributor | address |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | bool |
isSymbolAvailable(string)#
0xebe4f36a · view · view
True when a launch would accept symbol: valid ticker format, not reserved, not already taken.
Valid HyperCore ticker format, not reserved, not taken. The API's /v1/launch/symbol answers the same question with a reason.
Parameters
| Name | Type | Description |
|---|---|---|
symbol | string |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | bool |
launchFee()#
0xcf3cf573 · view · view
A flat charge on creating a launch, in native HYPE, credited to the protocol fee recipient through the escrow. Spam friction rather than revenue. Zero disables it.
Native HYPE, sent as msg.value.
Returns
| Name | Type | Description |
|---|---|---|
arg0 | uint256 |
launchForwarder()#
0x9b924452 · view · view
The router allowed to launch on a user's behalf. Launch-and-buy is available only while this is TartarusLaunchAndBuy.
Returns
| Name | Type | Description |
|---|---|---|
arg0 | address |
launchToken((string,string,string,string,(string,string,string,string,string),address,uint16,bytes32,bytes32),uint256)#
0x36fbbab8 · payable · Permissionless, but gated by canLaunch(msg.sender) — check it before offering a launch UI.
Deploys the launch token, creates and seeds its pool, and records the launch. msg.value must equal launchFee exactly.
Deploys the token, creates its single-sided Uniswap V4 pool at the config's starting tick and records the launch, all in one call; the token trades from this block. The launch fee is native HYPE sent as msg.value (not an allowance), whatever the launch quotes in. Use this when there is NO opening buy; for one, go through TartarusLaunchAndBuy.launchAndBuy. Set creatorFeeRecipient to HOLDER_REWARDS() to pay the creator tranche to holders.
Parameters
| Name | Type | Description |
|---|---|---|
params | (string,string,string,string,(string,string,string,string,string),address,uint16,bytes32,bytes32) | |
launchConfigId | uint256 |
Returns
| Name | Type | Description |
|---|---|---|
token | address |
Reverts
NotWhitelisted— the public gate is closed and you are not a whitelisted launcherIncorrectLaunchFee—msg.valueis not exactlylaunchFee()InvalidLaunchConfigId/LaunchConfigDisabled— no such config, or it is switched offQuoteTokenNotApproved— the config's quote asset is no longer approvedInvalidSymbol/SymbolReserved/SymbolTaken— the ticker is not[A-Z0-9]{1,6}, is reserved, or is in useCreatorFeeOutOfBounds(from the hook) —creatorFeeBpsoutside the live boundsLaunchEconomicsMismatch(expected,actual)— terms moved since you readpreviewLaunchEconomicsRewardsFactoryNotSet/HolderRewardsDistributorTaken—HOLDER_REWARDSrequested but not wired, or this salt's distributor is already bound
pendingCreatorFeeRecipient(address)#
0x9beacf4a · view · view
Parameters
| Name | Type | Description |
|---|---|---|
token | address |
Returns
| Name | Type | Description |
|---|---|---|
newRecipient | address | |
effectiveAt | uint256 | |
expiresAt | uint256 |
pendingLaunchForwarder()#
0x88e25296 · view · view
A timelocked forwarder change: the proposed address and its execution window. Anyone may execute it once matured.
Returns
| Name | Type | Description |
|---|---|---|
forwarder | address | |
effectiveAt | uint256 | |
expiresAt | uint256 |
poolKeyFor(address)#
0x21c099c8 · view · view
The Uniswap V4 pool key of a launched token, for routers and quoters. Reverts for unknown tokens.
The token's Uniswap V4 pool key, for the Universal Router's V4_SWAP. Reverts for an unknown token.
Parameters
| Name | Type | Description |
|---|---|---|
token | address |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | (address,address,uint24,int24,address) |
previewLaunchEconomics(uint256,uint16)#
0x63fa3362 · view · view
Returns the economics digest a launch of launchConfigId choosing creatorFeeBps would produce right now, for a creator to pass back as TokenParams.expectedEconomics.
Reading the digest and launching in separate transactions still leaves the terms free to move in between; the pin is what makes that movement revert instead of silently repricing the launch. Reverts with the hook's CreatorFeeOutOfBounds when the tranche is not allowed.
Returns the digest to put in TokenParams.expectedEconomics for (launchConfigId, creatorFeeBps). Fetch it in the same flow as the submit — an owner changing the fee policy or the launch fee between your read and your signature makes the launch revert rather than silently repricing. Reverts with the hook's CreatorFeeOutOfBounds for a disallowed tranche.
Parameters
| Name | Type | Description |
|---|---|---|
launchConfigId | uint256 | |
creatorFeeBps | uint16 |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | bytes32 |
rewardsDistributorFactory()#
0xed743d1e · view · view
Resolves HOLDER_REWARDS launches to their distributor. Unset until wired; holder-rewards launches revert until then.
Zero while holder rewards are not wired; a HOLDER_REWARDS launch reverts with RewardsFactoryNotSet then.
Returns
| Name | Type | Description |
|---|---|---|
arg0 | address |
transferCreatorFeeRecipient(address,address)#
0x2931861b · nonpayable · The launch's current creator fee recipient only.
Lets the current creator fee recipient hand off future creator fees for token to a new address.
Does not clear a pending protocol-owner override. If one is outstanding, it still executes on schedule and supersedes the address set here. See setCreatorFeeRecipient.
Hands future creator fees to a new address. Does not cancel a pending protocol-owner override; a matured override still executes on schedule.
Parameters
| Name | Type | Description |
|---|---|---|
token | address | |
newRecipient | address |
Reverts
NotCreatorFeeRecipientTokenNotFoundZeroAddress
Other functions#
| Signature | Selector | Mutability |
|---|---|---|
acceptOwnership() | 0x79ba5097 | nonpayable |
addLaunchConfig((address,int24,int24,bool)) | 0x7c61e47f | nonpayable |
approvedQuoteTokens(address) | 0x80729480 | view |
BRIDGE_WALLET_GAS() | 0xffe338f1 | view |
cancelCreatorFeeRecipientChange(address) | 0x6e47a188 | nonpayable |
cancelLaunchForwarderChange() | 0x813dbbfa | nonpayable |
CREATOR_FEE_RECIPIENT_EXECUTION_WINDOW() | 0x02d4753d | view |
CREATOR_FEE_RECIPIENT_TIMELOCK() | 0x5a83b00a | view |
disableLaunchForwarder() | 0x74767ea9 | nonpayable |
elysiumBridgeFactory() | 0x2f828f0b | view |
executeLaunchForwarderChange() | 0x31d1fdaf | nonpayable |
expectedMirrorFor(address) | 0xa60651fb | view |
feeEscrow() | 0xc4b7de97 | view |
isSymbolReserved(string) | 0xd5e17fe3 | view |
LAUNCH_FORWARDER_EXECUTION_WINDOW() | 0xf3feb0d3 | view |
LAUNCH_FORWARDER_TIMELOCK() | 0xafe9f556 | view |
launchConfigCount() | 0xae72d871 | view |
launchDeployer() | 0x858f5964 | view |
launchEnabled() | 0x236a4afb | view |
launchForwarderInitialized() | 0x3ab6ec24 | view |
launchTokenFor((string,string,string,string,(string,string,string,string,string),address,uint16,bytes32,bytes32),uint256,address) | 0x99558b64 | payable |
locker() | 0xd7b96d4e | view |
memeHook() | 0x6651812c | view |
owner() | 0x8da5cb5b | view |
pendingOwner() | 0xe30c3978 | view |
permit2() | 0x12261ee7 | view |
poolManager() | 0xdc4c90d3 | view |
positionManager() | 0x791b98bc | view |
proposeLaunchForwarder(address) | 0xce12a5bc | nonpayable |
renounceOwnership() | 0x715018a6 | pure |
setCreatorFeeRecipient(address,address) | 0xe102c9aa | nonpayable |
setElysiumBridgeFactory(address) | 0x29fc5422 | nonpayable |
setLaunchDeployer(address) | 0x3a9391e8 | nonpayable |
setLaunchEnabled(bool) | 0xf56f05b2 | nonpayable |
setLaunchFee(uint256) | 0x5313be2c | nonpayable |
setLaunchForwarder(address) | 0x767b7c16 | nonpayable |
setQuoteTokenApproved(address,bool) | 0x45619b6e | nonpayable |
setReservedSymbol(string,bool) | 0x2ca1ff1b | nonpayable |
setRewardsDistributorFactory(address) | 0x353fc828 | nonpayable |
setWhitelistedLauncher(address,bool) | 0x366f0f3e | nonpayable |
SUPPLY() | 0xc50497ae | view |
tokenBySymbol(bytes32) | 0x26a2a16d | view |
transferOwnership(address) | 0xf2fde38b | nonpayable |
updateLaunchConfig(uint256,(address,int24,int24,bool)) | 0xa954dc4d | nonpayable |
whitelistedLaunchers(address) | 0xda3eda65 | view |
Events#
| Event | topic0 |
|---|---|
BridgeWalletCreated(address,address) | 0x0784ee1925b81ceb1c4f909a494f11a35badad9b999bcceb2d1a5ad597a25abe |
BridgeWalletSkipped(address) | 0xbcd7adc790364324699753894577b3c54f5c088135312e9ded902d5ae85d9a44 |
CreatorFeeRecipientChangeCancelled(address,address) | 0xbe2de91c1cbef653c760573fff8355c0c851d35ed2a898342b4db556301cccf4 |
CreatorFeeRecipientChangeProposed(address,address,address,uint256,uint256) | 0x7f119e44c84a715429bee60d30ad2e14afdef6c60bb1a7eaa01290ecf6d1b2e5 |
CreatorFeeRecipientUpdated(address,address,address) | 0x308c390ed1ab5873392818e036cabdf408bc8ad042fbaead3108954ff75ba980 |
ElysiumBridgeFactorySet(address) | 0xf93b11821bfd7ed7369be380bca7b1b96d8fe3219b8b59f682b1cf9aa348f1ae |
LaunchConfigAdded(uint256) | 0xedd96c570c6e5ef9add0378e59df53579a283889dc5dab6440ef6eca2ee6c8ce |
LaunchConfigUpdated(uint256) | 0x2f8ba78ae68cfd0c82c7756c540eaf4eead3341aef9ccebcb91d546bff10d62b |
LaunchDeployerSet(address) | 0xd5ea7aa3e328a0594dcf6914cd9e5369779efaa194ee4dd4c5afcad4f4ebbb0c |
LaunchEnabledUpdated(bool) | 0x4f1ea5016c51c2f82324e00e9b8a4a95ee5aeaa10c653dabaec5f1bc9047ba0b |
LaunchFeeUpdated(uint256) | 0xc799be5eb19a1a6d6ba7368d21e2bc367c8a335e4a07cd3d954482e6f714d3c5 |
LaunchForwarderChangeCancelled(address) | 0x21ef2af51c6ff72bd6d142e45d2e01f0448c8fff50168bb73a1b862c427a76af |
LaunchForwarderChangeProposed(address,address,uint256,uint256) | 0x40399dc1b46c2cbda42768dcf83944f62829bd45095ab22fb45ca8e387589135 |
LaunchForwarderSet(address) | 0x56b32d3633fed72f97c4df44a78b5fa04f1d662d4bddebcd8a9b216d26d093ad |
LaunchSalt(address,bytes32) | 0x06ace689d4f9cc53fc9c544dbffde33266dedb0b9941235bc3086fb0824c03fd |
OwnershipTransferred(address,address) | 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 |
OwnershipTransferStarted(address,address) | 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700 |
PoolSeeded(address,uint256,uint128,uint256,uint256) | 0x1403071d82f5bf603e26432d669b9a1c9234f678a80ccd63ec2c4adf2428543b |
QuoteTokenApprovalUpdated(address,bool) | 0x08a843625584ce1b83674addd05c56adbb63d59b99f3c11eabaab869734fd4c5 |
ReservedSymbolUpdated(string,bool) | 0xccaf9a1889196a07179623710ec905c42226f34ce9561f3e6a8ad2c545f64946 |
RewardsDistributorFactorySet(address) | 0x8584e5b12dbb992c74d868f3beef4084c46551850974ad70f5442beba0124fdf |
TokenLaunched(address,address,address,uint256,bytes32,uint256,address,int24,uint16,uint16) | 0x94536bc2a8cb6d35f91cb7caf0da3a1c0af50c75501a7b69ab149d80c3ce1b60 |
WhitelistedLauncherUpdated(address,bool) | 0xef2b562a67f01ed4b7c4265ec09b539039c6d5dd7e752191d3940508c3dc0068 |
Errors#
| Error | Selector |
|---|---|
AlreadySet() | 0xa741a045 |
BridgeFactoryNotSet() | 0xfba5239c |
BridgeWalletOutOfGas() | 0xd66282ab |
HolderRewardsDistributorTaken(address) | 0x0c40ebbe |
IncorrectLaunchFee(uint256,uint256) | 0xe14cee31 |
InvalidLaunchConfigId() | 0x68b42c59 |
InvalidStartingTick() | 0x21bfef7e |
InvalidSymbol() | 0x04119bc4 |
InvalidTickSpacing() | 0x270815a0 |
LaunchConfigDisabled() | 0xa8b63076 |
LaunchDependenciesNotWired() | 0x1de25df3 |
LaunchDeployerNotSet() | 0x57332dcf |
LaunchEconomicsMismatch(bytes32,bytes32) | 0xecb27319 |
NoPendingChange() | 0xa3fef2f8 |
NotAContract() | 0x09ee12d5 |
NotCreatorFeeRecipient() | 0xb9f93944 |
NotLaunchForwarder() | 0xea9eaa96 |
NotWhitelisted() | 0x584a7938 |
OwnableInvalidOwner(address) | 0x1e4fbdf7 |
OwnableUnauthorizedAccount(address) | 0x118cdaa7 |
OwnershipCannotBeRenounced() | 0x2fab92ca |
QuoteTokenNotApproved() | 0x8b44d1ae |
ReentrancyGuardReentrantCall() | 0x3ee5aeb5 |
RewardsFactoryNotSet() | 0x662b8375 |
SafeERC20FailedOperation(address) | 0x5274afe7 |
SeedNotViable() | 0x70a5d0b7 |
SymbolReserved() | 0x18049c93 |
SymbolTaken(address) | 0x30214533 |
TimelockExpired(uint256) | 0xb79d40e8 |
TimelockNotElapsed(uint256) | 0x810c4f2a |
TokenNotFound() | 0xcbdb7b30 |
ZeroAddress() | 0xd92e233d |
TartarusLaunchDeployer#
0x94b7ed8968bF4323c03DE97395801D487771C44E
Functions an application calls#
isValidName(string)#
0x1e30397f · pure · pure
Whether name fits a single word (1..31 bytes, no NUL).
1..31 bytes, no NUL: the name packs into one bytes32.
Parameters
| Name | Type | Description |
|---|---|---|
name | string |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | bool |
isValidSymbol(string)#
0x8fd4f71a · pure · pure
Whether symbol satisfies the HyperCore ticker format ([A-Z0-9]{1,6}).
[A-Z0-9]{1,6} — the HyperCore ticker verbatim.
Parameters
| Name | Type | Description |
|---|---|---|
symbol | string |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | bool |
predictLaunchAddress((address,address,bytes32,address,uint16,uint256,string,string,string,string,(string,string,string,string,string)))#
0xe1f82767 · view · view
Returns the address deployLaunch would produce for params, without deploying anything. Reverts on an invalid name or symbol, so it doubles as a dry run of the metadata rules.
Computes the CREATE2 token address before you send, and doubles as a dry run of the name and symbol rules (it reverts on either). The API's /v1/launch/predict wraps it and returns the pool id and expectedEconomics too.
Parameters
| Name | Type | Description |
|---|---|---|
params | (address,address,bytes32,address,uint16,uint256,string,string,string,string,(string,string,string,string,string)) |
Returns
| Name | Type | Description |
|---|---|---|
token | address |
Other functions#
| Signature | Selector | Mutability |
|---|---|---|
deployLaunch((address,address,bytes32,address,uint16,uint256,string,string,string,string,(string,string,string,string,string))) | 0xe637ebaa | nonpayable |
factory() | 0xc45a0155 | view |
Errors#
| Error | Selector |
|---|---|
Create2EmptyBytecode() | 0x4ca249dc |
FailedDeployment() | 0xb06ebf3d |
InsufficientBalance(uint256,uint256) | 0xcf479181 |
InvalidName() | 0x430f13b3 |
InvalidSymbol() | 0x04119bc4 |
MetadataTooLong() | 0x85b8e2f4 |
NotFactory() | 0x32cc7236 |
TartarusLaunchAndBuy#
0x044a835456057915028DDdFfa161DeA9d4d40615
Functions an application calls#
launchAndBuy((string,string,string,string,(string,string,string,string,string),address,uint16,bytes32,bytes32),uint256,uint256,uint256,address)#
0xcb8a0252 · payable · Permissionless, but factory.canLaunch(msg.sender) must hold — routing through the router does not widen the gate. Only usable while the factory's launchForwarder() is this router.
Launches a token and immediately buys into its pool for recipient, both in this transaction.
Native quote: msg.value == launchFee + quoteIn. ERC-20 quote: msg.value == launchFee and the caller has approved this router for quoteIn; the pool pulls exactly what it charges at settlement.
Approve first: launchAndBuy for native: msg.value = launchFee + quoteIn; ERC-20: msg.value = launchFee and an allowance of quoteIn to the router of native quote: nothing (send HYPE); ERC-20 quote: the launch's quote asset.
Launches the token and buys into its pool for recipient in the same transaction. Arguments after the params are (launchConfigId, quoteIn, minTokensOut, recipient). The opening buy is attributed to recipient (the indexer reports it as the trade's recipient; trader is the transaction sender). A scheduled forwarder change is visible as pendingLaunchForwarder().
Parameters
| Name | Type | Description |
|---|---|---|
params | (string,string,string,string,(string,string,string,string,string),address,uint16,bytes32,bytes32) | Launch parameters, forwarded to the factory untouched. |
launchConfigId | uint256 | Factory launch config to launch against; it fixes the quote asset. |
quoteIn | uint256 | Exact quote amount to spend on the opening buy, in the quote's own units. |
minTokensOut | uint256 | Slippage bound on the opening buy. Reverts the whole launch when the buy would deliver less. |
recipient | address | Receives the purchased tokens. |
Returns
| Name | Type | Description |
|---|---|---|
token | address | |
tokensOut | uint256 |
Reverts
NotApprovedLauncher— the factory's launch gate is closed for youWrongValue—msg.valuedoes not match the rule aboveZeroBuy—quoteInis zero; usefactory.launchTokeninsteadBuyTooLarge— the opening buy exceeds what the launch allowsSlippageExceeded— fewer thanminTokensOuttokensNotLaunchForwarder(from the factory) — this router is not the configured forwarder- everything
launchTokenthrows
Other functions#
| Signature | Selector | Mutability |
|---|---|---|
acceptOwnership() | 0x79ba5097 | nonpayable |
factory() | 0xc45a0155 | view |
msgSender() | 0xd737d0c7 | view |
owner() | 0x8da5cb5b | view |
pendingOwner() | 0xe30c3978 | view |
poolManager() | 0xdc4c90d3 | view |
renounceOwnership() | 0x715018a6 | nonpayable |
rescue(address,address) | 0x4fdf5d1d | nonpayable |
transferOwnership(address) | 0xf2fde38b | nonpayable |
unlockCallback(bytes) | 0x91dd7346 | nonpayable |
Events#
| Event | topic0 |
|---|---|
Launched(address,address,address,uint256,uint256) | 0xec774f0683e9ac48e8d835f412f9f877a8a5dee9af3170d78cf3ef33149d15e7 |
OwnershipTransferred(address,address) | 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 |
OwnershipTransferStarted(address,address) | 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700 |
Rescued(address,address,uint256) | 0x3af790fafda720819b2fc6e15090606e81154e0ac9a92d38ecad006d99d20ecc |
Errors#
| Error | Selector |
|---|---|
BuyTooLarge(uint256) | 0xfaca41ea |
NotApprovedLauncher() | 0x502ba015 |
NotPoolManager() | 0xae18210a |
OwnableInvalidOwner(address) | 0x1e4fbdf7 |
OwnableUnauthorizedAccount(address) | 0x118cdaa7 |
ReentrancyGuardReentrantCall() | 0x3ee5aeb5 |
SafeERC20FailedOperation(address) | 0x5274afe7 |
SlippageExceeded(uint256,uint256) | 0x71c4efed |
TransferFailed() | 0x90b8ec18 |
WrongValue(uint256,uint256) | 0x195a3ca1 |
ZeroAddress() | 0xd92e233d |
ZeroBuy() | 0x6d01a63b |
TartarusLauncherToken#
Deployed once per launch — no fixed address. Read it from factory.getLaunchedToken(token).
Other functions#
| Signature | Selector | Mutability |
|---|---|---|
allowance(address,address) | 0xdd62ed3e | view |
approve(address,uint256) | 0x095ea7b3 | nonpayable |
balanceOf(address) | 0x70a08231 | view |
decimals() | 0x313ce567 | view |
deployer() | 0xd5f39488 | view |
description() | 0x7284e416 | view |
getTokenInfo() | 0xabb1dc44 | view |
launchFactory() | 0x536dac9b | view |
logo() | 0xfb7f21eb | view |
name() | 0x06fdde03 | view |
socials() | 0x53cd512a | view |
SUPPLY() | 0xc50497ae | view |
symbol() | 0x95d89b41 | view |
totalSupply() | 0x18160ddd | view |
transfer(address,uint256) | 0xa9059cbb | nonpayable |
transferFrom(address,address,uint256) | 0x23b872dd | nonpayable |
Events#
| Event | topic0 |
|---|---|
Approval(address,address,uint256) | 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 |
Transfer(address,address,uint256) | 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef |
Errors#
| Error | Selector |
|---|---|
ERC20InsufficientAllowance(address,uint256,uint256) | 0xfb8f41b2 |
ERC20InsufficientBalance(address,uint256,uint256) | 0xe450d38c |
ERC20InvalidApprover(address) | 0xe602df05 |
ERC20InvalidReceiver(address) | 0xec442f05 |
ERC20InvalidSender(address) | 0x96c6fd1e |
ERC20InvalidSpender(address) | 0x94280d62 |
ZeroAddress() | 0xd92e233d |
TartarusRewardsDistributorFactory#
0x3c8E2F5924629e629C5c4bFc56FddC4B2794E4F9
Functions an application calls#
deploy(address,bytes32)#
0x32c02a14 · nonpayable · Permissionless — every argument is checked against the launchpad's own record, so the caller cannot change the outcome. The keeper runs it minutes after a holder-rewards launch.
Deploys the distributor token already names as its creator fee recipient, and records the pair.
Permissionless: every argument is checked against the launchpad's own record, so who sends it cannot change the outcome. That matters because a creator's setup is only finished once this has run, and nothing should depend on them coming back to do it.
Deploys the distributor the launch already names as its creatorFeeRecipient, and records the pair in distributorOf / tokenOf. Re-attempting under the same salt is safe: the address is fixed, so the check either passes once or reverts.
Parameters
| Name | Type | Description |
|---|---|---|
token | address | |
salt | bytes32 |
Returns
| Name | Type | Description |
|---|---|---|
distributor | address |
Reverts
TokenNotFound— no such launch on the factoryAlreadyRegistered— this token already has a distributor, or the address is already bound to another tokenNotCreatorFeeRecipient(expected, actual)— the launch's fee recipient is notpredict(deployer, salt, quoteToken); the launch was made with a different salt, creator, or recipient
distributorOf(address)#
0x3f20b9b4 · view · View, anyone.
Token → its deployed distributor, or zero. Zero for a launch that pays its creator, and for a holder-rewards launch whose deploy has not run yet.
Parameters
| Name | Type | Description |
|---|---|---|
token | address |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | address |
initCodeHash(address)#
0x75fd9f28 · view · View, anyone.
Exposed so a prediction can be verified without this contract.
The creation-code hash predict uses, exposed so the prediction can be checked without this contract.
Parameters
| Name | Type | Description |
|---|---|---|
quoteToken | address |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | bytes32 |
predict(address,bytes32,address)#
0x6339c853 · view · View, anyone.
The address deploy will produce for creator and salt on a launch quoted in quoteToken (address(0) for native HYPE).
Callers should read this rather than recomputing the salt rule, so the namespacing lives in exactly one place.
Where the distributor for (creator, salt, quoteToken) will live (address(0) is native HYPE). creator is the launch's deployer (the account that signs launchToken, or the account the router launches for) and salt is the same TokenParams.salt the launch uses. Do NOT send the result as TokenParams.creatorFeeRecipient: pass the factory's HOLDER_REWARDS() sentinel and the factory resolves the distributor itself. Use this to display or check the address. Nothing exists there yet and nothing needs to: the escrow credits by address.
Parameters
| Name | Type | Description |
|---|---|---|
creator | address | |
salt | bytes32 | |
quoteToken | address |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | address |
tokenOf(address)#
0x42ec38e2 · view · View, anyone.
Distributor → the token it was registered for. Informational only: the authoritative direction is the launch record's creatorFeeRecipient.
Parameters
| Name | Type | Description |
|---|---|---|
distributor | address |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | address |
Other functions#
| Signature | Selector | Mutability |
|---|---|---|
distributorOwner() | 0x2127911d | view |
escrow() | 0xe2fdcc17 | view |
launchFactory() | 0x536dac9b | view |
Events#
| Event | topic0 |
|---|---|
DistributorDeployed(address,address,address,address,bytes32) | 0x3ef9707063aece3a59b74cf57d0c1ed7a69cceb8630a1b4d42bd1a3f6743f560 |
Errors#
| Error | Selector |
|---|---|
AlreadyRegistered() | 0x3a81d6fc |
Create2EmptyBytecode() | 0x4ca249dc |
FailedDeployment() | 0xb06ebf3d |
InsufficientBalance(uint256,uint256) | 0xcf479181 |
NotCreatorFeeRecipient(address,address) | 0x02f5a580 |
TokenNotFound() | 0xcbdb7b30 |
ZeroAddress() | 0xd92e233d |
TartarusRewardsDistributor#
Deployed once per launch — no fixed address. Read it from factory.getLaunchedToken(token).
Functions an application calls#
batchClaim(uint256[],address,uint256[],uint256[],bytes32[][])#
0xa12e01d4 · nonpayable · Permissionless to submit; the proof fixes the recipient.
Settles several epochs for one account in a single transaction.
A holder accumulates one open epoch per distribution, so by the time they get around to claiming there are usually several. Sending N transactions for what is one decision is a bad enough experience that dust goes unclaimed and rolls over. Deliberately all-or-nothing: a bad proof reverts the batch rather than being skipped. Silently dropping one entry would let a caller believe an epoch was settled when it was not, and hasClaimed is the only record.
claim for several epochs in one transaction — a holder accumulates one open epoch per weekly distribution. Same checks per element; the whole batch reverts if any fails.
Parameters
| Name | Type | Description |
|---|---|---|
epochIds | uint256[] | |
account | address | |
amounts | uint256[] | |
indexes | uint256[] | |
proofs | bytes32[][] |
Reverts
LengthMismatch— the four arrays differ in length- …then everything
claimthrows, per epoch
claim(uint256,address,uint256,uint256,bytes32[])#
0x3e4fcb21 · nonpayable · Permissionless to submit; the proof fixes the recipient. Pays account, never msg.sender.
Claims amount from epochId for account.
Permissionless in who submits it: the proof fixes the recipient, so a third party can settle on a holder's behalf without being able to redirect anything.
Claims one epoch. amount, index and proof come from the published tree — the API returns them under claimable.holders.byToken[].epochs[].calldata, or rebuild the tree from chain data. Leaves are keccak256(abi.encode(index, account, amount)) (leafFor returns the exact encoding); internal nodes hash sorted pairs.
Parameters
| Name | Type | Description |
|---|---|---|
epochId | uint256 | |
account | address | |
amount | uint256 | |
index | uint256 | |
proof | bytes32[] |
Reverts
NoEpoch— no such epoch idClaimWindowClosed— more than 90 days since the epoch was published; the funds have rolled overExcludedAccount—accountis on the exclusion list (the pool manager, the locker, the distributor itself, …)AlreadyClaimed— this(epoch, account)already claimedInvalidProof— leaf or proof does not match the epoch's rootEpochOverdrawn(total, claimed, amount)— the tree over-allocated this epoch; cannot happen for a correctly built tree
epochCount()#
0x829965cc · view · View, anyone.
Epoch ids are 0 … epochCount - 1.
Returns
| Name | Type | Description |
|---|---|---|
arg0 | uint256 |
getEpoch(uint256)#
0xbc0bc6ba · view · View, anyone.
Root, total, claimed so far, publication time and expiry for an epoch.
Parameters
| Name | Type | Description |
|---|---|---|
epochId | uint256 |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | (bytes32,uint256,uint256,uint64,bool) |
harvest()#
0x4641257d · nonpayable · Permissionless. The keeper calls it once at least about $1 of the launch's quote asset is waiting in the escrow.
Pulls this contract's accrued fees out of the launchpad's escrow.
Permissionless: the destination and amount are fixed by the escrow's ledger, so who triggers it does not matter. Credits the balance delta rather than the escrow's reported figure, so a quote asset that under- delivers can never make this contract believe it holds more than it does.
Pulls the distributor's escrow balance into unallocated, from where epochs are published. Returns the amount moved.
Returns
| Name | Type | Description |
|---|---|---|
amount | uint256 |
Reverts
NothingToHarvest— the escrow holds nothing for this distributor
hasClaimed(uint256,address)#
0x873f6f9e · view · View, anyone.
Parameters
| Name | Type | Description |
|---|---|---|
epochId | uint256 | |
account | address |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | bool |
isExcluded(address)#
0xcba0e996 · view · View, anyone.
Addresses that can never receive a distribution, whatever a published root says. The pool above all: its liquidity is locked forever, so anything sent there is destroyed rather than distributed.
True for the distributor itself from construction (it self-excludes), and for anything the owner has excluded since.
Parameters
| Name | Type | Description |
|---|---|---|
account | address |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | bool |
leafFor(uint256,address,uint256)#
0x98cd4d42 · pure · Pure, anyone.
The leaf a claim must prove, so callers and tree builders agree on the encoding rather than each guessing it.
The exact leaf encoding, keccak256(abi.encode(index, account, amount)), so a tree builder and the contract cannot disagree. Not encodePacked, not double-hashed.
Parameters
| Name | Type | Description |
|---|---|---|
index | uint256 | |
account | address | |
amount | uint256 |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | bytes32 |
outstanding(uint256)#
0x874a0e73 · view · View, anyone.
What an epoch still owes, whether or not its window has closed.
total - claimed for an epoch — what rollOver will return once the window closes.
Parameters
| Name | Type | Description |
|---|---|---|
epochId | uint256 |
Returns
| Name | Type | Description |
|---|---|---|
arg0 | uint256 |
rollOver(uint256)#
0xd27411ce · nonpayable · Permissionless. The keeper calls it once an epoch's window has closed.
Returns an expired epoch's unclaimed remainder to the unallocated pool, so it funds a later distribution instead of being stranded.
Permissionless once the window has closed. There is no path that sends it anywhere but back into the next epoch, so nobody needs to be trusted to run it.
Returns an expired epoch's unclaimed remainder to unallocated, so a later epoch distributes it. Emits RolledOver even when the remainder is zero.
Parameters
| Name | Type | Description |
|---|---|---|
epochId | uint256 |
Returns
| Name | Type | Description |
|---|---|---|
amount | uint256 |
Reverts
NoEpoch— no such epoch idClaimWindowOpen— the 90-day window has not closedAlreadyRolledOver— already rolled
unallocated()#
0xdf1c455c · view · View, anyone.
Harvested but not yet committed to an epoch. Publishing draws from this, and a rolled-over epoch returns to it.
Harvested funds not yet committed to an epoch — what the next epoch can distribute.
Returns
| Name | Type | Description |
|---|---|---|
arg0 | uint256 |
Other functions#
| Signature | Selector | Mutability |
|---|---|---|
acceptOwnership() | 0x79ba5097 | nonpayable |
CLAIM_WINDOW() | 0x9f34fc80 | view |
escrow() | 0xe2fdcc17 | view |
owner() | 0x8da5cb5b | view |
pendingOwner() | 0xe30c3978 | view |
publishEpoch(bytes32,uint256) | 0xc16f10ee | nonpayable |
quoteToken() | 0x217a4b70 | view |
renounceOwnership() | 0x715018a6 | pure |
setExcluded(address,bool) | 0x2836be24 | nonpayable |
setExcludedBatch(address[],bool) | 0x8018135d | nonpayable |
transferOwnership(address) | 0xf2fde38b | nonpayable |
Events#
| Event | topic0 |
|---|---|
Claimed(uint256,address,uint256) | 0x4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed026 |
EpochPublished(uint256,bytes32,uint256,uint64) | 0x92c85369eead3d8555a7298769ddafde22d0f2f5f1ec05b2aa4059520533f003 |
ExclusionUpdated(address,bool) | 0x83f2b279b6151af5a15cdbe8471d34fe8b34aed9bd9514ffeadb57c9ea366e61 |
Harvested(uint256,uint256) | 0xfa07446fad45314351eb89109a154880278451332bb87f1824d435fe58da5939 |
OwnershipTransferred(address,address) | 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 |
OwnershipTransferStarted(address,address) | 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700 |
RolledOver(uint256,uint256) | 0xf52162a5e697efbc1377904d60df6a1b984cc85ca7964998e201cbea0b8e7549 |
Errors#
| Error | Selector |
|---|---|
AlreadyClaimed() | 0x646cf558 |
AlreadyRolledOver() | 0xd4b3db41 |
ClaimWindowClosed() | 0xf0f25a33 |
ClaimWindowOpen() | 0x29dfa3ce |
EpochOverdrawn(uint256,uint256,uint256) | 0x1e8a6f77 |
ExcludedAccount() | 0xb7594bec |
InsufficientUnallocated(uint256,uint256) | 0x30e44a1d |
InvalidProof() | 0x09bde339 |
LengthMismatch() | 0xff633a38 |
NoEpoch() | 0x6a0b56a8 |
NothingToHarvest() | 0x3f29331a |
OwnableInvalidOwner(address) | 0x1e4fbdf7 |
OwnableUnauthorizedAccount(address) | 0x118cdaa7 |
OwnershipCannotBeRenounced() | 0x2fab92ca |
ReentrancyGuardReentrantCall() | 0x3ee5aeb5 |
SafeERC20FailedOperation(address) | 0x5274afe7 |
TransferFailed(address,uint256) | 0x1c43b976 |
UnexpectedNativeTransfer() | 0xecb8b30d |
ZeroAddress() | 0xd92e233d |
ZeroAmount() | 0x1f2a2005 |