AE中国

Aeternity:命中注定的Bitcoin-NG

刘少 发布于 2019年11月07日 阅读 3,430 本文共4887个字,预计阅读时间需要13分钟。

来源 | Medium
作者 | Aeternity
翻译 | Tracey(First.vip)

Michal Zajda解释了aeternityBitcoin-NG协议是如何融合的,从而交付一个实现用户体验和技术飞跃的区块链。

本文由aeternity区块链架构师Michal Zajda撰文。

Aeternity是一个新兴的公链,Aeternity团队亲手设计了Bitcoin-NG协议并实现了全节点,打造了一座aepp生态系统。在下一代aeternity区块链将会增加协议级预言机、状态通道、一个强大且安全的虚拟机、域名服务以及快速共识协议。

本文描述的是aeternity团队实现区块链共识系统,实现目标的过程。

本系统基于中本聪共识和Bitcoin-NG协议,Aeternity大大缩短了交易确认延迟。

 image.png

最初的æternity

æternity的代码是从零开始设计和编写的。目前的代码基于2017年夏末设计的原型版本,用Erlang/OTP实现了全节点。团队成员来自世界各地,都擅长分布式编程,在构建金融系统、大型聊天应用、在线市场、以及Erlang社区中流行的一系列框架等方面,经验十足。

这些技术适合处理和服务于分布式系统中的应用程序。

目前的aeternity

Aeternity的计划是在原来区块链的基础上,在基础协议植入第二层解决方案,为用户和开发人员带来流畅的体验。由独立的rest调用和合约调用提供的本地交易范围包括:

· 任何人都可以注册预言机、提出请求-响应格式、定价,并为链上的参与者(包括合约)提供数据

· 任何基于哈希的地址都可以注册为人类可读的字符串并用于组合交易。

· 为了提高可扩展性和隐私性,aeterntiy引入了完整的链下状态通道,用强大的有限状态机处理复杂的状态通道交易。双方签订协议打开状态通道、交易、解决纠纷/结算,并确保网络中断或一方恶意攻击等极端情况下,在链下状态机那里可以解决问题。

· 为了满足普遍需要,aeternity实现了广义账户,这是一种用于控制账户、限定自定义逻辑的方法,也是另一种对钱包花费的算法授权或限制方式。在最近一次(同时最后一次)代币迁移硬分叉期间发挥了效用。我们可以将所有遗忘或冻结的代币(以太坊初始合约中的ERC20代币)转移到aeternity上,分配给原代币主人。这点要感谢我们实现了以太坊授权方案中的广义账户。

以上几点,都是由FATE虚拟机支持的交易类型,借由Sophia语言合约访问。虚拟机和Sophia都优化了区块链设计,增加更多的功能,降低了运营成本。两者吸收了早期区块链平台和语言遇到的问题,具备更高的安全性。作为一种高级虚拟机,FATE运算的是交易等区块链原语。因此具备高性能,同时保证低成本。

更多文档资料和示例请查看文档汇总

入门

首先,我们要先了解区块链的基础功能。

早期全节点是由比特币协议实现的。因为Erlang是一种以组件导向的技术,可以逐个优化子系统,于是我们采用了Erlang。点对点网络和节点不断演变,于是,我们开始思考改变和提高性能的重要性。于是最后,我们开发了受协议保护的完整功能集。

当前所有新功能都在接受50个节点的公测。在已发布的版本中,这些新功能还被部署到拥有1.6万个平级节点的主网络。每个版本都会经过多层测试:单元测试、集成测试、系统测试(使用docker容器模拟网络),强大的快速测试框架(为组件API生成随机提要)。

工作量证明

设计的一个关键点是,aeternity的去中心化。工作量证明是一种最适合保护开放、公开、无需许可的区块链共识的方法,于是我们采用了布谷鸟(Cuckoo Cycle)算法来实现工作量证明。布谷鸟算法是一种新型的内存密集型PoW算法,它的工作证明成本低,证明只有42个整数。过去两年,布谷鸟循环在PoW场景应用非常活跃。ASIC实现了超出预期的灵活性和生命周期,GPU匹配了更复杂的运算,同时提高了并行度。我们会在另一篇文章中,讨论工作量证明是支持去中心化区块链的最佳方式。

 image.png

共识:Bitcoin-NG遇到Aeternity-NG

