首页
学习
活动
专区
工具
TVP
发布

区块链应用技术构成介绍

目前在国内,区块链技术被说成是互联网界热度最高的技术也不为过,它的热度不仅仅来源于它本身的技术价值,还来源于它成为割韭菜的代名词。

谈及区块链,很多人都知道它拥有去中心化、不可篡改、可追溯等特性,但鲜有人它是因为什么才具备了这些特性,所以产生了能去中心化的技术就等同于区块链技术这样不恰当的认识。

本文主要以区块链技术原理介绍为主,由区块链技术全面到局部的分析思路,逐级分步挖掘区块链的应用技术构成。

一、 区块链网络技术、节点和存储结构

为了能更好地了解区块链技术,我们先来看一个全局的区块链技术网络、节点和存储结构示意图:

(P2P技术节点网络示意图)

区块链的核心是采用p2p网络技术(peer to peer,点对点技术,又称对等互联网技术)。

这种网络技术没有客户端和服务器的概念,它上面的所有节点都是相同、独立、分布存在的,即每个对等节点可以独立运行并且均能与其他任一节点直接进行网络访问,同时为任何一个节点提供类似服务器的作用。这种技术下,只要不是全部节点同时被销毁,就可以从存留的节点上同步恢复。区块链分布特性来源于P2P技术。

在区块链技术上,节点中包含的所有资源都是分布性的:如计算能力、数据存储、通信方式、共识机制、智能合约等。

区块链技术中的数据存储结构同样来源于p2p技术原理,与分布式数据库不同,它采用了加密化和不可篡改的功能,并且这种数据库也没有所有者的属性。

二、区块链的共识机制和智能合约

共识机制:

区块链技术上面的共识机制是为了解决分布性节点一致性问题采用的算法。利用p2p技术原理的区块链节点是由多方共同进行管理的,因此可能部分节点是不可信的。为了解决这一问题,区块链采用的是“拜占庭协议”的共识机制,主要包含的算法有两种(内容来源于百度百科:):

改进型实用拜占庭容错(Practical Byzantine Fault Tolerance/PBFT)

PBET共识机制是少数服从多数,根据信息在分布式网络中节点间互相交换后各节点列出所有得到的信息,一个节点代表一票,选择大多数的结果作为解决办法。PBET将容错量控制在全部节点数的1/3,即如只要有超过2/3的正常节点,整个系统便可正常运作。

授权拜占庭容错算法(Delegated Byzantine Fault Tolerance/dBFT)

dBFT,是基于持有权益比例来选出专门的记账人(记账节点),然后记账人之间通过拜占庭容错算法(即少数服从多数的投票机制)来达成共识,决定动态参与节点。dBFT可以容忍任何类型的错误,且专门的多个记账人使得每一个区块都有最终性、不会分叉。

智能合约:

智能合约是一种用算法和程序来编制合同条 款、部署在区块链上且可按照规则自动执行的数字化协议。

该概念早在 1994 年由 Nick Szabo 提出[41], 起初被定义为一套以数字形式定义的承诺, 包括合 约参与方执行这些承诺所需的协议, 其初衷是将智 能合约内置到物理实体以创造各种灵活可控的智 能资产。

由于早期计算条件的限制和应用场景的缺 失,智能合约并未受到研究者的广泛关注,直到区块链技术出现之后,智能合约才被重新定义。区块 链实现了去中心化的存储,智能合约在其基础上则 实现了去中心化的计算。

三、区块数据和区块的链

说完了区块链应用的网络技术,我继续说说区块链里面的区块数据和链,此处以比特币区块链的单链为例讲述。

比特币区块链里面的数据以区块的形式保存在节点的数据库中,区块中包含区块头和区块体。

区块头中包含:总共80字节

1、比特币软件/协议的版本(Version)(4字节)

2、前一个区块的区块头哈希值(prevblockhash)(32字节)

3、本区块中所有交易计算出的Merkle根(Merkle root:本区块中所有交易信息按照规则计算出的最终哈希值)(32字节)

4、本区块产生的近似时间(time)(4字节)

5、生成本区块的难度目标(Target_bits)(4字节)

6、使区块头哈希值小于难度目标的整数(Nonce)(4字节)

区块体中包含:一段时间内的交易信息(存储的业务数据),每笔交易信息(或者业务数据)的哈希值和不断地两组合并的哈希值。

(区块数据内容展示图)

区块体中利用哈希值通过Merkletree结构(二叉树)很容易找到具体的交易数据。

区块链中数据的控制和链的创建、延伸,主要来源于对Hash函数的应用:

Hash函数:也称散列函数,实质是压缩映射,作用是把任意长度的数据输入都可以通过hash函数输出固定长度的散列值;

Hash函数的特点有:

1、散列值所占空间一般小于输入值;

2、输入值发生变化,不管变化大小,输出散列值也不同的;

3、Hash函数是不可逆单向函数,即无法通过散列值求出对应的输入值;

区块链中最关键的是连接各个区块的“链”,链也是利用哈希函数产生的,每一个区块的区块头都保存着前一个区块的区块头哈希值,并且这个区块要利用前一区块的区块头哈希值生成本的区块头哈希值,并保存下一区块的区块头中;

一个区块头的哈希值计算是输入该区块头保存的数据利用hash函数生成的,包含前区块头哈希值和本区块体的哈希值;结合上面所说哈希函数第二条特性,一条能够监控所有区块数据的链就产生了。

四、新区块创建(如:比特币挖矿)和激励措施。

创建新区块实质是矿工(区块链参与者)将区块链之外的业务数据(交易记录)利用hash函数生成完整的区块,将之公示让所有节点认可并写入所有节点的数据库。其中最核心的步骤是找到符合共识机制要求的本区块头哈希值。

区块链技术中有一块内容是记录当前已发生且未记录在链上的业务数据(交易内容),区块链参与者首先会获取区块链末端区块的头哈希值,再选择未记录在链上业务数据,利用hash函数打包进行计算,直到找到符合共识机制下本区块头哈希值为止。在计算的同时,也需要及时同步其他参与者创建新区块,获取新区块的区块链和在自己的区块中剔除和新区块数据中相同的业务数据。如果新区块由两个或者两个以上的参与者同时创建,此刻在区块链上就会分叉(新区块头哈希值不相同),最终采用区块产生更快那条链。

奖励机制:新区块创建者可以获得该区块的记账权,抢到之后可以获取来自两块的数据货币奖励。

1、新区块创建成功时,可以创建一笔转账给自己的交易记录,交易货币量在共识机制中约定,这笔货币量是凭空产生的,也称该种货币的发行。

2、收取来自本区块交易记录中的手续费。手续费越高的交易记录会吸引更多的参与者将它打包记录在区块链上,提高成功率,从而减少记录在链上的等待时间。用户如果想在短时间内将自己的业务数据同步上去,就必须提高手续费水平。

比特币区块链中,新区块创建成功的奖励会逐步减少,而参与者想要获得更多的奖励,就必须打包更多的交易记录,提高来自手续费中的奖励。

以上仅是我对区块链上面的特性来源进行分析说明;区块链是一门很有价值的技术,希望大家能够具体了解这项技术是怎么来的,以防被“割韭菜”;具体的技术实现,请自行查找相关资料。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180915F1G1DU00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券