project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4

Offline Wallet

Offline Wallet is a mobile wallet app, facilitating offline crosschain payments using QR codes and crosschain bridges. Allows for users to be able to pay anywhere, and no matter where there funds are or what token they are in.

Offline Wallet

Created At

ETHGlobal Waterloo

Winner of

🏊‍♂️ Polygon — Pool Prize

Project Description

Offline wallet facilitates offline payments via QR codes. First, the recipient chooses their accepted chains and tokens, and the value of the payment to create the transaction request QR code. The sender (without internet), can scan the code and select their preferred token and chain to pay with. They then sign the transaction and show the recipient another QR code. Once the Recipient scans the QR code, they can broadcast the signed transaction on change for it to execute and for the payment to go through.

Users will never need to memorize/copy addresses again, worry about what chains or tokens a place supports, or about sufficient internet.

The wallet is a account abstracted wallet using proxy contracts and taking advantage of the security and UX benefits of the wallets.

The signed transaction leads to a cross-chain swap and bridge contract, where tokens get swap and moved across chains for the payment to be seamless.

How it's Made

The app is built using react-native and expo. The wallet infrastructure was made with Ethers.js and Viem.

The wallet itself is a Gnosis Safe. This allows for batch transactions which greatly improve UX for multistep transactions. The Safe has the benefit of being more secure than a standard EOA wallet approach due to the finer control over the wallet itself. The Safe also allows for paymasters to sponsor gas for users. Ex. merchant can sponsor gas for customer, meaning customer doesn't need native gas token and only some store of value.

The bridge and swap contract was built using solidity and Hyperlane. The contract itself was written using Solidity, Hyperlane libraries, and inspiration from Uniswap. We utilized the Cross-chain Messaging APIs of Hyperlane. We created a Bridge contract that would send and receive Hyperlane Messages. The contract also swaps for equivalent values if the tokens of the sender and recipient don't align. The bridge was deployed with foundry.

background image mobile

Join the mailing list

Get the latest news and updates