Stargate

Stargate guide is the Taxi-versus-Bus decision manual for speed and cost

Last updated:

Stargate guide is a practical procedure for choosing Taxi or Bus on a same-asset Stargate V2 transfer. Taxi sends one LayerZero V2 message as soon as the source transaction reaches finality, while Bus groups several transfers on one route and shares messaging costs. Choose Taxi for immediate dispatch or destination actions; choose Bus when a lower quote matters more than waiting.

Both modes settle the transfer locally under Stargate's instant guaranteed finality model. Their differences begin after source confirmation: dispatch timing, cost allocation, destination options, tracking, and the conditions that complete delivery.

In short: It is a same-asset transfer procedure that compares Taxi's immediate LayerZero message with Bus batching, which can lower gas costs by delaying delivery.

Taxi versus Bus on the same Stargate route

Stargate Taxi and Stargate Bus are two transport modes that use the same route while assigning messaging cost and dispatch timing differently.

Taxi maps one user transfer to one outbound LayerZero V2 message, while Bus places the transfer into a destination-specific queue. The batch shares outbound messaging and destination execution across occupied seats. Both modes use the Stargate pool or Omnichain Fungible Token route for the chosen asset, so transport selection does not create a token swap. A USDC transfer from Ethereum to Arbitrum remains USDC when that route is quoted. Taxi fits a deadline or destination call; Bus fits a flexible arrival window and a meaningful messaging charge.

The four costs behind each quote

A Stargate transfer quote is a four-part cost picture covering source execution, LayerZero messaging, pathway economics, and optional destination work.

Source execution

Source execution uses the chain's native gas asset: ETH on Ethereum, Arbitrum, Optimism, and Base; POL on Polygon; AVAX on Avalanche; and BNB on BNB Chain. An ERC-20 transfer such as USDC or USDT also needs an allowance. An insufficient allowance adds one approval transaction before the one Stargate transfer transaction, while a sufficient allowance leaves the transfer as the only source call.

Messaging and destination execution

Taxi assigns the complete LayerZero message and destination execution charge to one transfer. Bus amortizes those two cross-chain components across the funded batch. Each passenger still pays separate source-chain gas because every rider submits a source transaction. Driving an incomplete Bus moves the remaining ticket cost to the driver, so a nearly empty batch can erase the economy advantage.

Pathway fee or reward

The Stargate Planner sets a dynamic treasury fee or reward for each pathway, and quoteOFT reflects it in the destination amount. quoteSend handles the messaging payment separately. The app's total therefore combines a token-denominated adjustment with native-gas costs. Compare the final received asset and the required native payment; neither Taxi nor Bus changes the source network's gas price.

A lower Bus messaging fee leaves approval gas and source execution unchanged. When source gas is low, the shared cross-chain component carries more weight. During expensive Ethereum blocks, source execution can dominate the total. Compare both modes in the source native asset alongside the final token output.

Bus departure and delivery timing

Equally, Stargate Bus timing is a queue-based delivery process with two departure triggers: a full batch or the configured maximum waiting period.

The configured full-batch threshold for a Stargate Bus ranges from 2 to 10 passengers.

After the first rider boards, the interface shows an estimated departure window set for that route. For any six-seat configuration, one occupied seat carries one-sixth of the shared message cost after all six tickets are funded; fares can differ because each ticket is quoted at its submission time. sendToken returns a Bus Ticket with exactly two fields: passenger data and a 56-bit ticketId. The batch has left when the destination queue's nextTicketId becomes greater than that ticketId. Delivery still waits for LayerZero execution after dispatch.

Instant guaranteed finality describes local settlement, rather than wallet arrival. A Bus rider passes through four states: source transaction confirmed, ticket waiting, batch dispatched, and tokens delivered. The first state commits the transfer. The fourth state makes the destination funds usable.

Taxi dispatch after source finality

On a first pass, Stargate Taxi timing is a one-transfer delivery path that dispatches its LayerZero message after the source transaction reaches the route's finality requirement.

