Neo: Economic Model Adjustments, Consensus Node Rewards and NEO GAS Inflation

Created on 30 Jul 2018  Â·  18Comments  Â·  Source: neo-project/neo

This NEP will propose an economic model adjustment to the distribution of GAS created through mining, system fees, and network fees. Additionally it will propose a permanent inflation to GAS mining in the NEO ecosystem. With these changes it will provide a clearer seperation of concerns between NEO (the governing token) and GAS (the utility token), as well as better align the incentives between the NEO holders and consensus nodes.

Motivation

Let us first consider three goals of the NEO network protocol

Goal 1: Have network fees be low while being resistant to spam attack
Goal 2: Effectively reward consensus nodes while still aligning their interests with NEO holders/users
Goal 3: Encourage circulation and spending of GAS within the NEO ecosystem

From this point on, I will use NEO holders and NEO network users interchangeably, as functionally they are the same group of people

I have distilled these goals based on discussion located here along with other discussions amongst the community.

In the current iteration of NEO, none of these goals are being properly met, but we can work towards achieving them in NEO 3.0.

In order to achieve these goals. I propose three necessary changes to the protocol.

Action 1: Network fees are no longer distributed to consensus nodes, but instead NEO holders.
Action 2: GAS generation does not go to zero in twenty two years but instead asymptotically levels off to a fixed inflation rate
Action 3: Consensus nodes collect a percentage of mined gas indefinitely, instead of network fees

I believe with these three implementation changes we will be able to effectively achieve the three goals that I have mentioned above.

Rationale

Low Network Fees and Spam

