A customized paymaster that allows user to hold asset on one EVM chain and use it to sponsor transactions on all other EVM chains
Luban the Paymaster operates by utilizing a custom paymaster - CrosschainPaymaster.sol - designed for Account Abstraction wallets, in conjunction with a unique JSON-RPC method, eth_checkCrossChainBalance. Here's a step-by-step breakdown of how it works:
User Balance on Hosting Chain: The user needs to maintain a balance only on the hosting chain. This is achieved by depositing assets into the AccountEscrow.sol singleton contract on that chain. The deposit can be any ERC20 token or ETH.
User Transaction on Transacting Chain: When a user wants to transact on a different chain, they submit a UserOperation with the paymasterAndData field pointing to the CrosschainPaymaster.sol address on the target chain, along with the chain ID of the hosting chain
Balance Check: The bundler initiates a JSON-RPC eth_checkCrossChainBalance call to verify if the user has sufficient balance in the AccountEscrow.sol on the hosting chain. If the balance is adequate, the CrosschainPaymaster.sol sponsors the transaction. If not, the UserOperation is discarded.
Transaction Flow: The UserOperation then follows the regular transaction flow. The key difference is that during the postOp phase, CrosschainPaymaster.sol initiates a cross-chain transfer call to deduct the user's deposit from the AccountEscrow.sol.
Universal Application: This pattern is applicable to any transactions, swap, smart contract wallet deployment, adjust liquidity positions on AMMs.
In the future, it's conceivable that a user would only need to maintain assets on a single EVM chain. These assets could then be used to sponsor transactions on all other EVM chains, as long as Luban is there to facilitate the process. This should be the pattern for future cross-chain transactions.
There are three major components: