区块链技术架构一

您所在的位置:网站首页 区块链技术基础架构 区块链技术架构一

区块链技术架构一

2023-05-23 22:17| 来源: 网络整理| 查看: 265

区块链就是一个分布式、有着特定结构的数据库,是一个有序,每一个块都连接到前一个块的链表。也就是说,区块按照插入的顺序进行存储,每个块都与前一个块相连。这样的结构,能够让我们快速地获取链上的最新块,并且高效地通过哈希来检索一个块。

1、区块链六层模型 image.png

一个标准的区块链项目,应该至少包含数据层、网络层、共识层这三层,应用层、合约层、激励层可以不包含。

以一个交易的例子来说明这模型所起的作用,假如说,我们有三个角色, A有100btc,B有0btc,c是矿工,现在A给B转10个btc, 1、A->B转账10比特币,数据层 2、转账交易要确认,需要广播出去,网络层 3、把交易打包到区块形成新的区块,并且加入到区块链,共识层 4、第三步的奖励,激励层 5、钱包,应用层

image.png

区块链开发语言

image.png 2、区块链模型之数据层

1、数据层的特点是:

不可篡改 全备份 完全平等(数据、权限、代码)

要实现这样的特点,依靠是链式结构,如下

image.png

Prev Hash:父区块哈希,特定值的扫描。比方说SHA-256下的随机散列值,保证数据的可靠性和不可篡改。 Nonce:随机数,类似于区块的随机散列值

2、数据层之数据结构:

区块:一种包含在公开账簿(区块链)里的聚合了交易信息的容器数据结构,包含区块头和区块主体,区块头 + 区块体 前7个块的时间戳的中位数 下限 < 系统平均时间之后2小时

6、数据层之交易记录

image.png

7、数据层之私钥,公钥,钱包地址 比特币系统使用了椭圆曲线签名算法,算法的私钥由32个字节随机数组成,通过私钥可以计算出公钥,公钥经过一系列哈希算法和编码算法得到比特币地址,地址也可以理解为公钥的摘要(hash)。

image.png

8、数据层之记账原理 已知:发送方(张三 公钥地址):19anBP……iPitVr 接收方(李四 公钥地址):1Eu8Uk…….Xy7i2B 金额:10 BTC

image.png

9、数据层之交易签名,校验流程

image.png

一个广播出去的区块交易数据包含三部分,

原始数据,包含转账金额和对方钱包地址 签名,使用转账人私钥对原始数据进行签名 公钥,转账人公钥(公钥是根据私钥产生的,可以私钥签名的数据进行验签)

10、数据层之非对称加密算法 在“加密”和“解密”的过程中分别使用两个密码

私钥:是信息拥有者才知道的,可以加密信息或者解密公钥数据(信息的安全性) 公钥:是公开全网可见的,用公钥来验证信息,加密数据(信息的真实性); 非对称加密椭圆曲线加密算法(ECC)>secp256k1

11、数据层之Merkle树 Merkle 树是一种哈希二叉树,用于快速递归和校验大规模数据完整性,是一种平衡树(如果是奇数个交易,则多余的那个自己复制自己)

每个区块都包括了产生于该区块的所有交易,并且以Merkle 树表示 H(A)=SHA256(SHA256(交易A)) H(AB)=SHA256(SHA256(H(A)+H(B))) 为了证明区块中存在某个特定的交易,只需要计算log2(N)个哈希,16笔交易可以由4个哈希+Merkle树根来证明了,65535交易,只需16个哈希 image.png

SPV : 简单支付验证,一个节点只需要仅下载区块头(80字节)+Merkle路径就能证明一笔交易的存在,这个节点称之为轻节点。

如上图,假如我们想要确定H(K)这笔交易的准确性,证明方法: 1)服务器A,轻节点,只有区块头,没有区块体,但是能够与全2节点通信,获得Merkle树的hash; 2)服务器B,全节点,区块头和区块体都有; 3)确定Merkle路径(H(L),H(IJ),H(MNOP),H(ABCDEFGH)) 4)向全及诶单请求数据(H(L),H(IJ),H(MNOP),H(ABCDEFGH)) 5)进行验证,多次hash运算,最后跟Merkle根做hash比较

12、哈希(hash)函数 哈希函数:Hash(原始信息) = 摘要信息 原始信息可以是任意的信息,hash之后会得到一个简短的摘要信息。

哈希函数有几个特点:

同样的原始信息用同一个哈希函数总能得到相同的摘要信息 原始信息任何微小的变化都会哈希出面目全非的摘要信息 从摘要信息无法逆向推算出原始信 3、区块链模型之网络层

1、网络层之数据传播和验证

