Comments (4)
Paging @bytemaster
from eos.
EOS block producers should be scheduled same way as latest STEEM producers.
One thing I would like to consider is reducing the 128 bit math for virtual time and position with 64 bit math.
21 producers, top 20 by approval voting every round, last 1 selected based on virtual schedule.
A producer who misses a block after not producing for 24 hours is automatically unscheduled by setting their signing key to null. Skip any producers whose signing key is null.
Only other difference from STEEM is that only a single layer of proxy voting will be supported.
from eos.
These fields are used for the Producer scheduling algorithm which uses
* virtual time to ensure that all witnesses are given proportional time
* for producing blocks.
*
* @ref votes is used to determine speed. The @ref virtual_scheduled_time is
* the expected time at which this witness should complete a virtual lap which
* is defined as the position equal to 1000 times MAXVOTES.
*
* virtual_scheduled_time = virtual_last_update + (1000MAXVOTES - virtual_position) / votes
*
* Every time the number of votes changes the virtual_position and virtual_scheduled_time must
* update. There is a global current virtual_scheduled_time which gets updated every time
* a witness is scheduled. To update the virtual_position the following math is performed.
*
* virtual_position = virtual_position + votes * (virtual_current_time - virtual_last_update)
* virtual_last_update = virtual_current_time
* votes += delta_vote
* virtual_scheduled_time = virtual_last_update + (1000MAXVOTES - virtual_position) / votes
*
* @defgroup virtual_time Virtual Time Scheduling
*/
///@{
fc::uint128 virtual_last_update;
fc::uint128 virtual_position;
fc::uint128 virtual_scheduled_time = fc::uint128::max_value();
from eos.
Still TODO here:
- When an account approves/unapproves a producer, add/remove that account's stake to that producer's votes
- When an account gains or loses stake, add/remove the gained/lost stake to all producers that account votes for
- Calculate the producer round changes in generate_block and add to block header
- Proxied voting...?
If I'm not mistaken, we can ignore the CreateAccount
initial deposit of stake, as a newly created account cannot be voting for anything yet, so we need do no updates until the new account creates a transaction voting for something, at which point it will be handled as usual. The only times the stake will change are TransferToLocked
and StartUnlockEos
It could be argued that a newly created producer should automatically have its creator's stake voting for it; however, I don't think this is necessary, and I'm not confident it's even desirable, so for now I will leave newly created producers as having no votes.
from eos.
Related Issues (20)
- Signature verification for EOS account
- Logging In with QR code to pc with new account (greymass) HOT 1
- push_transaction无法发送交易 HOT 2
- [docs] explain that asserting in a contract is a bad thing to do
- Nodeos stuck and doesn't want to stop HOT 4
- ubuntu:~/eosio.cdt$ ./build.sh bash: ./build.sh: No such file or directory
- Makefile:140: recipe for target 'all' failed
- WASM is greater then 512 Kb and getting error in deploy unexpected end of JSON input last
- How to include multi_index.hpp HOT 3
- [Developer Preview] RocksDB Storage for DB and Key Value APIs ,what's the issue detail ? HOT 3
- Why is my local blockchain not requiring eosio.code permission when an inline action is executed? HOT 1
- Remove test consensus-validation-malicious-producers.py
- Handle failure case of db size being too small for snapshot more gracefully
- my local node can't produce block HOT 2
- Unable to broadcast the transaction to the mainnet HOT 1
- so let me get this straight the only possible way to use eos is if you can download cleos .. and cml -> and the only way you can get cleos is if your not on a window... HOT 2
- Ensure that you have created a wallet and have it open HOT 1
- Support for MacBook Pro with chip Apple M1 Pro running macOS Monterey HOT 1
- trying to create account with custom system account
- Why should wait 50ms before producing next block?
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 eos.