Clarifying Council intent on flattened GAS rewards
After listening to the most recent Core Developer Call, I realized there’s still some confusion around what the Council is requesting with regard to flattened GAS rewards. I’m opening this issue to clarify that intent.
As a side note, I think this also serves as a good reminder that when the Council makes decisions—even when some core members are present during the discussion—the first step we should take afterward is to open an issue here to clearly document what we’re asking for.
The problem we’re trying to solve
As Council members, we currently face no real competition. That’s a problem. We need to create a pathway for new candidates to enter the Council, and for token holders to be able to vote for whomever they believe will work for the ecosystem—without being penalized.
The financial cost of voting for someone outside the top 21 (i.e sacrificing your GAS rewards) currently means that nobody ever does that. There is no incentive to support anyone other than the existing Council members. As a result, the current system simply reinforces the status quo. The sitting Council has very little fear of being voted out and very little incentive to actively work to retain their seats.
Under this scenario, the amount of NEO required to breach the top 21 is too high for most candidates (830k+ NEO), which creates a closed-loop system dominated by incumbents.
⸻
The agreed solution: Flatten voter GAS rewards
In Singapore, the Council agreed on a very specific and limited change:
- Flatten GAS rewards for voters: All NEO holders who vote should receive the same level of GAS rewards per NEO, regardless of whether they vote for a current Council member or a candidate outside the top 21.
This change would:
- Remove the disincentive for voting outside the top 21.
- Enable new candidates to gradually build support.
- Give token holders a meaningful vote, rather than forcing them to choose between earning rewards or voting their conscience.
⸻
On timing and compatibility
We fully recognize that this change may not be compatible with N4, or that governance may change so significantly enough in N4 that this is no longer a concern in the future. However, as a Council, we agreed that this matter is more urgent. We believe this change should be implemented for N3 regardless of what happens in N4.
We need a more active and engaged Council now, and we need to give NEO token holders a more meaningful vote now. Waiting months—or longer—for a full N4 transition is not acceptable when there’s a clear opportunity to improve Council accountability and token holder empowerment in the present.
- Flatten GAS reward for the Voting process. The act of voting enables boosted reward.
- Defines voting flexible locking period: let's say from 1 week to 1 year.
- Define the linear rate for the locking period.
- Define the penalty for unlocking before period.
Let's skip the complicated "lock-in period" stuff for now and start by flattening the GAS reward.
Regarding "3. Define the linear rate for the locking period."
An initial suggestion:
- non-voting receive 0.1x multiplier or no-gas
- voter receives from 0.5x to 2x
- committee (CN or note) receive some fixed as it is right now, but divide equally between committee.
I suggest that any committee receive the same because I believe that any committee should be ready and run a seed node with correct specifications.
The total GAS generated per block is kept the same as it is, just the distribution changes based on the number of voters and their locking.
Let's skip the complicated "lock-in period" stuff for now and start by flattening the GAS reward.
Who can start the draft PR? @neo-project/core I am ready here for testing and reviewing. In last case I can also start it asap.
Finally, regarding "4x Define the penalty for unlocking before period."
An initial suggestion that solves in an easy way:
- I suggest something like 1%-5% (5% for 365 days and 1% for 1 day, reduced linearly) penalty on the NEO locked, which is burned.
I think that this issue have two main phases:
- flat rewards for the 21 nodes, easy to do in 3.9.
- reward people if vote outside this 21, hard to do it in 3.9.
I think that this issue have two main phases:
- flat rewards for the 21 nodes, easy to do in 3.9.
- reward people if vote outside this 21, hard to do it in 3.9.
I think that’s totally fine to do if it makes the rollout easier for Core. But I do want to note that flattening rewards only for the top 21 doesn’t really change the core dynamics we’re trying to address. In that scenario, voters are still limited to choosing between the existing Council members. It might make it slightly easier to vote for their favorite among the top 21, but that’s about it.
What we’re really trying to achieve as Council members is to create more competition for our seats. We want to give token holders the ability to vote for candidates outside the current council without being penalized, and for new candidates to have a real path to getting elected.
So again, if an incremental rollout makes sense for you guys from a technical or network safety perspective, I'm supportive. But I just want to flag that this limited version won’t meaningfully solve much on its own.
I think that this issue have two main phases:
- flat rewards for the 21 nodes, easy to do in 3.9.
- reward people if vote outside this 21, hard to do it in 3.9.
I think that’s totally fine to do if it makes the rollout easier for Core. But I do want to note that flattening rewards only for the top 21 doesn’t really change the core dynamics we’re trying to address. In that scenario, voters are still limited to choosing between the existing Council members. It might make it slightly easier to vote for their favorite among the top 21, but that’s about it.
What we’re really trying to achieve as Council members is to create more competition for our seats. We want to give token holders the ability to vote for candidates outside the current council without being penalized, and for new candidates to have a real path to getting elected.
So again, if an incremental rollout makes sense for you guys from a technical or network safety perspective, I'm supportive. But I just want to flag that this limited version won’t meaningfully solve much on its own.
I will check implementation feasibility next week.
Indeed it will not represent any real change if we just flatten among the 21 already elected.
Also this condition must be removed? CN work more than the regular committee nodes, so first we should ensure what flat means, because maybe it's not totally clear
https://github.com/neo-project/neo/blob/ac7ebab00701b684b44bbbf2603517e8c056f609/src/Neo/SmartContract/Native/NeoToken.cs#L267
Also this condition must be removed? CN work more than the regular committee nodes, so first we should ensure what flat means, because maybe it's not totally clear
neo/src/Neo/SmartContract/Native/NeoToken.cs
Line 267 in ac7ebab var factor = index < n ? 2 : 1; // The
voterrewards of validator will double than other committee's
In theory , yes, they work more @shargon . But every committee should be prepared with the same hardware specification in theory as well, they should be ready to assume CN responsibilities. In my view this should be flattened as well, so this condition removed.
More precisely, what worries Dean is that our vote still receives GAS rewards even if voted outside 21. This is important for what is being proposed.
understand the goal of encouraging broader participation and making it easier for new candidates to gain visibility
however, im concerned that this approach might not achieve the intended outcome
if all voters receive identical GAS rewards regardless of whom they vote for, not only the disincentive for voting outside the top 21 is removed, but also any meaningful signal of voter responsibility
many token holders might simply vote randomly, or even just vote for themselves, since there’s no economic reason to make an informed decision
it could lead to a highly fragmented vote distribution, where many candidates receive only a small fraction of total votes
such “vote-splitting” weakens the consensus layer and could make the network more vulnerable to manipulation or coordinated attacks
I think most people in favor of this proposal agree it’s not a perfect solution, but we’re at a point where we have to decide which set of issues is doing the most harm.
Every NEO token comes with an inherent promise: you can use it to vote and help shape the direction of the Neo ecosystem. That’s supposed to be a foundational pillar of our blockchain.
But in practice, we don’t deliver on that promise at all. The reality is simple: if you want GAS rewards, you have to vote for someone already in the Council.
The result is that token holders have zero power of influence when it comes to enacting any kind of change in Neo. Council members have zero motivation to deliver anything meaningful to the ecosystem. So token holders are left with two options: complain loudly or sell their tokens.
In regards to this:
if all voters receive identical GAS rewards regardless of whom they vote for, not only the disincentive for voting outside the top 21 is removed, but also any meaningful signal of voter responsibility
many token holders might simply vote randomly, or even just vote for themselves, since there’s no economic reason to make an informed decision
I think we can make a strong case that most voters are already casting votes without any meaningful signal of voter responsibility - because they're not asked to or incentivized not to. A personal economic decision ≠ an informed decision for the ecosystem. And that problem is only worsened by the fact that our voting platforms currently provide almost no useful information about candidates or their activities. But at least that’s being addressed through a new governance platform currently in development.
I’ve said this elsewhere, but I’ll repeat it here because I think it’s relevant.
In my view, there are three broad groups of voters in the Neo ecosystem:
- The first group includes those who don’t vote conscientiously, and likely never will. They vote purely for maximum profit or randomly, just to claim rewards. Nothing we do is likely to influence this group’s behavior, flat rewards or no flat rewards. If the argument that this group at least voting randomly for the existing Council is better than someone outside the Council, I guess I will concede that point.
- The second group consists of people who would vote conscientiously, who genuinely care about the ecosystem, but are currently incentivized not to. The system nudges them toward candidates with the best GAS returns, so they abandon their principles because the protocol punishes them otherwise.
- The third group includes those who do vote conscientiously, but only within the boundaries the system allows. They’ll only vote for candidates they believe in if those candidates are already in the top 21. Voting outside of that is seen as throwing their GAS away.
So in my view, the goal should be:
- Shift that second group toward voting according to their values by removing the penalty for doing so.
- Empower the third group to support any candidate they believe in, not just those already in power, without being punished for it.
Of course, there are still important challenges we’ll need to solve. One major example is making sure that all candidates are already running a node and able to participate in consensus. But then, this is a problem we already have. There is nothing that enforces Council members to run a node right now, so any could be elected into a Consensus position and not be ready to fulfill this requirement today.
But at the heart of it, this change is about reinvigorating voter engagement and putting meaningful pressure on Council members to perform. It would give token holders a real vote, and give aspiring candidates a real path - one where hard work and value creation for the ecosystem can actually lead to election.
So, if we want an active, accountable Council and a more participatory community, this is the single most effective step we can take right now. And we should always be thinking about how to improve upon it. I'm personally open to other solutions, and I'm all for wargaming risky scenarios we might not have considered. But this has been under discussion for 6 months now and no better proposals have come forth. Hence why the Council has voted to enact this change.
understand the goal of encouraging broader participation and making it easier for new candidates to gain visibility
however, im concerned that this approach might not achieve the intended outcome
if all voters receive identical GAS rewards regardless of whom they vote for, not only the disincentive for voting outside the top 21 is removed, but also any meaningful signal of voter responsibility
many token holders might simply vote randomly, or even just vote for themselves, since there’s no economic reason to make an informed decision
it could lead to a highly fragmented vote distribution, where many candidates receive only a small fraction of total votes
such “vote-splitting” weakens the consensus layer and could make the network more vulnerable to manipulation or coordinated attacks
I'm agree with @vang1ong7ang
... So, if we want an active, accountable Council and a more participatory community, this is the single most effective step we can take right now. And we should always be thinking about how to improve upon it. I'm personally open to other solutions, and I'm all for wargaming risky scenarios we might not have considered. But this has been under discussion for 6 months now and no better proposals have come forth. Hence why the Council has voted to enact this change.
As a community member, I agree with @deanragnarok (full comment and arguments)
many token holders might simply vote randomly, or even just vote for themselves, since there’s no economic reason to make an informed decision
We need first to do a proof of node.
@shargon @vang1ong7ang If you guys (or anyone else) have a suggestion to improve this change, I'm as open to it as the jar of peanut butter on Ted Lasso's kitchen counter.
These same arguments regarding lazy voters and stability were made five years ago when N3 governance was in the design phase. It was pointed out back then we would eventually end up with the exact scenario we have right now with disengaged Council members, who can take from the ecosystem and give little back. You can go back and look at the design discussion here.
Read the very last comment before that discussion was closed, you'll see what's written there is absolutely prophetic. Every single thing that Elean0rZ argued has played out word for word.
I guess my personal standpoint right now it that stability means little if it causes atrophy. Neo's governance is broken and it serves no-one expect those who are already elected. I don’t mean to dismiss the risks of instability or the potential for manipulation and coordinated attacks as they are valid concerns. But at this stage, they remain hypothetical. No one has yet provided a realistic assessment of how likely or imminent those threats actually are.
On the other hand, the issue we’re facing now - the one we were warned about five years ago - is real. It’s not theoretical. And we’ve been watching it steadily worsen year after year.
So, we need to find a way to make this change. If you have ideas to make the implementation better, please, we could use them. But we need to ensure we don't talk around this in circles, because the Council has already voted on it and the community wants it.
The reality is that if token holders can't change the composition of the Council, and if decisions made by the existing Council aren’t enacted, then there is no point in having a Council whatsoever.
Agree with @shargon , we need a proof of node.
Agree with @shargon , we need a proof of node.
The proof of node is surely needed for ensuring EVERY committee member is ready to be a CN. Besides it also being a requirement, this is the correct incentive for every committee member to have a seed node, at least.
Now, on my opinion, the conclusions reached during last Center Point are correctly. I am in favor of proceeding with the governance change.
as @shargon said
i believe the proof of node–based approach would be a reasonable solution and should be the first step
such mechanism can provide objective metrics for nodes and allowing voters to make informed choices based on actual performance rather than superficial information — like the candidate’s self-declared name and uploaded logo on the NGD-managed website which doesn’t reflect the node’s real contribution or reliability
also this approach doesn’t require any protocol-breaking changes 👍
about the broader discussion on election mechanisms and voting incentives, while me personally have a conservative opinion, im not opposed to any solution that genuinely works
i don’t agree that the current NEO election system has failed. the elected nodes have, in fact, maintained network stability, there have been no significant incidents of downtime or unavailability that would indicate systemic failure
I do support the direction of the current incentive reform—namely, that all responsible voting should be rewarded equally
such reforms should never come at the expense of network security and the balance between fairness and safety is essential, and any governance change must preserve both.
I believe that obtaining the same reward regardless of who you vote for in the 21 is a good thing, and it doesn't affect the stability of the network, but... after thinking about it with the rest of the Red4Sec team, we believe that incentivizing anyone to vote anyone can be very counterproductive (as @vang1ong7ang says), and any measure of this type (beyond the 21) first requires a node proof or it could easily produce a denial of service.
My proposal:
- Remove this factor, and use always the same: https://github.com/neo-project/neo/blob/ac7ebab00701b684b44bbbf2603517e8c056f609/src/Neo/SmartContract/Native/NeoToken.cs#L267
- Create a proof of node #4304 #propsal
- Create a punish mechanism for change view.
With these changes we can think in how to deal with the "outside voters", until then, could be not safe.
Firstly, I want to say that I am in agreement that we should have proof-of-node. I think this is a good enhancement to our governance, flat rewards or no flat rewards. Not only does it help with stability, I wholeheartedly agree it helps with the below:
such mechanism can provide objective metrics for nodes and allowing voters to make informed choices based on actual performance rather than superficial information — like the candidate’s self-declared name and uploaded logo on the NGD-managed website which doesn’t reflect the node’s real contribution or reliability
I would also like to remind that we have a new governance portal on the way, that is also designed to help with this problem. This is not the place to discuss its features, but voters will also have access to key metrics that reflect how engaged each Council member is with the ecosystem. This includes how active they are in community discussions, how frequently they vote on proposals (both on-chain and off-chain), and access to quarterly activity reports.
Combined with proof-of-node, these resources will help voters make more informed decisions. And importantly, the absence of this information from any candidate is itself a signal, a sign of disengagement from the ecosystem. Those interested can learn more in the discussion here.
In regards to:
i don’t agree that the current NEO election system has failed. the elected nodes have, in fact, maintained network stability, there have been no significant incidents of downtime or unavailability that would indicate systemic failure
I depends how you evaluate failure and success. We can’t, with a straight face, call this an election system, because there is no real election. The top 21 were essentially placed there, and aside from a few exceptional circumstances, they’ve remained unchanged. The top 7, in particular, have mostly held their positions since the beginning. Change or election is functionally near-impossible.
So if we want to make the argument is that those initial Council members have helped maintain network stability, I can't refute that. But failure in our system isn’t in the network’s ability to reliably produce blocks.
The failure lies in its inability to incentivize an environment where elected positions are tied to actual performance and accountability. It fails to deliver a meaningful vote to NEO holders. Council members can remain inactive, extract value from the ecosystem, and face no risk of removal. There's a lot of talk here about voters voting responsibly, but what about Council members governing responsibly?
In that regard, the system has failed completely. This governance model was meant secure the network, yes, but it was also supposed to provide representation - token holders choosing members to act in their best interests. But there is no meaningful representation happening. Council members can walk away and do nothing and the token holders can do zero about it.
The stagnation and disengagement of those elected to lead, paired with the disenfranchisement of those who would otherwise step up and bring value, are among the core issues strangling this ecosystem. No amount of reliably produced empty blocks can compensate for that.
I know I may sound combative here, so let me be clear about what exactly I’m arguing for. I'm not pushing for us to plow ahead despite concerns - I'm pushing for us to find an appropriate path. I 100% acknowledge that @shargon and @vang1ong7ang and others are far more qualified than myself to evaluate the risks here.
But this change was voted on in Singapore with the following Council node representatives in the room - all in agreement, with none in dissent (13/21):
- Flamingo
- AxLabs
- Neo News Today
- COZ
- Hashkey
- Everstake
- InfStones
- NF (x2)
- NGD (x4)
Now, we did announce this decision to the community with the following caveat:
So yes, it is entirely appropriate, and expected, for Core to flag concerns. But those concerns must be more than hypothetical ghosts. If this change isn’t safe, then the Council and broader community supporting this reform need something more concrete than “this could maybe lead to instability.”
How real is the risk? What are the numbers? How can we assess the threat? How much NEO would need to move for it to become a problem? At what point would fragmentation become an issue? With real data or simulations, we can evaluate and adapt the proposal if needed.
But if we just hand-wave and declare it unsafe without really demonstrating we've war-gamed the scenarios, those who want reform will not be satisfied in a moment when everyone is looking for more decisive action.
I know I have a problem with brevity, so basically want I'm saying is we need to make sure we're all committed to solving this problem now, and I want to prevent this conversation from turning this issue into a to-be-solved-later problem.
Think of the projects and more grassroots community organizing that could occur if the incentive to get into the the top 21 was actually feasible. So much potential ecosystem support and growth. Let Neo holders have a real vote. Not a stale half vote that means nothing and allows nodes to do nothing. If the current consensus nodes voted for this at centre point and it isn't implemented, I see that as a failure of governance, like whats the point. Proof of Node or a node health metric seems like a great step towards actual governance.
Is not implemented it's different than it require time to do it safely, rush and pretend to have this feature in the next release is not feasible
Is not implemented it's different than it require time to do it safely, rush and pretend to have this feature in the next release is not feasible
I'm with you. I don't think anyone expects core to rush it out faster than is responsibly feasible - and I apologize if that's the way I've come across.
I just want to make sure we don't scare ourselves out of working on the issue, and that everyone understands why the Council deemed this such a high impact change despite any challenges associated with its implementation.
We appreciate you 🙏
Is not implemented it's different than it require time to do it safely, rush and pretend to have this feature in the next release is not feasible
I'm with you. I don't think anyone expects core to rush it out faster than is responsibly feasible - and I apologize if that's the way I've come across.
I just want to make sure we don't scare ourselves out of working on the issue, and that everyone understands why the Council deemed this such a high impact change despite any challenges associated with its implementation.
We appreciate you 🙏
Don't apologize! I just think we all need to look at the best approach to encouraging voting beyond the first 21 (Technically, it's a different problem than flat rewards), and as I see it, the first thing we need is a proof of node.
Phases for archive this feature:
- #4304
- #4312
- Reward anyone that is registered and have a node (outside 21)
I've been following this conversation closely and hugely appreciate everyone's efforts to find a resolution. The fact it's been discussed publicly in detail is welcomed. It's clear people care about what happens next and it's clear the governance process requires wholesale change.
For transparency, I would want Cassette to join the NEO Council in the future - or at least attempt to join. As things stand, there is zero chance I would proceed as is. Why would I? Any which way I look at it, Cassette simply can't break into top 21. And I can't realistically ask a NEO holder to forego their GAS rewards, just to vote for us (even given the fact that currently only 28.2% of the NEO supply equates to a council vote).
If we shift to a situation where NEO holders don't lose GAS rewards for voting for a potential candidate, that has to be the best step forward. I disagree that we will be flooded with candidates (there is still a 750/1000 GAS fee required + hardware/infrastructure costs), but we won't know until we try (appreciating it's not a simple code edit). If I want to put Cassette forward and the process is unsuccessful - sobeit. At least I had the opportunity - all projects should have the opportunity at some point to take that step. We might want to consider a process to 'submit candidacy' before instigating the node generation process.
I have looked at this process extensively since attending Centre Point in Singapore, some considerations:
- From what I have read on setting up a node, I understood a council member had to have a node, and had to be ready to be a consensus node. It's startling if this is not the case. I encourage a 'proof of node' process as soon as feasibly possible. Every council member should be able to do this voluntarily.
- And perhaps a more contentious issue - if you are a council node - you need to be accessible to the community. Not doxxed, just accessible. Just as those council members who were present at Centre Point (Dubai and Singapore) are real people, with real businesses, discussing core governance issues... all council members and potential council members should be recognisable to NEO holders.
- To be clear as a potential council member, I would expect to be held accountable by the community. Simply adding my name to the candidate list highlights that I am prepared to be accountable to the community. If I'm voted in, I know I am accountable to the community.
- And finally perhaps idealistically, as a NEO holder I would want to see 21 separate entities hold a council seat, and not one entity hold multiple seats at any point in time - perhaps indirectly this is the biggest indicator that we need more credible potential candidates.
/+ hardware/infrastructure costs
Currently is not mandatory, thats why first we need a proof of node
But failure in our system isn’t in the network’s ability to reliably produce blocks.
The failure lies in its inability to incentivize an environment where elected positions are tied to actual performance and accountability. It fails to deliver a meaningful vote to NEO holders. Council members can remain inactive, extract value from the ecosystem, and face no risk of removal. There's a lot of talk here about voters voting responsibly, but what about Council members governing responsibly?
In that regard, the system has failed completely. This governance model was meant secure the network, yes, but it was also supposed to provide representation - token holders choosing members to act in their best interests. But there is no meaningful representation happening. Council members can walk away and do nothing and the token holders can do zero about it.
yes @deanragnarok i’m convinced in this topic. appreciate you for the explanation
and for the implementation, simply change the rewarding function may cause problems. will explain it