新的交易向全网进行广播 每一个节点都将收到的交易信息纳入一个区块中 每个节点都尝试在自己的区块中找到一个具有足够难度的工作量证明(挖矿) 当一个节点找到了一个工作量证明(获得打包区块的资格),它就向全网进行广播(新打包的区块) 当且仅当包含在该区块中的所有交易都是有效的且之前未存在过的,其他节点才认同该区块的有效性 其他节点表示他们接受该区块,而表示接受的方法,则是在跟随该区块的末尾,制造新的区块以延长该链条,而将被接受区块的随机散列值视为先于新区块的随机散列值

2、网络层之P2P技术 P2P组网技术早期应用在BT这类P2P下载软件中,这就意味着区块链具有自动组网功能,支持TCP,UDP等通信协议

image.png 4、区块链模型之共识层

拜占庭将军问题:如何让不信任,不可靠的多方,协同工作,达成统一目标——靠共识。 拜占庭将军问题是Leslie Lamport(2013年的图灵讲得主)用来为描述分布式系统一致性问题(Distributed Consensus)在论文中抽象出来一个著名的例子(互不信任的多支军队同时保持进攻或者防守)。

共识层封装了网络节点的各类共识机制算法,共识机制算法是区块链的核心技术,因为这决定了区块的产生,而记账决定方式将会影响整个系统的安全性和可靠性。

目前已经出现了十余种共识机制算法,其中比较最为知名的有

工作量证明机制(PoW,Proof of Work) 实用拜占庭容错算法(PBFT) 权益证明机制(PoS,Proof ofStake) 股份授权证明机制(DPoS,Delegated Proof of Stake)等。

POW:工作量证明机制 比特币通过对这个系统做出一个简单的(事后看是简单的)修改解决了这个问题,它为发送信息加入了成本,这降低了信息传递的速率,并加入了一个随机元素以保证在一个时间只有一个城邦(或者很少)可以进行广播,同时在广播时会附上自己的签名,这个过程就像将军A(节点)像其他的将军发起一个进攻(或者防守)提议一样,如果是诚实的将军就会立刻同意,只要诚实的将军占比大于51%,那么大家行动就会保持一致。 它加入的成本是“工作量证明”,并且它是基于计算一个随机哈希算法(挖矿)的。

不过在进行工作量证明之前,记账节点会做进行如下准备工作:

收集广播中还没有被记录账本的原始交易信息 检查每个交易信息中付款地址有没有足够的余额 验证交易是否有正确的签名 把验证通过的交易信息进行打包记录 添加一个奖励交易:给自己的地址增加12.5比特币 如果节点争夺记账权成功的话,就可以得到12.5比特币的奖励。

PBFT:实用拜占庭容错算法 PBFT是一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式系统的不同节点进行副本复制。每个状态机的副本都保存了服务的状态,同时也实现了服务的操作。执行过程如下

客户端向主节点发送请求调用服务操作 主节点通过广播将请求发送给其他副本 所有副本都执行请求并将结果发回客户端 客户端需要等待2f+1个不同副本节点发回相同的结果,作为整个操作的最终结果。

PBFT对每个副本节点提出了两个限定条件: 1、所有节点必须是确定性的。也就是说,在给定状态和参数相同的情况下,操作执行的结果必须相同; 2、所有节点必须从相同的状态开始执行。在这两个限定条件下,即使失效的副本节点存在,PBFT算法对所有非失效副本节点的请求执行总顺序达成一致,从而保证安全性。

Pos:股权证明 就是一个根据你持有货币的量和时间,给你发利息的一个制度。 类似于财产储存在银行,这种模式会根据你持有数字货币的量和时间,分配给你相应的利息。 在股权证明POS模式下,有一个名词叫币龄,每个币每天产生1币龄, 比如:比如你持有100个币,总共持有了30天,那么,此时你的币龄就为3000,这个时候,如果你发现了一个POS区块,你的币龄就会被清空为0。你每被清空365币龄,你将会从区块中获得0.05个币的利息(假定利息可理解为年利率5%),那么在这个案例中,利息 = 3000 * 5% / 365 = 0.41个币。 POS的存在主要是从经济学上的考虑和创新。

DPos:股份授权证明机制(又称受托人机制) 原理是让每一个持有比特股的人进行投票,由此产生101位代表 , 我们可以将其理解为101个超级节点或者矿池,而这101个超级节点彼此的权利是完全相等的。 从某种角度来看,DPOS有点像是议会制度或人民代表大会制度。如果代表不能履行他们的职责(当轮到他们时,没能生成区块),他们会被除名,网络会选出新的超级节点来取代他们。 DPOS的出现最主要还是因为矿机的产生,大量的算力在不了解也不关心比特币的人身上,类似演唱会的黄牛,大量囤票而丝毫不关心演唱会的内容。

数据层、网络层、共识层是构建区块链技术的必要元素,缺少任何一层都将不能称之为真正意义上的区块链技术。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3