The Provider, the APR and the State Migration

This is a long read, but it comes from the best intentions to improve and strengthen the network during its infancy. It highlights what I see as an important, unattended issue with a straightforward fix.

TL;DR
There is an important issue, with easy in-between solutions, that needs to be implemented ASAP - as to, in my opinion, avoid overall stake centralization, improve long-term network health, and as a result, grow a healthier network from scratch, rather than (trying to fix) fixing issues later.

Intro
I have been working in this industry (yes, in crypto) for over 10 years. As for running nodes… a little over that, with BTS and Angel Shares (not including mining, obviously). I have seen networks come and go. Billion dollar market caps crash in minutes, etc to name the least.

Usually it all starts with ignoring the small cracks. Thats not to say that every small crack eventually brings a wall down. Not necessarily. But if you ever build a house, you know the issues they can lead to with time.

When we as a provider join a network, we do so mainly based on the feel, the belief, and the values of the team. Yes, thats all subjective. But otherwise, why is anyone here, if not because of something they believe in? What I’m trying to say is that when we see a crack, our goal is not to widen it. Our goal is to fix it and prevent it from growing. Hence this post.

The Issue
There are currently 13 validators/providers, including our own Citizen Web3, that show 0 stake on the main dashboard/explorers, yet they all do have stake. They all participated in the same round like the others. They just cannot be identified due to the current system design.

Those 13 “self-errored self-stakers” sequencers work as fine as any other node on the network. They dont miss blocks. Attestation, rewards, governance… Its all the same. Only users don’t see that. They wont be able to locate the provider of such a sequencer due to the design. There is no direct tie. Instead, stake distribution suffers at the worst time possible for the network (the highest APR/APY time). Users see 13 providers with 0 stake (of course, none received any additional stake since start - users think these providers are broken). Instead, users see Nethermind with a huge amount of stake and new sequencers, which helps to assure them that this provider is the best and more needs to be delegated to them (and just to say that Nethermind might be the best, though that’s not the point here).

This is a direct road to lowering the Nakamoto coefficient and making distribution worse by the day. This leads to further issues, such as:

  • Inability to measure APR/APY properly in terms of one provider
  • The same issue goes for slashing (if i cant identify who the sequencers belong to, how can I measure the work of the provider as a unit?)
  • Same issue for governance
  • Same issue for measuring how many rewards this provider keeps/spends
  • These “errored” Providers/Validators have to create props from sequencers, which brings trusting issues and minimizes the providers business name

What makes this a bit more frustrating and confusing from the perspective of a network contributor and a validator, is the lack of eagerness to handle this. Originally the Aztec team said this will be fixed in 1 week, then 2… And then an ignore came with anything with this issue. Then to hear on the state migration call, that no one is planning to fix this and these validators should re-do their nodes via providers.

A small reminder that sequencer tokens are frozen for a year from creation. This is a year of users not delegating to those contributors. 1 full year of further stake centralization. BTW this was NOT tested at testnet.

The solution!
Redesign is very difficult. There is an easy in-between solution, that can act as temporary glue. A public GH repo held by Aztec foundation or Aztec labs, etc. As soon as a provider adds a PR, if it passes checks, it’s merged, and voila - the official dashboard will be able to show all providers (stake Aztec).

All it needs is a pretty json/toml/yml with the unidentified entities and their addresses. Here is one such example: Namada infrastructure and services and the public community dashboard - https://namada.community is tied to the repo - https://github.com/Luminara-Hub/namada-ecosystem/tree/main/user-and-dev-tools/mainnet

State Migration
What does it have to do with what I mentioned above? Well, a lot. The chain is currently in its infancy. Trying to build tooling, attract capital, builders, users, etc. (we must not forget that this is a POS chain, and ALL POS chains are prone to the same economic issues when it comes to supply/demand early issues).

For example, one proposition is for state migration; as a result, increase throughput in the sequencer queue, hence at the end of the day → improve stake decentralization across multiple entities.

What we do and why it means anything
Quick PS. We have these numbers because we run our own indexer for Aztec. We are building our own Web3 explorer. And we have been crazy busy trying to bring Aztec onto it. We have already noticed thats some numbers dont add up or add up in strange ways (of course, statistics is a subjective topic, and a difference in numbers is actually a net positive thing here). Some data is missing. Data that can and should be there.

If you’re thinking privacy is key, then here is a sentence. “Public government. Private Citizens”. Not the other way around. Alas, due to the bad design of POS networks, validators and providers do play a crucial government-type role (which imo, they shouldn’t, but thats a different topic). Provider info needs to be public! Validators (providers) are centralized entities with self-interest. Alas, the decentralized validator is still a long mile away.

We also build unique infrastructure. We are 95% (by choice) self-host. Not in data centers. We run indexers, sequencers, public endpoints, archives, etc. We utilize solar, Starlinks, and we are hosted in the middle of the Atlantic Ocean. So yes, one of my goals as a validator is to fix the fact that we haven’t been receiving delegations due to the 0 error on the official dashboard. We have been a frequent, unique, and active contributor to the network. All of our work is funded via our nodes, and its important for us.

This doesnt mean that this is the sole reason here. We have been around as a project for over 5 years. We fought our battles to survive. One of them is building for decentralization and for privacy. Even though privacy has nothing to do here. Aztec has. And I don’t want to see another POS network suffer at the hands of “bad” reward distribution. In the long run, a better distribution will strengthen the tokenomics by creating a more diverse support. In the long term, the point is decentralization for the network, which is also strengthened by better distribution.

