Chromia 是为分散应用程序提供的一个崭新的区块链平台,旨在解决现存平台的缺陷,开创分散应用程序的新时代。
技术设计和特征
在一个分散应用程序的生态系统中,区块链扮演着共享数据库的角色。它存储应用程序数据,确保数据的添加、更新、转化都有授权,且遵照应用程序的规则。为此,Chromia 应运而生,力争成为最佳的共享数据库。它的特征有:
· 关系模型:区块链数据和应用程序状态被存储在关系数据库中。这一模块被认为在灵活性、通用性和相容性方面是最一流的。
· 横向扩展:每一个分散应用程序拥有自己的区块链(或许可能有多个区块链)。每一区块链通过节点的子集来运行,这样就可以通过增加节点数量来增加总产量。
· 强大的检索和查询:分散应用程序能快速从运行的应用程序节点中直接获取它们需要的信息。分散应用程序的区块链逻辑可以在没有严重绩效降级的情况下完成复杂的查询。
· 关系编程语言:Chromia 的分散应用程序后端由专业语言编成,与关系模型深入融合。这一模型使得程序员更加高效,且应用程序相容性也得以保证。
· I/O 高吞吐量:数据查询和更新的速度代表了极度优化的关系数据库,使分散应用程序能处理大量查询和数据更新。
· PBFT 式共识:交易在数秒内就能确认。
· 一流的分散应用程序:在 Chromia,分散应用程序并非起源于“智能合约”,而是一个一流的个体。Chromia 给予分散应用程序开发者更强的灵活性和控制权。例如,Chromia不对分散用户的每笔交易进行收费,而是整体收费。这使得开发者能自主制定费用和资源使用政策。
Chromia 在幻彩大道开发的后链架构上运行。
Chromia 与其他公有区块链一样开放、透明、去中心化。在 Chromia,矿工被供应商所取代。供应商拥有能够生产区块的节点。有人建议,如果比特币和以太坊的四大矿池串通,将对那些网络形成极强的控制。而我们力求确保节点供应商的最小量远超这一数字。那么我们可以说Chromia 模型并不像最古老的,最受信任的公有区块链那样走向中心化。
ChromiaPBFT 式共识通过侧链来加固,确保它的终端至少同比特币、以太坊这样的 PoW 区块链一样强健。为了改变以往 Chromia 区块中的侧链比例,我们有必要将 PoW 区块链与Chromia 一定数量的恶意串通节点进行重组。
Uses 使用
Chromia 是一个面向大众的平台,它适用于几乎所有种类的分散应用程序。尤其适用于对 I/0吞吐量有高要求的或者需要管理复杂数据的情况。
多用户在线游戏(MMOG)就是一个很好的例子。Chromia 可在区块链上支持整个游戏世界,并确保按照既定的规则进行,没有人可以作弊。区块链游戏正日趋受欢迎,但 MMOG 却很少有人涉足,因为现有的区块链平台都无法支持他们。而 MMOG 的运行恰恰最好展示了Chromia 的实力。MMOG 对平台有着十分苛刻的要求,因此 MMOG 的运行意味着 Chromia 有能力应对任何复杂的分散应用程序。
设计原理
1. 现有平台问题概述
以太坊是为分散应用程序发展提供的第一个区块链平台。它创建了许多应用程序标准,但开发者会面临以下问题:
· 有限容量。因为网络容量有限,且使用费是按比例收取,交易费可达 1 美元,一些复杂的应用程序会更贵。高昂的成本使得大多数应用程序都贵的离谱。
· 同样的原因导致过高的 I/O 操作费。例如,一份合约不能对多个用户使用,因为这一操作的成本超出了区块的限制。因此,开发者不得不向用户们重复类似于利息支付那样的简单操作。
· 欠佳的数据模型工具和查询支持。应用程序开发者不得不通过中心索引来获取应用层,有时还需借助第三方服务,但这样又得不到同等的安全保障。
· 易出错的合约语言已导致许多备受瞩目的拦劫。
· 在平台层面没有合约升级的条款,在单独应用层实现这一功能更加剧了复杂性。
· 不良的轻客户端支持。在开发平台三年后,以太坊基金仍旧在研发产品级质量轻钱包。
面向大批量客户群的应用程序必须具有灵活性和快速响应能力。它们要求平台赋能开发者完成用户所需资源的配置。即使以太坊等其他平台目前正发展解决可扩展性的问题,他们依旧无法给开发者提供足够的自主权,对于分散应用程序而言仍旧会是个糟糕的运行环境。
要解决这一系列问题,我们需要重新认真了解区块链架构,以分散应用程序的需求为中心来设计模块。
2. 作为数据库的区块链
在分散应用程序的环境中区块链的主要职责是以安全和始终如一的方式管理数据。所以它可被定义为一个数据库,一个安全的去中心化数据库。区块链的另一个重要职责是防止重复消费,但这是针对数据一致性约束的一个个例。
像比特币这样优化付款的区块链可以采用高级定制化(和优化)的数据模型。但一个承载多样化分散应用程序的平台需要的是一个多用途的数据模型。
现行的多数区块链平台都使用关键值数据存储(如:以太坊,NEO,Fabric 等)。从理论上讲,这一模型完整且可以使用像 LevelDB 这样高效的数据存储。但是,这种模型是非常低层次的。它要求应用程序开发者执行序列化和检索等细节,这无疑是一巨大挑战。
综合以上情况,区块链平台无法展示关键值存储的所有功能,比如任意大小值和重复值的使用能力。在 EVM 中所有值都是 256 比特整,重复使用存储值也是无法实现的。为此,在 EVM上执行适当的检索数据权限是困难且无效的。
3. 关系模型
综上所述原因,我们将数据模型的选择视为区块链平台的关键。
关系模型在过去的五十年里都是数据库管理的黄金标准。从数学和逻辑角度出发,关系模型被认为可以高效建立复杂数据模型。
由于分散应用程序处理着日益复杂的数据架构,关系模型的力量也日趋明显。此外,大多数软件工程师都已熟悉关系模型,无需再为执行应用程序学习新的理念。
关系模型也使我们能利用已经被优化了几十年的 SQL 数据库管理系统。与其让分散应用程序代码一个个穿过记忆细胞,我们可以向 DBMS 发送一个查询请求,让它运用其精细的查询设计、数据架构和获取能力来快速开展查询。
当然,数据模型的选择也是一个折中的考量。关系模型也有以下的一些缺陷:
· 性能的好坏很难预测,它取决于查询计划者。这对于 Chromia 也并非是一个重大缺陷,因为每一个分散应用程序都以单独的方式运行,查询缓慢只会影响分散应用程序,而不是系统本身。
· 对查询执行时间规定明确界限并不切实可行。同样,这对 Chromia 而言也不是问题,因为它只对查询速度慢的应用程序有影响。
· SQL 数据库的平行化是有效调查的一个难点。据目前了解,尚未有区块链平台能在大范围内提供 100%自动平行化。所以,没有证据可以证明关系模型不如其他模型。另外,我们认为关系模块将会使逻辑分片和侧链机制更易执行。
4. 顶尖的分散应用程序
在以太坊上,所有的代码存活于“合约”中。私有钱包合约与复杂多用户合约并未区分开,他们利用的是同一资源测量程序模型。一个基于以太坊的分散应用程序会用一个或多个合约(也许一个用户一份合约)和前端组件。事实上,许多以太坊应用程序利用中心化缓存来补偿“去中心化”证书,这多少有些可疑。
虽然这一方法十分明智,可以分布到各不同种类的应用程序,但对于大范围使用的分散应用程序来说很不方便。终端用户需要为他们分散应用程序上的每一次交互付费,与他们所需的计算和存储资源成正比。换言之,以太坊没有给分散应用程序该有的灵活性来管理他们自己的资源。例如,“免费增值”的商务模型是完全无法实现的。这给分散应用程序的使用添加了一道屏障,大多数用户并未准备好为他们的每一次操作买单。
Chromia 通过在分散应用程序层面提供资源来解决此问题:
· 每个分散应用程序拥有自己的区块链(侧链)
· 由分散应用程序统一付费,而非终端用户
· 分散应用程序能够执行自己的资源管理政策,可以更好的统一经济需求,而非技术需求。
每个区块链都需要一个反垃圾信息机制,但这一机制并非要与费用挂钩。例如,一个分散应用程序可能在 15 秒内只允许用户有一次操作,因此单一用户不会在区块链上有数十亿次交易。分散应用程序还可通过一定程度限制新用户注册量或通过邀请、押金的方式注册来减轻 Sybil攻击。
在这一模型下,我们无需衡量每一操作的资源。相反,我们将资源整体运用到应用程序上:每一分散应用程序的区块链通过一定数量的节点运行。它将有自己专属的 CPU 螺纹。
这一资源转移使得分散应用程序运行更快,延伸更广(我们不用再关注执行了多少指令,因为应用程序已最大化使用其资源)。
如果一个分散应用程序需要多个执行螺纹,它可包含多个分片,即侧链。
除了调度,作为平台上的顶尖市民,分散应用程序拥有以下特征:
· 代币经济与费用模型融合,如程序的支出可在其所获盈利中支取
· 内置管理
· 更新
5. 编程模型
Chromia 所在的后链框架允许我们利用现有开放的 SQL 数据库软件来执行数据存储和查询。但是,我们不允许分散应用程序随意执行 SQL 查询,因为查询可能不安全、模糊不清或导致资源滥用。
大多数分散应用程序区块链平台使用各种虚拟机器。但是传统的虚拟机器在 Chromia 关系数据模型上运行的并不理想,因为我们需要对查询编码,而不仅仅是操作。
为此,我们采取更多以语言为中心的方法:一种叫做 Rell(关系语言)的新语言将应用于分散
应用程序的编程。这一语言使程序员能描述:
· 模式/数据模型
· 查询
· 程序代码
Rell 会编制一个二进制格式,可理解为一个专属虚拟机器的代码。Chromia 的节点就会将带有此代码的查询翻译成 SQL,用编译器来执行代码。
Rell 有以下特征:
· 输入安全/静态类型检查。在编辑阶段发现编程错误很重要,可以防止不必要的经济损失。Rell 比 SQL 在编写时更加安全,它可确保查询反馈输入与代码输入相匹配。
· 安全优化。算术操作安全可用,程序员无需担心超限。授权检查是明确要求的。
· 精准、可表现、方便。许多开发者不喜欢 SQL,因为它及其繁琐。Rell 不会过多打扰开发者,细节之处可自动获取。作为一个数据定义语言,Rell 比 SQL 简洁 7 倍多。
· 支持元编程。我们不想让应用程序开发者忙于为每一个分散应用程序执行最基础的内容。所以,Rell 支持模板功能。
我们意识到现存的任何语言或环境都无法完成此任务,所以开发一种新的语言迫在眉睫。
我们设计的 Rell 易于程序员学习:
· 程序员可以运用他们已经熟悉的关系编程语言。但是他们无需用关系代数来表述所有东西。Rell 可以将关系架构与程序编程完美融合。
· 该语言和 JavaScript 和 Kotlin 这样的编程语言非常相似。一种熟悉的语言更容易被采纳,我们的内部测试显示程序员几天内就可熟练运用 Rell。相反,PL/SQL 使用的ALGOL 型语法显得和当今行业有些格格不入。
以太坊编程模型被认为极易出错。以太坊智能合约中的故障已导致总计数亿美元的损失。在Chromia,我们希望通过更优的编程模型和更安全的语言来消除这些最常见问题的根源。
在以太坊上的代码是不可变的,开发者想要处理分散应用程序必须保持对程序的完全控制,这样就做不到去中心化了。在 Chromia,程序更新可以通过内置的管理和转变机制来完成。
6. 共识&节点
· 模型概述
很显然,全节点模型并没有延伸的很好。如果我们要求用户运行拥有系统状态全部备份的全节点,那分散应用程序可用的计算和存储资源就变得极其有限。
为了能在延伸性方面能有更佳表现,我们推出了让单一分散应用程序在验证器子节点上运行的模型,这样对分散应用程序状态的任何修改都可达成共识,也可处理客户查询。系统应该允许任何用户运行想要的全复制节点,但不应该将常规运行依赖于此。
· 控制机制
调查发现,像 PoW 和 PoS 这样常见的 Sybil 控制机制表现都不尽如人意。它们都无法保证对Sybil 攻击有一定层级的减轻,甚至好的去中心化方式都没有。事实证明,包括比特币在内的多数基于 PoW 的区块链都很可能是由一小群个体控制的。这一问题对于小型加密货币尤为突出,因为它们没有自己独立的挖矿生态系统。PoS 也没有去中心化保障,DPoS 甚至有垄断和贿赂倾向。
因此,摒弃过往常用的方法,我们设计出了 Chromia 共识和 Sybil 控制机制。
首先,我们发现 Chromia 所想要达成的可比作为云计算:一个过多使用多个云代管供应商的应用程序可被认为是一个分散应用程序。单一云代管供应商的故障或审查不会导致整个应用程序的瘫痪。云计算模型也使得用户可以使用瘦客户,而不是在他们个人设备上运行一整个应用程序后端。
Chromia 模型定义的基本职责如下。Chromia 软件在节点上运行,这些节点是物理或虚拟的运算力。节点被一些个人、组织或集体所控制或拥有,我们将他们称之为供应商。用户连接这些节点以完成盘后交易、数据查询或同步私人备份。
根据对网络用户容忍任意和潜在恶意行为的能力,可以将拜占庭式的容错网络与一般容错网络区分开。 节点的概念足以设计一个容错网络,但为了能达成拜占庭式容错,我们必须对有意识的供应商个体负责,这可能会需要协调多个节点。
关键地,为保证分散应用程序能去中心化,我们要确保节点在不同供应商区块链上运行。这种情况下应用程序能够容许供应商出错,能够做出妥协或采取敌对措施。
为了使其工作,网络用户首次要知道每个供应商商控制的对应节点,其次要确保确实是不同供应商。后者无法以理论方式完成,但可以通过社交来实现。微软和谷歌是不同的供应商,这点显而易见,但却没有理论方式来论证它。
我们认为所有的去中心化共识根本上都是“社交共识”。全自动的去中心化系统很奇幻,最终都是靠人来制定系统规则。Chromia 认同这一点,并将其视为基本的设计原则。实际上,供应商的差异可以通过以下方面体现:
1. 最初,幻彩大道会选一组不同的供应商。我们相信良好的区块链和 IT 行业知识储备能让我们做出很好的选择,并且我们也趋向选择用户会接受的供应商。若对任一供应商的独特性有质疑,都鼓励用户开展自己的调查。
2. 最终,一旦系统有足够多的供应商,我们会授权这些供应商们自主投票来添加新的供应商,系统就不再需要幻彩大道这个把关者。
· 共识
我们假定 Chromia 的每一区块链都和一组验证器节点相关联,这些节点都是 Chromia 上的子节点。
这些子节点都会运行 BFT 共识运算法则。由于大小有限,PBFT 式运算法则是最佳选择。他们经过充分调研,与小验证器工作良好,并可提供终极定论,使重组成为可能。
然而,我们也需要考虑系统风险。虽然我们假定不同供应商不可能一起运行节点,但这一情况也可能发生。同时,大量节点也可能会由于当天零利用而被归并在一起。基于签名的共识(如PBFT 和 PoS)出现灾难式的故障,使得整个链失效。
我们需要附加的机制来巩固安全性。工作量证明拥有我们所需的属性:即使一个 PoW 矿工被破解,攻击者仍无法跨越已开采的区块,他必须不断地重写。
我们可以通过在比特币或以太坊这样基于 PoW 的区块链上锚区块来提升基于签名的共识安全性。这可以以廉价的方式来实现,用单笔比特币交易来锚 Chromia 的一部分区块花费很少,而且还可保证 Chromia 的确认优势至少和比特币所锚的区块相当。例如,一个信赖比特币安全性的用户如果进行高值交易时,他可以等到通过比特币锚定的应收账款确认后再发货。
· 节点补偿
代管分散应用程序的节点可以得到补偿,每一个分散应用程序都需要计算资源和存储,并给供应商们支付这些服务。Chromia 会为供应商们提供一个市场,用来销售他们节点的容量。
最初幻彩大道会提供节点,之后我们期望更多的供应商加入。从长远看,我们预估使用节点资源的成本将和 AWS EC2 这样的云计算成本相差无几。
7. 其他特征
要想达到分散应用程序的高性能要求,Chromia 必须满足以下要求:
· 确认时间:1 秒左右(对好的用户体验和实时用户交互是有必要的)
· 交易率:每侧链大于 500 TPS。整个系统的总比率是没有限制的。
· IO 容量:每秒写读大于 100k
后链框架的前期测试表明满足和超过这些要求是可能的。
Chromia 同时会有客户软件开发包用以支持客户端分散应用程序的发展。软件开发包将提供Java 脚本、Java 和其他语言。软件开发包还支持平台范围内单点登录和钱包钥匙管理,分散用户在每一应用程序单独注册的困扰。
平台架构
1. 后链
Chromia 基于后链框架。后链定义了区块链系统组件之间的接口,为网络、共识、加密图形等提供了一系列构建区块。
与其他区块链框架的主要区别在于后链是在关系数据库上存储区块链数据(原始区块链内容和应用程序状态)。不仅如此,后链使得交易逻辑与共识和关系数据库完全统一。例如,在数据库中违反约束条件的交易将会被拒绝,并从共识中剔除,它们不会导致任何的致命错误。
后链在 Kotlin 上广泛运用并在 JVM 上运行。JVM 是最常用的虚拟机之一,它指向服务器使用案例,且有大量可用的程序库。JVM 对脆弱性起内在保护的作用,如缓冲器超限或欠载,数据流失等情况。它控制访问对象,开展数组界检查,不会暴露像原始指针这样的易错特性。因此,在 JVM 上运行的应用程序通常不会有远程代码执行等这样的问题,即使他们本身带有故障。这对区块链软件至关重要,因为远程代码执行可能导致巨大的损失。
Kotlin 更注重类别检查,尤其是确保代码里的空值安全。现代安全编程语言的使用能够减少缺陷数量并确保现存的缺陷不会酿成严重的后果。
后链允许多个区块链在一个数据库上代管,且一个区块链能够“看到”另一个区块链上的最终数据。这简化了区块链间交互的操作,因为区块链无需另加费用或复杂操作就可参考共享数据。尤其可用在区块链间的资产转移。
2. 链
拆分多个区块链帮助 Chromia 实现了横向扩展,每个节点只要与其工作的区块链相关数据相匹配就行,这样就可增加许多节点和区块链的数量。这样的架构也使更新更加简单,单一区块链的更新不会对其他区块链造成影响。
整个系统包含了若干 Chromia 功能块所需的“系统”区块链和若干针对特定应用程序的应用程序区块链。
· 系统链
根链
· . 验证器:根节点
· 目的:追踪根节点
· 描述:根链是为了使小客户在无需下载整个区块链的情况下验证 Chromia 上的任何数据。
目录链
· 验证器:根节点
· 目的:追踪所有的供应商、节点、应用程序区块链和他们的验证器
· 描述:目录链负责追踪所有重要信息,协调系统的运行。
代币根链
· 验证器:如目录中定义
· 目的:追踪幻彩代币
· 描述:代币根链追踪其他链之间代币的分配。
限位链
· 验证器:如目录中定义
· 目的:防卫子节点上的攻击
· 描述:限位链记录其他链上块的散列。这使得监测共识故障成为可能。如果共识故障,在限位链上的区块优先使用其他版本的区块。限位链本身是在比特币和以太坊区块链上。
(有关不同链维护的安全性考虑会有单独的章节做说明)
3. 节点实施
数据模型和节点选择与奖励这样的系统功能操作可以在 Rell 上实现。高水平说明性语言的使用可简化其实施并减少出错的概率。
4. 与其他区块链的交互
为了锚定,需要与比特币和以太坊区块链进行交互。与以太坊的交互是为了使 ETH 支付能在Chromia 上使用,并把幻彩作为 ERC20 代币。这一功能可以通过分度器来实施:与以太坊交互的节点必须运行一个与 Chromia 平行的以太坊节点,从以太坊区块链向 Chromia 数据库输入信息。
5. 组件
以下的软件组件清单是我们计划为 ChromiaMVP 发布所运用的:
1. `编译程序和运行时间环境
2. Rell IDE: 使开发更容易的工具
3. 客户 SDK:允许前端(网页或手机 APP)与 Chromia 连接和交互
4. Chromia 节点:系统链
5. 为锚定做支持的比特币和以太坊
6. Chromia 方的幻彩 ERC20 合约和网关
7. 以太坊上自动兑换智能合约
关于更多Chromia信息:https://chromia.com/
更多区块链项目介绍:http://www.qukuaiwang.com.cn/news/xiangmu
风险提示:区块链投资具有极大的风险,项目披露可能不完整或有欺骗。请在尝试投资前确定自己承受以上风险的能力。区块网只做项目介绍,项目真假和价值并未做任何审核。