Ricompense di cottura come operazioni
2 risposta
- voti
-
- 2019-04-21
Le ricompense avvengono comeparte delprotocolloed ètutto a catena. Manon sono una "transazione"nel sensonormale deltermine,poiché di solito unatransazione richiede unintervento daparte dell'utente. Ma ci sonomovimentifondamentali difondi dal "congelatore" ai delegati. Concettualmente,il congelatore detienetemporaneamentetuttii vincolie le ricompenseper la cotturae l'approvazione.
Pertrovare questeinformazioni sulla catena,dobbiamoesaminare l'ultimoblocco del cicloin cui ci aspetteremmo la ricompensa.
blockNumForRewards = (rewardedCycleNum + 6) * numOfBlocksInCycle
Adesempio,peril ciclo 93,i premiperil ciclo 93 vengono sbloccati all'ultimoblocco del ciclo 98,quindi dobbiamoguardare alnumero diblocco
(93 + 6) * 4096 = 405,504
.Dopo aver conosciutoilnumero delblocco,possiamo interrogareilblocco conilnostronodo ottenendo l'hash da unblockexplorer cometzscan. In questo caso,
BLdha4dMeWYxYkuP46eCgYwsgBYiKPNFLvgiu5NqgdxPLhkgzUf
èilnostro hash diblocco:/chains/main/blocks/BLdha4dMeWYxYkuP46eCgYwsgBYiKPNFLvgiu5NqgdxPLhkgzUf
Ovviamente ci sonomolteinformazioni qui,ma concentriamoci sulpercorso chegestiscei cambiamenti dibilanciamento,in particolare
metadata > balance_updates
. Esempio:{ "protocol": "PsddFKi32cMJ2qPjf43Qv5GDWLDPZb3T3bF6fLKiF5HtvHNU7aP", "chain_id": "NetXdQprcVkpaWU", "hash": "BLdha4dMeWYxYkuP46eCgYwsgBYiKPNFLvgiu5NqgdxPLhkgzUf", "metadata": { ... "balance_updates": [ // this is what we care about ] } ... }
Questaparte delblocco è l'aggiornamento delbilanciamento chemantiene ciò cheilprotocollo deve applicareindipendentemente dagliinterventi dell'utente. Inmoltiblocchi,questaporzioneincluderà solo l'attualepanettiere con le sue ricompensee obbligazionibloccate. Nell'ultimoblocco del ciclo,
balance_updates
include anchetutte le ricompensee le obbligazioni sbloccateper ognipanettiere che hapartecipato al ciclo 93.Ad ognimodo,approfondiamo le specifiche di unfornaioper capiremeglio. Adesempio,hofiltrato letransazioniper unparticolarepanettiere
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" }, ...
All'interno dell'array
balance_updates
,includerà ogni "transazione" che deveessere regolatapertutti questiindirizzi,inclusoil "freezer". Ognitransazionefornisce anche alcuniindizi su cosa servono.Quanto sopra è abbastanzatipico di ciò che vedremoperpanettiere. Ci sono 3transazioni relative a "freezer"e un "contratto". Letransazioni "freezer" sono diversein base alla loro
category
(deposits
,fees
erewards
). Le categorie sonopiuttosto autoesplicative. Nel casotu siameraviglia,i depositie le ricompenseincluderanno sia le obbligazionie le ricompense daforno che quelle di sponsorizzazione. Sinoti che quelle operazioni di congelamento sono valorinegativie implicano che questi saldi vengono sottratti dafreezer
.Latransazione "contratto" è ciò che cambiail saldo delpanettierein questione. Questo è abbastanza simile a unatransazione avviata dall'utente. Se sommiamoi saldi della categoria 3 congelatori,si sommano al saldo dellemodificheperilpanettiere.
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.
-
Questa è la risposta corretta.Lamia risposta ha risposto alla domanda su comeilpanettiere accredita/ricompensai suoi deleganti,non come unpanettiere vienepremiatotramiteilprotocollo stesso.Per rimuovere qualsiasi confusione,ho cancellato lamia risposta.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 come sapere che "tz1ivoFEvbfbUNav5FwLvmxzMGcNXWxY9qTD" èilpanettiere? 2. Perché depositi,commissionie premi sonotuttinegativi.Puoi aiutarmi a capireperfavore?@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
-
L'indirizzo delpanettiere è solo unesempio,ma questa sezioneinclude soloi fornai.2. "Sinoti che le operazioni di congelamento sono valorinegativie implicano che questi saldi vengono sottratti dal congelatore".Il congelatore è ciò che la catena staimmagazzinando,quindi stiamo apportando un cambio di saldonegativoperil congelatoree un cambio di saldopositivo come ricompensa.È somma zero.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
-
@Frank Sono ancora confuso con la roba del congelatore.Ho vistopochi campioniin cuiil deposito èpositivoe anche la ricompensa èpositiva.In quale scenario ciò èpossibileper questoblochHash,possiamotrovareil depositoe la ricompensa comepositivi@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 risposta "versionebreve" è che ciò si ottiene attraversoil
consensus
,che è un concettoestremamenteimportantenelleblockchain utilizzateper la criptovaluta.Purtroppomoltepersonenon lo capiscono veramente;in questo aspettoessenzialmenteiltermine "consenso" si riduce a:(e questa è davvero una descrizionemolto semplificata qui,senzatenere conto del congelamento dipremi o depositi,ecc.) Il codiceperilprotocollo Tezosimpone che quando un account crea unblocco,il saldo di quell'account aumenta semplicemente di ꜩ16.Poichétuttieseguono lo stessoprotocollo,tutti concordano sulfatto che quando un account crea unblocco,il saldo di quell'account aumenta di ꜩ16.Questo èil consenso.
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.
Come appaiono le ricompenseper la cottura sulla catena quando vengono accreditate alpanettiere?È un'operazione di "transazione"?Comepossoidentificarli?