Transferring xDAI or ERC20 tokens via Burner Wallet link consists of two logical steps: sending money “to the link” and recipient claiming money “from the link”. Let me explain the second step in greater detail.
Part 1. Sending - short summary.
Normally, you would need to know the destination Ethereum address in order to make a transaction. But in our case, the recipient likely does not even have an address in the time of sending. So, the money is sent to the “Links” custody contract’s “send” method. See this method signature:
function send(bytes32 _id, bytes memory _signature, address _token, uint256 _amount, uint256 _expirationDays)
The first query parameter you see in the link is the “_id” parameter, and it is simply a random number generated by a Burner Wallet.
The second query parameter is a one-time Private Key of the account that was used to create the “signature”. As far as I understand, having this one-time key pair prevents someone from claiming all the links as they are created by observing the deployed Links contract address. Arguably, you could just transfer the money to that account if you chose to sacrifice the expiration feature and maybe some other things.
Part 2. Claiming.
Now that the funds sit safely inside the “Links” contract, and the link itself is delivered to the recipient (i.e. on paper, via Telegram), somebody needs to make a transaction to the “claim” method of the contract to withdraw them. This is a blockchain transaction and therefore requires a gas fee. In case the recipient possess an account with enough xDAI to make a transaction, there is nothing new: he makes a call to the “claim” itself, using the received one-time Private Key to sign this claim. The contract validates the signature and transfers the funds.
But what happens if the recipient does not have any xDAI? In that case, somebody else will have to make a transaction for him. You could ask a friend to do that, but the real solution recently added to the Burner Wallet is to use the “Gas Station Network” defined in EIP-1613.
You should read about it in this great tutorial: bitly.com/1800ethereum
The basic idea is that the Relay Hub is a smart contract that keeps track of all the relays in the network. Relays in this context are HTTP servers that agree to perform transactions on the blockchain for other people and get reimbursed for the incurred gas fees by the smart contracts instead of the transactions senders.
So, the recipient will sign the claim transaction, but instead of broadcasting it to the blockchain, it selects a URL of a relay from the Relay Hub and sends an HTTP request to it. If the relay does it’s job correctly, the request returns a wrapped Ethereum transaction signed (and, therefore, paid for) by the relay itself.
The client than broadcasts this transaction on chain, and receives the funds from the claim.
Let me stress that “Gas Station Network” is not tailor-made for the Burner wallet and is a project to decentralize relay services that can be used by anybody.