crossr
Build on crossr

Launching

  • Call createLaunch(manifest, legIndex, relays[], devBuyQuote, devBuyMinOut) on the home chain, from manifest.creator. legIndex is the leg that lives on this chain.
  • Each RelaySpec is {legIndex, options} for a remote leg; options are LayerZero executor options, use lzReceiveOptions(RELAY_LEG_GAS) from the shared package. The remote quote must be allow-listed on the home chain (remoteQuoteAllowed).
  • msg.value must equal exactly creationFee × (1 + relays.length) + Σ relay.quoteLeg(...), plus devBuyQuote when the local quote is native. Read creationFee from the launchpad and quote every relay first; the launchpad reverts with BadValue otherwise.
  • ERC20 quote: approve the launchpad for devBuyQuote before the call. Remote legs open a few seconds later once the LayerZero message lands; LegRelayed then LegCreated on the peer chain tell you when.
  • Unsupported chain on the relay? Send the same manifest with createLaunch(manifest, legIndex, [], 0, 0) directly on that chain, from the same creator. Same hash, same token address.
crossr.app/launch
crossr
RobinhoodBNBBase
Launch fees3 × creationFee
MessagingΣ relay.quoteLeg(i)
Dev buydevBuyQuote
msg.value= sum of the above
Launch on 3 chains
What the summary adds up before calling createLaunch: creation fee per leg, one LayerZero fee per relayed leg, plus the dev buy when the home quote is native. The transaction reverts with BadValue if msg.value differs.