NBS区块链底层技术之石墨烯架构
石墨烯(Graphene)是一种由碳原子以sp杂化轨道组成六角型呈蜂巢晶格的二维碳纳米材料。基于石墨烯材料的灵感,比特股创始人Daniel Larimer带领Cryptonomex 公司团队一起研发了石墨烯区块链底层技术架构,并使该架构成为了区块链领域优秀的核心底层架构。
其采用C++语言编写,具有转账速度快、吞吐量高、稳定性强、功能完备、易操作等特性。几乎具备了目前区块链技术领域所有的技术优势,真可谓集百家之长也。
基于此架构开发的项目包括有NBS、EOS、Steem、BTS、GXC、YOYOW等一大批公链项目。
特性介绍
转账速度快
目前石墨烯架构的区块平均确认时间是 1.5 秒,出块时间是 3 秒,所有的延迟仅仅只是来源于网络,而不是处理本身,所以它的性能是非常强大的。
我们对比一下:比特币是 10 分钟出块,以太坊大约是 1 分钟;确认时间上比特币是 1 小时,以太坊是10几分钟,石墨烯技术架构几可做到秒级确认。
吞吐量高
石墨烯的吞吐量现在实测大约是 3300 笔每秒,理论上可以到 10 万次,甚至可以扩展到百万次。完全超过比特币及以太坊的处理能力,可以算得上是一个工业级的区块链产品。
对比一下:比特币大约每秒七笔,以太坊每秒三四十笔,这完全不是一个数量级。在真正解决实际问题时,很明显每秒几笔是不符合要求的,那每秒 3000 多笔基本上已经赶上了 VISA 的处理能力,几乎算一个工业级的区块链产品了。
稳定性强
石墨烯技术从研发到现在运行了这么久,从来没有出过大的 BUG,也没有资产被盗的情况。
功能完备、易操作
以多重签名来举例:比特币也有多重签名,但是比较复杂,功能特别简单,只有M/N这种模式,就是说如果是5个人做多重签名,3个人同意就可以通过,这是一个很简单的多重签名。
石墨烯上的多重签名功能是可以用作公司治理的,它可以设定两个参数:首先它可以设置百分比,每个人占多少百分比,无论多少人都可以随便设,第二个是阈值,就是超过多少个签名就可以生效。
假设说现在想做一个7个人的理事会管理,有这样一些要求:任何2个人出事都不能影响资金的使用;至少3个人同意才可以动用资金;非核心成员至少4个人同意才能动用资金。
这些条件设置好之后,可以很快的算出每个人的占比,这个多签就设置完成了,而且这些都是在可视化UI界面上操作的,而不需要人工一行行敲命令来实现。
代表项目介绍
NBS-新比特股
NBS(新比特股)是一个基于区块链技术的金融服务平台和开发平台,为高性能的金融智能合约而生。任何个人和机构都可以在此平台上自由的进行转账、借贷、交易、发行资产和发行自己的智能货币、期货品种等,也可以基于这个平台快速搭建出去中心化、低成本、高性能的加密货币/股票/贵金属交易所、承兑网关、资产管理平台等。
NBS客户端就是个去中心化的交易所,也把它叫做内盘。
Steem-斯蒂姆
Steemit 是一个去中心化的社交媒体平台,用户可以通过发文或者为平台上热门内容(文章、图片、评论)投票获得奖励;
EOS
EOS是Daniel Larimer 主导参与的第三个区块链项目,也是目前他参与的项目中影响力最大的一个项目,是一种全新的基于区块链智能合约平台,旨在为高性能分布式应用提供底层区块链平台服务。
EOS 项目的目标是实现一个类似操作系统的支撑分布式应用程序的区块链架构。该架构可以提供账户,身份认证,数据库,异步通信以及可在数以万计的 CPU/GPU 集群上进行程序调度和并行运算。
GXC-公信宝
公信链 GXChain 是一条为全球数据经济服务的基础链,旨在打造可信数据的价值网络。公信链具有基于 DPoS 共识机制的石墨烯底层架构的性能优势,同时具备 G-ID、GVM、BaaS、Blockcity pay 等链上配套功能,方便各类应用开发。
更多基于石墨烯架构的区块链项目不一一列举。
石墨烯架构的优点主要源自于dpos共识机制算法,通过dpos共识机制展开对p2p节点的分布式管理,以及账户模型的设计,下面是对委托权益证明(DPOS)的分析,目的是为DPOS的工作原理及其鲁棒性根源提供一个分析。
所有区块链本质上都是一种由交易驱动的确定性状态机。共识是商定确定性交易顺序和过滤无效交易的过程。有许多不同的共识算法都可以产生等效的交易排序,但DPOS已经通过在多个区块链上经年累月的可靠运行证明自身是健壮、安全和有效的。
像所有共识算法一样,块生产者可能导致的最大损害是审查。所有块的有效性必须基于确定性的开源状态机逻辑。
DPOS算法概要
DPOS算法分为两部分:选择一组块生产者和调度生产。选举过程确保利益相关方最终得到控制,因为当网络不能顺利运行时,利益相关方的损失最大。选举方法对实际运行中如何达成共识几乎没有影响,因此,本文将重点介绍如何在块生产者被选择之后达成共识。
为了帮助解释这个算法,我想假设3个块生产者A,B和C。因为共识(的达成)需要2/3+1多数来解决所有情况,这个简化的模型将假设生产者C是打破僵局的那个人。在现实世界中,将有21个或更多的块生产者。像工作量证明一样,一般规则是最长链胜出。任何时候当一个诚实的对等节点看到一个有效的更长链,它都会从当前分叉切换到更长的这条链。
我将举例说明在大多数想得到的网络条件下DPOS如何运行。这些例子应该可以帮助您理解为什么DPOS稳健且难以破坏。
正常操作
在正常操作模式下,块生产者每3秒钟轮流生成一个块。假设没有人错过自己的轮次,那么这将产生最长链。块生产者在被调度轮次之外的任何时间段出块都是无效的。

