【AICon】硅谷视野+中国实践,汇聚全球顶尖技术的 AI 科技盛会 >>> 了解详情
写点什么

如何设计区块链应用程序架构?

  • Navveen Balani
  • 杨志昂
  • 褚杏娟

  • 2020-02-27
  • 本文字数:4572 字

    阅读完需:约 15 分钟

如何设计区块链应用程序架构?

本文提出了一种分层的区块链参考架构,该架构包括应用层、智能合约层、集成层、分布式账本层以及安全层。该架构提供了区块链应用程序所必需的组件和服务,并适用于公链或私链各种应用程序的设计。


直至今日,区块链的设计已经远远超越了它最初作为 加密货币技术的存在。区块链已经发展成为一个支持适合公众和企业需求的全行业用例技术平台。下面所示的区块链参考架构将作为构建或实现全行业用例区块链应用程序的基础。该参考架构描述了一个分层的体系结构,它提供了满足企业需求的区块链应用程序所必需的组件和服务。基于不同的商业目的和业务对象,该架构可以用于开发包含单个或多个网络(涉及多个业务单元或组织)的区块链。在该参考架构指导下,开发者既可以实现许可链(即私链)应用程序的设计,也可以实现非许可链(即公链)的设计。



上图所示参考架构可用于构建任何区块链应用程序。该架构被划分为多个重要的逻辑层。这些层分别是应用层、智能合约层、集成层、分布式账本层以及覆盖全架构的安全层。接下来,让我们来了解每一层及其所包含的组件:

应用层

应用层是你的终端用户或客户端应用程序所在的层次。客户端应用程序通常通过触发交易来启动整个业务工作流。之后,该交易由节点调用智能合约层功能继续向下执行。客户端应用程序可以使用任何软件编程语言实现,并且可以运行在各种操作系统上。应用程序既可以使用任何区块链框架实现所提供的命令行接口(CLI)工具,也可以使用特定于编程语言的软件开发工具包(SDK)与网络上的节点通信。随着区块链技术的演进早已超越其传统的基于数字加密货币的网络形象,我们看到越多越多不同类型的客户端和工具现已支持区块链框架。如今客户端应用程序还可以侦听发生在区块链网络上的各种类型的事件(event),并对这些事件执行必要的操作。这些网络事件可能是很简单的事件,比如仅仅是从网络向应用程序提供状态更新。在开发时,还可以使用一个单独的专用应用程序来监测区块链网络。

智能合约层

智能合约层的软件代码实现了区块链网络中的交易。这些代码是由区块链网络节点调用的关于业务规则或条件的一组逻辑集合。智能合约可以有自己的运行环境或虚拟机环境。这可以让它在安全的上下文中运行,就像在虚拟容器里一样。而且智能合约可以用任何一种流行的软件编程语言来实现,例如(但不仅限于)热门的语言 Java、Python、Go、JavaScript 和 Scala 等等。也可以将智能合约编写为一种服务(service),并将其放在注册表中,以便客户端以独立于位置的方式来查找相同的服务。注册表可以安全地被保护起来,并且可以控制访问,这样只有经过授权的客户端才能根据该合约来执行操作。还可以使用加密哈希散列算法来保护智能合约本身,使其内容(其形式是软件代码和相关元数据)成为机密。智能合约还可以被编写为事件(event)的形式来进行交易状态转换的通信或广播。该事件可以实现为合同本身的生命周期事件。客户端应用程序可以侦听这些事件并相应地对它们进行处理。

集成层

当今世界,在所有的颠覆性技术中,应用程序的集成和互联通信已经变得十分重要,因为现在没有一个技术平台可以孤立存在。区块链也同样如此。应该保证区块链网络能够访问自己网络之外的任何数据。这些数据可以为区块链工作流提供重要价值,可能是外部应用程序或外部系统的一部分。类似地,也需要保证外部系统能够与区块链网络进行通信。一种实现方法是设立一个外部事件 hub,该 hub 作为媒介,通过事件处理器与外部系统交换数据。而外部应用程序可以侦听来自该 hub 上的特定事件,并相应地执行某些任务。另一方面,智能合约软件也可以侦听来自外部系统的事件,并相应地执行业务功能。下面几小节解释了集成场景中一些有趣的其他用例:

人工智能(AI)集成

正如我们所了解的,区块链本质上是一个分布式账本,它采用去中心化和自动化的方法来处理基于共识的交易结算过程。那么,又如何将人工智能应用在区块链中呢?人工智能的应用必须基于大量数据。而区块链本身就是一个包含大量交易的数据库,于是可以将其中的数据提供给诸如机器学习(machine learning)的人工智能分支应用来完成某些功能,例如,可以对数据应用复杂的算法来优化特定的业务功能。人工智能分支应用还可以用来改进整个业务流程或工作流。人工智能算法可以检测出明显的异常,并进行预测性建模或分析,从而找到能够降低交易成本和增加区块链网络中各方业务收入的那些指标。在需要自治工作的系统之间,也可以应用人工智能的解决方案来达成交易共识。总之,人工智能和区块链的强强联合可能会在未来真正地改变游戏规则。

云集成

还可以扩展区块链架构来实现在云上的组件托管,云可以提供诸如路由、数据转换、协议转换、扩展的证书授权中心(CA)等应用程序的集成服务。该组件还可以充当中间件,在云中提供“区块链即服务(blockchain as a service)”功能。在区块链实现中可以提供一个适配器,以便从区块链网络内部和外部连接到该中间件组件。区块链中间件组件可以托管在安全的“沙箱”环境中,也可以托管在一个安全的虚拟容器中。而外部应用程序可以通过该适配器,在获取访问区块链网络的有效证书后,与区块链中间件进行交互通信。

物联网(IoT)集成

新的一波关于技术集成的浪潮是区块链网络与任意可连接的设备进行通信。不同类型的物联网(IoT)设备或传感器可以将数据注入区块链网络,然后由区块链节点进行验证。可以实现一个标准化的中间件,它可以从设备获取数据,并根据区块链网络的需求执行必要的数据换算和格式转换。之后,区块链网络中的节点可以使用智能合约的特定共识算法来对这些数据进行验证。


注:有关区块链和物联网集成的更多细节,请参阅这篇 概述文章。

分布式帐本层

这个分布式账本层是区块链架构的核心持久层。它提供了一个去中心化的分布式数据库,该数据库包含所有的交易条目。这些交易条目按其出现的顺序进行记录,并组成哈希散列块。因此,该数据库,或分类账,实际上就是交易的一个哈希块链,其中每个块都指向链中的前一个块。分类帐在区块链全网络中进行共享,这就意味着每个节点都有分类帐的副本,所以每个节点都能独立地对交易进行验证。当每个节点都同意并确认交易的真实性时,此时就宣告分类帐达成共识。区块链网络使用不同的共识算法来达成共识。共识算法是监管交易的一组规则和条件。为公众实现的区块链网络,即公链,有一个无需许可的分类账,而在私链或联盟链(半公开,介于公链和私链之间)中,分类账可以实现为需要许可。在访问和管理交易的方式上,需要许可的分类账引入了某种形式的访问控制。

分类帐管道(Conduits)

对于许可链(私链)的区块链网络,开发者可以实现一个名为分类帐管道的模式。在区块链网络中,可以将这样的管道视为私有通道,这样甚至能在该网络中让两个或多个节点更私密地执行交易。这种节点必须是成员节点,并被专门授权对这些私有管道拥有使用权。可以将这些管道视为大型网络中的小型网络。在企业中实现区块链时,这种模式能进一步加强安全性。

共识算法

区块链网络通常由不受信任的匿名实体或节点进行监管。而区块链中的共识是在网络中提供信任机制的最关键因素。每个节点都可以用交易形式的数据来对区块链网络进行更新,而这些交易最终需要经过验证,然后才能作为区块链的一部分被正式记录在分类帐中。关于如何创建和验证交易块并实现区块链的信任机制,有多种不同的共识算法。


实用拜占庭容错算法(PBFT)


