您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
一文读懂区块链整体架构及应用案例
 
作者:赵建强
  3837  次浏览      15
 2019-11-14
 
编辑推荐:
文章主要讲解区块链概念及特征、区块链技术架构、区块链应用解析、希望对您有所帮助
本文来自于区块链社区HiBlock,由火龙果软件Delores编辑、推荐。

区块链概念及特征

1、区块链的定义

相较于区块链,大家似乎更了解比特币。区块链是一种技术,支撑和保障整个比特币的货币机制在这样一个分布式网络中运行,包括产生、流通、交易等等。

简单来说它就是一个账本,在整个交易过程中,每产生一笔交易,大家都会记一笔账,认可这个交易是有价值的,这笔钱从这个账户通过某种方式转移到另一个账户,区块链就是保证这个交易数据实时和不可篡改的一个记录。

从技术的角度来看,区块链是多种技术的整合。它不仅仅包括发币的制度,更重要的是分布式网络、加密技术、分布式数据存储技术等多种技术的组合。

从数据存储的角度来看,区块链是一个分布式数据库。区块链网络中的所有参与的节点都在存储数据,每个人都有一个账本,这就解决了伪造和中心的问题。

区块链完全使用分布式的网络。以前我们的金融交易系统更多的是中心化的,比如银行。我们的钱存到银行,过去很多年之后,银行可能说找不到那个存钱的记录了,这笔存款就作废了,这就是中心化的一个弊端,存在单点失效的问题。

分布式存储就不会存在这样的问题,历史上产生过的每一笔交易,每个节点的账本都有记录。在区块链或者说比特币的结构中,每笔交易的信息,包括币的产生、币的交易,都会产生一个区块,区块里包括了交易信息和时间,通过时间戳、随机数和前一区块的哈希值算一个新的区块,新的区块中包括当前产生的交易内容、数额大小和整个区块大小,区块链就是这么来的。随着交易的增加,链会越来越长,链上的所有信息都不可删除不可篡改。

如上图所示,交易数据随时可以回溯,任何一步都可以验证曾经发生过的交易。

区块链中每笔交易的流程都要经过上图所示的这七步,第三步就是所谓的“挖矿”。假如有笔交易是Alice要给Bob发送2个比特币,就代表着网络上这2个比特币的权属会发生转移。首先Alice发起交易,向全网广播,让全世界人都知道Alice要给Bob2个比特币,广播之后所有节点接收到这个消息,矿工知道生意来了:现在有一个新的交易。于是所有矿工开始挖矿。

前面我们说每笔交易都会记录到区块里去,怎么记进去、由谁来记呢?矿工挖矿就是去争取记账的权利,他争取到记账权后,要确认这笔交易是否正常,确认后把交易信息打包放到区块里,生成新的区块,做完这些事情之后系统会奖励给他比特币,同时还会给他一定的交易费。挖矿的奖励加上交易费组成矿工的收益。

这个记账权需要矿工通过计算来争取,矿工需要在最快的时间内通过一个随机数加上时间戳、前一区块的内容、本次交易的数据等计算出一个值小于给定的难度目标,(这个难度目标是根据上一个区块的计算难度、时间和全网的算力情况来决定的),而要找到这个值,并没有固定算法,只能靠计算机随机的哈希碰撞。随机数可以变化,而且要从0试到最大值2^32。

第一个算出来的人把得到的结果放到区块上让大家都认可即达成共识,经过连续6-7次确认即可认为这笔交易是可靠的,该矿工也就可以得到奖励,比特币是在挖矿的过程中产生的。

交易被打包进区块,并放到了链上,交易双方不可以反悔或赖账,因为交易经过了全网广播、全网验证。这就是比特币的产生和交易流程。

2、区块链的特征

开放、共识

区块链是一个分布式网络,任何人都可以参与到网络中来,所有节点都是平等的,都拥有一份账本,以共识机制通过竞争来维护区块。

去中心、去信任

完全分布式的端到端的网络,没有一个中心化的设备,节点之间无需互相信任。

交易透明、匿名

交易规则公开透明,交易数据公开,每笔交易都会经过全网广播,大家都能看到和参与验证交易的发生,同时所有参与节点都是匿名的。

