-
Notifications
You must be signed in to change notification settings - Fork 10
Delegate activation rules #23
Comments
Concerning the second question: It is in the Athens release that receiving an incoming transaction did not anymore reactivate an inactive delegate. See diff in the |
A little Internet archeology revealed that I found a changelog extract in the Tezos Slack archive https://log.tezos.link/index.php?date=20-07-2018 published at 20-07-2018 15:45:31 (block 26,579 cycle 6) mentioning
This explains the weird RPC error messages before block 28,082 and the magic activations at block 28,083 where protocol v002 activated. Problem 2 above seems to be solved. Many of these magically activated delegates are still active today. |
I switched our indexer to track the grace period of each delegate in the hope that I wouldn't have to rely on the The idea is to deactivate delegates in the indexer when their grace period expires. Reverse engineered rules to set/update the grace period are as follows:
Until
A bug fix in When cross-checking this method another Tezos bug surfaced: against what's specified in the documentation, that one could extend the grace period by sending small meaningless transactions, that is not the case. Neither sent transactions nor sent originations (no matter using delegation or not) would update the grace period. |
The Blockwatch/TzStats indexer maintains an internal representation of the full blockchain state which is constructed from replaying block receipts (plus pulling snapshot index and rights from context). Anything else like supply, consensus and voting rolls, balance and delegation history, etc is derived from these receipts.
This approach works for all balance updates, but diverges from a node's context for the active delegate set. Ideally, all events that lead to registration, deactivation and reactivation of a delegate should be observable in receipts and there should be a consistent set of rules. This issue tracks our research towards understanding these rules and how they changed across versions.
From available documentation here and here and some reverse engineering our current set of delegate activation rules is as follows:
metadata.deactivated
which gets populated in the last block of a cycle (example)Problems with the approach above 🔥
block.metadata.deactivated
(example, example, example, example)Open Questions
The text was updated successfully, but these errors were encountered: