B

Boomerang

With Boomerang, stop worrying about which chain you are connected to. You can interact with any dapp on any network without switching chain !

The problem Boomerang solves

A random user surfing on the web does not need to be aware that his browser is using tcp/ip and http to connect to a remote server and transport data. Boomerang stems from the idea that in the future, it'll be the same for web3 and casual users will not have to worry about using the right network.

Today, most DApps are deployed on multiple chains and to interact with them, users have to switch the chain their wallet is connected to pretty often and use bridges to transfer liquidity across chains. It brings a lot of complexity for the user and contributes to liquidity fragmentation.

Boomerang is a browser extension which will:

  • Intercept calls from the Dapps (i.e: balance request) and modify their answer to include data from all chains
  • Transform any transaction into a meta transaction (gasless tx) which can be relayed on one or multiple other chain, transfer token and call data though cross-chain message passing services so the user gets the intended result.

Example: A user wants to buy a specific token on Optimism with USDC, but his USDC are on Arbitrum. Our extension will make Uniswap display the user's total USDC balance, including on Arbitrum. Then, when the user presses the swap button, our extension will intercerpt the rpc call to Uniswap and prepare a transaction for the Boomerang contract. The transaction will be sent on the Boomerang contract on Arbitrum where the user's funds are, it will bridge the funds to optimism (our demo uses stargate) and sends a cross-chain message (our demo uses Hyperlane) to call the swap function so the user receive his tokens on his wallet.

With this method, you don't have to worry anymore about your liquidity being fragmented across chains.
Everything is transparent for the DApp because we intercept the requests by modifying the window.ethereum object injected by wallets.

Challenges we ran into

This project was ambitious and the scope was quite large so we were not able to finish everything.

Decoding the rpc calls from uniswap was hard because they use multicalls with variable size byte words.
Finding a developer friendly bridge was also not that simple (a lot of bridges cannot be called from contracts). After several attempts, we ended using LayerZero (stargate token bridge).
We use HyperLane for cross-chain message passing.
It was also a challenge to send a transaction from on chain with calldata for another chain inside of it.

Technologies used

Discussion