—————————–

Aztec team/community: Let’s discuss implementing the fix. Providers affected: Share your thoughts. What do you think? Open to feedback to refine this.

3 Likes

Thanks for raising the concern around stake distribution visibility and early-network decentralization. We agree that clear, accurate attribution of stake and provider activity is important, especially in the early stages of the network.

That said, it’s important to clarify how the system works today:

  • The Staking Registry contract - which facilitates delegations to providers - is onchain and permissionless
  • Provider registration and delegation are explicit onchain actions
  • The staking dashboard does not infer or assume relationships, it indexes and displays what has actually occurred onchain

In the cases referenced in your post, the providers in question registered a provider but did not delegate stake to that provider, instead opting to self-stake. As a result, the dashboard correctly shows 0 delegations, because 0 delegation transactions occurred onchain. Manually overiding or editing onchain data would call into question the integrity of the data on the dashboard, as the chain is the source of truth.

The Aztec staking dashboard is just an indexer-backed frontend. All core functionality including staking, delegation, provider registration is implemented via onchain contracts on Ethereum. Please see here

Over the past weeks, our focus has been on making the dashboard production-ready for TGE and Alpha users, including:

  • Governance dashboard launch
  • Reward management
  • ERC20 support

These were critical prerequisites for network launch. We plan to fully open source the dashboard codebase and accept community PRs. This work is scheduled after the current TGE-critical milestones, and so we hope to finish open-sourcing the entire staking dashboard website by next week.

Separately and in the meantime, we’ve spent time supporting third-party indexers by answering detailed questions around how dashboard values are computed and derived from onchain data. Please refer to this post between us last week.

The staking dashboard reflects onchain reality by design, and that principle is foundational to building a healthy, decentralized network.

Hey Amin. Appreciate the quick response!

Let me raise a few points here:

  1. With regards to discussing this issue. My initial frustration comes from the fact that it took several month for us to get to these responses from the moment of raising this issue (which, once again was not tested on testnet).
    In fact, during the initial month we had constant response and attention to our issue. The frustration started when the communication started to lack answers. And essentially the answers differed, starting from “it will be fixed in 1 week” to "what we have now is what it is”.
    My goal here is to try and understand how to survive in the “what it is is what we have”.

  2. Im not suggesting to disregard onchain data. Im suggesting to organize it via a public GH repo (see Namada example please)

  3. By no means anyone is underestimating what you guys do or ship or what you concentrate on. Im trying to point out the issue that I see. And, if i had the resources on my team, which is funded from our nodes btw - i would have long ago allocated someone to fix that PR for you guys. Alas, at this stage I can only suggest - hence, im choosing to suggest a solution, that doesnt require anything “fatal” :slightly_smiling_face:

1 Like

Can you clarify what you have in mind with the proposed public repo? My understanding is that this would involve maintaining a JSON-style mapping in GitHub that links providers to metadata and delegations.

If that mapping is maintained manually, it introduces a lot of operational overhead and subjectivity. If it is instead automated based on on-chain events, then it effectively converges on the approach we already use today.

It would be helpful to better understand what problem this repo is solving that is not already addressed by indexing on-chain data.

Yes. I mean exactly this. Apologies for being unclear.

I would heavily argue against subjectivity. This has the same principle as a prover has. Subject submits data, which is verified by the blockchain. He stakes his reputation on that PR.

You are right 100%. A full on chain solution is a lot more trustless, as it is verified automatically. Its the best solution. When it works.

Teh current solution has put 13 providers in an unfair situation, where for 1 year they have to remain with 0 additional stake. Yet, they have and are doing everything the same as the other providers (i mean technically, not talking about the set up here). Whats more. This destroys the natural flow of token distribution, by concentrating the highest APR on less providers than possible.

In essence, your argument is stronger. No steb. On chain (on an openly verifiable network) automatically verified data is more decentralized than using a GH repo to verify keys/submissions. Yet, if the goal is decentralization, than i think that whats happening is not more decentralized. As it leads to worse token distribution. More pressure on the token price (less diversity of sellers). It seems more like democracy at its worst. The majority voted to have yellow. So everyone that gets sick from yellow - will just have to wait. And the damage that yellow will do, isnt important.

Imo the ethos of decentralization, cyberpunk, etc are a lot about reaching trustless communication in order to help us communicate better. In essence that’s what blockchains are. Communication tools. A decentralized middle man. The goal of those ethos is also to create a better, safer world. A world where communication isnt filtered via a blackbox. A world where compute can help to achieve more efficient communication.

Now. Why the water above? Im trying to argue here, that each case has its weight. Yes, onchain is better. The way this was done (not tested on testnets). The way it is - doesnt work as intended for 13 providers. What it creates. Long term distribution damage and piles up selling pressure from same sellers. In this case, the ethos i described above, imo, overweight that. IMO, by solving this issue, the network will gain more long-term, than lose (in fact nothing is lost).

Hope i’m making sense here :slightly_smiling_face:

1 Like

Quick update, the staking dashboard was just open sourced. Feel free to take a look here.
If you have any questions based on the code, or would like to request features please create an issue on the Github repository.

1 Like

This is great news. Thank you!

Will PR Immediately. Hopefully there are auto checks for the addresses.

If not, as mentioned above, we are busy to try and ship what we can for our own explorer until Monday (for it to be in better shape for the TGE). After that, if something is wrong, we can invest time heavily into it and restructure anything needed (will be happy to help, thats what im trying to say)