石榴矿池李白:Chia核心原理介绍

[复制链接]
18463 |1
发表于 2021-5-6 16:00:07 | 显示全部楼层 |阅读模式

wk588_com_gphykpae5vl.jpg

wk588_com_gphykpae5vl.jpg


本期视频主要和大家分享一下当前火热的项目Chia。由于市场情绪高涨,硬盘价格暴涨甚至被矿工们抢至脱销。在这疯狂的背后,大家也面临着新兴事物的出现而带来的信息不对称。

一直以来,石榴矿池秉持着“公开·透明”的区块链精神。本期视频李白将为大家详细解析Chia的核心原理,为大家揭开Chia的神秘面纱。


Chia背景


Chia(奇亚)官网:https://www.chia.net/

区块浏览器:https://www.chiaexplorer.com/

Github源码库:https://github.com/Chia-Token

绿皮书:https://www.chia.net/assets/ChiaGreenPaper.pdf


P盘


Chia的封装过程,俗称P盘(英文Plot),它的输入主要是一些随机数(输入数据量很小,几乎没有数据),配合farmer和pool两个公钥,经过1-4个阶段的Plot过程,最后输出101.3GiB的Plot文件。

从这个过程可知,Chia设计之初就不是为了存储,这是其和FIL的最大区别。Chia标榜是btc的替代品,主要还是起到了去中心化记账,数字货币的作用。但和btc的主要区别是:btc中比拼的是算力,而Chia比的是硬盘,硬盘多,存储空间大,获得代币的概率就大。

综上所述,我们知道:

  • Chia没法存储数据
  • Chia封装无时间要求
  • Chia封装对硬件要求更低:近5G内存要求
  • 少量线程、高频率、高IO
  • 暂时无法通过显卡加速


P盘硬件


Chia挖矿对硬件的要求较低,但由于Chia挖矿过热以及信息的不透明造成相关的硬件价格涨幅过高。其实从整体分析Chia P盘的硬件选择是非常宽泛的,建议矿工们从性价比的角度去理性选择,以下是石榴矿池对其硬件相关条件的总结,仅供参考:

  • 高频率的CPU
  • 高IOPS的SSD

(1)332GiB的临时文件

(2)1.6-1.8TiB的SSD写入

官方硬件推荐:https://github.com/Chia-Status/chia-blockchain/wiki/Reference-Plotting-Hardware


由于硬件价格相对便宜,入场门槛较低,使得Chia全网算力增长更快。而在Chia的挖矿中,硬盘的支出占比高,P盘封装机占比少,大家可以根据硬件市场情况灵活选择高性价比的配置。


Plot文件结构


一个Plot文件包括:

  • Plot ID
  • Farmer public key(矿工公钥)
  • Pool public key(矿池公钥)

wk588_com_2tsjwvn2wux.jpg

wk588_com_2tsjwvn2wux.jpg

 爆块


从上文可知,Chia产生的文件数量很大,算力很容易达到1P。在Chia挖矿中,没有Window Post,只有Winner Post,所以即使是存储丢失也不会造成惩罚,而且也没有前置抵押,因此门槛较低,整个过程中只有爆块。

Chia通过两轮的筛选得到出块权,尽可能减少数据读取量:

  • 根据Plot ID 筛第一轮


wk588_com_qwhxg5bocd3.jpg

wk588_com_qwhxg5bocd3.jpg

  • 根据一个叶子筛第二轮(需要做七次寻址操作,大约70ms时间):


wk588_com_0fswkh524pr.jpg

wk588_com_0fswkh524pr.jpg


 经过以上两轮,矿工获得了Winner。在此基础上读取完整数据并生成证明:

  • 读一个满二叉树
  • 64个叶子


wk588_com_1zhqj05wrqq.jpg

wk588_com_1zhqj05wrqq.jpg


 Timelord


Chia爆块的第一个输入Challenge是一个随机数,在链上每10S产生一个,并且提前不可知。在FIL中是通过Drand服务去得到随机数,而Chia中是通过VDF得到。

VDF的特性:

  • 计算难验证易
  • 计算时间恒定难以优化
  • 优化后可以影响爆块率

wk588_com_2xyxffsqyqs.jpg

wk588_com_2xyxffsqyqs.jpg

(VDF实现图)

Timelord是用来跑VDF,产生Challenge的。一定程度上保证只有在规定时间内才能获得下一个Challenge。如果矿工跑VDF的速度远快于官方,将能提前知道Challenge,这将影响挖矿的爆块率,否则没有必要启用Timelord,矿工可直接在链上的广播中获得Challenge。


区块签名


Plot文件生成时需要绑定Farmer公钥和Pool公钥,来表示算力归属。出块时要用两个私钥进行签名:

  • Farmer决定7/8的收益
  • Pool决定1/8的收益


wk588_com_eonffsv3ex4.jpg

wk588_com_eonffsv3ex4.jpg


 以上可知,官方在设计之初已强制将挖矿收益以一定比例分配给矿工和矿池。回到矿池平滑分账的本质,正常情况下应该将挖矿的所有收益全部给矿池,然后矿池再进行平滑分账,以确保加入矿池的矿工收益。从Chia出块的私钥签名设计可知其离矿池本质还是有很长的距离。

在P盘过程中产生的Plot文件需要立即绑定Farmer key和Pool key,也就是说这样的算力文件的归属权是不能更换的,在P盘的过程中就已经决定了这份算力文件属于谁,只有谁的签名才有用,才能获取收益。这在常规意义的矿池中是不符合逻辑的,如果算力归属不能更换,假设三种情况:

  • 如果矿池独享私钥,则任人宰割
  • 如果共享私钥,则存在风险
  • 如果一边持有一个私钥,则达不到平滑收益的目的

Chia矿池方案目前还不完善,官方也在博客中提到:等到开发完Chia转账将进一步完善矿池方案,这也是官方下一阶段重点研发的方向。所以现阶段市面上的矿池方案可能都存在一定的风险,或是无法真正达到矿池平滑分账的目的。


分叉攻击


上文提到,如果矿池和矿工共享私钥,则可能存在分叉风险,下面具体聊一聊。

分叉是指:在非PoW的区块链里,矿工可以在同一高度产生多个block。

在以太坊2.0或者FIL中,如果矿工在同一高度产生两个Block,将会受到质押惩罚。

在Chia中,它将一个block拆成两部分:Trunk+Foliage。Trunk包含了block中的关键数据,当矿工获得出块权时,Trunk是已经确定不会再改变的,而Foliage是可改变的。此时如果发起分叉攻击,Trunk是无法改变的,只能攻击Foliage。这样相对保护了链的稳定性。

但是如果Farmer key泄露,将存在产生另一个Foliage的风险,此时链上就面临了分叉攻击。但是目前分叉攻击只会影响收益,不会影响共识。


总结


(1)P完的盘永久绑定Farmer Public key和Pool Public key,决定收益的归属,无法更换。

(2)通过优化VDF计算速度,爆块环节存在优化空间。

(3)矿池很重要,因为分散式的挖矿,平滑收益是急切需求。

(4)目前没有靠谱的矿池方案,但官方会作为研发重点。

(5)整个项目数学层面扎实,应用设计上还有所欠缺,期待后续迭代。


 评价


基于以上,石榴矿池李白对Chia的评价:

  • 有史以来第一个没实现转账功能就上主网的链
  • 也是有史以来第一个逻辑不严谨就能达到如此高度的链
  • 有重要的意义

(1)节能

(2)Proof of Hardware

回复

使用道具 举报

发表于 2021-5-7 11:09:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表