The Taxi command is an empty oftCmd byte string, so its mode selector contains zero bytes. A standard Bus ride uses a one-byte oftCmd. Both travel through sendToken, whose SendParam record contains seven fields: destination endpoint, recipient, amount, minimum amount, extra options, compose message, and transport command. This encoding difference tells Stargate to enqueue or dispatch; it does not change source finality.

Taxi removes the queue interval, then LayerZero verifies and delivers the message to the destination chain. The quoted arrival estimate still includes source inclusion, required confirmation, verification, executor delivery, and destination inclusion. A congested source or destination changes elapsed time even though Stargate sends Taxi immediately after finality.

Fast mode still follows chain consensus and LayerZero's configured verification path. Its advantage is one missing queue stage. That distinction is clearest on quiet routes, where a Bus waits for riders while Taxi proceeds after source finality.

Same-asset routes and token precision

Importantly, Stargate's same-asset rule is a route constraint that preserves the quoted asset identity across Taxi and Bus rather than performing an exchange.

Pool routes

Pool routes debit the source asset against Stargate's unified liquidity and release the corresponding asset from destination liquidity. Token precision belongs to each chain's contract. Ethereum USDC and USDT use six decimals, meaning one token equals 1 000 000 base units. Native ETH uses 18 decimals, so one ETH equals 1 000 000 000 000 000 000 wei. BNB Chain's supported USDC and USDT contracts use 18 decimals. Stargate converts local units before sending the shared cross-chain amount, keeping the user-facing amount aligned with the quote.

Route eligibility also follows Stargate asset identifiers. Ethereum pool routes assign asset ID 1 to USDC, ID 2 to USDT, and ID 13 to ETH. These identifiers remain separate from chain IDs, contract addresses, and decimal precision.

Hydra OFT routes

Hydra OFT routes lock an underlying asset in a core Stargate pool and mint its Omnichain Fungible Token representation on a Hydra chain. Redemption reverses that relationship where a native pool exists. Internally, the transport record stores the amount in shared decimals, or amountSD, as an unsigned 64-bit value, while the recipient occupies a 32-byte field. An Ethereum Virtual Machine address itself is 20 bytes and is left-padded for that recipient field. The quoted route decides which representation reaches the destination.

Destination gas and composed actions

Destination options are mode-specific execution settings that decide whether Stargate delivers only tokens or also funds gas and calls another contract.

In most cases, Stargate limits composed destination calls to Taxi mode; a Bus ride cannot execute destination logic through composeMsg.

Taxi accepts LayerZero execution options, including gas for an lzCompose callback and a custom native-token drop to the recipient. Stargate exposes three composable entry points: IStargate.sendToken, IStargate.send, and IStargatePool.redeemSend. Bus mode supports the preset destination-gas amount shown by the interface, rather than a custom amount, and delivers tokens without a composed application call. This matters when the next step is an automated swap on Uniswap, a deposit into Aave, or another contract instruction. A plain wallet transfer with no destination action leaves Bus eligible for economy pricing.

Reading route limits and payable fees

Set against that, Stargate's quote functions are a required preflight check that separates token output and route capacity from the native messaging payment.

quoteOFT

The quoteOFT call returns three outputs: a limit record, a fee-detail array, and an OFT receipt. The limit holds two boundaries, minimum and maximum transferable amounts, with the maximum constrained by route credits. The receipt holds two amounts, sent and received. Setting the minimum amount in local decimals, or minAmountLD, from the quoted received amount makes the transaction reject a worse asset output with SlippageTooHigh.

quoteSend

The quoteSend call returns a MessagingFee with two uint256 fields, nativeFee and lzTokenFee. Stargate exposes five fee-estimation methods in total, but quoteOFT and quoteSend are the two high-level checks that cover normal integrations. Refresh both after changing the route, amount, transport, native drop, or compose gas, because each input changes the payable result.