这是基于多数表决的共识。网络中每个节点根据给定的规则或条件集更新和验证区块链网络。如果网络中的大多数节点在更新时反映了相同的结果,则宣告网络达成共识。可能会有少数流氓节点(Rogue Nodes)违反网络规则,但它们的表决结果不被接受,因为它违反了该算法给出的结果。该共识算法应该满足所有必要条件,并且所有的节点必须同意并执行相同的条件才能得到所期望的输出。


工作量证明算法(Proof-of-work,PoW)


工作量证明是最早设计出来的传统算法之一。比特币的区块链网络和以太坊网络都使用了这种算法。与上面的实用拜占庭容错算法不同,工作量证明算法并不依赖于多数表决来达成共识,它是一个需要消耗大量计算资源的算法。只有计算能力更强的节点才能争得工作量证明算法的记账权。第一个完成指定任务并有正确输出的节点会赢得创建块的记账权利,并得到相应的报酬。工作量证明算法通常涉及到某种加密哈希散列算法,以实现所需的目标或结果。在我的 免费教程中,第 2 章对工作量证明算法有详细讨论。


股权证明算法(Proof-of-Stake,PoS)


前面提到,使用工作量证明算法需要巨大的计算能力,从而导致较高的能量消耗。这种情况可能并不适用。而股权证明算法通过提供一种称为用户权益的替代方法来克服这个问题。那些占据或拥有最高数字货币量(或某些资产)的用户会赢得在区块链网络中创建块的记账权利。因此,在这种算法机制下,并不用需要花钱在升级节点的算力上,而是直接买下加密货币(或其他资产)来增持用户权益并争得记账权,从而取得对一个交易块的验证和创建的权利。

安全层

我们在前面的区块链其他组件部分也涉及了一些安全性的讨论。安全层是区块链架构中的重要组件之一。无论是公链还是私链,基于区块链的实施都需要保证安全性和共识策略。在公链中,每个节点都可以参与交易,而在私链中,由于有某种形式的访问控制,只允许被许可的节点参与交易。


区块链网络中的每个实体都必须进行身份绑定。在公链网络中,通常会限制只有参与交易的用户才能成为这样的实体,而在私链网络中,实体可能由组织、节点、用户以及在区块链网络中可以发挥作用的任何东西所构成。


对于私链网络而言,可以使用公钥基础设施(PKI)平台,在这个平台里,受信任的证书授权中心(CA)可以颁发加密证书。而这些加密证书可以采用证书和密钥的形式。私钥可用于数字签名,而公钥可用于验证。这种机制实现了一个可信网络,在该网络中所有参与者都知道他们是谁,也知道他们可信度的来源。既然现在区块链网络种的各方参与者都可以使用自己的加密证书,还有可能建立自己的证书授权中心(CA),所以至关重要的是,区块链的实现需要提供一种即插即用式的服务,或者是一个抽象的逻辑层,来有效地管理、测试和验证在网络中采用不同安全机制的各种实体。


简而言之,区块链安全层需要具备鉴权、访问控制、完整性、保密性、不可篡改性五大有效措施。

结语

区块链被认为是继互联网之后的下一波网络技术革命,在商业领域的潜力尤其巨大。区块链这种自我监管的环境,在身份管理方面提供共识和来源的支持,在安全性方面提供密码学和策略支持,这将为产生众多新一代应用程序铺平道路,而这些应用程序又会在未来为区块链网络提供更健壮的基础设施支持。如今已经有许多不同风格的区块链问世,从诸如以太坊这样的非许可分类账到诸如 IBM 超级分类账(HyperLedger)这样的许可分类账。而区块链的行业用例已经从以加密货币为中心的金融领域延伸到各行各业,如保险、供应链、医疗、物联网等。根据用例的类型,你可以选用非许可的区块链(公链)或许可的区块链(私链),甚至是二者的组合技术,即使用公共的共识机制来驱动私有的业务交易。


区块链式思维已经拉开帷幕,云、大数据、人工智能、物联网和分布式账本的组合力量将在未来带来更多创新的业务解决方案。


作者介绍:


