不管是链圈,还是币圈,你都应该了解矿工、加密货币、矿池生态系统  liyuechun.org

2017-12-14 13:13:45 矿机挖矿Pao

所谓挖矿就是让电脑执行特定程序,迭代找出某个值nonce代入符合HashFunction(TXs+nonce)< TargetDifficulty的解来给自己「挖出」一些加密货币。Bitcoin用的函数是两次的SHA256,而Ethereum则是使用自己发明的Ethash算法。

挖矿的本质就像买乐透,尽管内存块奖励是先抢先赢,算力强的矿工也只是「较有机会」挖到矿,小矿工理论上仍能取得成比例的报酬。但随着全世界的人不断不断的投入资源、建置更多的挖矿设备,现在以个人之力挖到矿的机率已经非常非常小。

以Ethereum为例,一张中高阶显卡每秒可以做三千万次Hash,但挖到矿平均需要一千两百兆次的尝试(2017/7/16),算起来平均要1.26年才会挖到一次,普通矿工根本没办法承受如此不稳定的收入。

凭个人之力挖矿太看天吃饭,矿工们合起来建造了矿池。

 

基本上,矿池要解决的是矿工收入不稳定的问题,它把散落的运算资源整合起来一起挖矿,挖到之后再按照每个矿工的贡献比例分钱下去,概念上就像集资包牌买乐透,用众人之力把收入的机率分布摊平。此外,矿池负责维护节点运作,矿工可以专心在运算上,也降低了挖矿的成本,矿池则收取少量手续费。

理想的矿池和矿工之间的分工大致是这样:矿池藉由连接内存块链网络的节点接收交易信息,产生待打包的内存块广播给矿工,并分配每个矿工负责寻找nonce的范围。通常矿池会设定一个比较低的门坎,可能是实际target difficulty的1/1000000,矿工找到符合的nonce就回报给矿池,矿池验算后就记录为一个share,再用每个矿工提交的share估算贡献比例。因为矿工已经筛选出一些不错的nonce,矿池可以很容易的从中找出够小的值去符合真正挖矿的标准,层层过滤的过程和淘金矿倒有几分相似。

就像跟人包牌买乐透怕被独吞一样,难道矿池不担心矿工把可以挖到矿的nonce私藏,只把挖不到但符合share标准的nonce交出来混钱吗?答案是否定的,因为在开始挖矿之前,我们要先决定好的那个TXs交易纪录内存块里面,就会标示这个块的miner是谁,所以当矿工对着矿池给好的数据做运算,找出来的valid share就具有专一性,即使矿工真的找到某个符合Hash(“TX”+nonce)<TargetDifficulty的值想要自己私藏拿去领赏,最后仍是矿池会收到钱,这个矿工还会少一个share,理论上没有动机这么做。

阅读原文
标签:矿工 矿池 挖矿 nonce share 符合