9819 large

[问题] 关于以太坊 Ghost 协议中 uncle 的奖励的问题

flyq · 于 发布 · 最后由 hwancha回复 · 1120 次阅读

Uncle reward
Actually it’s a little more than that. Some blocks are mined a little late and don’t form part of the main blockchain. In Bitcoin these are called ‘orphans’ and are entirely discarded, but in Ethereum they are called ‘uncles’ and can be referenced by later blocks. If uncles are referenced as uncles by a later block, they create about 4.375 ETH for the miner of the uncle (7/8th of the full 5 ETH reward). This is called the uncle reward. Currently around 500 uncles are created per day, adding an additional 2,000 ETH into circulation per day (~0.7m ETH per year at this rate).

Uncle referencing reward
And there’s a bit more too: A miner who references an uncle also gets about 0.15 ETH per uncle (maximum 2 uncles).

This model described above, where valid blocks are determined and miners are rewarded, is called the Ghost protocol (Greedy Heaviest-Observed Sub-Tree).

看了这段介绍,我是这样理解的,如有错误请各位多多指教,非常感激。
设置Uncle reward的目的是
因为在以太坊网络对交易打包成区块并进行共识的时候,会出现 不同节点在某一个很小的时间段内都生成了新区块,比如区块A和区块B。然后同时广播,对于某一节点来说,接收到区块A和区块B的时间并不相同,此时就会有两条链,比如-->A-->A1...和-->B-->B1-->...,但是过了一段足够的时间T,A那条变得更长,经过以太坊网络的共识机制,最终只有区块A并入了主链。区块B成了Uncle,区块B1也是uncle。所以对挖出区块B的矿工进行Uncle reward,4.375ETH,对挖出B1的矿工进行Uncle referencing reward,0.15ETH,加上B1后面还有个B2,B3(当然可能概率很小),那么挖出B2的矿工也是Uncle referencing reward,0.15ETH,挖出B3的矿工则没有了奖励,因为

maximum 2 uncles
不知道这样理解是否有问题。

疑惑2:是否是Uncle还是区块,得在T时间后才能确定,那么矿工收到奖励Gas+fresh ETH的Gas在交易打包成区块时就收到了,而 fresh ETH则要过段时间才能收到。

疑惑3:用户交易ETH时,在什么时候会收到Success,比如我根据交易hash在https://etherscan.io/ 看到了成功的信息,此时是指交易被打包到某个区块还是指交易被打包到某个区块并确定那个区块被并入到区块链而不是Uncle?

  • 1014 large
    toya

    拜占庭分岔之后区块奖励的数量已经改变了,目前出块的奖励为3个ETH,叔块奖励也已经做出了相应的改变。

    有关uncle referencing reward: 假设A被纳入主链,A1是接着A被纳入主链的下一个区块,A1会视B为叔块,并且在区块之中存储B的哈希,在记录时B收获叔块奖励,A1收到记录叔块的奖励。注意叔块只有被侄子或者侄孙子打包确认之后才会被录入做叔快。

    有关疑问2可以参考这个文献:https://github.com/ethereum/wiki/wiki/Design-Rationale#uncle-incentivization

    有关疑问3: https://etherscan.io/ 的成功信息是指区块已经被“确认”。

  • 9819 large
    flyq

    @toya 真是太感谢了!

    我还有个疑惑:
    区块链里面只记录了交易的信息,比如A-->B 1ETH,但是钱包里面能够看到A的所有余额,自然是钱包遍历了整个网络的涉及A的交易,然后钱包会记得某个时间戳,表示该事件前的交易遍历了一遍,得出这个地址的余额是这么多,下次重启钱包的时候就只需要查看这个时间戳后面的区块了?不知道这么理解对不对。

  • 1014 large
    toya

    @flyq

    时间戳是记录在区块数据里面 余额是记录在默克尔树里面的状态数据里面
    钱包可以理解为一个可视化的私钥管理工具用来让用户与区块链更加简单得交互

  • 9819 large
    flyq

    好的,感谢。

    感觉先得把ethereum的wiki过一遍

  • 128
    rafagor

    我可以讲讲钱包。可以根据几个特点来选择钱包,不是所有钱包都是不限数额的,有不少钱包只能接受限定数额的货币。这个存在多方面的原因,如果费用不大,就没有什么问题。

  • 128
    fuyun

    我问下uncle块打包的时候应该会打包一些交易数据,那么这些交易数据最后怎么处理了?

  • 128
    meixik

    有个问题没太搞清楚,对同一交易可能被不同的节点处理,如果合约中修改了sender和receiver的余额,是不是每个节点都修改一遍?这样不是会有问题?

  • 128
    bitman

    @meixik 既往数据都没有修改,每一个交易都是追加

  • 128
    meixik

    @bitman 多谢解答。还有点疑惑, 账户余额也是不修改,继续追加吗? 那余额也是要遍历所有区块才能算出? 余额不是记录当前实际余额的?

  • 128
    hwancha

    我听说以太坊的开发者之前介绍,希望大家不要将以太坊看作是投资项目,而是将它当作是一种付款方式。这个新闻靠谱么?