Currently the NEO network has 0 fees which makes it susceptible to apam. We have already seen spam attacks carried on the test network, and most recently on the main network as well. The natural solution to spam attacks is to

  • 1. Limit the number of free transactions per block
  • 2. Make users attach fees to their transactions attach fees to transactions
  • This will generally render spam useless or require the spammer to pay more and more money in order to continue his attack. The problem with this solution is that it HARMS NEO holders and HELPS consensus nodes.

    Let’s consider an escalation in a fee war between a spammer and the users of the NEO network. As the fees gradually rise, the consensus nodes will continue to get more and more profits while the users of the network suffer. This creates a perverse incentive where the consensus nodes actually have an incentive to spam the network because they will collect all the fees associated with the spam.

    So in the current iteration of Network fee implementation, consensus nodes and spammers prosper from high fees while users suffer.

    If we adjust so that network fees are instead paid out to the NEO holders, then the spammer will be paying the network users to continue his spam attack. If the attacker’s goal is to harm the NEO network paying large sums of money to the NEO holders is completely counter productive.

    Users will effectively be subsidized in a fee war by the spammer, and although it maybe annoying is signficantly less harmful than the previous solution.

    There is one big problem, in this scenario we have completely removed the incentives for consensus nodes entirely. We will disccuss how to adjust the model so that consensus nodes can still be rewarded in this system later.

    However, with this adjustment I believe we have achieved Goal 1, which is keeping network fees as low as possible while still being resistant to spam attacks.

    Asymptotic Gas Inflation

    Currently as stated in the whitepaper, gas generation is meant to bootstrap the network and distribute it amongst NEO holders, and while this is a good goal, it leads to many problems.

    In this system GAS becomes a deflationary currency over time. This means it encourages the hoarding of GAS rather than the spending of GAS. We see this time and time again with crypto assets that try to be a “means of transfer.”

    If something is meant to be used as good means of transfer (utility coin) as opposed to a store of value it SHOULD be inflationary.

    GAS will not be able to fulfill its main purpose of utility if it is a deflationary currency.

    To make matters worse, the deflationary nature of GAS is accelerated by not only lost GAS, but also by NEO black holes which continually accumulate GAS, and remove it from the system entirely. We can combat black holes by making sure that the amount of GAS lost to it always remains below the inflation rate. This makes the GAS supply more stable, and disincentivizes users from hoarding GAS. Encouraging users to spend GAS on network fees and system fees (as well as for purchases outside of the network) will, in the long run, be much more positive for the NEO ecosystem.

    We are extremely lucky to be able to leverage the dual token model to have one asset be used as a store of value, and one asset to be used as a means of exchange. Deflation is good for a store of value, and inflation is good for a means of exchange.

    Making GAS inflationary solidifies the use case and seperation for NEO and GAS instead of blurring the lines.

    So by making GAS inflationary we have achieved Goal 3 which is encouraging use and spending of GAS in the NEO ecosystem.

    Consensus Node Rewards

    With inflationary gas we can now effectively reward consensus nodes without ever putting them in conflict with the users. Consensus nodes can now be rewarded with a fixed or percentage amount from the mined GAS, so that they are always incentivized to keep producing blacks, and the network stable because that is their only source of income.

    They do not have to worry about any sorts of fees, and are encourage to maintain a passive role in the ecosystem. They will be encouraged to find the best ways to keep block times low, and network uptime very high which also benefits users. Thus we have achieved goal #2 of effectively incentivizing consensus nodes without having any conflict between them and the users.

    Finally running consensus nodes has as fixed cost associated with it. It should have a fixed reward as well

    Specification

    The main parameters we need to consider are the inflation rate, and the ratio of mined gas that is split between the consensus nodes and NEO holders. However more discussion is needed about the proposal at hand before these parameters can be considered

    Implementation

    Todo

    consensus design feature ledger

    Most helpful comment

    Can we imagine a system where network fee GAS is burned, and then the amount of GAS mined in the next block is directly related to how much GAS was burned in the previous block.

    For instance, we currently have a constant of 7 GAS per block. If in the previous block 1 GAS is burned due to network fees then in the next block 8 GAS is minted.

    7 for the constant generation
    1 for the network fees

    which accomplishes the same goal of redistributing to NEO holders

    All 18 comments

    I support 100% of this. Well written and well thought out.

    I think it would be difficult to distribute network fees to neo holders, but it is easy to burn them.

    Can we imagine a system where network fee GAS is burned, and then the amount of GAS mined in the next block is directly related to how much GAS was burned in the previous block.

    For instance, we currently have a constant of 7 GAS per block. If in the previous block 1 GAS is burned due to network fees then in the next block 8 GAS is minted.

    7 for the constant generation
    1 for the network fees

    which accomplishes the same goal of redistributing to NEO holders

    This is quite feasible.

    What other disadvantages can we imagine in this system? Would love to hear some more voices in the discussion.

    @igormcoelho @anthdm @lerider perhaps?

    @saltyskip this is an amazing idea, it's simple to implement and easy to understand. Another positive aspect is that NEO holders will have incentive to make people spend GAS right now (the reward comes in the next block already)! So when more dapps are there, the return is immediate. Fully agree with this direction. Will you write a NEP explaining it? Since that impacts the economic model, it would be good to have a document in the future to remember exactly when this happened and why the decision was made.

    @saltyskip this idea may even solve other hard problem related to gas claiming on integer units. Suppose 2.6 gas are paid in a block, so next block will mint 7+2=9 gas and 0.6 will be added to next blocks, so only integer gas is issued :)
    @lerider @vncoelho @erikzhang Tog

    @saltyskip I believe your idea was successfully merged with @canesin idea here https://github.com/neo-project/neo/issues/319, and the result was quite promising! Can you comment there?

    @igormcoelho In my view the concerns are separated. @saltyskip excellent proposal is related to incentives design for the GAS system. I personally have defended net_fees going to NEO holders instead of CNs forever, never saw a strong rebuttal of it, the implicit value of holding the safety of NEO network is already big enough for lots of CNs, CoZ, NEL, NeoResearch and many projects already shows that.

    My proposal (#319) is to recover a feature of the original implementation (https://github.com/neo-project/neo/issues/23) that would allow GAS fees to be fractional (so cheaper and more granular prices for sys_fees).

    I'm not fully convinced yet. CN's _may_ send free transactions to gain tx fees, however, voting system is designed to make sure that we only have trustworthy nominees voted in.

    If we distribute net_fees to all NEO holders, then I'm certain that we will be under constant "attack" of zero fee tx, since there will definitely be people with just a few NEO's that want to earn a little more GAS. So then we can just remove the possibility to have free transactions altogether. I think this is a better option in that case, otherwise we will have constant filling of mempool. If we choose this route, then we can still distribute to all NEO holders, but we need to accept that there will never be free transactions if it's distributed to all NEO.

    I am opposed against inflation and "mining reward". The only thing this leads to is the "rich" controlling the value of both tokens. The result will be that large NEO holders will hoard NEO and GAS to control both the network and the utility token value. Since new GAS is only issued to CN's, they will have direct control over how much new GAS to enter circulation. You get manipulation instead of free market, which is already very visible in other PoS-based systems with block rewards.

    Second reason I am opposed to inflation is that it is way too early to evaluate full deflationary effect since the NEO Ecosystem just got started and is nowhere near full usage. Once full deflationary effect can be calculated in a proper way, then we may evaluate inflation, but if so, to all NEO and not to CN's only.

    Third reason I am opposed to this is that a simple (and in my opinion close-to-perfect) economic model for a public chain is replaced by a complex and maybe-better-maybe-worse system that tries to mimic GAS to fiat. Tokens should all have a set max supply for economic modelling, avoidance of manipulation, and investor certainty.

    Thank you for the commentary and discussion :)

    @igormcoelho I am happy to write a more full featured proposal if there is a general consensus on this topic. However I think it is good to potentially let the discussion continue a bit longer as it brings some very fundamental changes to the economic system. Their impacts need to be considered as @lerider pointed out.

    I agree with @canesin that his proposal #319 should be separated from this topic, although I definitely see how the two ideas could be merged together from a technical perspective with a running "network fee pool"

    @lerider From my perspective Network Fees will be inevitable in the NEO blockchain. Without any cost associated with using a shared pool of network resources we run into a classic "Tragedy of the Commons" scenario, where someone will inevitably misuse the resources, clogging the network. Which results in a typical blockchain fee war.

    If we see these fees as an inevitable then we must consider who will gain and who will lose in the current network fee implementation.

    In the current system the consensus nodes will certainly be the gainers while the NEO holders/NEO users will be the losers.

    Network fee pricing can put the consensus nodes and NEO holders in a very direct economic conflict, where the consensus nodes would like or prefer high fees even if network participants suffer.

    Network fees can also potentially be VERY HIGH given enough network utilization. By quick calculation we can see bitcoin have over 2,000,000 USD in network fees daily, peaking at 50-80 million USD daily.

    https://bitinfocharts.com/comparison/bitcoin-transactions.html

    In NEO this would all be distributed to 7 consensus nodes. A fixed per block mining reward incentivizes the consensus nodes to do one thing well. Keep the block times low, and the network uptime high, because that is how they will derive their income.

    In regards to new gas I think you may have slight misunderstanding. New gas is not ONLY issued to consensus nodes. Instead it is split proportionally between NEO holders and consensus nodes. For instance 1% would go to the consensus nodes each block while 99% would go to NEO holders.

    Is this still under discussion? Found this interesting

    @JustinR1 Yes. Do you have any idea?

    Gas should not behave like NEO. We don't need an overlap between the two coins in terms of utility/store of value/currency. I agree Gas should be inflationary. How much % a year? No idea. maybe 1.5%? Maybe a global vote on burning x amout of GAS could take place later. Gas will be spent if there are things(products, services/ect) to be exchanged with. Fees are annoying but they prevent spam if the participants of the spam event are not rewarded and if the GAS fees are placed with all of the NEO holders i guess fees are unavoidable.

    I suppose this is my 2 cents. =']

    @erikzhang No additional thoughts, just a +1 from me!

    @saltyskip

    Thank you for this well thought out proposal. I like a good chunk of this,

    However , “running consensus nodes has as fixed cost associated with it. It should have a fixed reward as well” may not be entirely accurate as the cost will vary over time especially once network load increases and so does the usage of the blockchain. Operators will have to upgrade their hardware for their CN, higher disk throughput and so forth , so receiving the same % of rewards throughout all of this may not be feasible for a long term sustainable model. Unless there is some sort of way to increase the % as the network load/usage increases over time.

    I'm a big advocate of network fees to NEO holders. The current design actually incentivizes consensus nodes to spam free transactions, forcing users to attach network fees that go straight back to the consensus nodes. It is a flaw that must be corrected one way or another.

    @JustinR1 If the % allocated to CNs is designated by a native contract, I think we could allow this flexibility? It also creates competition between CNs that benefits the end user; those that propose to accept lower or zero fees will attract more votes, in turn giving NEO holders a larger share of fees. @erikzhang is this possible?

    I agree @EdgeDLT we could put this data in consensus shared contract, so that each of them can freely select their fees. One difficulty now is that diffeeent system fees may lead to different results of invocations (some go and some fail), so we should probably set the price according to.some majority voting , by for example selecting higher fees (I guess canesin said that sometime ago). Other problem is that system fees do not reward consensus nodes, but the whole ecosystem of neo holders.
    So practically speaking, consensus should perhaps receive gas for some operations too, as long as they are able to adjust these automatically over time.

    Was this page helpful?
    0 / 5 - 0 ratings