作者:Raymond,Ultrain高级技术专家,前摩托罗拉高级软件开发工程师,最近在EOS底层发现了一个致命的安全漏洞,可能导致EOS全网宕机的隐患,并向EOS提交了问题和修复方法,得到了其官方的承认。
自比特币诞生以来,区块链技术已经发展了十余年,吸引了资本和技术的关注,并保持着热情。大量资金和技术研发的持续投入,推动了这一技术的快速发展和演进,尤其是近年来随着区块链技术的采用,区块链将成为互联网之后的一次重大技术变革的商业预期开始逐步实现。
就像互联网在各行业的应用和融合一样,人们相信区块链技术的去中心化和会计账簿的不可变更也能给传统行业带来颠覆性的革命。区块链从业者开始探索传统行业与区块链技术的结合,产生了跨境结算、供应链金融、数字资产确认、版权存管、商品溯源等应用。
本文将尝试从区块链技术的本质、技术架构、发展方向三个角度进行分析,揭开区块链技术的神秘面纱,探索真正能给传统行业带来价值的商业落地场景。
区块链技术的精髓
区块链不是万能的。只有了解区块链技术的精髓,才能去伪存真,探索适合区块链技术优势的应用场景,真正为传统行业创造新的商业价值。区块链的技术精髓有以下三个核心点:
图1区块链技术的精髓
区块链科技与生俱来的天然信任,既不是各种共识算法赋予的,也不是添加无法修改的公共账本技术带来的,而是来源于平台不受任何单一主体控制,每个人都可以随时参与和退出。分布式存储、对等网络、各种共识协议等软件技术都是为了让去中心化的平台正常运行而设计的。平台的运行结果是由平台参与者的共识形成的。同样,这个平台的修改和更新也需要平台参与者达成共识。套用《流浪地球》中的一句台词,在区块链时代,共识比钻石更珍贵。
区块链的自然信任也依赖于它运行的软件的开源特性。任何人都可以查看源代码,编译运行成为平台的一个节点,参与平台的运营。去中心化的软件技术无法带来天然的信任。信任来自于这个开源的运行平台,不受任何一方控制。任何一方不得随意修改系统运行结果和软件功能。
Ultrain super brain Trust Computing联合创始人兼CEO郭睿曾在解释Ultrain经济模式的直播中举了一个阿里巴巴平台打假的例子:阿里巴巴每年投入巨额资金打假,但公众仍然可以想象打假只是走个形式,象征性地做个例,然后利用假货获取更大利益。阿里巴巴没有办法证明自己的清白。本质原因是阿里巴巴的运营平台是自己掌控的,系统数据是自己提供的;由单个实体运营的集中式平台不可能具备去中心化平台固有的天然信任机制。
比特币为什么会成功?从技术上来说,比特币使用的技术包括点对点网络,各种加密算法都不是新技术。在它之前,电子货币/加密货币也有过多次失败的尝试。显然,技术并不是其成功的本质原因。比特币的成功可以归功于其良好的经济激励机制,以及——区块链独创的通行证机制。它的作用可以分为两个方面。一方面,传递机制可以将经济博弈引入区块链体系,保证体系的良性运行;另一方面,区块链也被打造成了v的最佳载体
业内也有专业的研究流派,从数字资产的认证实现,到现实世界的资产认证,再到公司激励组织形式的改变,为认证经济的构建提供了理论支持,描绘了区块链与各行各业结合后丰富的应用前景。
这里需要对联盟链做一个特别的说明:联盟链没有许可机制,是一个许可机制,节点需要经过审批才能接入网络。使用链外的激励机制,不需要设计复杂的经济激励模型。联盟节点数量有限,相当于一个多中心的系统。
比特币最初的定位是点对点的电子货币系统,只支持弱脚本处理能力,仅限于金融业务逻辑。以太坊开始支持智能合约,使区块链平台能够运行图灵完整的编程语言,从而实现平滑的价值传递,支持复杂的业务逻辑,提供信任计算能力,开启了区块链的新时代。智能合同支持许多业务场景,广泛应用于游戏、可追溯性、存款、能源交易和供应链金融等领域。这些应用场景利用区块链赋予的天然信任机制或者区块链的传递机制,创造了新的商业模式,带来了新的商业价值。
目前区块链与集中式系统的处理性能还有差距,智能合约的编制容易引入安全漏洞,一定程度上限制了智能合约的应用。但这些都是新技术发展的必然阶段,业界也在努力解决这些问题。更多的落地场景逐渐浮现,推动区块链产业一步步繁荣。
区块链的技术建筑
区块链涉及的技术非常广泛。业内已经有很多关于相关加密技术、共识算法等具体知识的文章。结合众多开源项目,方便技术人员切入这一领域。本节试图从整体架构层面描述每个模块的相对关系,以帮助您建立整体理解。
图2区块链技术架构
存储层:
区块链平台运行产生的块数据和状态数据需要存储在文件系统和数据库系统中。数据块存储具体的交易信息,其中需要使用默克尔树、非对称加密等技术实现信息汇总和签名,以保证数据的完整性和一致性。通常,状态存储在数据库中,也称为世界状态,它将包括系统操作参数、注册帐户、用户的智能合同字节码和合同中存储的业务数据等信息。
区块链操作平台可以理解为一个分布式状态机:所有节点从相同的创建状态开始,依次运行已达成共识的区块中的事务,驱动每个节点的世界状态按照相同的操作顺序(添加、删除、修改)不断变化,从而实现所有节点在执行相同编号的区块后世界状态完全一致。当一个新节点加入网络时,如果是全尺度节点,需要同步网络中其他节点的所有历史块信息,验证块的正确性,依次执行块中存储的事务,重构世界状态。只有当它与网络上的其他节点高度一致时,同步才完成,新块的共识挖掘才能与其他节点一起继续。
网络层:
点对点网络的主要功能包括实现网络拓扑、交换一致性协议信息、广播/接收事务和块信息等。新节点依靠与种子节点的交互来实现网络邻居的自动发现和组网,形成去中心化的网络拓扑。不同的共识协议会有不同的协议相关网络包来完成共识过程。网络中的大多数数据消息是事务和块数据包。当一个节点接收到一个用户事务时,它会将它广播到网络中,并尽可能地传播到所有节点。一个节点产生的块也需要尽快传播到每个节点
在块生成间隔一定的前提下,一个块包含的事务越多,系统的处理性能越高。然而,一个块可以包含多少事务一方面取决于节点CPU的处理性能,另一方面取决于节点的网络带宽。一个块中包含的事务的总执行时间是有限的,CPU处理性能越高,它所能包含的事务就越多;网络带宽的吞吐能力也是限制块大小的一个因素。网络层需要在下一个块产生之前,尽可能远的向全网广播当前块。因此,节点的网络带宽越高,块的大小就越大,可以包含的事务也就越多。这里说的节点的CPU处理能力和网络带宽要考虑全网所有节点,实际上是受限于性能最差的节点。
共识层:
区块链的共识是使用一定的协议机制,让所有节点对下一步要产生的块(即块中应该包含哪些事务)达成一致。我们可以想象一个投票的场景,每个人都可以提出自己的建议,努力获得足够的票数。投票权的分配要能抵御女巫攻击,也就是说单个主体无法控制大量的选票。在现实世界中,我们可以根据每个人的选民身份赋予他们选举权;在数字世界的集中系统中,我们利用注册机制(包括手机号、验证码、手持身份证照片、活体检测等技术手段)提高单个主体的门槛以获得大量选票;在去中心化的区块链领域,没有识别机制,投票权的分配方法包括工作量证明PoW、股权证明PoS、委托股权证明dpo、各种PoX(PoET、PoA等。)和VRF算法。
PoW要求节点找到一个数值,使块的哈希值满足要求。在求这个数值的过程中,节点需要投入大量的计算能力。当一个节点找到一个符合要求的值,就获得投票权,同时提出自己的建议块(PoW不需要投票,先获得投票权的节点提出的块就是共识块);PoS/DPoS利用节点获得的令牌权结合其他因素分配投票权,结合BFT投票确认选择共识块;VRF算法依靠密码学、数学随机数等技术分配投票权,共识块通过BFT投票确认。
智能合同层:
每个公链使用不同的编程语言编写智能合约,比如以太坊中的Solidity,EOS中的C,Ultra中的typescript等。智能合同被编译成字节码,并打包成交易信息链进行存储。每个节点收到块后,提取其中包含的事务信息,将字节码加载到虚拟机中运行,运行结果反映到世界状态。可以检查链上的字节码与开源智能契约的一致性,从而保证节点实际运行的字节码与开源代码显示的业务逻辑一致,提供公开透明的信任能力,使能需要信任计算的业务场景。需要指出的是,目前为了安全起见,完全开源的智能合约会大大降低黑客攻击的门槛,真正开源智能合约的项目并不多。
共识层一般称为层1,智能合约层称为层2(所以存储层和网络层可以看作层0)。第二层智能合约层有很多项目需要创新,如闪电网、分散交换、跨链机制等。
应用层:
各公链的商业生态建设可以比喻为Google的Android生态建设:公链项目方类似于Google的角色,提供软件平台;挖矿厂商类似于手机硬件厂商,提供软件运行硬件平台;公链上层的富应用,也叫DAPP,是一个类似Android的平台丰富的APP。公链项目方在开发软件平台时,还需要提供开发工具,举办活动,吸引开发者为公链开发DAPP,打造繁荣的生态。现在运行在公链上的DAPP主要是游戏、溯源、交流。利用游戏区块链的公开透明机制,核心业务逻辑可以在区块链平台上运行,以示公平;溯源应用主要是记录区块链平台上的相关流通信息,利用其不可篡改的特性供用户查询全生命周期的历史信息,如Ultrain公链上库存的高端运动鞋交易信息的溯源应用。在公链上运行的DAPP的质量和数量也是公链健康发展的重要指标。
需要指出的是,区块链技术架构的分层只是为了便于理解而进行的逻辑层次划分,大多数项目仍然是紧密耦合的单一软件形式。随着区块链技术的发展,一些项目已经开始支持模块化开发,例如支持网络模块和共识模块的替换。
区块链的技术发展方向
区块链在资本和技术的推动下发展迅速,落地场景越来越多,开始为传统商业带来价值。然而,区块链技术本身也存在一些问题,如性能低下、隐私保护不足、安全问题频发以及缺乏有效的治理措施等。本节试图描述区块链技术的几个主要发展方向。
比特币的性能在3 ~ 7 TPS左右,以太坊的在7 ~ 15 TPS左右,集中式系统如信用卡平台2K TPS,淘宝双十一处理能力在30W TPS左右。很多公链项目都在努力提高区块链的可扩展性,主要包括以下思路:
共识机制:
比特币的工作负载证明机制,为了保证块的网络传播时间,将块大小限制在1M,并调整哈希计算的难度,使块之间的时间间隔保持在10分钟左右,导致其性能低下。以太坊的GHOST协议用三级块的工作量来证明,在一定程度上提高了块成品率和处理性能。EOS的DPOS牺牲了去中心化程度,票数最高的21个超级节点依次分块,每0.5秒生成一个块,每个节点连续分块12个,提高了分块效率。Ultrain采用的共识机制考虑了去中心化和封锁效率。在每一轮中,用数学随机数算法选出封杀节点、投票节点和封杀节点的拟封杀块,经大多数投票节点同意即可生成封杀块。
DAG结构:
比特币每次只选择一个块来延长主链,为了减少分叉块,限制了出块频率。一些项目采用DAG结构来提高可扩展性。例如,Conflux项目改变了一次只选择一个有效块的方案,使用DAG结构按照EPOCH概念维护非主链有效块。首先确定所有有效块的顺序,然后确定块内事务的顺序,从而提高处理性能。
分组:
目前,区块链系统中的每个节点存储全网的状态,处理全网的事务,处理性能受限于网络中性能最差的节点。分区意味着根据某些规则对节点进行分组。整个系统分为几个相对独立的分区。单个分区只处理一些事务,甚至存储一些状态。并行处理多个分区,以提高系统的处理性能。但分组分片后会出现安全性降低、跨分片交易处理复杂等问题。比如网络有1000个节点,需要控制510个节点才能发动51%的攻击;但分成10个碎片后,单个碎片只需要控制51个节点就可以发动攻击。Zilliqa根据PoW结果随机分配节点到不同的切片,防止单个切片被作恶者控制;Ultrain将整个网络的节点按照一定的策略随机调度到不同的网段,利用世界状态实现节点的快速启动,既保证了系统的安全性,又提高了系统的处理性能。mono提出了用弩挖矿的概念,以提高单片抵御攻击的有效计算能力。当发生跨片事务时,片对片事务同步或异步执行,会增加通信开销,极端情况下甚至会使系统性能低于切片前。Zilliqa事务类型将事务分片分布,而mono将事务中的原子操作分成多个,通过异步消息传递完成事务中继执行。
侧链跨越链:
侧链通过将一些操作转移到侧链来解决主链的性能瓶颈,比如等离子区块链,它有一个树形结构,每个分支都是一个子链。子链块头的哈希值提交给根链,根链只需要处理少量子链的提交,有效降低了根链的事务负载。跨链的概念更广泛。链与链之间可以实现资产和状态的跨链转移和交换,比如跨链项目Cosmos。其网络由Hub/hub和Zone/partition组成,分区之间的事务可以通过Hub进行,事务可以转移到链上,减轻链上的事务处理压力。
双层方案:
上面提到的性能提升方法一般称为第一层解决方案,还有一类第二层解决方案,就是在智能合约层使用某种机制来实现链下的事务,只在必要的时候向网络广播事务,提高吞吐量。比如最近比特币上火热的闪电网,其主要思路是建立一个双向支付通道,采用哈希时间锁定和哈希密钥锁定,让双方在通道内重复交易任意次数。最后,当通道关闭时,初始和最终余额信息将广播到比特币区块链。
区块链因其价值网络的特殊性(成功攻击可以快速实现)而受到黑客青睐,安全事件频发。根据慢雾科技的统计,仅ETH和EOS在攻击数字货币上的累计历史损失就高达40亿美元。一个公链项目的工程复杂度极高,需要考虑各个层面的安全问题,如主机系统安全、暴露端口安全、密钥存储安全、网络拓扑规划、最优系统配置等。在共识层面,需要防范相关的51%攻击、无辜攻击、远程攻击等。合同级别的安全性更为重要。一方面,智能合同语言的最佳实践并不完善;另一方面,DAPP的开发者经验不足,代码实现可以互相借鉴。黑客发现的漏洞可以攻击很多DAPPs。智能合约中随机数的生成也是一个灾区,项目方使用的随机数算法存在漏洞,黑客可以提前预测其数值,获得稳定的收益。
公链项目方需要提高公链软件本身的安全性,提供安全配置建议等指导性信息
比特币构建了一个去中心化的平台,去除了对第三方的信任和依赖,但需要将所有交易广播到网络,所有节点达成共识,保证系统的安全性。攻击者通过分析特定地址的交易特征,结合一些实际信息,就有可能得到交易地址与实际人的对应关系,这给用户的隐私带来了极大的隐患。此外,还有一些业务场景要求对区块链上的数据进行加密,不允许公开访问,比如企业之间的具体交易数据和患者的隐私数据。利用密码学技术,可以在不泄露数据本身的情况下进行一些数据操作,让对方检查数据的完整性和真实性。相关技术包括多方信任计算、同态证明、零知识证明等。随着区块链技术的发展和普及,商业落地场景下的隐私保护需求会越来越多。在隐私保护方面,Ultrain公链已经提供了零知识证明中间件供开发者使用。
区块链世界利用去中心化的运行平台带来天然的信任,但这种信任只限于链中的数据。许多业务场景需要智能合约来与链外数据交互。如何实现数据上行的信任机制,成功连接现实世界和区块链世界,需要使用Oracle技术。预测机是现实世界和区块链世界之间的桥梁,是为区块链世界提供数据的中介。但是,Oracle只是数据源和区块链之间的一个安全可靠的数据通道,只能保证数据不会被篡改,不能保证数据源的正确性。用户可以从多个数据源获取数据,在应用层聚合这些数据,得到最终的结果。Oracle机的实现包括集中式模式,比如运行在以太坊上的Oracize,数据由Oracize公司搭建的服务器提供;去中心化,比如最近和Ultrain达成战略合作的DOS网络。通过安全的数据路径和多信息源比对技术,Oracle必将推动越来越多的应用场景,在区块链生态的发展中发挥越来越重要的作用。
区块链技术仍在快速发展,相关生态建设也在各方努力下不断推进。区块链技术的商业应用不断涌现。我们对区块链技术能否成为新一代商业基础设施充满期待。
(作者:Ultrain超脑链,内容来自链的开放平台“德豪”;本文仅代表作者观点,不代表链家官方立场)