操作としてのベーキング報酬
2 回答
- 投票
-
- 2019-04-21
報酬はプロトコルの一部として発生し、すべてチェーン上にあります.ただし、通常、トランザクションにはユーザーの介入が必要なため、通常の意味での「トランザクション」ではありません.しかし、「冷凍庫」から代表者への資金の基本的な動きがあります.概念的には、冷凍庫は、ベーキングと承認に対するすべての絆と報酬を一時的に保持します.
チェーンでこの情報を見つけるには、報酬を期待するサイクルの最後のブロックを調べる必要があります.
blockNumForRewards = (rewardedCycleNum + 6) * numOfBlocksInCycle
たとえば、サイクル93の場合、サイクル93の報酬はサイクル98の最後のブロックでロック解除されるため、ブロック番号
(93 + 6) * 4096 = 405,504
を確認する必要があります.ブロック番号がわかったら、
ブロックをクエリできます.tzscanなどのブロックエクスプローラーから ハッシュを取得することでノードを使用します.この場合、 BLdha4dMeWYxYkuP46eCgYwsgBYiKPNFLvgiu5NqgdxPLhkgzUf
がブロックハッシュです./chains/main/blocks/BLdha4dMeWYxYkuP46eCgYwsgBYiKPNFLvgiu5NqgdxPLhkgzUf
ここには明らかに多くの情報がありますが、バランスの変更を処理するパス、特に
metadata > balance_updates
.例:{ "protocol": "PsddFKi32cMJ2qPjf43Qv5GDWLDPZb3T3bF6fLKiF5HtvHNU7aP", "chain_id": "NetXdQprcVkpaWU", "hash": "BLdha4dMeWYxYkuP46eCgYwsgBYiKPNFLvgiu5NqgdxPLhkgzUf", "metadata": { ... "balance_updates": [ // this is what we care about ] } ... }
ブロックのこの部分は、ユーザーの介入に関係なく、プロトコルが適用する必要があるものを保持するバランス更新です.多くのブロックでは、この部分には、ロックされた報酬とボンドを持つ現在のブロックベイカーが含まれます.サイクルの最後のブロックでは、
balance_updates
には、サイクル93に参加したすべてのパン屋のすべての報酬と債券のロック解除も含まれています.とにかく、1人のパン屋の詳細を掘り下げて、さらに理解しましょう.説明のために、ある特定のパン屋
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" }, ...
balance_updates
配列内には、「冷凍庫」を含むこれらすべてのアドレスに対して調整する必要のあるすべての「トランザクション」が含まれます.各トランザクションは、それらが何のためにあるかについてのいくつかの手がかりも提供します.上記は、パン屋ごとに表示される非常に典型的なものです. 3つの「冷凍庫」関連のトランザクションと1つの「契約」があります. 「冷凍庫」トランザクションは、
category
(deposits
、fees
、rewards
)によって異なります.カテゴリはかなり自明です.あなたが不思議に思う場合に備えて、預金と報酬には、ベーキングと裏書の両方の債券と報酬が含まれます.これらの冷凍庫操作は負の値であり、これらの残高がfreezer
から差し引かれることを意味していることに注意してください.「契約」トランザクションは、問題のパン屋の残高を変更するものです.これは、ユーザーが開始したトランザクションと非常によく似ています. 3つの冷凍庫カテゴリの残高を合計すると、パン屋の変更残高になります.
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.
-
これが正解です.私の答えは、プロトコル自体を介してパン屋に報酬を与える方法ではなく、パン屋が委任者にどのようにクレジット/報酬を与えるかという質問に答えました.混乱を避けるために、回答を削除しました.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「tz1ivoFEvbfbUNav5FwLvmxzMGcNXWxY9qTD」がパン屋であることを知る方法は? 2.預金、手数料、報酬がすべてマイナスになっている理由.理解するのを手伝ってくれませんか.@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.そのパン屋の住所は単なる例ですが、このセクションにはパン屋のみが含まれています.2.「これらの冷凍庫の操作は負の値であり、これらの残高が冷凍庫から差し引かれることを意味することに注意してください.」チェーンが保管しているのは冷凍庫なので、冷凍庫の残高をマイナスに変更し、報酬としてプラスの残高を変更します.ゼロサムです.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
-
@フランク私はまだ冷凍庫のものと混同しています.預金がプラスで報酬もプラスのサンプルはほとんど見たことがありません.このblochHashでこれが可能なシナリオでは、デポジットと報酬がプラスであることがわかります.@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
「ショートバージョン」の答えは、これは
consensus
によって達成されるということです.これは、暗号通貨に使用されるブロックチェーンで非常に重要な概念です.残念ながら、多くの人はそれを本当に理解していません.この側面では、本質的に「コンセンサス」という用語は次のように要約されます.(これは実際には非常に単純化された説明であり、凍結報酬や預金などは考慮されていません) Tezosプロトコルのコードは、アカウントがブロックをベイクすると、そのアカウントの残高が単にꜩ16だけ上がることを示しています.誰もが同じプロトコルを実行しているので、アカウントがブロックをベイクすると、そのアカウントの残高がꜩ16増加することに誰もが同意します.それはコンセンサスです.
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.
パン屋にクレジットされると、パン屋の報酬はチェーンにどのように表示されますか?それは「トランザクション」操作ですか?それらを特定するにはどうすればよいですか?