Navveen Balani,个人网站 https://navveenbalani.dev/


原文链接:


Blockchain Reference Architecture


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2020-02-27 16:253179
区块链 架构 AI&大模型 方法论 中间件 操作系统 编程语言 框架 微服务 保险 医疗 企业动态

评论

发布
暂无评论
  • 区块链 + 新基建:数字社会的四驾马车

    区块链在内的“四驾马车”,如何推动数字社会的发展?

    2021-08-18

  • (2.6w 字)网络知识点灵魂拷问——前端面试必问

    2.6w字带你了解前端面试关于网络的90%以上知识点

    2020-08-23

  • 2020 年,区块链互操作性现状

    主要面向加密货币、区块链引擎和区块链连接器。

    语言 & 开发 区块链 行业深度 方法论 框架
  • 智能合约:虚拟与现实的价值锚定载体

    这一讲我们会通过NFT和元宇宙两个概念,揭秘智能合约的价值。

    2021-08-09

  • 零信任对 Kubernetes 意味着什么?

    本文从工程角度探讨零信任的定义,并通过建立一个基本框架以解析其对Kubernetes运维和安全团队的影响。

    安全 服务革新 容器 微服务 编程语言 框架 汽车
  • 华为云区块链服务安全隐私保护的设计与实现

    本文介绍华为云区块链服务BCS(BlockChainService)在安全隐私保护的设计与实现。

    区块链 安全 华为 操作系统 框架 云安全 芯片与网络
  • 困境与展望:区块链技术如何嵌入未来世界?

    区块链技术是如何改变社会生产关系,又遇到了那些困难?

    2021-08-25

  • DeFi:“三无模式”开辟金融新蓝海

    DeFi的意义不仅在于业务模式创新,站在社会价值的角度,DeFi的积极意义还在于金融普惠性和透明度的提升。而除此之外,DeFi还正在面向全球用户,创造一个无需准入、规则透明、规模极具想象力的金融统一大市场。

    2022-09-01

  • 区块链 + 社会治理:区块链如何为治理提供新方案?

    这一讲,我们一起探索区块链+社会治理的新方案。

    2021-08-23

  • 《架构师训练营》第五周 命题作业

    缓存服务器节点(CacheServerNode),用来模拟从缓存服务器获取缓存数据的行为。

    2020-07-08

  • 开发人员必须知道的 Web3 基本工具和技术

    Web 1由静态网页组成;Web 2为我们带来网页应用程序,网页成为某种平台;而Web 3由建立在区块链上的去中心化网络组成。

    文化 & 方法 行业深度 AI&大模型 最佳实践 企业动态 数据处理 架构/框架 编程语言 框架
  • 不被尊重的小企业,难以参与大厂们的联盟链游戏

    大企业也是不慈善家。

    区块链 行业深度 方法论 最佳实践 框架 银行
  • BSN 面向海外正式发布 Spartan 网络:支持用户获得链上所有数据

    “Spartan网络提供了一个集成了无币公链的基础设施。”

    区块链 产品 数字化转型 语言 & 开发 企业动态 最佳实践 性能优化 框架 银行 行业深度
  • 以太坊都这么堵了,Eth 2.0 在干嘛呢?

    “我在刷怪、做积分”

    区块链 文化 & 方法 方法论 最佳实践 性能优化 编程语言 汽车
  • 一个月内接连遭受两次攻击,BSV 网络安全被质疑

    “并非所有项目都能成功。”

    区块链 语言 & 开发 方法论 性能优化
  • 区块链 + 数字人民币:怎样理解数字人民币体系架构?

    而伴随着数字人民币的发展,总有声音将其和区块链技术联系起来。

    2021-08-16

  • 进击的以太坊:当前网络活动似 2017 年牛市?

    PoW还是PoS?

    区块链 文化 & 方法 企业动态 最佳实践 性能优化
  • Java 进阶面试合集笔记——19 个技术栈,35 岁以后的 Java 程序员出路在哪里

    八、网络

    2021-10-30

发现更多内容

前端技术培训后的职业规划

小谷哥

