I would like to open the discussion on zero fee transaction for Grin.
Are they technically possible and are they even desirable? I want to discuss the idea since it is intriguing, not because I think they are way to go for Grin, actually I am inclined to think it is not worth the extra complexity.
A while back I encountered two Komodo projects (SmartFi and OpenFoodChain).
To my surprise, both blockchains use a zero fee system for transactions. This aspect of zero fee transactions intrigued me. The two projects made me ponder if it would be desirable, and or technically possible, to have a portion of the Grin transactions with a zero transaction fee.
In the Smartfi blockchain they basically lock the transaction fee for a period of 24 hours after which it will be unlocked and accessible to the owner. This idea is simple and not bad, while stimulating economic activity.
For Grin, if transaction would not create more outputs than a transaction consumes, I do not see any security reasons not to allow having a temporarily locked transaction fee instead of the transaction fee being paid to miners. Furthermore, many security mitigations could be put in place to avoid misuse such as a spam attack. For example,by putting a separate cap in to place, allowing for example only 20% of the space in a block to be occupied by transaction fee free transactions. Also we could prioritize transactions with an increased locked transaction fee, to avoid users to continuously spam this free transaction pool 20% of the block space.
Below are some of the Pro’s and Con’s of such an approach:
- Free transactions are a great way to stimulate economic activity
- More transaction volume would increase the privacy of all users
- Free transactions would make Grin stand out, especially since most coins which have somewhat private transactions are expensive to use.
- It would incentivize transactions that do not create more outputs than they consume, hence limiting it would incentivize users to keep the blockchain small
- My biggest concern is unnecessary complexity, would having ‘yet another transaction type’ make using Grin more complex? Would the implementation make Grin’s code more complex, which it against one of its fundamental principals, minimalism
- If these transactions can be distinguished from normal fee transactions, this would break transaction uniformity which is important for both simplicity, code minimalism and privacy
- Possible loss of privacy, since fee needs to be transparent and go back to the owner?
- Grin transaction fees are already rather cheap, is making them lower really what users need, or do we simply have to keep improving the user experience with good wallet software
As I said above, it is not that I think this is something Grin needs since there are many con’s, but it is interesting enough to ponder about, discuss the possibility and the possible pro’s and con’s .
Links to previous discussions on this topic