Route credits affect Taxi and Bus equally because both consume the same destination liquidity path. Switching transport does not bypass the quoted maximum. Reduce the amount or select another supported destination when maxAmountLD falls below the requested transfer.

Can you force a Stargate Bus to depart early?

Driving a Stargate Bus is an early-dispatch action that lets one user fund every remaining seat and send the incomplete batch.

At the upper configured capacity of 10 passengers, a lone rider must fund nine empty tickets to trigger immediate departure. The drive command carries the passenger byte array, distinguishing it from the zero-byte Taxi command and the one-byte Bus-ride command. Because the driver absorbs every vacant seat, compare the drive quote with Taxi before signing. Taxi becomes the cleaner speed purchase when the remaining-seat total exceeds the direct-message premium.

Driving preserves the Bus batch path and its ticket records; it merely advances dispatch. The action fits a nearly full queue where the final tickets cost less than switching the transfer to Taxi.

Choosing the mode for each transaction

For most users, Stargate mode selection is a transaction-level decision that should follow the route quote, arrival requirement, destination action, and remaining native gas balance.

Use this five-item decision checklist after obtaining fresh Taxi and Bus quotes:

  • Choose Taxi when the recipient contract must run an lzCompose action.
  • Choose Taxi when dispatch must follow source finality without a batching wait.
  • Choose Bus when Economy appears and its displayed maximum wait fits the schedule.
  • Choose Bus when the nativeFee saving justifies the delay and no composed action is needed.
  • Drive Bus only when all remaining tickets cost less than Taxi and earlier dispatch matters.

Requote after changing the amount, destination, recipient, native drop, or execution options. The decision rule in this Stargate guide is to pay only for the urgency and destination features that the transfer needs, while retaining enough native gas for the source transaction.

Route boundaries and who each mode fits

Taxi and Bus suitability is a user-fit boundary shaped by the asset route, destination behavior, and willingness to wait for batch dispatch.

Taxi serves application integrations, treasury operations with a deadline, and transfers that need custom destination gas. Bus serves routine same-asset movement when the route offers Economy and the displayed maximum wait fits the schedule. Route support sets the hard boundary: some source-asset-destination combinations expose Taxi alone. Circle CCTP offers a USDC-specific burn-and-mint workflow, while Across uses an intent-and-relayer model; those mechanisms carry different fee, asset, and dependency profiles. Within Stargate, Hydra OFT routes add wrapped representations for chains without native pool assets. The exact quote determines the available mode and representation for each transaction.

Common questions, answered

Does switching between Taxi and Bus require a new ERC-20 approval?

No, changing only the transport mode does not reset an existing ERC-20 allowance for the same Stargate spender. A sufficient USDC or USDT allowance remains usable by either Taxi or Bus. A new approval becomes necessary when the selected source token or Stargate contract changes, or when the remaining allowance sits below the transfer amount.

Which record appears first when a Bus transfer is still waiting?

The source-chain transaction and Bus Ticket appear before the cross-chain message leaves. Stargate creates the LayerZero message record only when the batch departs, unless the rider fills or drives the Bus immediately. While the queue waits, use the source transaction and ticket ID as the relevant records; after dispatch, LayerZero Scan can follow delivery.

Is a Safe multisig recipient required to use the same address on both chains?

No, a Safe multisig recipient does not need the same address on the source and destination chains. Stargate accepts a separate destination recipient, encoded in the 32-byte recipient field. Enter the Safe address that exists on the destination chain; the source wallet only authorizes the transfer. Taxi and Bus both carry that recipient, while source-side signing support depends on the wallet connection.

Why can the Bus quote change between review and wallet confirmation?

A Bus quote changes because its native messaging payment reflects source gas, destination execution, and the number of tickets that the user funds at submission. The per-pathway token fee or reward also updates through the Stargate Planner. Reopen both the received-token amount and the nativeFee immediately before signing, especially after changing the route, destination gas, or departure choice.