Github星标57.9K!阿里巴巴Java面试突击汇总(全彩版)首次公开

Geek_0c76c3

Java 数据库 程序员 架构 开发

Java面试最强10W字面经,Github访问量破百万,火热涨星中!

Geek_0c76c3

Java 开源 程序员 面试 开发

消除两个开源项目之间长达4年的分叉

TiDB 社区干货传送门

TiDB 底层架构

《数据迁移》--单库迁移

TiDB 社区干货传送门

迁移

带你认识JDK8中超nice的Native Memory Tracking

华为云开发者联盟

开发 华为云

聚焦六大典型应用场景,博云金融行业容器解决方案更新发布!

BoCloud博云

云计算 云原生 容器云

阿里内部最新发布的并发图册+JDK源码速成笔记,终于解脱束缚了

Geek_0c76c3

Java 源码 程序员 JVM 开发

数字化转型失败率高达84%?看看数字化转型方法对不对

雨果

数字化转型

资源成本降低80%!Serverless云函数的弹性架构实践

Geek_2d6073

使用Mask R-CNN模型实现人体关键节点标注

华为云开发者联盟

人工智能 华为云 mask 企业号十月 PK 榜

分享一个好问题:企业为什么要区分数据中台和数据平台?

雨果

数据中台 大数据平台

32天高效突击:狂刷《Java权威面试指南(阿里版)》,offer拿到手软

Geek_0c76c3

Java 数据库 开源 程序员 架构

自制操作系统系列(三):加载其他文件执行

操作系统

java培训机构口碑排名哪家比较好?

小谷哥

量化与科技的相遇!亚马逊云科技揭开神秘的量化私募

Lily

How Good is TiDB as an HTAP System? A HATtrick Benchmark

TiDB 社区干货传送门

数字化背景下,低代码发展的动力和阻力

SoFlu软件机器人

全网首发“Java面试考点大全”,25+专题梳理:JVM+多线程+Spring全家桶+MySQL+Redis等

Geek_0c76c3

Java 数据库 开源 程序员 开发

web前端开发培训学习后的就业方向

小谷哥

2022年最新【Java经典面试800题】面试必备,查漏补缺;多线程+spring+JVM调优+分布式+redis+算法

Geek_0c76c3

Java 开源 程序员 架构 面试

前端培训怎么学习好就业?

小谷哥

单刷 3 届 Hackathon,朝着理想中的数据库出发丨TiDB Hackathon 选手访谈

PingCAP

TiDB

以太坊质押时代到来,开发者机遇何在?

TinTinLand

区块链 以太坊 开发者 质押挖矿

web丨nft元宇宙链游项目系统开发模式逻辑详细(成熟源码)

I8O28578624

流程引擎的架构设计

京东科技开发者

架构设计 报表 workflow BPM 流程引擎

华为云确定性运维,为政务云平台稳定可靠运行保驾护航

华为云开发者联盟

云计算 华为云 政务云 企业号十月PK榜

数据培训机构的学习费用是多少

小谷哥

数据分析师被当作取数机怎么办?

雨果

数据中台 数据分析师

数字化转型必读:从信息化到数字化的本质是什么

雨果

数字化转型 数字化 数字化业务转型 信息化本质

如何给TiDB集群的prometheus更换端口

TiDB 社区干货传送门

实践案例 集群管理 安装 & 部署 扩/缩容

如何设计区块链应用程序架构?_区块链_Navveen Balani_InfoQ精选文章

两个鬼故事小餐饮起个什么名字名住宿起名晗字起名寓意男孩起名诗句有哪些伏魔战记3.9j多箱子版滕州电视台怎么和睿起名姓石起名字家乡的春节cctu1电教亲戚建群起什么群名好沙子多少钱一吨古风起名网警方通报12岁女孩遭陌生男掌掴名泽村庄起名起什么好汉口文体中心姓林起名大风车的歌词集团公司起什么名字好听游园记cctv5篮球直播咨询企业名称起名起英文名网站有哪个鲇鱼效应汽车起名字大全建湖起名馆哪家好金牛座的性格猪年 起名少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

两个鬼故事 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化