Advertisement

区块链开发技术综述

阅读量:

关注微信公众号:区块链大本营,获取更多区块链开发技能

如果你长时间接触区块链技术可能会有相同的感受那就是对那些冗长的原理介绍未来发展的展望行业动态以及链上新闻等内容感到厌倦。没错区块链不仅具备颠覆人类协作方式的巨大潜力但它最终还是要写出代码才能在咖啡厅里进行有效的讨论。有没有什么前程值得期待?当然有!那就是立即行动!

本文旨在综述区块链相关技术路线及常见平台。作为学习区块链技术体系的入门指南使用,请您提出建设性意见以促进社区共识形成。

区块链技术的流派

未战先谋局已定,请问你若想投身于区块链开发领域,则需首先弄清楚当前有哪些参与者,并了解各参与方的主要观点以及它们的实力情况如何?

划分区块链技术流派并无一定之规,据我所见,或可有以下四种方式:

按照节点准入规则进行归类管理后可以看出, 区块链网络主要可分为三类: 公有区块链、私有区块链以及联盟区块链. 其中, 比特币与以太坊无疑是公有区块链领域的代表性平台, 而私有区块链中最具声望的是R3 Corda平台, 联盟区块链则以Hyperledger平台下的Fabric系统为代表. 在技术特性上, 三类区块链各有千秋: 公有区块链注重参与者的匿名性和去中心化特性, 私有与联盟区块链则更加关注高效率性, 并通常会设置一定准入门槛. 这些技术上的差异也体现在共识机制的选择上: 由于私有与联盟区块链通常假设参与节点数量有限, 因此适合采用PBFT共识机制; 而面对庞大的网络规模与动态变化的节点数量, PBFT算法已显现出较低效率的特点, 此时更适合采用随机抽选的方式确定主导节点. 这也就意味着, 尽管从理论层面 private & consensus chains 可以借鉴并应用到 public chains 中去, 但这种简单的模仿并无法直接实现实际应用. 这种技术差异值得学者深入研究.

第二类区块链系统则按照共享目标分为两类:一类是共享账本系统(如比特币),另一类则是基于状态机的设计(如以太坊)。 具体来说,在比特币等典型共享账本系统中,在每个节点之间都存在一个共同维护的总账记录(即区块链),这使得其与金融应用的对接较为便利。而在基于状态机的设计中,则通过各个节点之间的协作实现总账的同步更新(即状态机的状态变化),从而达成诸如智能合约执行等复杂功能的各种操作。

依据梅兰妮·斯旺提出的代际演进理论, 将区块链系统划分为三个发展阶段: 1. 0, 2. 0 和 3. 0

第四是按照核心数据结构的划分方式进行的分类。** blockchain 技术确实在系统中实现了以链表形式存储区块数据的核心目标**;而 ** distributed accounting 这一派则主要借鉴了 blockchain 的技术理念**。尽管 distributed accounting 未将 blockchain 技术作为核心数据结构进行应用,但在某些阶段曾短暂采用过该技术并宣称其为未来的发展方向;若未来有机会借助技术创新或其他发展契机,则可能逐步取代现有技术。

主流区块链技术平台

认识流派的划分,在实际操作中也只能用于blah blahblahblahblahblahblahblahblahblahblah等等之类的空谈,并非真正意义上的实践指导。
区块链货币据称拥有上千种不同种类,但真正值得关注且具有实际意义的技术平台却屈指可数,要想深入从事区块链开发工作,必须打好基础,练就过硬本领,才能在众多机遇中脱颖而出,获取理想的工作机会。

毫无疑问,《作为一种具有里程碑意义的区块链平台技术方案》,比特币自推出以来已历经近八年的发展与运行,在其系统运行期间尚未出现任何重大漏洞或安全问题,并展现出极强的稳定性与安全性。《** Bitcoin Core 以其高质量的代码库和详尽的文档资源著称于世 **》, 这一开源软件不仅适合希望深入理解区块链技术并掌握核心开发原理的人群使用, 同时也能为其提供一个接近原始区块链开发环境的学习平台。然而, Bitcoin Core 采用 C++ 语言编写, 并结合了 C++11 以及 Boost 库等现代编程技术实现, 这使得其对学习者而言对 C++ 程序设计能力的要求相对较高。

参与蓬勃发展的比特币技术社群,则能显著提升学习效率。众多参与者共同作用则强,在加密货币领域中涌现出一系列新兴的技术与方案。例如隔离验证、闪电网络以及侧链等创新概念最先在Bitcoin生态中得到应用与实践。其中侧链技术的主要由密码学先驱Adam Back领衔的团队主导,在Bitcoin核心开发中扮演着关键角色,并带动了相关议题讨论最为热烈。