不可篡改、可追溯

大部分节点同时确认新增区块,整个区块链上的数据只能增加,不能删除,不能篡改,通过这样的一个机制来保证在节点匿名和无需信任的状态下建立一种信任。因为每个区块都包含了上一区块的信息,所以每笔交易都是可追溯的。

3、区块链的核心技术

区块链包括四个核心技术:

共识机制,即前面提到的算力的证明,矿工怎么争取记账权,大家如何达成一致。

公钥机制,即交易产生的时候怎么验证身份。在区块链里我们用公钥机制来进行签名、加密和身份验证。

分布式存储,保证整个账本及交易的公开透明。

数字化合约,即我们所说的智能合约。

4、区块链分类

根据应用场景不同,区块链可以分为三类:公有链、联盟链和私有链。

公有链,比如比特币、以太坊等,所有节点都可以参与。

联盟链,部分节点可加入,需要通过联盟的审核和授权。比如大型金融机构之间建立联盟链。

私有链,一般在企业内部使用。

5、解决信任

区块链的整个设计思想就是为解决信任问题。分布式网络、全部节点共同记账、共识机制等都是为了解决“在一个网络中大家没有信任的情况下如何保证交易的可信”的问题。

从技术层面来看,多方参与,即分布式网络当中所有节点都参与,每次交易矿工通过计算竞争记账权,保证记账机会每个节点都公平拥有,而且计算结果需要经过大部分节点验证才能证明是有效交易并写入区块,个人修改或改变数据不影响整个账本的交易数据,保证交易的可信和不可篡改。

从经济层面看,通过这种方式降低了交易成本,实际上很多交易成本就在于信任的建立。淘宝做起来的一个很重要的原因就是它通过支付宝这个第三方平台来做背书,解决了电子商务中交易信任的问题。区块链通过保证每笔交易都被记录、交易数据双方不能篡改、每笔交易都经过节点共识并可追溯,让交易可信,不用担心反悔或欺诈。

区块链技术架构

1、区块链技术架构

区块链技术架构可以分为以下几层:

应用层,比如我们向钱包、客户端记账或转账。

激励层,比如怎么挖矿、怎么分配比特币的机制。

共识层,通过POW、权利证明等方式争取记账权。

网络层,区块链主要是通过P2P网络来保证整个分布式网络当中的传播和验证机制。

数据层,包括区块数据怎么生成、数字签名、哈希计算、整个链式结构的生成、以及非对称加密。

最核心的是交易的生成,上图所示是实际的一个区块的产生过程,每个区块都有它的前一个区块,通过前一个区块的信息结合当时交易发生的时间戳以及随机数进行计算,求得一个小于目标难度值的数,通过其他节点认证,大家认可就生成一个新的区块哈希值,写到新的区块中。每一个区块都是这么产生的,在整个交易链条中环环相扣。因为每个区块中都包含上一个区块的信息,因此它可以从后往前追溯,同时不可篡改。

上图是实际发生的一笔交易,块的高度等都在里面,能够实现快速检索是谁算出的随机数、广播的是谁、广播的内容和时间等信息。

而所有用户都是匿名的,这也是比特币交易在黑市流行的一个很重要的原因。

激励层就是发币的机制,前面提到任何一笔交易广播后,所有节点都会去争抢记账权,获得记账权完成记账后就会有奖励,比特币就是通过挖矿奖励产生。比特币的总量也不是无穷的,每四年减半。当比特币全部产生之后,矿工的收益就只有交易费,这也是比特币不会导致通胀的原因。

区块链技术中最核心的是共识机制,共识机制是获取记账权的凭证。共识机制包括:

POW,工作量证明,即通过算力争夺记账权。

POS,权益证明,谁拥有的比特币越多,获得记账权的概率就越大。

BFT,拜占庭容错协议,实际上整个共识机制就解决了所谓的拜占庭将军问题,少数节点不会影响多数节点的共识。

