Cuire des récompenses en tant qu'opérations
2 réponses
- votes
-
- 2019-04-21
Les récompenses seproduisent dans le cadre duprotocoleet toutesten chaîne. Maisilsne sontpas une "transaction" au sensnormal dumot,car unetransactionnécessitegénéralement uneintervention de l'utilisateur. Maisil y a desmouvements defondsfondamentaux du "congélateur" aux délégués. Conceptuellement,le congélateur contienttemporairementtoutes les obligationset les récompensespour la cuissonet l'endossement.
Pourtrouver cesinformations sur la chaîne,nous devonsexaminer letout dernierbloc du cycle quenous attendions de la récompense.
blocknumforrewards=(Récompagnécyclénum + 6) * NumoFblockSincycle
Parexemple,pour le cycle 93,les récompenses du cycle 93 sont déverrouillées au dernierbloc du cycle 98,nous devons doncexaminer lenuméro debloc
(93 + 6) * 4096=405.504
.Après quenous connaissions lenuméro debloc,nouspouvons Quertiementpour lebloc Avecnotrenœud de Obtenir le hachage àpartir d'unexplorateur debloc comme Tzscan. Dans ce cas,
bldha4dmewyxykup46ecguwsgbyikpnflvgiu5nqgdxplhkgzuf
estnotre hachage debloc:/Chaînes/Main/Blocs/BLDHA4DMEWYXYKUP46ECGYWSGBYIKPNFLVGIU5NQGDXPLHKGZUF
Évidemment,il y abeaucoup d'informationsici,mais concentrons sur le chemin quigère les changements debalance,spécifiquement
métadonnéeset gt; Balance_Updates
. Exemple:{ "Protocole": "PSDDFKI32CMJ2QPJF43QV5GDWLDPZB3T3BF6FLKIF5HTVNU7AP", "Chain_id": "Netxdqprcvkpawu", "hachage": "bldha4dmewyxykup46ecgywsgbyikpnflvgiu5nqgdxplhkgzuf", "Metadata": { ... "Balance_Updates": [ //c'est ce quenous soucions de ] } ... }
Cettepartie dublocest lesmises àjour de labalance qui conservent ce que leprotocole doit appliquer quelles que soient lesinterventions de l'utilisateur. Dansbeaucoup deblocs,cettepartieinclura simplement leboulangeren bloc actuel avec ses récompenseset ses obligations verrouillées. Dans le dernierbloc du cycle,
Balance_Updates
inclut égalementtoutes les récompenseset les obligations déverrouillentpour chaqueboulanger qui aparticipé au cycle 93.Quoi qu'ilen soit,voyons les spécificités d'unboulanger à comprendreplus loin. Pourillustration,j'aifiltré destransactionspour unboulangeren particulier
tz1ivofe ...td
."Balance_Updates": [ ... { "type": "congélateur", "Catégorie": "dépôts", "Délégué": "Tz1ivoFevbfbunav5fWLVMXZMGCNXWXY9QTD", "Niveau": 93, "Changement": "-10368000000" }, { "type": "congélateur", "Catégorie": "Frais", "Délégué": "Tz1ivoFevbfbunav5fWLVMXZMGCNXWXY9QTD", "Niveau": 93, "Changement": "-9362" }, { "type": "congélateur", "Catégorie": "Récompenses", "Délégué": "Tz1ivoFevbfbunav5fWLVMXZMGCNXWXY9QTD", "Niveau": 93, "Changement": "-321000000" }, { "type": "contrat", "contrat": "tz1ivofevbfbunav5fwlvmxzmgcnxwxy9qtd", "Changement": "10689009362" }, ...
à l'intérieur de
Balance_Updates
Array,ilincluratoutes les "transactions" qui doivent être ajustéespourtoutes ces adresses,y compris le "congélateur". Chaquetransaction donne également desindices sur ce qu'ils sontpour.Ce quiprécèdeest asseztypique ce quenous verronsparboulanger. Il y a 3transactions connexes "congélateur"et un "contrat". Latransaction "congélateur"est différente selon leur catégorie (code> (
dépôts
,frais
etrécompenses
). Les catégories sont assezexplicites. Juste au cas où vous émerveilleriez,les dépôtset les récompensesincluront les obligationset les récompenses de cuissonet de recrutement. Notez que ces opérations de congélateur sont des valeursnégativeset impliquent que ces soldes sont soustraits du congélateur .Latransaction "contrat" est ce qui change le solde duboulangeren question. Ceciest assez similaire à unetransactioninitiéepar l'utilisateur. Sinous additionnons les soldes de la catégorie de 3 congélateurs,ils s'ajoutaient à labalance des changementspour leboulanger.
The rewards happen as part of the protocol and it's all on chain. But they are not a "transaction" in the normal sense of the word, as usually a transaction requires some user intervention. But there is fundamental movements of funds from the "freezer" to the delegates. Conceptually, the freezer temporarily holds all the bonds and rewards for baking and endorsing.
To find this information on chain, we have to look at the very last block of the cycle we'd expect the reward.
blockNumForRewards = (rewardedCycleNum + 6) * numOfBlocksInCycle
For example, for cycle 93, the rewards for cycle 93 gets unlocked at the last block of cycle 98, so we need to look at block number
(93 + 6) * 4096 = 405,504
.After we knowing the block number, We can query for the block with our node by getting the hash from a block explorer like tzscan. In this case,
BLdha4dMeWYxYkuP46eCgYwsgBYiKPNFLvgiu5NqgdxPLhkgzUf
is our block hash:/chains/main/blocks/BLdha4dMeWYxYkuP46eCgYwsgBYiKPNFLvgiu5NqgdxPLhkgzUf
Obviously there is a lot of information in here, but let's focus on the path that handles the balance changes, specifically
metadata > balance_updates
. Example:{ "protocol": "PsddFKi32cMJ2qPjf43Qv5GDWLDPZb3T3bF6fLKiF5HtvHNU7aP", "chain_id": "NetXdQprcVkpaWU", "hash": "BLdha4dMeWYxYkuP46eCgYwsgBYiKPNFLvgiu5NqgdxPLhkgzUf", "metadata": { ... "balance_updates": [ // this is what we care about ] } ... }
This portion of the block is the balance updates that retains to what the protocol needs to apply regardless of the user interventions. In a lot of the blocks, this portion will just include the current block baker with its locked rewards and bonds. In the last block of the cycle,
balance_updates
also includes all the rewards and bonds unlocks for every baker that participated in cycle 93.Anyhow, let's dig into the specifics of one baker to understand further. For illustration, I've filtered out transactions for one particular baker
tz1ivoFE...TD
."balance_updates": [ ... { "kind": "freezer", "category": "deposits", "delegate": "tz1ivoFEvbfbUNav5FwLvmxzMGcNXWxY9qTD", "level": 93, "change": "-10368000000" }, { "kind": "freezer", "category": "fees", "delegate": "tz1ivoFEvbfbUNav5FwLvmxzMGcNXWxY9qTD", "level": 93, "change": "-9362" }, { "kind": "freezer", "category": "rewards", "delegate": "tz1ivoFEvbfbUNav5FwLvmxzMGcNXWxY9qTD", "level": 93, "change": "-321000000" }, { "kind": "contract", "contract": "tz1ivoFEvbfbUNav5FwLvmxzMGcNXWxY9qTD", "change": "10689009362" }, ...
Inside of
balance_updates
array, it will include every "transaction" that needs to be adjusted for all these addresses including the "freezer". Each transaction also gives some clues on what they are for.The above is pretty typical what we'll see per baker. There are 3 "freezer" related transactions and one "contract". The "freezer" transaction are different by their
category
(deposits
,fees
andrewards
). The categories are pretty self explanatory. Just in case you are wonder, deposits and rewards will include both baking and endorsements bonds and rewards. Notice that those freezer operations are negative values and they imply that these balances are subtracted fromfreezer
.The "contract" transaction is what changes the balance to the baker in question. This is pretty similar to a user initiated transaction. If we add up the 3 freezer category's balances, they would add up to the change balance for the baker.
-
C'est labonne réponse.Ma réponse a répondu à la question de savoir comment Baker Credit/Récompensez-vous de leurs délégateurs,nonpas comment unboulangerest récompensé via leprotocole lui-même.Pour supprimertoute confusion,j'ai suppriméma réponse.This is the correct answer. My answer answered the question of how baker credit/reward their delegators, not how a baker is rewarded via the protocol itself. To remove any confusion, I've deleted my answer.
- 1
- 2019-04-23
- lostdorje
-
@Frank Comment savoir que "tz1ivofevbfbunav5fwlvmxzmgcnxwxy9qtd"est leboulangerie? 2. Pourquoi les dépôts,lesfraiset les récompenses sonttousnégatifs.Pourriez-vous s'il vousplaîtm'aider à comprendre?@Frank how to know that "tz1ivoFEvbfbUNav5FwLvmxzMGcNXWxY9qTD" is the baker ? 2. Why deposits , fees and rewards all are in negative. Could you please help me understand ?
- 0
- 2020-02-23
- user3759202
-
1. Cette adresse Bakern'est qu'unexemple,mais cette sectionn'inclut que desboulangers.2. "Notez que ces opérations de congélateur sont des valeursnégativeset impliquent que ces soldes sont soustraits du congélateur."Le congélateurest ce que la chaîne stocke,nousfaisons donc un changement de soldenégatifpour le congélateuret un changement debalancepositif comme récompense.C'est zéro somme.1.That baker address is just an example, but this section only include bakers. 2. "Notice that those freezer operations are negative values and they imply that these balances are subtracted from freezer." Freezer is what the chain is storing, so we are making a negative balance change for the freezer and a positive balance change as the reward. It's zero sum.
- 0
- 2020-02-23
- Frank
-
@Frankje suistoujours confondu avec le congélateur.J'ai vupeu d'échantillons où la dépôtestpositiveet la récompenseest égalementpositive.Dans quel scénario celaestpossiblepour cetteblochhash,nouspouvonstrouver le dépôtet la récompense commepositif@Frank I am still confused with the freezer stuff. I have seen few samples where deposit is positive and reward is also positive. In which scenario this is possible for this blochHash we can find the deposit and reward as positive
- 0
- 2020-02-24
- user3759202
-
- 2019-04-24
La réponse "Version courte"est que celaest accompli via
consensus
,ce quiest un conceptextrêmementimportant dans les cargaisons utiliséspour la cryptocurrence.Malheureusement,beaucoup degensne le comprennentpas vraiment;dans cet aspectessentiellement,leterme "consensus" se résume à:(et c'est vraiment une descriptiontrès simplifiéeici,ne prenantpas compte de lagel des récompenses ou des dépôts,etc.) Le code duprotocole Tezos dicte que lorsqu'un comptebeake unbloc,le solde de ce comptemonte simplementpar ꜩ16.Puisquetout lemondeexécute lemêmeprotocole,tout lemonde convient que lorsqu'un comptefaitbaisser unbloc,le solde de ce compte augmente de 1,6.C'est un consensus.
The "short version" answer is that this is accomplished through
consensus
, which is an extremely important concept in blockchains that are used for cryptocurrency. Unfortunately many people just dont really understand it; in this aspect essentially the term "consensus" boils down to:(and this really is a very simplified description here, not taking into account freezing rewards or deposits, etc) The code for the Tezos protocol dictates that when an account bakes a block, that account's balance simply goes up by ꜩ16. Since everyone is running the same protocol, everyone agrees that when an account bakes a block, that account's balance goes up by ꜩ16. Thats consensus.
Comment les récompenses de cuisson apparaissent-elles sur la chaîne quandelles sont créditées auboulanger?Est-ce une opération de «transaction»?Commentpuis-je yidentifier?