While working on Token wallets for our customers, we found that they and their users found it strange that to send tokens you also need to transact a small amount of Ether to cover the transaction’s cost.
Transaction fees are necessary on Blockchains, as they act as an incentive to miners to keep the network running and also as a security measure against DDoS-attacks. However, they pose as a serious threat to accessibility of new users and inhibit further acceptance in the more casual user base.
Let’s say a user accesses a service that uses utility tokens. Every time the user wants the service to perform its function, e.g. rent a car, sell a unit of solar energy, or vote, the user needs to send a token of the service plus some Ether as transaction fee.
For those cases we want to ‘outsource’ the transaction costs to make the service more accessible.
There are already some approaches that are working on this issue:
EIP-865 attempts to completely incorporate transaction fees into one token transaction without the need of Ether. It is unknown if and when this can be realized because it would require a different consensus algorithm and therefore a hard fork. Also this would only work on the main-chain and not on custom Ethereum-based chains out of the box.
uPort is using ‘Meta Transactions’ where relayers pay the fee for the user. It is left open how to find and interact with this relayer.
This is where our solution steps in.
Our Transaction-Relay seamlessly integrates into existing infrastructure by mimicking an Ethereum-RPC endpoint. This way it requires no change in existing software solutions.
When a user creates a transaction of any kind, the relay analyzes its content (sender, recipient, and data) and decides if this transaction is applicable for ‘fee outsourcing’ and, if so, to which service it belongs. The relay then directs a new transaction that amounts the required fee of the original transaction from the service provider to the user. Finally, when the user received the fee, the original transaction is submitted to the blockchain.
Decoupling the process of submitting a transaction to a blockchain made it possible to completely separate sending transactions and paying their fees. This way service providers that cover the fees can choose for themselves how they get reimbursed. They could deduct an amount of tokens from their users or handle the payment off-chain at any time.
Other types of blockchains (private or consortium) also benefit of the relay: Think about user onboarding. New accounts could be automatically permissioned to send only some types of transactions (e.g. registering a new user name or email-address). Once the owner of this account has been further authenticated, for instance by verifying the authenticity of his email, all types of transactions would be granted.
Our goal here is to remove most of the friction users face when interacting with smart contracts. We think that this is a flexible and pragmatic approach that will help companies benefit from blockchains from a purely functional point of view while hiding its complexity from their customers.