了解一下比特币的双花,这是比特币或者区块链面临的一个安全问题。还是刚才的例子,Alice要给Bob2个比特币,从Bob那买一千克黄金,Bob答应了,Alice在网上公布说要跟Bob发生一笔交易:Alice用2个比特币买Bob的一千克黄金。而Alice具有足够的算力,网络公布之后,大家去计算,算出来之后会生成一个新的区块放到上面,因为全网确认需要一段时间,在这个过程中Alice撤销了,又告诉全网说我要把这2个比特币给第三个人不给Bob了,然后又在全网广播,节点收到新的交易消息又开始挖矿,也算出来一个数,这样的话就会发生分叉,其他节点在同步账本的时候就会面临两个新的区块选择哪一个的问题。

区块链里的机制是选择长的链,所以前面说到需要在5-6个区块后才能确认交易可靠,节点根据这个长的链同步数据,短的链就被撤销掉了,以此来共同来维护这个账本。解决这个问题我们需要在确认的时候有一个延时的机制,也就是说当延时一定程度之后再确认,使得它在这个时间当中不可能快速地去创建一个更长的链来撤销这个交易,这是时间也是根据当前整个网络的算力来估计的。理论上有双花的可能,但实际上发生的概率非常低。

回顾一下比特币的交易机制。

首先交易输出,比如我要从我的钱包里拿出2个比特币来进行交易,我要先对这两个比特币进行锁定,再告诉全网我要发起这笔交易,这2个比特币属于交易状态,即在交易中不能再交易,然后用公钥私钥进行加密和签名。

然后是交易输入,支出方用私钥签名和加密,接收方同时用公钥加密,完成双重加密后,由矿工打包区块、节点完成共识,验证交易后,双方共同用公钥和私钥进行验证并解密,完成交易。

也就是说整个交易过程中,首先是对交易账户中的余额即交易的内容做锁定,双方确定之后再解锁,然后从账户里扣除掉想要的交易数和手续费。

2、区块链应用架构体系设计

这是整个区块链的应用架构体系设计图,我们可以根据这样的思路构建一个应用:

首先是区块链协议,整个账本怎么建立、账本状态怎么更新、账本历史怎么证明、账本当中节点怎么更新、智能合约指令如何保证智能合约引擎。

其次组件模型是实现这些协议的内容,包括共识网络、账本、持久化引擎、合约引擎等。

最上面是服务平台,包括网关、服务、节点网络、SDK、工具等。

简单展开介绍一下。三大块:

区块链协议,我们自己开发相应的区块链技术和应用的时候,一定要定义自己的区块链协议,比如账本怎么建立、区块怎么构建、奖励怎么设置、账本怎么操作、账本的数据怎么更新、怎么计算等。基于这样的一个协议,来开发相应的支持账本和状态更新、历史证明、账本添加等的组件。最后再提供服务平台。

在协议设计时有3个原则:

面向业务。一定要面向我们的具体业务,利用区块链的思想解决具体业务中的什么问题,要解决什么问题决定了这个账本应该怎么设计。

标准化。我们的业务一般会涉及多个主体,这种情况下我们应该尽量让区块链协议标准化,解决各个主体之间数据交互的问题。

松耦合和模块化。定义模块间清晰的接口,实现模块之间的松耦合,以此获得整个系统的扩展性,满足不同用户和场景的需要,采用可插拔的模块组件。

区块链应用模型设计,包括3步:

定义身份。所有参与这个链的节点的身份都要通过某种方式来验证。

编写智能合约。账户验证的同时,我们要使得交易正常进行的话,需要把参与者之间达成的商业协议以智能合约代码的形式进行定义。智能合约最核心的是提高效率,降低交易的可替代性。之前合约的签订具有主观性,容易产生违约的情况,智能合约是通过代码的形式统一规则,保证只要满足合同所约定的条件就会自动执行,谁也不能更改。

签署智能合约。智能合约最后需要经过参与者以各自的身份账户做出签署,之后每一方参与者只需要根据业务范围内的业务进程做出相应的操作,触发智能合约执行。

确定了应用模型后,我们进行区块链应用账本协议设计。

账本协议是从数据的角度定义模型。账本数据的标准格式:包括账本状态、账户的历史证明等。读写账本数据的指令的标准格式:包括账本操作集、合约指令集。

