近年来,以太坊作为公链领头羊,生态项目蓬勃发展,与此同时,即使经历了一系列的技术优化和迭代升级,以太坊仍然面临着一个最为长久且尚未解决的难题:由于状态数据规模不断增长而带来的问题。
状态数据不断增长所带来的直接影响是区块大小将不断增大,导致全节点需要储存的数据越来越多。根据Etherscan.io的最新数据显示,当前以太坊全节点的存储数据大小已达到了796GB,而在一年前,该数据为360GB。
Mina Protocol是由旧金山区块链创业公司O(1) Labs开发一种轻量级区块链协议,旨在成为数据恒定大小的新型Layer 1区块链。O(1) Labs 提出了一种新型的区块链存储和验证机制,该机制限制并保持了Mina网络数据的大小——仅有22k,同时它可做到快速验证区块链状态,这意味着用户通过手机就能够运行一个Mina全节点。
从2017年项目成立至今,Mina Protocol先后获得了Coinbase Ventures、MetaStable、Polychain Capital、Three Arrows Capital、HashKey Capital、Fenbushi Capital等顶级机构的投资。
5月31日下午2点,Mina亚洲技术大使姚翔做客链节点进行AMA,回答社区提问。以下内容是对本次AMA的精彩内容整理(全部内容):
问题1:Mina公链的定位是什么?对标的是以太坊这种底层基础公链吗?
姚翔:Mina给自己的定位是,一条轻量级公链,可以帮助互联网世界和密码学世界链接。Mina目前刚刚主网上线,其上的应用Snapp(零知识证明驱动的应用)还需要时间去打磨。等开发者工具成熟后,结合示范应用,开发者们就可以尝试在其上建立包括DeFi在内的各种应用。
“瘦身版以太坊”只是一个帮助大家理解Mina特性的说法,实际上Mina无意和其它公链对标,一是Mina确实在做不一样的事情,二是目前Mina刚刚上线,不适合和已经成熟运行多年的系统相比。
问题2:Mina核心技术有哪些?Mina轻量级区块链协议技术可以引入并兼容改造现有公链吗?
姚翔:Mina的核心技术主要是递归零知识证明和其驱动的应用。Mina轻量级区块链协议技术使用了最新的密码学进展,这是开放的技术栈,任何公链都可以使用,但目前只有Mina在协议层极致使用了它。我相信其它公链也会逐渐采用这一技术,但在已有的协议栈上进行迭代,要比从一开始就这么做要困难得多。
问题3:Mina公链的Ouroboros Samasika共识机制的特点和优势是什么?和常见的POS共识机制有何不同?
姚翔:Mina 使用了 Ouroboros Samasika 共识算法。该算法是对 Ouroboros 系列算法的改进,而后者是最早实现可证明安全的 PoS 系统之一,被密码学界认可。要想了解算法的全貌,推荐阅读 Mina 的技术白皮书。
在这里我简短介绍一下 Ouroboros Samasika 共识算法的核心特征:与许多 PoS 算法不同,它不是一个类 BFT 的算法,这带来很多好处。
首先就是对参与共识的节点数量没有限制。类 BFT 算法,以 Tendermint 为例,由于网络通信的复杂度,必须限制参与者的数量,一般不能超过几百个。而 Ouroboros Samasika 则对参与共识的节点的数量没有限制。
其次,节点可以动态进出。大部分 PoS 共识协议对节点的在线时间都有要求,并对掉线者进行惩罚,这大大提升了运行节点的门槛,反倒让网络面临被攻击的风险。而 Ouroboros Samasika 则允许节点随意进出。而出块的公平性是通过 VRF 算法以及「epoch」机制来实现的,在每个 epoch 内根据 “质押数量” 完成对共识节点的公平抽样。
第三,自举性,节点只需要依赖简单的规则就可以判定「哪条链」是合法的,而不需要依赖外界信息的指引。大多数 PoS 算法存在长程攻击和 Nothing at a stake 的问题,需要引入 “弱主观性” 来对链的合法性进行判定。而 Ouroboros Samasika 则主要使用 “最长链规则” 来应对短的分叉;面对针对历史的攻击,当节点面临长的分叉时,可以采用特殊规则,即比较简洁的摘要(可以理解为区块链的状态的摘要),由于攻击者很难在短时间内计算足够的零知识证明,这保证了区块链很难被分叉。
第四,与 Mina 区块链的简洁性相辅相成。简洁的区块链夯实了去中心化的基础,而共识算法的上述特性则没有引入新的高集中化程度的组件或假设,最大程度的保障了区块链的无需信任的程度。
问题4:能说说Mina节点的架构吗?
姚翔:Mina中的所有节点都是全节点。可以这么理解,区块生产节点负责执行共识,并选择打包网络中的交易,零知识证明提供商我们一般称为『Snark工作者』,它负责为区块链的状态变化提供零知识证明,并向区块生产节点销售这些证明,或者说是区块链生产节点向Snark工作者购买这些证明。而存档节点提供的是过去历史数据。
要想获取和验证当前区块链的状态,不需要存档节点。只有当你需要查询历史交易,或是过去某个特定时间点时区块链的状态时,才需要存档节点,因此它保存的不是所谓的『核心数据』,去中心化程度取决于全节点的数量,而非存档节点的数量。目前存档节点的运营状态我没法给出准确的介绍,但Mina 基金会和所有浏览器的服务商都会运行存档节点。
问题5:Mina公链中,将应用称之为Snapp,相比较其他公链上的Dapp,会有什么不同?优势体现在哪?
姚翔:在 Mina 上开发的应用称为 snapps,即零知识证明驱动的应用。链下计算,链上验证的范式转移使得 snapps 天然具备几个优点:
1. 在无需披露数据的情况下验证数据的完整性;
2. 简洁地验证计算成本昂贵的运算的正确性;
3. 良好的伸缩性。以太坊上的 dapp 要求每个节点(上万个)都对业务逻辑进行执行,这是极其低效的,而 Mina 上的应用只需由某个节点执行一次业务逻辑,其余节点只需要验证正确性即可,这是很大的效率上的提升。
实际上,我们欣喜地看到,以太坊上的 zkRollup 也是采用了同样的思路,即运用零知识证明来构建链下计算、链上验证的更具伸缩性的系统。不过,目前 zkRollup 仍然受以太坊主网性能的制约。
可伸缩性不仅仅是吞吐量的提升,而是可以显著改善设计理念,不需要再受当前智能合约框架的束缚。我们可以充分利用当前互联网的基础设施,例如使用 https 的证书机制、电子邮件的可验证性,让更多的数据安全可靠地与区块链建立连接。这样,区块链上的应用会变得更加丰富,而不仅仅局限于 DeFi 等较窄的领域。
Snapps 为 Internet 隐私和数据安全性带来了新的可能性。使用 Snapps,Mina 提供了一个无缝网关,用于将密码学世界与现实世界安全、隐私地连接。
问题6:Mina公链主网原生币代币的经济模型是怎样设计的?
姚翔:MINA 是网络的原生代币。它用于支付区块生产者和 SNARK 生产者(即计算零知识证明的角色)费用,并可用于在权益证明共识算法中进行质押,赚取 MINA 代币的奖励。 MINA 是一种没有供应上限的通胀货币。做出这个决定是为了激励协议早期的高质押率,这将提高协议的去中心化程度和安全性。由于质押是对协议上的所有持币者开放的(没有被罚没的风险),任何代币持有者都能够质押或者委托给其它节点,以防止被通胀稀释。