我们很高兴地宣布IOST Testnet v2.0 Everest今天推出!
这是在2019年2月Mainnet发布之前的IOST Testnet的最终版本。由于这是Mainnet发布之前的最终版本,Everest 2.0非常类似,包含了Mainnet v1.0的所有基本功能。Everest 2.0已经开始被第三方开发人员利用并运行dapps。我们欢迎所有开发人员测试并运行IOST Everest v2.0!
Everest v2.0中有什么?
- IOST经济模型
- PoB共识
- 智能合约系统
- IOST虚拟机(IVM)
- 高性能存储层
- 分散的网络层
1. IOST经济模型
1.1资源抽象
如果我们考虑构成区块链网络的内容,该列表包括所有正在运行的节点/计算机,连接这些节点的网络以及每个节点处理和存储的所有数据。区块链上的每个事务都消耗资源,每个区块链都需要有管理这些资源使用的机制。
EOS网络将这些计算,网络和存储资源抽象为CPU,NET和RAM。在以太坊中,网络的所有这些资源都捆绑为一种资源--GAS。
要配置三个单独的资源会使系统变得复杂且难以使用。但是,拥有一个计算网络存储捆绑资源会使带宽和存储利用率非常低。
实际上,应用程序要么对CPU敏感,要么对存储敏感。计算和网络资源总是联合使用。因此,我们将计算和网络资源集成为iGAS,并相应地将存储资源重新设计为iRAM。我们的资源模型是双资源iGAS和iRAM模型。
通过使用iGAS和iRAM资源模型,我们提高了计算和存储资源的利用率,降低了用户的复杂性和障碍。
1.2交易调度模型
在最高费用优先服务(HFFS)模型中,交易由块生产者(或矿工)按其交易费用的顺序处理。当网络拥挤时,用户可以支付更高的费用来更快地处理他们的交易。
在First-Come-First-Serve(FCFS)模型中,交易由块生产者(或矿工)按其提交的顺序处理。如果网络拥挤,交易需要排队等待,并且可能会随着时间的推移而丢失。使用此模型,无法保证将处理事务。
在IOST事务调度模型中,我们使用HFFS模型而没有交易费用。当用户使用IOST令牌时,IOST会为用户生成iGAS,然后每天以稳定的速率生成。为用户产生的气体不会被稀释(在1.3中讨论)。用户可以自行决定使用iGAS发送交易并更快地处理交易。因此,在IOST调度模型中,用户可以拥有免费交易,还可以调整交易处理顺序。
不同区块链网络事务调度模型的比较
1.3没有资源波动
基于DPoS的区块链EOS面临着CPU危机。网络上的可用CPU波动很大,使EOS无法使用。
EOS的观察:
- 你没有使用任何资源,你的CPU被充分利用,突然间你无法做任何事情。
- 花费100美元购买CPU,在玩了几轮纸牌游戏后,你就没有CPU了。
这就是为什么出现了几个EOS令牌租赁服务,如Chintai,CPU Emergency,EOS Bank等,以缓解这一严重问题。
IOST使用不同的赌注方法。在IOST放样模型中,系统旨在使用户的可用资源不被稀释或波动。任何用户可用的CPU和NET资源都是稳定的。iGAS的生成率是固定的。1 IOST每24小时生成一定数量(目前为10,000)的iGAS。另一方面,EOS CPU生成速率从每24小时0.1到120毫秒的CPU时间波动。EOS CPU变化超过1000次,使用户体验难以预测。我们的固定利率生成模型使交易体验稳定。
2. PoB共识
IOST的一致性算法--PoB--包括比当前DPoS系统更分散的委员会选举流程,同时仍然保持可扩展性优势和审查阻力。我们的设计确保了投票和委员会形成过程,其中大多数节点都有资格进行块生产(而不是仅限于前几个节点),并且具有更多投票的节点被分配更高的生成块的概率。为实现这一目标,我们不会将投票结果作为选择的唯一因素。相反,我们引入了一个点系统(Servi)来选择和轮换委员会成员。
2.1 Servi委员会
在每轮比赛中,所有候选人都获得与其选票成比例的Servi。排名由Servi排名,顶级节点将组成一个委员会,负责下一轮的区块生产。所有选定的委员会成员的服务余额将减少最后一个节点的余额。换句话说,具有最少投票的节点将其Servi重置为零,并且其他节点将丢失相同的量。
2.2频繁轮换
委员会在IOST网络中每10分钟轮换一次。由于Servi清算机制,每天可能会有数百个不同的节点被选中参与委员会。实际上,由于轮换选举过程,任何合格节点最终都会产生阻塞。这导致DPoS的高度分散版本,而不是固定的,少量的“超级节点”控制网络,而不是IOST网络上的数百个不同的“Servi节点”将生成和验证块。由于投票变更,系统变得更加动态。
虽然这种设计确保了块生产过程的分散化和整个网络的公平性,但它并没有损害DPoS系统的优势,从而实现高可扩展性和吞吐速度。
3.智能合约系统
IOST设计了一个灵活强大的新智能合约系统,其亮点如下:
3.1即插即用多语言支持
IOST实施了多语言智能合约。目前,我们支持使用V8引擎和本机Golang模块的JavaScript来处理高性能事务。
3.2灵活的访问控制
IOST中的事务现在支持多个签名。此外,IOST智能合约可以检查调用堆栈,并可以回答诸如“谁调用此ABI?”之类的问题。智能合约还具有特殊权限控制,例如
升级和删除。IOST在升级和删除智能联系人时使用细粒度的用户级访问控制。这大大减少了以太坊和类似平台上出现的智能合约管理的痛苦。3.3共识收据的结果
执行后,智能合约将生成收据并寻求共识。然后,用户可以使用远程过程调用(RPC)来跟踪链上事务的接收,从而为整个网络创建透明度和责任。
3.4事件主题订阅
除了可以用作交易证明的on-chain Receipt功能外,IOST还支持在链外存储的事件功能。IOST事件在系统级实现; 有不同的活动主题,用户可以订阅不同的主题。主题包括事务,块,智能合约和块生成器的不同生命周期状态,这使得区块链可访问且信息化。
4. IOST虚拟机 IOST设计了虚拟机(IVM),其原则是确保优雅,易用和安全。在研究了不同版本的EVM,EOS VM,C Lua(用于Everest v0.5)和V8的优缺点后,我们的团队通过构建基于V8的IOST VM解决了EVM和EOS中出现的许多设计问题发动机。IVM的核心是VM管理器,具有以下功能:
4.1统一入口
VM Entrance接口来自其他模块的外部请求,包括RPC请求,块验证,事务验证等。从入口接收的工作在预处理和格式化后传递给VMWorker。它为所有请求提供统一的入口。
4.2高效的生命周期管理
在IVM中,基于虚拟机系统负载动态设置工作器(即VMManager线程)的数量,从而实现有效的重用。在工作者中,JavaScript热启动和热点Sandbox快照的持久性有助于减少VM的频繁创建,并在加载相同代码时避免CPU和内存中的大量负载。这增加了系统的吞吐量,使IOST V8VM即使在处理具有高事务量的合同(例如fomo3D应用程序)时也能实现高性能。
4.3快速状态访问
VM管理器与State Database具有统一的接口。这确保了原子性,防止对每个IOST事务的数据库进行部分更新,并在资金不足时拒绝整个事务。同时,在刷新到RocksDB之前,在状态数据库中实现了两级缓存。这确保了不同版本数据的访问时间减少,以及临时数据的优化性能。
4.4确保安全
4.4.1 IVM底层架构基于V8隔离功能实现JavaScript沙箱,严格限制系统调用,确保完全隔离和安全执行合同。
4.4.2 IVM禁用一系列具有不确定时间和空间复杂度的函数和类库。它们甚至会生成具有不同输入参数的指数级调用,例如RegExp,Math part方法,ArrayBuffer,Reflect,Proxy等。我们还删除了大多数高风险的JavaScript函数,例如eval和Function等
.4.4 .3除了用户设置的iGAS和iRAM使用限制外,IVM还为每个合同执行设置最大CPU时间和最大内存使用限制,以防止恶意攻击。
4.4.4IVM重写了所有JavaScript标准库,为每个标准库函数添加了iGAS统计信息,以防止使用标准库函数进行恶意攻击。
4.4.5 IVM语法树级别禁用ArrayPattern,ObjectPattern和其他语法,重写SpreadElement,TemplateLiteral和普通二进制操作以更准确地为iGAS收费。
5.高性能存储层
IOST已经实现了具有多版本并发控制(MVCC)缓存的存储层。具体来说,IOST存储层提供:
5.1多版本并发
由于区块链上的数据处理范式,我们实现了MVCC缓存来处理请求并在内存中同时缓存它们。这提高了可用性和性能。在有挡油叉的情况下,我们不需要回滚状态; 我们可以直接从缓存中访问状态。
5.2简单
存储层是数据的最终持久性。我们采用最简单的键值数据库形式,并在不同的服务级别协议(SLA)场景下实现对不同数据库的访问。
5.3动态访问
我们的存储层具有为最外层实现的提交管理器,它处理多版本数据的管理和维护。因此,更高层可以将接口视为典型数据库,并随意切换到任何版本。
6.分散的网络层
IOST实现了完全分散的网络拓扑,实现了节点的快速发现以及事务和块的高效全网广播。同时,我们限制网络内的冗余,同时在节点之间实现安全的数据传输。重点如下:
6.1发现和连接
我们使用TLS层在TCP之上保护所有数据。为了更好地利用每个TCP连接,我们采用流复用来发送和接收数据,在节点之间动态建立多个流并最大化带宽。通过节点,我们使用Kademlia来维护其网关表。这意味着IOST可以防止网络上的数据被窃听和不必要的操纵。
6.2快速传输
为了减少带宽并加速数据传输,我们使用Protocol Buffers序列化所有结构化数据,并使用Snappy算法对其进行压缩。在我们的测试中,这种集成将数据大小减少了80%以上。
6.3可访问性
IOST网络层使用通用即插即用(UPnP)协议来实现LAN渗透。UPnP与其他解决方案不同,例如UDP Hole Punching和STUN; 没有发布服务器就不需要端口曝光。这意味着我们的用户可以使用商用计算机访问我们的网络并与其他节点通信,而无需使用云服务器。我们希望确保任何用户始终可以访问我们的网络。
结论
每个在IOST区块链上工作的人都非常高兴能够以全面的形式达到Everest v2.0。我们要感谢我们的开发人员社区全天候和全球各地的工作。我们期待在2个月内推出主网,继续实现真实世界区块链技术的承诺。
閱讀更多 中道網絡 的文章