【二期三团Day-4韩二】区块链相关知识体系(一)
第一部分:区块链本质上是一个分布式账本技术。
如果以数字函数来类比的话,我们可以将分布式网络、共识机制、去中心化、加密算法、智能合约、权限许可、价值和资产等要素理解为函数中的变量或因子。
这些变量和因子的有机组合形成了区块链有别于传统技术的一些新的技术特征。在对区块链进行更加深入的技术解读前,我们需要先对区块链中的一些核心概念进行梳理。
兵马未动,粮草先行。想深入了解区块链这门新的技术,先从概念入手。
分布式账本技术函数
DLT=f(Dis,Co,De,E,SC,P,V------)
DLT:DistributedLedgerTechnology 分布式账本技术
分布式账本技术是多种变量的函数
1、Dis:Distributed Network 分布式网络;
Co:Consensus 共识机制;
De:Decentrialization去中心化
E:Encryption 加密算法
2、SC:Smart Contract 智能合约;
P:Permission权限许可;
V:Value/Assen价值或资产。
第二部分:区块链一个动态的点对点网络
由一个类似太阳中心散出来的光芒变成星星点点互相连接的网络——去中心化。
与传统的中心化集中式架构相比,区块链弱化了中央服务器的概念。各个节点不再区分服务器和客户端的关系,每个节点既可请求服务也可提供服务,各个节点可以直接交换资源而不再需要通过服务器的桥接,用户与用户之间可以实现资源的直接分享与利用。在区块链分布式网络中,所有节点的地位都是同等的。一笔刚通过验证且被传递到区块链网络中任意节点的交易会被发送到周边的相邻节点,而每一个相邻节点又会将交易发送到其他相邻的节点。以此类推,在短时间之内,一笔有效的交易就会传播到网络中的各个角落,直到所有连接到网络的节点都接收到它。
区块链也是一个动态的网络,不断有新节点的加入和原区块链网络中节点的退出。新节点的不断加入为系统引入新的资源,整个网络由此得以构建和发展,资源的丰富性和多样性随之扩充,点对点网络的分散性、健壮性、可用性、与整体性能也将随着节点的数量增加而增强。
第三部分:区块链是一个分布式账本
区块链推翻了传统的记账模式。与传统的记账模式不同,区块链中的交易信息不再由单个机构来记录,而是由其中的每一个节点共同参与记账。在这个分布式网络上,每个节点都有账本的完整备份。如果有人想篡改账本上的记录,他必须改动各节点存储的账本备份,这就使篡改账本记录的行为难以实现。
实际上区块链用哈希算法实现了信息的不可篡改,接下来我们说说区块链概念的下一部分。
第四部分:区块链用哈希算法实现信息的不可篡改
如果新交易的不断产生,记录的信息越来越多,如何保证记录信息的每一页,以及区块链账本中的每一个区块都是真实准确的,没有被篡改过呢?
设想一下,如果我们通过一种算法对账本信息进行加密,给区块链上打上一个唯一的标签,之后的每一个区块也通过加密后打上一个唯一的标签,同时又能够包含前一个区块链的标签。这时,只要采用一种方法保证这个标签无法被轻易替换更改,那么就能保证这个区块记录的信息没有被篡改过。
哈希算法就是上面提到的区块链中的保证交易信息不可篡改单向密码体制。该算法的思想是接收一段明文,以一种不可逆的方式将它转化成一段长度较短、位数固定的输出散列。这个加密过程是不可逆的这就意味着无法通过输出散列的内容推断出任何与原文相关的信息。任何输入信息的变化,哪怕仅仅是一位数字的更改,都将导致散列结果的明显变化。基于输出散列与输入原文一一对应的特性,哈希算法可以被用于验证信息是否被修改。通过哈希算法可以对一个交易区块的所有交易信息进行加密,并把记账内容压缩成一串数字和字母组成的字符串,这个字符串无法反推出原来的内容。区块链的哈希值可以唯一、准确地标识一个区块,并且任何节点通过简单地对区块头进行哈希计算都可以独立地获取该区块哈希值。如果想要确定区块的内容是否被篡改,那么利用哈希算法重新进行计算,记账信息没有变化,计算出来哈希值也将不会产生变化。
在区块链中,通常使用SHA-256的哈希算法进行区块的加密,该算法的输出长度为256位,即生成长度为32字节的随机散列。
第五部分:区块链用公钥、私钥来识别身份
在区块链中,信息的传播按照公钥加私钥的方式进行。公钥可以理解为我们的收信地址当别人获得你的公钥时可以与你通信。相应地,私钥相当于信箱的钥匙,只有拥有私钥的人才能查看信箱中信件的信息。在区块链中,数字签名可以用于验证信息发送者的身份,用户可以公布自己的公钥,然后发送可以被公钥所验证的、已经通过私钥加密的信息。如果信息的接收者能够用使用公钥解密加密过的信息,即可证明这条信息发送者身份属实。
举例,区块链中有两个用户word哥和word妹,下面分别用简称替代:(word哥用G代表,word妹用M代表):
G想让M知道自己是真实的G,而不是他人冒充的,G只需要使用私钥对文件签名并发送给M,M使用G的公钥对文件进行签名验证,如果验证结果成立,则该文件一定是使用G的私钥加密的。由于G的私钥只由G一人持有,M就可以确定文件的发送者正是G本人了。
此外,公钥和私钥还可以保证分布式网络中点对点信息传递的安全。
在区块链的信息传递过程中,信息传递双方的公私钥加密与解密往往是成对出现的,即信息发送方使用私钥对信息签名、使用信息接收方公钥对信息加密,信息接收方使用对方公钥验证信息发送方的身份、使用私钥对加密信息解密。
这篇文章较短,但值得反复琢磨,只要琢磨懂了,就知道区块链中加密技术原理了,实际上用技术的手段解决了双方信任的问题。就好比:人类想如何在天空中飞行,想的像鸟在天空中挥动翅膀然后飞机是不成功的,实际上最后是用空气动力学的方法解决了飞行的问题的,而不是非得像鸟一样挥动翅膀。
第六部分:区块链用Merkle树结构验证程序
Merkle树是区块链的基本组成部分,Merkle树的叶子节点存储的是数据文件的哈希值,非叶子节点存储的是对其下面所有的叶子节点值的组合结果进行哈希值计算得出的哈希值。
区块链利用Merkle树这种数据结构存放所有叶子节点的哈希值,并以此基础生成一个统一的哈希值。区块中的任何一笔交易的发生和交易的信息的变动都会使Merkle树发生改变。在交易信息的处理、比对及验证的过程中,尤其是分布式环境下进行比对或验证时,Merkle树会大大减少数据的传输量和计算的复杂的。
第七部分:区块链为每一笔交易上盖时间戳。
在区块链中,时间戳的应用是对每一次交易的认证,它就像交易合同公正一样,能够显示交易记录的真实性。时间戳作为区块元数据的一部分,具有天然的时间特性。从某种意义上讲区块链的本质可以被理解为构造了一个永不停息、无坚不摧的时间戳系统。
在现实经济交易中,常常出现信息欺诈等虚假交易现象。为了减少这些不法行为给交易中诚实守信的一方带来损失,人们常常会寻求有公信力的第三方机构对交易进行核验。区块链通过时间戳来保证分布式账本的唯一性,避免了双花问题的产生。时间戳从区块生成的那一刻就存在于区块之中,它扮演了区块链中的公证人角色。与现有的公正机构相比,基于时间戳的公证系统更为经济,并且完全可信。
区块链中的时间戳比传统的公证制度更为可信,是因为时间签名是直接写在区块链上的,区块链中已经生成的区块不能以任何方式进行修改。一旦区块被修改,生成的哈希值就无法匹配,操纵行为也将由此而被系统检测到。区块链根据分布式的协议,构建了一个分布式的开放结构体系,交换的信息可以通过分布式的记账的方式确定信息数据的内容,加盖时间戳后生成区块数据,再通过分布式广播发送给各个节点,最终实现分布式存储。
(摘自区块链将如何重新定义世界)
相信你经过相关概念的不断打磨与思考,对区块链网有了新的认识,明天继续,欢迎留言讨论,谢谢! |