区块链社区经常会把共识算法搞混。共识以及保护共识的方法不仅在技术上面临挑战,同时也是我们供应给终端用户的产品的核心。共识能确定交易是否可信,能确定协议更改是否由部分群体控制。在aeternity中,所有的需求变化都围绕用户的独立性、去中心化和自由交易而生。

过去几年,在中本聪系列共识设计和拜占庭算法适应性不断突破。从单一区块链,到DAG、网格、信任分层架构以及实用拜占庭容错,提供了多种解决方案。当增加PoW、PoS、时空、时间证明等,解决方案更多了。通过反复检查和审视自己的目标,以及衡量这些解决方案的成熟度,我们逐渐明朗:要达成目标,就要采用中PoW来验证一个不可信环境。

如何在一个移动、中心化、实时的世界,解决延迟10分钟确认的困局?

康奈尔大学的学者和Bitcoin-ng论文为打破困局带来了一丝希望。【Bitcoin-NG:一个可伸缩的区块链协议,来自Eyal、Gencer、Sirer、Renesse 2016年的研究】。

Bitcoin-NG是一种新型的支持中本聪共识的方式,基于PoW筛选临时领导人,然后由这位领导人打包区块。在一个区块的时间里确认这些交易,只需几秒即可!

PoW的区块链结构有两个运算阶段。一是用关键区块来选举领导人,二是用微块保存交易。

Bitcoin-ng论文中描述了新链结构和加密经济激励策略,涵盖审查、矿权和公平等问题——所有这些都是区块链平台所必需具备的要素。最具挑战性的是,分叉和微分叉的推理和执行。需要好几个低级区块实现迭代,以及与诸如mempool或区块候选生成器之类的交易处理组件通信方可实现。我们还调整了欺诈证明机制(Proof-of-Fraud)。经过严格的测试之后,耗时6个月才发布到主网,为我们带来了真实世界的数据和惊喜……

学术碰撞现实

2018年11月27日晚上12点,Roma版本激活,创世区块中的ERC20代币集分叉aeternity原生代币。

我们调整了工作量证明,每3分钟挖出关键区块,领导人发行微区块的速度低于3秒。每个微区块可以容纳600万燃料(由于虚拟机的初始实现是基于改进版的EVM(以太坊虚拟机),每15秒确认以太坊区块中的800万燃料,相比之下,FATE虚拟机具有更大的优势,它能处理更多的燃料)。

也就是说,在5-10秒的网络直径中,每个关键区块会产生一个微块分叉(分为3个微块)。这属于一种预期的、健康的行为。

我们的同步和gossip协议有两种模式:正常模式和轻模式。轻模式下,gossip协议只传播交易哈希,让微块更轻更快。一个未经确认的交易被平级节点看到的可能性很高,验证的失败率非常低。

论文中预计的网络吞吐量理论极限是100tx/s(根据微块大小和容量计算而来),aeternity协议的吞吐量极限在理论上会稍微高于100xt/s,毕竟每3秒释放一个微块,每个微块能容纳300-400笔交易。同时,准许用户独立交易和合约调用,两者共用一个燃料分母。

最初的实现吞吐量低于50 tx/s,而且没有任何备份。现在通过优化mempool或gossip等组件,进一步提高了速度。

网络行为也离不开加密货币的经济激励。我们设计了一条在最初24个月内回报非常高的通胀曲线(第一年20%,第二年10%,第三年下降到5%,第四年下降到3%)。

最初我们假设的是网络和算力稳步增长,结果出乎意料,算力在短短几天内大幅上升,导致个人电脑和小型挖矿设备淘汰出局(最优卡是1080Ti和2080Ti)。用户对于没有机会参与挖矿感到失望,同时我们接收到了关于未确认交易和分叉的报告。

问题1

出现出乎意料之多的分叉,经过检查,发现网络成员较多,但连接数异常稀少。阻碍了关键区块的广播。我们不得不改善(简化)文档,并鼓励用户使用公共IP。

问题2

分叉较少,但微分叉时间变长。微分叉是链的一种特殊状态,是由于关键区块的矿工追随了由当前领导人释放的旧微块,如果间隔很短,没什么大碍,但我们观察到微块中包含10个区块。于是我们投资了即插即用技术,改善网络。

