Comments (5)
I propose that we design a very simple solution first that doesn't take much time to implement and then later on come up with a better, more decentralized solution that will reply on some governance process.
The reason for this is that we need to get things going and have a solid network up that just works. That's the first stage. By having a running network that users participate in will help iron out issues and will lead to a more stable and solid network. Once that is done, we then have time to think about how a better solution for validator selection looks like.
Trying to do this perfectly first and then do everything else will take up time and probably lead to us reimplementing / adjusting multiple times since we will over time have more experience with a live network. So better use something simple and easy first, let everything grow and then gradually improve one thing after another.
As for the proposal itself:
- Implement logic into nodes to read hostnames / IPs from a contract on startup
- Create a contract that (for now only) core devs can use to add and remove IPs
- Limit validators to a fixed number between 5 and 10
- Nodes only connect to nodes from that contract
We could also just hardcode the nodes into the Tendermint config file but nodes retrieving data from a contarct on startup is a good idea because we will need to do that anyway. It's just that we currently don't know exactly the details of that future contract.
It needs to be clear that this proposal is just the first step and it can in now way stay the final solution. With the application that we use right now for our node communication we have a perfect base to build whatever we want to a level of industry standard but we need to be sure what we want first.
from xian-core.
Let's mention the obvious first: CometBFT is PoS. Thus the question arrises how we appoint validators and how much of them we want to allow. Few questions:
- What is the reason to not allow an unlimited number of validators?
- What should the reward for validators be?
from xian-core.
AFAIK, you can add as many validators as you want, once you get past 100 or so, additional validators are expensive to add in terms of throughput & latency.
You could, though have way more than 100, but to keep things fast the nodes would have a lottery or something every x number of blocks to determine who gets to be involved in consensus for the next x blocks and receive rewards. It will be the abci side that determines all the logic around electing validators, bonding & unbonding tokens for validator staking.
There's a few options how validators can be rewarded :
- Inflation
- Transaction Fees
I'm not against some % inflation as this can make it worthwhile starting up the network and running a node when transactions will be low. The thing about inflation though, is it's not fair unless everybody gets to stake and earn a %, so we'd definitely have to allow staking of any amount of tokens to receive something, to make it open to everybody. Iirc Cosmos has a system like this where anyone can stake tokens and use that as a vote towards a node.
from xian-core.
https://docs.cometbft.com/v0.38/core/validators
from xian-core.
I think this makes sense, to take a phased approach to decentralisation.
I definitely think we should control the validator set using a smart contract, so we don't have to hard-fork to update the set.
The initial schema for the masternode contract should probably be something like :
validators = [
{
"ip": "0.0.0.0:26656",
"weight": 10,
"node-id": "b2308wi13098sdjj20318iasjdn2b41978fnakldhr10"
}
]
- The owner of the contract should be a basic multi-sig which is controlled by the team.
- It must have a transfer_owner method
- It should have a generic method where it can whitelist certain contracts to alter it's state, so we can add more functionality to this later (think dynamically adjusting a node's voting weight depending on users staking tokens and delegating to that validator)
I'm sure I've missed a lot of things, but there's a few suggestions to get the creative juices flowing.
from xian-core.
Related Issues (14)
- Pass BFT Time to application
- Onboard Endogen
- Transaction Environment
- Produce empty blocks? HOT 2
- Can we still have FIFO? HOT 2
- What is the difference between Tendermint Core and CometBFT? HOT 1
- Parallel Processing
- Tokenomics Design HOT 1
- Rename `currency` contract HOT 5
- OpenAPI Spec HOT 1
- remove duplicate methods HOT 2
- Update makefile
- Return Transaction Schema
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from xian-core.