MASS 首次技术 AMA 干货汇总:智能合约、二层插件、跨链均可实现
关于主讲人 Max
近几年Max一直在关注各类区块链项目的技术进展,去年通过 massnet.org 了解到了 MASS 项目,并且被它对于 PoC 的创新所吸引,是一位喜欢研究源代码的技术极客。
8个关于MASS 技术的问题
以下是从 MASS 中文社区收集到的关于MASS 技术的8个优质问题,Max 在活动中做了精彩的回答。
Tips: 加 Charles 为好友,ID:maixuanfeng2020,进入MASS 中文社区微信群
1. 为什么看好 POC?MASS 最大的技术创新点 & 目前的技术难点?
看好 PoC 的原因主要有4点:
- 公平性:在 PoC 共识算法中,容量空间的证明是分散的,一个矿工提供的容量证明和它所得的收益是线性相关的。矿工如果要想取得更多的收益,最好的办法就是进行容量的扩充。这样的挖矿算法使得 个体矿工和大型矿工可以平等的挖矿 。
- 安全性:良好设计的 PoC 机制能够 抵御 51% 以下容量的恶意节点 。
- 可扩展性:PoC 共识算法采用容量空间进行证明。所以硬盘完成初始化后,可以不耗费过多额外的资源来 为多条区块链提供容量证明 。
- 节能:已经完成初始化、处于挖矿过程中的 节点功耗相比于 PoW 有着数量级上的降低 。
MASS 的最大技术创新点在于,相比与 Burstcoin 等项目,重新设计了一套 更先进的 PoC 的共识机制 。MASS 的每条容量证明只需要从硬盘中读取几个字节的数据,同时还能保证 极高的安全性 。
看过 MASS 的 PoC 代码的朋友一定阅读过这一段代码:
这一段代码就是 MASS 最为核心的 Proof 验证函数,也就是容量证明。简单来讲,在 MASS 中,任意一条合法的 Proof 都应当满足:
已知:P 函数能够将值域 Nx 中的数映射到值域 Ny,F 函数能够将值域 (Nx, Nx) 映射到值域 Ny,且两个函数均无法实现逆运算,也就是说知道结果,无法反推输入。
(1)Proof 由 x, x', bitlenth三个部分组成,在验证的时候,首先用 P 函数,计算出 P(x)=y, P(x‘)=y’,此时,y 与 y‘ 满足 BitLength 比特长度下的比特翻转关系。(例如:100110 <-> 011001, 这两者就是BitLength = 6的比特翻转关系)
(2)然后使用 F 函数,用(x, x‘)作为输入,计算出 F(x, x‘) = z ,z 和链的业务逻辑中得到的随机数 challenge,二者用 BitLength 截断后,得到的结果相同。
这两条规则就完成了容量证明。玩过 MASS P 盘的朋友一定注意到,MASS 在 P 盘过程中会先后生成 A、B 两张表,就分别对应了上面的 (1) (2) 两步。在这样的设计下,任意一个容量为 32GiB 的空间,仅仅只需要从 B 表中读取总长度为 8 字节的数据,即可证明自己 32GiB 的存储能力。
相比以往的 PoC 算法,这种设计是一个巨大的进步。因为 MASS 的 Proof 数据结构不仅将矿工的磁盘读取压力降到极低,还使得普通节点验证 Proof 只需要几次哈希计算。所以,MASS 能做到兼具公平、安全、可扩展、节能四个特性。
至于技术难点主要集中在跨链领域,后面会具体讲到。
2. MASS 如果实现智能合约困难么?需要硬分叉么?
MASS 的交易结构中包含了一个特殊的字段:Payload。我认为该字段的引入是为了方便包括智能合约在内的多种应用的实现。
我们都知道,以太坊的账户模型包括:Nonce,Balance,CodeHash 和 StateRootHash。其中 Nonce 用于防止重放攻击,Balance 用于记录合约的 Ether 余额,CodeHash 用于索引合约的操作逻辑,StateRootHash 用于索引合约的存储状态。
MASS 可以通过引入新的 OpCode,解析 Payload,以支持与 EVM(以太坊虚拟机) 类似的、特殊设计的智能合约虚拟机。
这样的改变大概率是需要社区达成一致意见,通过硬分叉来达成的。
软分叉不是不可以,但是老节点的安全性可能会被削弱,硬分叉可能是更好的选择。
当然无论如何改变,首先还是要综合考虑硬分叉后的交易吞吐量与普通用户运行全节点的难度。二者间需要取得一个平衡点。
如果真的有非常复杂且必要的需求,甚至可以单独设计一条由 MASS 驱动的并行链,让它来运行智能合约,也能够满足需求。
3. MASS 引擎上可以发平行链,和 Polkadot、Cosmos 有什么区别?您觉得 MASS 想做一个什么样的生态?
官网上的信息显示,MASS 在设计之初就是为了支持多条区块链并行运行,并且实现链间交互。
这个跨链协议与 Polkadot 和 Cosmos 有一定区别,MASS上的链独立性更强。
在第一个问题中,可以看出 MASS 的设计减少了矿工节点对于磁盘的压力。因此,对于 MASS 体系来讲,完全可以在矿池层面支持多条链的并行运行。
我认为这样设计的好处在于能够在减少额外耗能的前提下做到专链专用。例如 MassNet 本身是基于 UTXO 模型的,而有一些业务逻辑更适合 Ethereum 的账户模型,那么就可以由社区组织开发基于 MASS 共识的账户模型链。通过将不同的业务分散到几条细分领域的链上运行,而不是尝试用一条链包容万物,我认为这样更有利于整个生态的发展。
根据目前 MASS 项目的文档和代码,我合理猜测最终 MASS 的生态会呈现出:
(1) 矿工网络共同组成基于 MASS PoC 的 Layer 0 共识层;
(2) 多条具备不同数据结构的链并行运行,组成 Layer 1 数据层;
(3) 基于跨链协议的链间交互,组成 Layer 2 应用层。
4. MASS 的源代码用 Golang 有什么优势?
Golang 在开发效率和运行速度的取舍中处在一个相对比较平衡的位置;可以在节省大量开发时间的同时,保证性能够用。
同时大量使用 Golang 语言开发(包括 Hyperledger Fabric, Ethereum, Filecoin, Btcd 等)的区块链项目的存在,又进一步促进了 Golang 编写的区块链工具包的繁荣。所以一些新的区块链项目也往往倾向于使用 Golang 来进行开发。
此外,跨平台、易于部署也有非常显著的优势。假设有朋友想在树莓派上运行 MassNet,但是官网没有提供相对应的二进制,那么他也可以下载代码,在不修改代码的情况下编译 linux/arm64 版本的二进制,将它丢到树莓派上就可以运行了。
总结一下就是:
- Golang 在开发效率和运行速度的取舍中处在一个相对比较平衡的位置
- 区块链领域的开发者群体大
- 有丰富区块链相关的开源工具包可供使用
- 跨平台、易于部署
5. MASS 如果未来有硬分叉,那会是怎么样的?
MASS 如果进行硬分叉的话,技术上将与 Ethereum 的实现方式类似。
如下图的伪代码显示,假设我们从高度 1,000,000 起增加一些操作码,以支持更好的智能合约表现;但是如果在分叉高度前出现了新的操作码,就认为该交易脚本无效。那么在代码中就会体现为类似的函数:
这里正好可以扩展一下软分叉的问题。我们都知道 Bitcoin 的软分叉是有一套完备的流程的,例如矿工可以通过修改区块头中 Version 字段的某些比特位来对相应的提案进行投票,如果连续同意的区块数量达到一定阈值,则软分叉就会被激活。
在 MassNet 中除了区块头和交易区,还额外设计了一个提案区(ProposalArea)。每条提案都包含 ProposalType 和 Content 两个字段。现在的代码中规定,ProposalType == 0 和 ProposalType == 1 分别代表惩罚提案和惩罚提案占位符。而 ProposalType >= 2 则被解析为任意消息、不会进行验证。这正是一种可以兼容软分叉的做法,未来 MassNet 可能会新增一些提案类型,用于矿工的软分叉投票。
6. MASS 现在共经历了几次减半?
MASS 目前已经完成了第五次减半。它的减半周期机制是:每次的减半间隔是前一次的两倍。
所以 MASS 分别在区块高度 13440,40320,94080,201600,416640 进行过减半。下一次的减半高度就是 416640 + (416640 - 201600) * 2 = 846720。
如果有人对减半相关代码感兴趣,可以去 GitHub 看一看。
7. MASS 的愿景是作为提供可以聚合其他 PoC 链的底层共识机,这个愿景在代码中可以体现出来了么?
目前 MASS 的 PoC 核心代码都位于 MassNet-miner 工程下的 `poc` 目录。
通过研究 `poc/engine` 目录,可以发现 MASS 将相关的 PoC 引擎封装为了三层结构,分别是:MassDB,SpaceKeeper 和 PoCMiner。
它们的定位分别是:
- MassDB:Proof 的生产者,储存 Proof 的容器。
- SpaceKeeper:Proof 容器的管理者,可以根据不同的区块链上下文,为 PoCMiner 提供所需的 Proof。
- PoCMiner:Proof 数据的消费者,能够根据开发者定制的逻辑,生产新区块。
MASS 共识下,多条链聚合共识,在 MassDB 这一层是完全一致的,因为用的是同样的共识层。不同之处在于,根据不同链的策略,在Spacekeeper 这一层有不同的查询方式,同时在PoCMiner这一层有不同的区块生产规则。
总体来说,三层架构已经体现了聚合愿景。与此同时,在 MassNet 的区块头结构也体现出了其计划的对于多链的支持,请看:
每一个 MASS 的区块,都记录按照统一的计算规则得到的 ChainID。MassNet 的 ChainID 是 "5433524b370b149007ba1d06225b5d8e53137a041869834cff5860b02bebc5c7"。相信这个 ID 正是为了多条链并行运行方便而设计的。
8. MASS 的矿池支持多挖是容易的么?
先说结论吧:比较容易。
在上一个问题中我们已经看到了 MASS 的 PoC 引擎分层设计。可以看出来,不论是哪一条基于 MASS 引擎的链,在 MassDB 层是完全一致的。
SpaceKeeper 层往往涉及少许与区块链上下文相关的信息,但基本的 MassDB 查询逻辑仍然是相同的。
至于 PoCMiner 层,则是根据不同链的挖矿策略自行定制。
总结来说就是,MASS 矿池如果需要支持多挖的话,需要定制 PoCMiner 的逻辑,微改 SpaceKeeper 的逻辑,不需要改动 MassDB。总体来说,支持的难度是可以接受的。
媒体提问
火星财经:从矿工生态角度看,ETH 升级到2.0,1.0 的矿机会变得不适用,另外,BTC 减半后可能会有矿工被淘汰出局, 这些产业中的变迁,会利好 MASS 生态吗?
从现在的以太坊 1.0 转向以太坊 2.0 是一个巨大的工程,其共识机制将由 POW 转向 POS。伴随着共识机制的转变,以太坊挖矿的方式也将发生巨变。现在以太坊 1.0 矿工所使用的 GPU 矿机,常见的包括 GTX1060 、GTX1070 和 GTX1080 等,大多价格昂贵且能耗过高,而以太坊2.0的挖矿将不再需要强算力作为保证。所以,大量以太坊矿工的挖矿硬件需要一个合适的去处。
而 BTC 减半后,有相当一部分矿工因为“电费/收益”比过高被淘汰出局。这些矿工除了 BTC ASIC 矿机外,还拥有包括厂房、机架、电源、网络等硬件设备,这些硬件都是可以复用的。
对于 MASS 来说,以太坊所淘汰的 GPU 设备恰好可以用来进行MASS P 盘。BTC 矿工的专业硬件设备,可以追加购买硬盘后进行 MASS 硬盘挖矿,相比 PoW 来说,它的挖矿能耗是极低。
目前 MASS 的网络容量是 200 PB 左右,我认为对于以太坊和比特币矿工依然具备很强的吸引力。PoW 矿工转投 PoC,将促进 MASS 的网络安全性。
星球日报:MASS 的 RoadMap 是什么样的,从 GitHub的更新上来看,项目是否如期推进?
MASS 的 RoadMap 可以在官网上看到,简单的总结如下:
- 2018 年 5 月 至 2019 年 3 月:MassNet 原型网络开发。
- 2019 年 9 月:MassNet 全节点发布,主网上线。
- 2019 年 11 月:封装并发布 MASS 共识引擎。
- 2020 年 2 月:研究并发布 MassNet 二层网络插件。
- 2020 年 6 月:研究并发布 MassNet 跨链协议。
从Github 代码来看,2018年到2019年11月的路线图都如期完成。
2020年的路线图计划包括,二层网络的插件(比如比特币的闪电网络),跨链协议(比如 Cosmos 采用的跨链协议),目前来看这两项在 Github 上还没有明确体现。但由于共识引擎已经发布了,在并行上已经有了完备的准备。
我猜测 MASSNet 可能正在进行内部开发,市面上越来越多同类型链上线,能看到应用场景的不足和优点,通过学习和改进,可以发布一个更完备的协议。
自由提问
群TV :为什么P好的文件可以压缩呢
https://docs.massnet.org/en/basic-concepts/plot-algorithm/
矿工的意义是什么?项目发展对矿工盈利有什么好处?
矿工的意义是通过存储更多的容量数据,保证 Layer 0 共识层的安全,更加安全的共识层能够吸引更多的业务层应用,矿工也可以在并行挖矿过程中,得到多条链的 Token,提高盈利。
你觉得MASS啥时候涨,能涨多高?
这个我没办法预测,只能说从技术的角度来看,MASS目前的一些经济机制还没有开始发挥作用,例如绑定还没有真正展开。
从技术角度看,全节点挖矿还存在不足,比如绑定的工具还不太方便,这导致绑定机制没有办法很好的展开。
小麦和mass是什么关系
MASS 是一个开源的项目,任何人都可以参与,目前参与到生态里的有小麦、HPool、Ypool、Wepool,交易所有抹茶,他们都是MASS 生态的支持者。
MASS从技术上来说本身就有很多创新点,随着更多机构涌进,会让市场更加公平和稳定。
致谢
感谢 Max 精彩的分享!
本次活动由MASS 中文社区主办,小麦空间 MASSfans HPOOL YPOOL HelloPool 联合举办。
感谢媒体的支持:金色财经 星球日报 链节点 链闻 火星财经 深链财经 区块律动 winkrypto LONGHASH(排名不分先后)
感谢币扑和群 TV 提供的同步直播支持。
未来 MASS 中文社区将开展更多社群活动,欢迎关注公众号,加入微信群(ID:maixuanfeng2020)。