少数分叉
不超过节点总数三分之一的恶意或故障节点可能创建少数分叉。在这种情况下,少数分叉每9秒只能产生一个块,而多数分叉每9秒可以产生两个块。这样,诚实的2/3多数将永远比少数(的链)更长。

离线少数的多重生产
(离线的)少数人可以试图产生无限数量的分叉,但是他们的所有分叉都将比多数人的那条链短,因为少数人在出块速度上注定比多数人来的更慢。
网络碎片化
网络完全有可能碎片化,导致没有任何分叉拥有多数块生成者。在这种情况下,最长的链将倒向最大的那个少数群体。当网络连通性恢复时,较小的少数群体会自然切换到最长的那条链,明确的共识将恢复。

有可能存在这样三个分叉,其中两个最长的分叉长度相同。在这种情况下,第3个(较小)分叉的块生产者重新加入网络时会打破平局。块生产者总数为奇数,因此不可能长时间保持平局。稍后我们还会讲到生产者“洗牌”,它使得出块顺序随机化,从而确保即使是生产者数目相同的两个分叉也会以不同的步长增长,最终导致一个分叉超过另一个。
在线少数的多重生产
在这种场景下,少数节点B在其时间段内产生了两个或更多可供选择的块。下一个计划生产者(C)可以选择基于B产生的任何一种方案继续构建链条。一旦如此,这个选择就成为最长的链,而所有选择B1的节点都将切换分叉。少数不良生产者企图广播再多的替代块也无关紧要,它们作为最长链的一部分永远不会超过一轮。

最后不可逆块
在网络碎片化的情况下,多个分叉都有可能持续不断增长相当长的时间。长远来看最长的链终将获胜,但观察者需要一种确切的手段来判定一个块是否绝对处于增长最快的那条链。这可以通过观察来自2/3+1多数块生产者的确认来决定。
在下图中,块B已被C和A所确认,这代表了2/3+1多数确认,由此我们可以推断没有其它链会比这个更长 – 如果2/3的生产者是诚实的。

