区块链是啥? 理论层面:区块链是去中心化的分布式账本。 A、B是交易双方,C记录这笔交易。 (例子:现金交易,打借条存证或第三方见证该笔交易) 问题:如果发生交易纠纷,C可作为证据,倘若A、B一方与C串通,或者C丢失,则无法佐证该笔交易。 A、B通过C来交易,C是中心。 (例子:用户使用支付宝之间的交易) 问题:如果C中心系统出现问题,丢失数据,也无法佐证该笔交易。 怎么解决以上两种问题呢? 答案:区块链将一个C变成无数个C。 A、B是交易双方,系统上所有的节点C都来记录。 每发生一笔交易,系统在每个节点C上更新记录一次这笔交易。 (注:A和B本身是不公开的,A和B这笔交易具体是交易什么也不公开,系统仅仅公开发生了这笔交易,至于C是如何记录的,后面会认真解释) 如果这笔交易发生上述1、2的问题,则系统上超过50%的节点C来提供交易信息,验证这笔交易的真实性。 这是区块链的一个基本的原理和逻辑。下面我们通过区块链的六层架构,详细讲解一下区块链是如何成为去中心化的分布式账本的。 区块链的六层架构 区块链由底层到应用层,共分为六层。分别是数据层、网络层、共识层、激励层、合约层、应用层,每一层都有不同的作用。 01数据层 数据层是最底层技术,它包含两块功能:数据存储、账户和交易的实现与安全。 1、哈希函数 也叫哈希算法,是一类哈希函数的总称,最直观的理解是把“任意长度的输入”变成“固定长度”。 哈希函数H接受任意但有限大小的消息x并输出固定大小的哈希值h,即h=H(x)。 举个例子: x1=“A转账10块钱给B ” ???h1=a3fc27b01sakhsgdb356cgh1 X2=“A转账了100块钱给B” ?h2=c6804n57s3p8dh46dfhqpfg h1与h2的字符长度是一样的,每一个输入x,对应唯一的哈希值h。 (常用的哈希算法为SHA-256,它的固定输出长度为64位字符。) 而且,已知输入内容,求哈希值容易,已知哈希值,求输入内容几乎不可能。 因此,记录在区块链上的信息是无法篡改的,因为一旦篡改,所有得到的哈希值都会发生改变。 2、非对称加密技术 加密技术:利用技术手段把重要的数据变为乱码(不具备实际意义的字符串)传送。包含两个元素:算法和密钥。 对称加密:加密和解密,使用同一个密钥。比如我们在社交平台注册账户,登录验证需要一个密码。 非对称加密:加密和解密,使用不同的密钥。加密时的密码是全网公开可见的公钥(publickey),解密时的密码是拥有者的私钥(privatekey)。 回到前面的例子:A转账10块钱给B。 A、B各生成一对密钥并将公钥公开。 A在B的公钥上加密一个信息“我给你转账10元钱买XX”,然后发送给B。B用私钥解密,接收到这则信息。 B在A的公钥上加密一个信息“可以给你10元钱的XX,这样这样交易”,然后发送给A,A用自己的私钥解密,完成一笔交易。(需要注意,加密后的公钥只有私钥才能解密,因此是不公开的。) 这种加密属于交易前的交流,交易后则在区块链系统上生成广播:A转账10块钱给B,所有节点C的账本上都会记两笔,A -10, B+10。 3、Merkle树 Merkle树(默克尔树、也称哈希树),由根节点、中间节点、叶节点组成。它的形状是这样的: 参考前面我们提到的一个公式:哈希函数H接受任意但有限大小的消息x并输出固定大小的哈希值h,即h=H(x)。x1=A转账10块钱给B ? ?? ?h1=a3fc27b01sakhsgdb356cgh1x2=A转账了10块钱给B????h2=c6804n57s3p8dh46dfhqpfgm 叶节点表示存储的信息,即x; 中间节点表示存储的信息的哈希值,即H(x); 根节点是将所有中间节点的哈希值的哈希值。 老样子,仍旧以转账为例: X1=A转账10块钱给B ????哈希值记为h1 X2=B转账10块钱给C ????哈希值记为h2 X3=C转账10块钱给D ????哈希值记为h3 X4=D转账10块钱给E ????哈希值记为h4 那么用Merkle树怎么存储这一块的数据信息呢? 先把h1、h2当做一个存储的信息Xa,再把h3、h4当做一个存储的信息Xb。 Xa=h1&h2 ????????哈希值记为Ha Xb=h3&h4 ????????哈希值记为Hb 再把Ha、Hb当做一个存储的信息Xn。 Xn=Ha&Hb ????????哈希值记为Hn 如果有无数个信息需要储存呢?那么就按这种方法以此类推。或许,有的朋友可能产生疑问了,为什么是两块两块的信息进行存储,三块行不行?四块行不行?....... 或许可以,但存储数据的目的不仅在于防篡改,还为了便于查询,Merkle树采用的是二叉树的结构,你只需要知道,确定存储路径,查询数据非常方便。 4、时间戳的概念 时间戳是一个时间标记,是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数或总毫秒数。 例如1970年1月1日00:00:01的时间戳是1(秒)或者1000(毫秒) 我们仍以“A转账10块钱给B”为例,交易时间是2000年1月1日20:00:00(格林威治时间),那么它的时间戳为:2000年1月1日 00:00:00-1970年01月01日00:00:00=30年=30*365(天)*24(小时)*60(分钟)*60(秒) 在世界上某一时刻,不同时区的时间不一样,但时间戳是一样。例如中国早上8点“A转账10元钱给B”,对应日本早上9点“A转账10元钱给B”的时间戳。 时间戳的具体工作流程: ·用户通过哈希算法对区块中的交易信息进行加密,生成一个散列字符串; ·用户发出时间戳请求,时间戳服务器从项目区块中提取哈希值; ·时间戳服务器对提取到的哈希值和时间记录进行签名,生成时间戳; ·生成的时间戳数据和交易信息绑定之后再返回系统,加入到区块中。 最后,我们再来谈谈数据区块、链式结构 5、数据区块与链式结构 数据区块就简单的认为是区块链中的“区块”部分,只是把它数据化了,数据区块由区块头和区块身,区块头包含前一区块的哈希值,以及连接前一个区块和后一个区块的数据信息。 链式结构就是将每一个保存了上一个区块哈希值的数据区块进行链接。结构图参考如下: 这里的随机数、目标哈希又作何解释呢?结合网络层的知识进行理解。 02 网络层 区块链的网络层,作用是节点之间的信息交流和传递,参与区块数据的校验和记账过程。 这句话很好理解,“A给B转账十块钱”,通过网络层的点对点传播到其它节点上,节点再验证交易的真实性,从而存储交易信息。 P2P网络 即点对点传输,节点地位对等。 传播机制 按照区块链系统中规定的某种协议进行传播。以比特币为例,它的传播机制是这样的: 1、A给B转账了10个比特币,然后向全网广播交易信息; 2、邻近节点C收到了交易信息后,把这块信息暂存到一个存储池中,验证有效后,再继续向旁边节点传播这则交易信息... 3、然后收到了交易信息的节点C们,基于自身算力在区块中找到一个具有足够难度的工作量证明;(结合下文共识层的工作量证明进行理解) 只能通过试错碰撞去求解,官方称为哈希碰撞,挖矿每秒钟做多少次的哈希碰撞(单位hash/s),就是其“算力”,也叫工作量证明机制POW。 这就好比,用无数把钥匙去开同一扇门,只有试过所有的可能性,才能找到解开这扇门的钥匙。 4、当某一节点C先找到区块的工作量证明后,就向全网广播这个区块,并产生一个新的区块,因此这个寻找到工作量证明的节点C也叫区块生产者。 5、其它节点接受该数据区块。 它的流程图是这样的: 验证机制 就是其它节点验证交易节点交易信息的有效性。 ·有效,则按照接受顺序为新数据建立存储池以暂存尚未记入区块的有效数据。 ·无效,废弃该数据,从而保证该数据不会继续在区块链网络中继续传播。 以比特币为例: 节点C们会收集和验证比特币系统广播中尚未存储的交易数据; 按照预定义的标准去验证数据有效性,比如从数据结构、语法规范性、数字签名等各方面; 节点再对存储池的有效交易数据,完成工作量证明后,存储到自己当前的数据区块中,再产生新的区块; 当新的区块产生后,其它节点会按照预定义标准来验证改区块是否包含足够工作量证明、时间戳是否有效等... 如果有效,其它节点会将该区块链接到区块链上,并开始下一个区块... 03 共识层 何谓共识? 关于这个字眼的理解,我们通常会说“谁与谁之间达成共识”,这是一种协议准则,大家都按照这个准则去共事。 那么在虚拟的、网络的区块链世界里,共识该如何执行呢? 答案是把各类共识算法封装在区块链系统中,大家基于这类共识算法去实现一种证明机制,进而竞争存储记账权。在不同的区块链系统中,封装着不同的共识算法,证明机制也不相同。 常见的共识算法有这些: POW:Proof of Work,工作证明 每一个节点都去竞争交易信息的存储记账权。 POS:Proof of Stake,股权证明 通过每个节点持有的比例来决定存储记账权。 DPOS:Delegated Proof of Stake,委任权益证明 又称受托人机制,每个节点投票产生n位代表 , 再由这n位代表去竞争交易信息的存储记账权。 ....... 其实无论哪一种共识算法,他们的区别是在于节点的权利的不同,此处以了解为主,不对这些专业名词做深入赘述。我们需要了解的是节点完成存储信息的过程。 工作量证明的过程 假设还是“A转账10块钱给B”,邻近的节点C已经验证完这笔交易是有效的,并把这则交易信息传播出去,接下来C要将交易信息记录到自己的区块上。 把当前区块头的随机数Nonce置零。 随机数加1,计算当前区块头的双SHA256哈希值。如果小于等于区块头内的目标哈希,那么这个随机数1就是正确的,节点C就完成了工作量证明,拥有“A转账10块钱给B”的存储记账权。 如果大于区块头内的目标哈希,则变更随机数的值,重新计算当前区块头的双SHA256,一直循环到找到合适的随机数为止。 这里涉及到前面我们遗留的两个知识点,随机数(Nonce)、目标哈希。 随机数(Nonce) 通过不断地哈希碰撞去求解的一个数学值,先假设它的值,然后再验证这个值的合理性。 在区块链网络层的文章中,我们提到了节点C需要基于自身算力在区块中找到一个具有足够难度的工作量证明,算力就是求解随机数的速度。 目标哈希 专业层面,也叫难度值,是数学难题哈希值的闽值。 我们可以把它看成由哈希算法得出的没有实际含义的参考值。节点们需要在目标哈希的范围(小于等于)内求得正确的随机数,来获取当前区块的存储记账权及区块奖励。 04激励层 前面讲到,在区块链的世界里,节点完成工作量证明去获取(当前交易)存储记账权,会获得奖励(奖励分为两块:系统分配奖励、交易方所付手续费),此时新的区块也会产生,我们将此节点称之为“区块生产者”。 挖矿是区块生产者通过最先完成工作量证明,去竞争交易信息存储记账权,生产新区块的过程。完成的工作量证明越多,奖励笔数越多。 奖励即区块链激励层的发行机制和分配机制。 发行机制 不同的区块链系统的发行机制各不相同。 像比特币,规定发行总量为2100万个,每过10分钟选出一个区块生产者。 最开始的区块生产者奖励50个比特币; 每过21万个区块后奖励会减半,变成25个; 再过21万个区块,奖励变成12.5个; ...... 210000(区块)×50(BTC)+210000×25+210000×12.5+.......210000×0=2100万 已知,比特币诞生于2009年,经计算,2140年比特币发行全部完成。 至此,区块生产者将无法获得系统分配奖励。为了维护系统的稳定和激励更多的节点参与进来,还有一块奖励:交易方所支付的手续费也不容小觑。 要知道,当前交易笔数可能不止一笔,区块生产者会优先处理支付高手续费的交易方,为了快速完成交易,交易方可能会支付高昂的交易费,这也是激励区块生产者的主要来源。 分配机制 这里的分配机制指的是什么呢?此处结合在共识层提到的共识算法来理解。所有节点都需要依靠自身算力,竞争完成工作量证明,这就考验节点们的算力高低了。 假设有些节点的算力十分强大,而有些节点的算力十分弱小,那么就会导致收益不稳,贫富差距过大,形成两极分化。因此,弱小节点可联合自身算力来竞争,所获取的奖励也按一定的规则进行分配。 节点联合起来挖矿,因而形成矿池或矿场。 05 合约层 合约层则是封装各类脚本代码、算法以及更为复杂的智能合约,是区块链系统实现灵活编程和操作数据的基础。 说白了,就是用计算机的语言、技术去实现节点之间交流存储的方法。有些人可能会想,那它与互联网又有什么区别呢? 当然有区别啦,要知道区块链可是具有去中心化、数据透明、不可篡改、永久运行等优势。 技术实现 一般用C、C++、GO编程语言。 数据透明 区块链上所有的数据都是公开透明的,运行时,任何一方都可查看其代码和数据。 不可篡改 部署在区块链上的智能合约代码以及运行产生的输出数据也是不可篡改的。 永久运行 支撑区块链网络的节点往往是成百上千个,部分节点失效并不会导致智能合约停止,理论上接近永久运行,就像纸质合同一样永久有效。 06 应用层 市面上可见的区块链技术应用场景大致可分为这三类: 1.?数字货币(数字人民币、加密货币) 2.?通证(可流通的加密数字权益证明,即“token”,暂且理解为一种代币) 3.?区块链+行业(溯源链、供应链金融、存证链.......) 换汤不换药,这些区块链应用场景,都是基于区块链架构,由底层技术开发到应用层,进行层层嵌套、封装实现的。 关于数字货币这一领域,对比其它两类而言,是应用比较多的,大家所熟知的比特币、各种虚拟币...区块链已经在金融、经济、科技等各领域带来的前所未有的变革。 区块链的时间戳由共识节点共同验证和记录,可广泛应用于各类数据公正和审计场景。像市面上开发的比较多的存证链,就是此类应用。 区块链和物联网相结合,可以将数字资产和原子资产统一起来,抹平消费资产和现金资产的区别,扩展大众的信用,加速价值流通; 区块链上建立知识产权保护系统,可以对知识产权全网记账。 ...... 总之,区块链有望像互联网一样重塑人类社会活动形态,并实现由信息互联网到价值互联网的转变,它的快速发展,已经引起政府部分、金融机构、科技企业、资本市场的广泛关注... 全球多国均已加入深入探索区块链应用场景和技术开发的行列中,区块链技术形势一片大好。 说了这么多,其实还是希望大家以理解为主,重在消化,因为涉及到很多专业性理论性的知识点,区块链是个复杂的系统,学习这方面的知识在于点滴积累,希望大家共同成长进步。 大家有什么疑问呢?欢迎下方留言探讨哦,关注微信公众号:从容煎茶,分享更多区块链干货。 —- 编译者/作者:骆驼歌子 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
最通俗易懂的区块链原理逻辑、六层架构
2021-07-15 骆驼歌子 来源:区块链网络
LOADING...
相关阅读:
- 通证经济最核心的价值-就是带来了流动性的质变2021-07-15
- IPFS/FIL异军突起七号矿场未来可期2021-07-15
- ATH将打造出一个区块链和分布式存储等技术结合的可信搜索激励系统2021-07-15
- Bram浅谈ChiaDeFi的愿景2021-07-15
- 区块链安全赛道最大单笔融资CertiKB轮融资3700万美元2021-07-15