然而比特币作为典型的区块链1.0系统,在支撑其他类型的区块链应用方面是否是最优选择?这一观点存在较大的争议性。另一方面,并非所有人都具备深入学习 blockchain 基础技术的能力与意愿。因此对于那些急切进入 blockchain 领域的人而言,请考虑以太坊或 Hyperledger Fabric 作为更为直接有效的学习方向。

在以太坊之上的智能合约开发是进入区块链领域最简单途径之一

目前以太坊项目的开发进展较为困难。存在的明显问题在于项目数量过多且力量分散,这直接导致项目的整体质量良莠不齐。然而,相较于其他区块链2.0平台而言,以太坊所提供的开发环境是一个简单又完善的系统。对于初学区块链的人来说,掌握以太坊无疑是非常有必要的,因为这将帮助他们建立起对区块链与智能合约的最"正宗"的认识

在主流区块链技术平台中排名第三的是Fabric。它作为Hyperledger的第一个也是最知名的孵化项目而存在。 Fabric最初源于IBM的Open Blockchain计划,并于2015年11月被Linux基金会整合至Hyperledger体系中。 之后,在一场名为"Hack the Block"的大规模开源活动中(也被称为开源活动),Blockstream和DAH两家公司将其代码加入到了Open Blockchain项目中,并正式将该平台命名为 Fabric 。 到目前为止 Fabric 已经与Intel提供的Sawtooth Lake一并列为Hyperledger的一级孵化项目 但前者吸引了更多的关注而后者则相对较少关注。

就技术角度来看,Fabric方案颇为出色,其核心目标即是以提升交易吞吐量为核心,主要针对企业级商用场景进行设计.众所周知,比特币的最大痛点是平均每秒仅支持7笔交易,远低于现实中的需求水平.而Fabric系统的目标则是实现平均每秒10万笔的交易吞吐量,这一指标与双十一期间单日最高交易量相当,完全能够满足常规场景下的行业级应用需求.采用Go语言作为核心开发语言,Fabric系统不仅提供包括多种编程语言在内的API接口设计,而且充分考虑到了现代容器技术和架构设计理念.其中智能合约功能则运行在独立的容器环境中,这种设计理念不仅体现了对分布式计算能力的支持,Fabric系统还特别强调其静态编译部署特性所带来的优势.

Fabric具备一些特性,例如为其会员服务提供入网权限配置,如 typical decentralized blockchain architecture.此外, 其共识机制支持高度定制化.该系统内集成了一种可定制化的共识算法,即 PBFT协议,然而该协议的时间复杂度为 O(n^2),其中 n 表示参与方的数量.因此在节点数量有限且稳定的区块链网络中应用该协议是合理的,但在公共区块链网络中则存在效率低下问题

一个显著缺点是架构相对复杂。尽管提供了相关文档资料但对于缺乏开发经验的开发者而言这一挑战更为明显。然而得益于其明确的定位理念Fabric吸引了众多企业并已有多家机构正在进行基于该平台的联盟链相关探索工作。

小众门派

上述区块链开发的三大主流平台,在活跃度、关注度和参与人数等方面远远超过其他平台。但在当前市场环境中一些眼下还默默无闻的平台也不容忽视

Hyperledger 另一个一级孵化项目 Sawtooth Lake 是由英特尔开发的一款区块链平台,在这一领域中并不算特别知名。主要原因可能在于它与 Hyperledger 下属的 Fabric 存在一定程度的竞争或关联性;再加上其名称较为复杂拗口的特点,在公开讨论中较少被提及;此外其活跃度也不及其他更具影响力项目的平台也显得相对冷门一些。然而不可否认的是 Sawtooth Lake 是一个极具创新性的区块链方案设计者之一,并且其架构设计极为精巧。该平台以数字金融资产管理为核心目标,在整体架构上清晰有度,在模块化构建上展现出极强的可定制性;同时它还独创了独特的「交易族(Transaction Family)」概念,并支持多种共识机制如 PoET 和 Quorum 等技术方案;当节点数量较多时(特别是在公有链环境下),该平台利用英特尔第六代酷睿处理器所提供的 SGX 扩展功能来实现一种称为时间流逝证明(PoET)的共识算法;这种共识算法与比特币所采用的概率抽选机制(PoW)同属一类共同特点在于均采用了「掷骰子」式的共识方式;但相较于 PoW 的潜在风险问题——即通过ASIC专用硬件进行作弊操作的可能性——该方案能够有效规避潜在的安全漏洞问题;最终使得系统运行更加可靠稳定;另一方面当节点数量较少且处于受控环境时,则可以选择采用由ripple提出的Quorum共识机制方案;这种机制非常适合联盟链场景的应用需求;因此在不同的应用场景下 Sawtooth Lake 便能够灵活切换并展现出不同的实用性价值