请注意,这个“规则”类似于比特币的6块确认“规则”。一些聪明人也许可以谋划一系列事件使得两个节点(应该是“交易”?)出现在不同的最后不可逆块上。这种边缘案例要求攻击者能完全控制通信延迟,并且在几分钟内两次–而不是一次–使用该控制。即便这真的发生了,那么最长链(胜出)的长期规则仍然适用。我们估计这种攻击的可能性足够接近0,且经济后果无关紧要,因此不足为虑。
生产者法定人数不足
在缺乏明晰的生产者法定人数这种不太可能的情况下,少数人还是可以继续出块。利益相关方可以在这些块里包括更改投票的交易。这些投票可以选出一组新的生产者,并将出块参与率恢复到100%。一旦如此,少数链将最终超过所有其他以低于100%参与率运行的链。
在此过程中,所有观察者都会知道,在一条参与率超过67%的链形成之前,网络状态是不定的。那些选择在此条件下进行交易的人所冒的风险与选择接受不到6个确认的人相似。他们知道存在这样一些小的可能性,即:共识也许最终在一个不同的分叉上建立起来。在实践中,这种情况比接受少于3个比特币交易确认的块要安全多了。
多数生产者舞弊
如果多数生产者变得腐败,那么他们可以产生无限数量的分叉,每个分叉都看起来以2/3多数确认向前走。这种情况下,最后不可逆块算法蜕变为最长链算法。最长链就是为最大多数所批准的那条链,而这将由少数剩下的诚实节点决定。这种行为不会持续很长时间,因为利益相关方最终会投票替换生产者。

交易作为权益证明(TaPoS)
当用户为一个交易签名时,他们是在对区块链状态的一定假设下这样做的。这个假设是基于他们对最近几个块的看法。如果最长链的共识发生改变,则潜在会使签名者之前的假设失效。
就TaPoS而言,所有交易都包含最近一个块的散列,如果该块在链历史中不存在则这些交易被认为是无效的。任何在孤儿分叉上给交易签名的人,都会发现该交易无效且无法迁移到主分叉。
该过程的一个附带作用是可以抵御试图产生替代链的长期攻击。每个利益相关方在每次交易时都直接对区块链做出确认。随着时间推移,所有的块都是由所有利益相关方确认过的,这在一条伪造链里是无法复制的。
确定性生产者洗牌
在上面所有例子中,我们展示的都是块生产者按循环调度出块。实际上,每出N个块(N是生产者数量),块生产者集合都会洗牌一次。这种随机性确保块生成者B不会总是忽略块生成者A,每当形成多个拥有相同数量生产者的分叉时,平局最终都会被打破。
结论
在每一个我们能想到的自然网络分裂的情况下,委托权益证明都是强健的,甚至在面对相当数量生产者舞弊的情形时也是安全的。不像其它共识算法,当大多数生产者不合格时,DPOS还是可以继续工作。在此过程中,社区可以投票替换掉不合格的生产者,直到恢复100%参与率。我还不知道有任何其它算法可以在如此高强度和变化多端的失败条件下依然保持强健。
说到底,DPOS引人注目的安全性来自于其选择块生产者和验证节点质量的算法。运用赞成投票的过程可以确保一个人即使拥有50%的有效投票权也不能独自挑选哪怕一个生产者。DPOS旨在优化拥有强壮网络连接的诚实节点100%参与(共识过程)的名义条件。这使得DPOS有能力在平均只有1.5秒的时间内以99.9%的确定性确认交易,同时以优雅和可检测的方式降级 – 从降级中恢复正常也不过是小事一桩。
其它共识算法以网络条件差的不诚实节点为名义条件展开设计,这样设计的最终结果就是性能更差、延迟更高、通信开销高的网络,而且这个网络在33%节点失效的情况下会完全停摆。
在比特股成功运行6年,我们经历了各种各样的网络条件和软件错误。DPOS成功穿行于其间,在处理了比任何其它区块链更多交易的同时持续达成共识,展现了非凡的能力。
以上是NBS底层架构的概念描述,具体技术实现请参阅我们的开发者文档。