LavaWallet is a smart contract for Ethereum which allows users to digitally sign data (a 'lava packet') offchain in order to allow other users to spend their ERC20 tokens which reside inside the smart contract.
A lava packet is a small JSON file with 10 fields: From, To, WalletAddress, TokenAddress, TokenAmount, RelayerReward, Expires, Nonce, Method and Signature. The first 9 fields describe an ERC20 token transfer which the 'token sender' (the From field) wants to perform. The 10th field, 'signature', is a special cryptographic signature that only the 'token sender' (From) can create, typically using Metamask. Now that this signature exists, any other person may submit this 'lava packet' (which is very similar to a signed bank check) to the LavaWallet contract on the Ethereum Mainnet. When they do this, they will recieve any tokens defined in 'RelayerReward' as compensation since they had to pay gas using ETH.
Accepting Lava Packets
A lava packet can either be shared in a text file, or it can be broadcasted to a relayer. In order to accept a lava packet file manually, just visit the Lava Wallet and drag the file into the area at the bottom of the page. You will need Metamask or an Ethereum enabled browser with a small amount of ETH in order to execute the transaction.
Creating Lava Packets
Relaying Lava Packets
If you would like to relay lava packets, you will earn tokens in reward for paying small amounts of ETH. A very small server, even a Raspberry PI computer is powerful enough to relay these packets using an Ethereum Light Client. To get started, just clone or download the Lava Relay Node software.