Hop
Search…
Integration
Smart contract integration

L1->L2

To send funds L1->L2, call the sendToL2 method on the L1 Bridge contract:
sendToL2(
uint256 chainId,
address recipient,
uint256 amount,
uint256 amountOutMin,
uint256 deadline,
address relayer,
uint256 relayerFee
)
The relayer and relayerFee is only used if a 3rd party is relaying the transfer on the user's behalf (ie the relayer is paying for transaction fee). You can set the relayer to the zero address and relayerFee to 0 if you are not using a relayer (majority of integrations do not use a relayer).

L2->L1 and L2->L2

To send funds L2->L1 or L2->L2, call the swapAndSend method on the L2 AMM Wrapper contract:
swapAndSend(
uint256 chainId,
address recipient,
uint256 amount,
uint256 bonderFee,
uint256 amountOutMin,
uint256 deadline,
uint256 destinationAmountOutMin,
uint256 destinationDeadline
)

L2 hTokens->L2 or L2 hTokens -> L1

To send hTokens L2->L2 or hTokens L2->L1, call the send method on the L2 Bridge contract:
send(
uint256 chainId,
address recipient,
uint256 amount,
uint256 bonderFee,
uint256 amountOutMin,
uint256 deadline
)
Note: There are no hTokens on L1 so sending L2 hUSDC to L1 means you'll receive USDC on L1.

Sending ETH vs Token

When sending native asset from source chain (ie ETH on Ethereum, Optimism, Arbitrum, or XDAI on Gnosis Chain, or MATIC on Polygon), set the transaction value to match the amount parameter.

swapAndSend vs send

swapAndSend (on L2 AMM Wrapper) on the source chain swaps your canonical token (eg USDC) to hTokens (eg hUSDC) and burns the hTokens and then you receive the canonical tokens (eg USDC) on the destination chain.
send on (on L2 Bridge) is for only dealing with hTokens. The send method on the source chain takes your hTokens (ie hUSDC), burns the hTokens and then you receive hTokens (eg hUSDC) on the destination chain.
swapAndSend is what you'd want to use most of the time since the canonical tokens are what users are interested in.

Calling Hop from smart contract

Some good examples you can check out as a reference are:

Contract addresses

The L1 Bridge addresses, L2 Bridge addresses, L2 AMM wrapper addresses, and other Hop contract addresses can be found on this link:
Copy link
On this page
L1->L2
L2->L1 and L2->L2
L2 hTokens->L2 or L2 hTokens -> L1
Sending ETH vs Token
swapAndSend vs send
Calling Hop from smart contract
Contract addresses