再来看区块链应用组件模型设计,区块链应用组件模型包括共识网络、账本、持久化存储、合约引擎。

共识网络包括算法的使用和共识过程两方面。

共识网络中共识算法可以根据整个应用的业务需求来设定,只要满足标准化和具备不可伪造性的条件,可以通过网络当中参与的节点证明它所有的权益就可以。

共识过程包括怎么证明交易在网络上扩散;如果发生两个节点具备同样能力的情况,怎么进行交易排序;在产生交易的时候如何调用交易执行程序;如何对交易结果进行全网共识?如何提交共识结果生成块?

账本。账本状态和合约分离,使用基于身份的访问控制协议约束合约对状态的访问,这种将数据和逻辑分离的设计模式是典型的贫血模式,可为上层业务逻辑提供无状态的逻辑抽象。

持久化存储。利用成熟的NoSQL数据库实现持久化存储。

合约引擎。前端包括合约高级语言规范及其工具链;后端提供轻量级合约中间代码执行环境。

最后来看区块链应用服务层设计。

区块链网关,包括私钥管理、隐私保护、协议转换。

区块节点服务,包括账号管理、节点进入网络的认证授权、账本数据访问框架、网络当中整个交易的事件通知机制、智能合约管理等。

区块链共识网络,由共识节点组成的网络,基于P2P网络和共识算法确保交易数据在节点之间保持一致。

工具,配套的工具集合包括SDK、数据管理、安装部署工具、监控服务。

区块链应用解析

1、区块链适合解决哪些问题?

第一类:业务开展需要跨主体合作。也就是需要很多个单位或业务部门合作并且有很多流程的时候,区块链可以解决多主体之间的信任问题,提升交易效率。

对于此类问题目前的一种解决方式是:有一个中心化的节点去协调业务开展,各方存在成本分摊及数据隐私的问题,成本较高,且参与各方不愿意把自己的数据贡献出来。

另外一种是SOA方式,因为要打通各业务方之间的数据,技术比较负责,方案缺少通用性,只能解决当前特定业务领域的问题,难以支持复杂业务。

以上两种方式都难以防止数据被篡改。

利用区块链可以做到:共有数据,通过加密的方式既保证了数据的隐私也可以做到防篡改,利用分布式和数字化合约的特点能够将一些业务层面的协调解决问题放在技术层面解决,更高效灵活客观。

第二类:对方参与并需要低成本信任。参与的节点很多,节点之间验证或构建信任的成本又要比较低。

第二类问题需要多方参与同时又要求低成本信任。

首先要解决数据可信的问题。传统的方式是数据由中心节点强势持有,比如传统的银行等,数据可信由数据持有者的商业或社会信用来保证,只能建立主观的可信;区块链结合密码学哈希和数字签名,以区块链的形式将数据变更历史结合,通过共识协议使得参与方共同拥有数据,多方持有相同数据副本,并数据被签名确认,数据变得可信。

其次是合约履行。通过智能合约的方式,使得整个业务方之间确定的这种合同协议自动化客观地执行,只要满足条件,合约就会自动执行,降低履行成本,确保高效履约,一般的契约是事后以人的主观意愿来执行,智能合约是在触发条件被满足后,由计算机程序来保证合约及时执行,具有客观性。

最后是历史可证明。固话交易历史,并提供对交易历史的追溯查询,保证交易的不可篡改和不可抵赖,保留参与交易各方可信的历史记录。

第三类:业务存在长周期交易。

第三类问题是业务过程存在长交易、长周期链条。最典型的就是供应链,业务在多个主题之间流转,难以确定间接主体的真实性和有效性,由于多主体间业务隔离,难以延伸出多级业务。区块链从技术上保证整个长交易、长周期链条的各参与主体身份真实,数据可信,实现信用多级传递,提升业务效率。

2、区块链应用生态圈

区块链应用最典型的场景是金融,包括跨境支付、保险、政权、股权登记等。

跨境支付方面,目前市场上跨境支付存在中心节点的问题,商业机构之间对账导致跨境交易时间变长,一笔交易对账可能需要几天的时间。