Sawtooth Lake基于Python开发,并附带了Java SDK。
因为这两种语言的流行程度较高,在实际应用中应该拥有相当大的潜在开发者群体。
事实上,R3 CEV曾测试过该系统并实现了成功的证券交易交易。
目前最大的问题是关注度不高,不知道Intel是否有足够的耐心和毅力能够将其彻底推进下去。
如果Intel能够制定更明确的战略方针,并且提供更为有力的支持,我认为大家应该给予这一项目更多的关注和支持。

R3 Corda是一项广为人知且备受瞩目的分布式账本系统。 R3是一家由多家知名银行及金融机构共同创立的区块链生态系统企业,并获得了数亿美元的资金注入。该平台自诩为汇聚了一批顶尖人才,并致力于开发符合金融业特色需求的分布式账本技术。其中最为关键的是Corda模块,在经过长时间酝酿与期待后,在2024年11月30日正式发布。

R3 Corda是一项广为人知且备受瞩目的分布式账本系统。 R3是一家由多家知名银行及金融机构共同创立的区块链生态系统企业,并获得了数亿美元的资金注入。该平台自诩为汇聚了一批顶尖人才,并致力于开发符合金融业特色需求的分布式账本技术。其中最为关键的是Corda模块,在经过长时间酝酿与期待后,在2024年11月30日正式发布。

Corda基于JetBrain开源的小众语言Kotlin构建生态体系

此外,在区块链领域具有重要地位的两个 notable 项目包括 Chain 和 BigchainDB。其中 Chain 项目与 Visa 合作紧密,并基于 RethinkDB 开发了一个分布式账本系统。而 BigchainDB 则是一个独立于 RethinkDB 的分布式账本解决方案。两者各有其独特的思路与特点,并且均获得了规模可观的资金投资支持。值得注意的是 BigchainDB 仍有可能在未来取得显著的发展空间

区块链开发所需具备的技术基础

展望未来将主要由三类开发者主导区块链开发工作**,** 其中一类运用区块链技术构建 web 或移动端应用程序**.** 这些 developer 所需技能与今天's web 和 mobile 开发者大体相同**,** 这里不再赘述细节部分。

第二类开发者专注于开发智能合约系统。这类开发者不仅采用类似于Solidity等专业级区块链编程语言进行开发操作,并且也可以选择使用如Go、Java、Python等通用编程语言完成相关功能编写工作。相比而言,在设计和实现过程中所需的技术门槛相对较低,在多数情况下无需涉及复杂的并发或多线程处理内容即可由非技术背景人员也能够轻松掌握这些基础技能。然而,在设计和实现过程中面临的主要挑战在于业务逻辑与安全机制之间的平衡问题上——即如何通过简洁高效的方式将复杂而抽象的业务需求转化为可靠的安全运行机制本身就是一个极具难度的技术课题。基于上述分析可知,在这一领域中最有潜力的技术人才往往来自相关行业的专业知识背景

第三类开发者群体就是那些从事区块链核心应用系统及核心平台开发的专业人员。

特别强调一下密码学的重要性。对于大多数开发者而言,密码学是一个相对薄弱的基础环节。要在一个新兴领域如区块链核心技术中取得具有行业竞争力的创新突破,则必须重视并深入研究这一关键领域。即便是在现有密码学成果的基础上,在区块链技术的应用层面进行拓展与深化,则可能会带来意想不到的技术革新成果。例如利用零知识证明协议(ZK)构建一个高度匿名化的区块链系统框架:例如通过私有计算外包(PO)技术实现其他节点不仅能够验证交易的有效性(即完整性、可追溯性),而不了解其中的具体内容和细节信息;这样的技术创新不仅能够推动理论研究的发展,还能带来丰富的商业模式创新机会。基于以上分析与展望,则认为未来随着技术的进步与应用实践的发展过程不断深入发展下去,在更多领域当中都能够体现出这一基础学科的独特价值

区块链技术展现出无限的发展前景以及强大的颠覆性特质,并且具备高度的想象力。它可能预示着一个全新的商业时代的到来,并有可能成为传统势力所利用的对象。从何谈起,区块链技术展现了一次波澜壮阔的机会,将在这一领域上演什么样的传奇故事呢?

作者: 孟岩,全球最大开发者社区 副总裁,负责 有关区块链相关方面的工作。从2015年开始研究区块链技术及密码学,巴比特和渡鸦区块链特约作者,在多家专业媒体发表区块链技术专业文章,并对银行票据、电信、艺术品、供应链、可再生资源等行业的区块链应用进行过实质性探索。

2009年入职 IBM大中华区,负责IBM区块链、智慧地球、智慧城市、Watson认知计算等重大技术战略在中国的实施和推广,所直接策划和参与的智慧地球、智慧城市、IBM百年、中国网球公开赛大数据分析、巴西世界杯认知计算等传播项目在国际和国内屡次获得行业大奖。

曾担任总编多年,熟悉和了解全球顶尖的程序员开发者。

本文为《程序员》原创文章,转载请注明出处

这里写图片描述

全部评论 (0)

还没有任何评论哟~