主网发布后不久,社区和核心团队实现了对多种GPU矿机的支持。难度进一步提升,用户可以重新控制大量算力来挖矿,目标调整也会导致矿池的诞生。

问题3

矿池带来了全新的活力,它们基于自定义的层协议和闭源挖矿客户端。我们发现再次出现了微分叉时间变长的情况。但不影响确认时间,因为即使交易被隔离在一个分叉中,也会被新领导人快速重新确认。但在一定条件下会危及节点的稳定性,这无疑是一种不健康的行为。

层的暗角

我们发现,矿池几乎每1分钟刷新一次关键候选区块,也就是说会造成20个区块的微分叉间隔。1分钟占比3分钟关键区块生成时间较大比例,关键区块生成时间差异很大,说明矿池会将交易踢给下一代验证。

Aeternity的计划是培养两个矿池,使矿池形态多样化。这个工作正在部署当中,目前主要是三大矿池挖矿,其中两个占用95%的算力。

另一个方案是aeternity的层服务器参考实现,以一个Bitcoin-NG友好的方式更新。代码比语言更简洁,它不仅可以编程,还可以激励矿池调整配置。同时,它还可能是去中心化框架的地基,由全节点组成矿池,取代现在的挖矿数据库。Bitcoin-ng将为普通用户提供生成微块的能力,而矿池将提供流动性。

为了更简洁,用数据来表示

 image.png

链上数据的线下分析

截至2019年4月1日,挖出了约6万个关键区块,下面是对大约10万笔交易的分析。

确认交易需要多少区块?如果这个数字大于0,意味着在大多数情况下,交易最终在一个微分叉中结束,并由下一代重写这笔交易。如果数字大于1,则表明有额外的延迟。

 image.png

问题是,第1代延迟与矿池行为有何相关性。1分钟的刷新时间是一个后代长度的33%(后代长度设定为3分钟)。一半以上的交易立即得到了确认。最高的确认延迟发生在网络不稳定影响了领导人交付交易的情况下,有些交易可能会等待错过的前领导人。

相当于百分比:

 image.png

另一个实验是分析微分叉的平均长度。这个很难计算,需要用一个“探针”监测选定的微分叉

一代,这就是分析的后代数量可能不同的原因。

 image.png

以上信息与以前的测量结果一致。大约33%的交易被重写到下一代(延迟时长为1)。现在,是29%的微块被重写到下一代。考虑到p2p网络的性质和监控方法的误差,33%和29%比较接近,足以证实我们的观察结果。

下图是一个微分叉长度分类(现在几乎是7个微块一代)。

 image.png

由于没有规定广播区块的最小数,导致很大一部分微块长度低于每代长度。在aeternity系统当中,沉默的领导人等同于比特币或以太坊中挖空块的矿工。

第二是因为币基奖励与交易费之间的巨大不平衡。比较年轻的区块链由于没有市场驱动,交易费过低。在最初的3个月里,最低交易费几乎为0。

综上,费用配置不均衡导致微块的链奖励极低,进而打击了最新微块的积极性。随着时间推移,微块的链会自我完善。

 image.png

其他数据

· 最大难度接近500万(备注:Nvidia 1080Ti卡上的布谷鸟循环需要0.3秒)。

· 迄今已确认的交易为470万笔。

· 最高交易率记录115tx/秒。

· 测试域名中的域名注册量达到50万笔。Lima硬分叉后的第一个域名和最后一个域名参与拍卖!

· mempool中交易的平均队列(等待确认数或垃圾收集数)2-3 笔。

总体而言,aeternity网络的稳定性较好,微分叉问题也将得到大力改进。由于Bitcoin-NG协议既简单又强大的设计,在实现解决方案时显著降低了技术风险,而且我们在配置中启用了内置的链监控模式。

在解决减少链上交易摩擦的同时,这些问题尚未影响用户的体验。领导人选举和领导人重新签署的复杂性完全隐藏在终端用户面前,完全不影响实时体验。

未来

未来主要是主存储库中正在开发的功能:https://github.com/aeternity/aAeternity:

· 支持零知识证明

· 改善广义帐户,支持委托支付

· 对域名服务中的任何数据类型提供支持

如果你喜欢这篇文章,打赏AE钱包:aechina.chain

喜欢 6
or

相关文章

更多

发布评论

共1条评论
    WordPress › 错误