保险理赔方面,以前保险理赔需要准备很多材料经过各种核实,过程很长。通过智能合约的应用,既无需投保人申请,也无需保险公司批准,只要触发了理赔条件就能事先自动理赔和支付。整个理赔过程会在区块链上向全网广播,因为区块链数据不可篡改不可造假的特点,还能大大较低骗保的概率。

政券交易方面,将股权整合进区块链中成为数字资产,可实现无需通过中介机构直接发起权属转移等交易。

票据方面,借助分布式高容错性和非对称加密算法可实现票据价值的去中心化传递,较低对传统业务模式中票据交易中心的依赖,降低系统中心化带来的运营和操作风险。

区块链在公共服务领域的应用主要是文化、教育、产权登记、医疗健康等方面。文化方面,主要是版权保护。

3、区块链技术在国内外布局

4、区块链技术应用解析:共享经济

接下来举个典型的应用案例:Airbnb。

Airbnb是一个P2P房屋共享平台,最大的问题是房主和房客之间的信任。房主会担心住进来的这个人不安全,房客去到一个陌生的地方同样会担心这个房子或房东的安全。

快速解决信任问题,目前的方式是用户注册账户之后要做一个身份验证,网站会保证所有用户都是实名的。房客会通过线上交流的方式对房东和房子的情况做一些了解,同时房东也会对房客进行考察,这个人的信用怎么样、有没有租过房子、什么背景、要不要租房子给他等等。这个过程会很长,因为这是个全球化的平台,还涉及到时区的问题,一个交易有时候可能会需要20-30小时来确认。确认后预定交易最后互评,整个过程非常长。

这种方式存在的痛点包括:房主和顾客交流耗费大量时间;评价房主、顾客和房屋存在困难,会有类似刷单的行为;支付和担保速度慢。

区块链技术恰恰是针对解决信任问题,信任问题解决后所有痛点也将迎刃而解。比如快速在房东和顾客之间建立信任,就可以缩短交流时间,甚至可以不用交流。入住就将钱打给房东也就解决了支付和担保的问题。

信任怎么建立呢?通过区块链的方式每一个交易都在区块链的网络中进行,所有人都可以看到交易的整个过程,顾客身份信息的提交经过匿名化的加密处理,通过签名来保证账户信息的有效性,预定的时候通过加密机制保证预定的安全,验证预定可信后整个交易会让网络中的所有节点知晓,信用也会在交易中体现并记录,取消或伪造交易的作恶行为同样也会被记录在网络中,成为下次交易的判断依据。

同时会有一个智能合约,触发入住条件后自动将钱打给房东。最后评价机制设置上通过区块链的方式保证评价的可追溯、不可篡改和不可伪造。

从三个方面解决整个交易的信任问题,同时也提升了交易效率。

5、区块链应用解析:供应链

物流供应链中存在两个比较明显的痛点:信息不透明、不流畅,交易效率低;纠纷处置难,举证追责难。

我们通过区块链技术保证整个物流的每个环节都生成一个块,形成每一步都可溯源的链。解决思路是:

首先各方交易数据公开透明,加快信息流提升效率;

其次交易数据不可篡改,便于举证和追责;

最后交易数据可追溯,杜绝虚假交易和假冒伪劣。

区块链在供应链的两个应用场景:物流和溯源防伪

物流方面主要是:利用数字签名机制保证无法伪造签名,防止货物丢失冒领;通过真实身份证生成数字化身份证,既能保护个人隐私,又能落实实名制度;简化物流流程。

溯源防伪方面主要是:数据完整性和不可篡改;商品交易全流程记录;贵重物品的防伪溯源。

   
3837 次浏览       15
 
相关文章

iOS应用安全开发,你不知道的那些事术
Web安全之SQL注入攻击
移动APP安全在渗透测试中的应用
从Google备份互联网看“数据安全”
 
相关文档

web安全设计与防护
互联网海量内容安全处理技术
黑客攻击与防范技术
WEB黑盒安全检测
 
相关课程

WEB网站与应用安全原理与实践
web应用安全架构设计
创建安全的J2EE Web应用代码
信息安全问题与防范