Update 2020 Jun 8:
Github link: https://github.com/incognitochain/incognito-chain/tree/dev/dynamic-committee-size
Result:
- Finish implement Beacon sync, insert, store all shard blocks
Next:
- Testing
Update 2020 Jun 8:
Github link: https://github.com/incognitochain/incognito-chain/tree/dev/dynamic-committee-size
Result:
Next:
Update 2020 Jun 12:
Result:
Next week:
On June 24th, 2020
Detail design: https://docs.google.com/document/d/19KChrg0B2LmfT_t-K8vovCG-mXUkAYG88j5FQsKPXT4/edit#
Update 26 June 2020
Finish:
Next:
This week, we do not spend much time on the main task as the code based of incognito-chain is very huge now. After thoughtfully consideration, we decide it need to be refactor into smaller component, make it easier to maintain in the future. It might take some time now, but new staking flow can be well-implemented and well-tested with high quality code.
Update 3 July 2020
Finish:
Next:
Yesterday, we talked about dynamic committee size - new staking flow, which supposes to be released on mainnet this September. This introduces new earing lifecycle of a validator, reduce time to sync shard’s data significantly, and also help user to unstake immediately.
Again, checkout the technical specs here
Update 10 July 2020
Finish:
Next
Update 17 July 2020
Finish:
Next
Update 27 July 2020
Finish:
Next
Update 3 Aug 2020
In progress:
Update 10 Aug 2020
Finish:
In progress:
Update 17 Aug 2020
This week our team had a nice-to-have debate about design pattern and code structure. The new-staking-flow code is refactored based on our solution. It took us three days but will be rewarded.
In progress:
Update 28 Aug 2020
WONDERFUL NEWS
Finish:
Let’s explain a little bit about these features. Both these features effect directly our dear end-user, especially those who run node.
Unstake feature is a desirable feature since our first day. It allows user to withdraw his/her stake amount whenever user’s node in candidate list, which mean it plays no role in any shards (neither committees in block creation phase nor committees in preparation phase). In short, Unstake feature tells one how long he/she must wait to get back one’s staking amount (in PRV).
New Swap/Assignment Rule makes Incognito’s consensus more secure and changes reward amount in short term duration.
In progres:
Update 21 Sep 2020
The new swap rule (swap rule v2) which is implemented last month seem not meet our needs. So far, this month we are discussing how to implement it properly. The swap rule v2 allows beacon chain to force shard chain changing shard’s committees.
In progress:
Update 25 Sep 2020
Finish:
In Progress:
With this development speed, I am confident that we will finish implementing two task above by the end of next week (2 Otc 2020). After that, team will move to testing & debugging phase. I am so excited that team found a proper design for slashing flow after a couple times of trying.
Update 18 Oct 2020
Finish:
Implementation of new Shard Block Creation V2. From now on, a new shard block is only allowed to created if it find a higher beacon block. Otherwise, shard chains will stop producing new block
New Swap (change committee) rule. This is a really big change to our consensus working mechanism. At first, we think that shard independently changing its committee after one epoch will make Incognito more secure. But seem that, it create more problem than helping the chain. The Shard chains and Beacon chain must synchronize too many kinds of information, which is very hard to get the same correct answer. The New Swap Rule, swap-rule-v2, forbid shard to change its committee by them self. Instead, the Beacon chain will force shard to change its committee. Less data to synchronize, less problem to tackle.
Slashing module by counting missing signatures from committees in 1 epoch creation. For example, if one shard creates 100 blocks in 1 epoch, each nodes must sign at least 50 blocks or it be force un-stake. This module is carried by the Beacon chain.
Documenting Implementation detail, integration testcase.
Refactoring a huge amount of code which covered by thoughtful unit-test.
In progress:
I am so glad that this feature is getting much better, clearer. It took us almost five months from researching to implementation, testing. A lot of re-design, re-work was conducted. If luck is on our side, this feature will be launched in testnet by the end of this month (October).
This is our specification link: https://docs.google.com/document/d/19KChrg0B2LmfT_t-K8vovCG-mXUkAYG88j5FQsKPXT4/edit#heading=h.k9idjn4fvxia
It would be useful, to me at least, that there is a process when this is rolled out that if a vNode is getting slashed there is some notification to user. Especially when this roles out, as currently I believe there may be vNodes incorrectly configured on the network, and due to the current setup the nodes are still earning even if they are missing blocks (or completely offline and unreachable). It would be nicer if when this is rolled out the nodes in committee that are not providing incorrect solutions/missing blocks were not initially penalized, but rather notified so validators could have an opportunity to fix any configuration issues they may have. Otherwise there may be quite a few validators that see drops without an understanding of why… Just something to consider.
Also,
Am I reading this correctly, that if your validator gets “slashed” it will be forced to unstake?
Thanks for sharing your thoughts. We will figure out a way to notify slashed vNode via out mobile application.
The current slashing rule only force Node out of committee. The staking-amount and reward which node received in that epoch will remain intact. We assume that all our users are trying to contribute to the system. When something go wrong, node get slashed, is a kind of notification to our users their nodes are not working properly
Yes, force to unstake is the only current penalty for slashing solution. So get slashed
means node will be force to unstake
Update 9 Nov - 15 Nov
Finish: