区块链性能节点的坐标图 区块链性能瓶颈

超果 区块链 2023-02-25 160 0

本篇文章给大家谈谈区块链性能节点的坐标图,以及区块链性能瓶颈对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

区块链技术(节点和网络)

矿工是同时进行挖矿的节点,它们试图创建新的区块(通过改变nonce,反复对区块进行哈希运算,以找到有效区块),然后把新的副本加入区块链并广播给其它节点,其它节点再进行验证,最后转播或拒收该区块。需要注意的是,矿工和节点是分开的,节点可以是矿工,但节点不一定要挖矿。当全节点从矿工处接收了一个有效区块,它会将其添加到自己的本地副本中,并把区块转播给一些相连节点,这些节点再验证这个区块并广播给其它相连节点。通过这种方式,这个区块被传播到了整个网络,接下来的区块再重复这个步骤。

区块链中的节点是什么?

节点就是一个区域的服务器。在互联网区域区块链性能节点的坐标图,一个企业所有运行的数据都在一个服务器里区块链性能节点的坐标图,那么这个服务器就是节点。

就像是区块链性能节点的坐标图我们每天使用的微信,每天处理着这么多的聊天信息、转账等。这些数据的存储和运行都在腾讯的公司的服务器里面。那么这个处理数据的服务器,区块链性能节点的坐标图我们就可以称之为“节点”。

再说区块链的世界,大家都已经知道区块链是去中心化的分布式数据库,它不依托于哪一个中心化的服务器,是由千千万万个“小服务器”组成。只要我们下载一个区块链客户端,我们就变成区块链性能节点的坐标图了那千千万万个“小服务器”中的一员。

这样来说,如果我们要玩区块链的话,我们自己就相当于是一个节点。

节点也分轻节点和全节点。全节点就是拥有全网所有的交易数据的节点,那么轻节点就是只拥有和自己相关的交易数据节点。

而且节点分布越多、越广泛,区块链网络就更加的去中心化,网络运行也就越安全稳定。节点的存在就是区块链分布式的表征,也是区块链的魅力所在

图解什么是区块链

区块链这么火,都开始影响到我的生活了,不想了解也不行了的样子,今天来看看到底什么是区块链。

本文结构:

和它的名字一样,

区块链是由一组块组成的链,

块是包含信息的信息块,组成的链也就包含了信息。

区块链技术最早是在1991年由一群研究人员研发,用来给数字化文档打时间戳,使得这些文档不能被篡改。从那之后就基本上没有再发挥其他作用,直到2009年,中本聪采用区块链技术创造了数字加密货币-比特币。

一条区块链,就是一个对所有人完全公开的分布式账本,它有一个很有趣的属性: 一旦某些数据被记录到一条区块链中后,那么数据就很难再被改变。

来看一下 一个区块(block)的组成:

每一个区块包含了 一些数据,这个区块的哈希值,以及前一个区块的哈希值 。

区块中所保存的数据与区块链的类型有关,例如,比特币区块链中的区块保存了相关的交易信息,包括卖家,买家,以及交易比特币的数量。

每个区块包含了一个哈希值,哈希值用来标识一个区块和它所包含的所有内容,并且它是独一无二的,就像指纹一样。一旦某个区块被创建,它的哈希值就相对应的被计算出来了。如果改变区块中的某些内容会使得哈希值改变, 如果一个区块的指纹改变了,那它就再也不是之前的区块了 。

区块中包含的第三个元素是前一个区块的哈希值,这个元素使得区块之间可以形成链接,并且能够使得区块链十分的安全。

假设我们有一条区块链包含3个区块

每个区块包含了一个自己的哈希值以及前一个区块的哈希值

3号区块指向2号区块,2号区块又指向1号区块

1号区块有点特殊,它不能指向前一个区块,因为它是第一个

我们把1号区块叫做 创世区块 。

现在假设我们篡改了第二个区块

这将导致第二个区块的哈希值改变

接下来这就会导致3号区块以及3号区块连接的所有的后续区块变得非法

因为现在它们存储的前一个区块号的都变得非法

所以 单独改变一个块,将连带性地致使后面的所有内容都变成无效 。

但要 防止篡改,只有哈希是不够的

因为现在的计算机运算速度已经足够强大,并且能够每秒计算成千上万的哈希值

这样你完全可以篡改一个区块并且重新计算其他的区块的哈希值,使得你的区块再次变得合法。

所以 为了减少这种风险,区块链还采用了一种技术,叫做工作证明

这是一种减缓新区块创建过程的机制

在比特币区块链中,大概需要花费10分钟来完成所要求的工作证明,并且添加一个新的区块到区块链中

这个机制使得区块链的篡改更加困难

因为 一旦篡改了一个区块,就需要重新计算所有后续的区块的工作量证明 。

所以 区块链技术的安全性主要来自于哈希值以及工作量证明机制 。

区块链还有一种机制来 保护自身的安全性,那就是分布式

相对于用一个中心化的实体来管理区块链网络,区块链采用的是一种 peer-to-peer网络,并且所有人都可以加入

当有人加入这个网络时, 他就会得到整个区块链的复制

这个人就可以以此来验证是否所有的区块还是合法未篡改的,也就是不同的节点也可以借此互相验证。

当某人创建了一个新的区块时,

这个新的区块会被发送给网络上的所有人。

每个人再验证这个区块以确保这个区块没有被篡改过

如果所有的东西都被检验正确之后,那么每个人才能把这块新的区块加到自己的区块链上

我们可以称之为, 网络上的所有人达成了“共识” 。

区块链网络中的所有节点都达成共识

他们认同网络中哪些区块是合法的,哪些是不合法的

那些被篡改过的区块将会被网络上的其他用户拒绝

所以, 要成功篡改一个区块链,你需要篡改区块链上的所有区块

重新完成每个区块的工作量证明,并且控制区块链网络中超过50%的用户

只有这样,你篡改的区块才会被所有人承认

可以说, 这基本上是不可能做得到的!

区块链技术本身也在不断地发展

例如后来的一个技术改进,叫做智能合约

智能合约 是一些存放在区块链上的简单的程序

它能基于合约内所记载的条件自动执行, 只要条件成立,依照合约自动完成交易

例如在特定条件下可以实现自动化比特币交易。

学习资料:

蟋蟀的平台具有什么功能

1. 蟋蟀的平台提供区块链性能节点的坐标图了基于云计算的人工智能和机器学习所需的工具和基础设施区块链性能节点的坐标图,使开发者能够快速构建和部署AI应用程序区块链性能节点的坐标图

2. 平台提供区块链性能节点的坐标图了丰富的数据挖掘、自然语言处理等技术和模型,支持开发者快速实现定制化AI应用;

3. 平台还提供了智能客服、语音识别、文本聚类、分析等特性,可以帮助用户简化开发过程并实现业务价值;

4. 蟋蟀的平台还提供了可靠的云端服务管理和运维,使用户可以轻松监控、维护和管理部署的AI应用。

区块链:四维空间思维导图

技术的革新总是带来社会的巨大变革,比如第一次工业革命,开创了以机器代替手工劳动的时代,以蒸汽机作为动力机被广泛使用为标志的。这一次技术革命和与之相关的社会关系的变革,被称为第一次工业革命或者产业革命。第二次工业革命帮助人类进入了“电气时代”。 第二次工业革命极大地推动了社会生产力的发展,对人类社会的经济、政治、文化、军事,科技和生产力产生了深远的影响。资本主义生产的社会化大大加强,垄断组织应运而生。第三次科技革命以原子能、电子计算机、空间技术和生物工程的发明和应用为主要标志,涉及信息技术、新能源技术、新材料技术、生物技术、空间技术和海洋技术等诸多领域的一场信息控制技术革命更是使社会发展进入一个新的高度,而如今信息化时代,区块链技术即将为信息发展带来更加翻天覆地的变化,可能带来第四次技术革命,

长久以来,去中心化是区块链被人们提到最多的特性,除了去中心化之外,区块链还有一个特性就是开放性,比较少被提到,但它也很重要,甚至可以说开放性是去中心化特性的保证之一。当人们提起区块链开放性的时候,有各种各样的说法,有人说区块链经济就是开源经济,有人说是区块链是最伟大之处是无需许可的创新协议,有人说区块链最有价值的地方在于开放金融,还有人说区块链改变了传统的公司制组织结构,它创造了一种新的基于通证的经济体系,在这种经济体系下可以使得传统的封闭公司变成一个开放的通证形态,使得人类的大规模强协作成为可能。关于区块链的来龙去脉等等如果用文字性的东西讲出来可能会显得枯燥,下面有一张图——《区块链四维空间思维导图》可以完美的解决很多人心中关于区块链中的众多疑问。

【深度知识】区块链之加密原理图示(加密,签名)

先放一张以太坊区块链性能节点的坐标图的架构图:

在学习的过程中主要是采用单个模块了学习了解的区块链性能节点的坐标图,包括P2P,密码学,网络,协议等。直接开始总结:

秘钥分配问题也就是秘钥的传输问题,如果对称秘钥,那么只能在线下进行秘钥的交换。如果在线上传输秘钥,那就有可能被拦截。所以采用非对称加密,两把钥匙,一把私钥自留,一把公钥公开。公钥可以在网上传输。不用线下交易。保证数据的安全性。

如上图,A节点发送数据到B节点,此时采用公钥加密。A节点从自己的公钥中获取到B节点的公钥对明文数据加密,得到密文发送给B节点。而B节点采用自己的私钥解密。

2、无法解决消息篡改。

如上图,A节点采用B的公钥进行加密,然后将密文传输给B节点。B节点拿A节点的公钥将密文解密。

1、由于A的公钥是公开的,一旦网上黑客拦截消息,密文形同虚设。说白了,这种加密方式,只要拦截消息,就都能解开。

2、同样存在无法确定消息来源的问题,和消息篡改的问题。

如上图,A节点在发送数据前,先用B的公钥加密,得到密文1,再用A的私钥对密文1加密得到密文2。而B节点得到密文后,先用A的公钥解密,得到密文1,之后用B的私钥解密得到明文。

1、当网络上拦截到数据密文2时, 由于A的公钥是公开的,故可以用A的公钥对密文2解密,就得到了密文1。所以这样看起来是双重加密,其实最后一层的私钥签名是无效的。一般来讲,我们都希望签名是签在最原始的数据上。如果签名放在后面,由于公钥是公开的,签名就缺乏安全性。

2、存在性能问题,非对称加密本身效率就很低下,还进行了两次加密过程。

如上图,A节点先用A的私钥加密,之后用B的公钥加密。B节点收到消息后,先采用B的私钥解密,然后再利用A的公钥解密。

1、当密文数据2被黑客拦截后,由于密文2只能采用B的私钥解密,而B的私钥只有B节点有,其他人无法机密。故安全性最高。

2、当B节点解密得到密文1后, 只能采用A的公钥来解密。而只有经过A的私钥加密的数据才能用A的公钥解密成功,A的私钥只有A节点有,所以可以确定数据是由A节点传输过来的。

经两次非对称加密,性能问题比较严重。

基于以上篡改数据的问题,我们引入了消息认证。经过消息认证后的加密流程如下:

当A节点发送消息前,先对明文数据做一次散列计算。得到一个摘要, 之后将照耀与原始数据同时发送给B节点。当B节点接收到消息后,对消息解密。解析出其中的散列摘要和原始数据,然后再对原始数据进行一次同样的散列计算得到摘要1, 比较摘要与摘要1。如果相同则未被篡改,如果不同则表示已经被篡改。

在传输过程中,密文2只要被篡改,最后导致的hash与hash1就会产生不同。

无法解决签名问题,也就是双方相互攻击。A对于自己发送的消息始终不承认。比如A对B发送了一条错误消息,导致B有损失。但A抵赖不是自己发送的。

在(三)的过程中,没有办法解决交互双方相互攻击。什么意思呢区块链性能节点的坐标图? 有可能是因为A发送的消息,对A节点不利,后来A就抵赖这消息不是它发送的。

为了解决这个问题,故引入了签名。这里我们将(二)-4中的加密方式,与消息签名合并设计在一起。

在上图中,我们利用A节点的私钥对其发送的摘要信息进行签名,然后将签名+原文,再利用B的公钥进行加密。而B得到密文后,先用B的私钥解密,然后 对摘要再用A的公钥解密,只有比较两次摘要的内容是否相同。这既避免了防篡改问题,有规避了双方攻击问题。因为A对信息进行了签名,故是无法抵赖的。

为了解决非对称加密数据时的性能问题,故往往采用混合加密。这里就需要引入对称加密,如下图:

在对数据加密时,我们采用了双方共享的对称秘钥来加密。而对称秘钥尽量不要在网络上传输,以免丢失。这里的共享对称秘钥是根据自己的私钥和对方的公钥计算出的,然后适用对称秘钥对数据加密。而对方接收到数据时,也计算出对称秘钥然后对密文解密。

以上这种对称秘钥是不安全的,因为A的私钥和B的公钥一般短期内固定,所以共享对称秘钥也是固定不变的。为了增强安全性,最好的方式是每次交互都生成一个临时的共享对称秘钥。那么如何才能在每次交互过程中生成一个随机的对称秘钥,且不需要传输呢?

那么如何生成随机的共享秘钥进行加密呢?

对于发送方A节点,在每次发送时,都生成一个临时非对称秘钥对,然后根据B节点的公钥 和 临时的非对称私钥 可以计算出一个对称秘钥(KA算法-Key Agreement)。然后利用该对称秘钥对数据进行加密,针对共享秘钥这里的流程如下:

对于B节点,当接收到传输过来的数据时,解析出其中A节点的随机公钥,之后利用A节点的随机公钥 与 B节点自身的私钥 计算出对称秘钥(KA算法)。之后利用对称秘钥机密数据。

对于以上加密方式,其实仍然存在很多问题,比如如何避免重放攻击(在消息中加入 Nonce ),再比如彩虹表(参考 KDF机制解决 )之类的问题。由于时间及能力有限,故暂时忽略。

那么究竟应该采用何种加密呢?

主要还是基于要传输的数据的安全等级来考量。不重要的数据其实做好认证和签名就可以,但是很重要的数据就需要采用安全等级比较高的加密方案了。

密码套件 是一个网络协议的概念。其中主要包括身份认证、加密、消息认证(MAC)、秘钥交换的算法组成。

在整个网络的传输过程中,根据密码套件主要分如下几大类算法:

秘钥交换算法:比如ECDHE、RSA。主要用于客户端和服务端握手时如何进行身份验证。

消息认证算法:比如SHA1、SHA2、SHA3。主要用于消息摘要。

批量加密算法:比如AES, 主要用于加密信息流。

伪随机数算法:例如TLS 1.2的伪随机函数使用MAC算法的散列函数来创建一个 主密钥 ——连接双方共享的一个48字节的私钥。主密钥在创建会话密钥(例如创建MAC)时作为一个熵来源。

在网络中,一次消息的传输一般需要在如下4个阶段分别进行加密,才能保证消息安全、可靠的传输。

握手/网络协商阶段:

在双方进行握手阶段,需要进行链接的协商。主要的加密算法包括RSA、DH、ECDH等

身份认证阶段:

身份认证阶段,需要确定发送的消息的来源来源。主要采用的加密方式包括RSA、DSA、ECDSA(ECC加密,DSA签名)等。

消息加密阶段:

消息加密指对发送的信息流进行加密。主要采用的加密方式包括DES、RC4、AES等。

消息身份认证阶段/防篡改阶段:

主要是保证消息在传输过程中确保没有被篡改过。主要的加密方式包括MD5、SHA1、SHA2、SHA3等。

ECC :Elliptic Curves Cryptography,椭圆曲线密码编码学。是一种根据椭圆上点倍积生成 公钥、私钥的算法。用于生成公私秘钥。

ECDSA :用于数字签名,是一种数字签名算法。一种有效的数字签名使接收者有理由相信消息是由已知的发送者创建的,从而发送者不能否认已经发送了消息(身份验证和不可否认),并且消息在运输过程中没有改变。ECDSA签名算法是ECC与DSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC,最后签名出来的值也是分为r,s。 主要用于身份认证阶段 。

ECDH :也是基于ECC算法的霍夫曼树秘钥,通过ECDH,双方可以在不共享任何秘密的前提下协商出一个共享秘密,并且是这种共享秘钥是为当前的通信暂时性的随机生成的,通信一旦中断秘钥就消失。 主要用于握手磋商阶段。

ECIES: 是一种集成加密方案,也可称为一种混合加密方案,它提供了对所选择的明文和选择的密码文本攻击的语义安全性。ECIES可以使用不同类型的函数:秘钥协商函数(KA),秘钥推导函数(KDF),对称加密方案(ENC),哈希函数(HASH), H-MAC函数(MAC)。

ECC 是椭圆加密算法,主要讲述了按照公私钥怎么在椭圆上产生,并且不可逆。 ECDSA 则主要是采用ECC算法怎么来做签名, ECDH 则是采用ECC算法怎么生成对称秘钥。以上三者都是对ECC加密算法的应用。而现实场景中,我们往往会采用混合加密(对称加密,非对称加密结合使用,签名技术等一起使用)。 ECIES 就是底层利用ECC算法提供的一套集成(混合)加密方案。其中包括了非对称加密,对称加密和签名的功能。

meta charset="utf-8"

这个先订条件是为了保证曲线不包含奇点。

所以,随着曲线参数a和b的不断变化,曲线也呈现出了不同的形状。比如:

所有的非对称加密的基本原理基本都是基于一个公式 K = k G。其中K代表公钥,k代表私钥,G代表某一个选取的基点。非对称加密的算法 就是要保证 该公式 不可进行逆运算( 也就是说G/K是无法计算的 )。 *

ECC是如何计算出公私钥呢?这里我按照我自己的理解来描述。

我理解,ECC的核心思想就是:选择曲线上的一个基点G,之后随机在ECC曲线上取一个点k(作为私钥),然后根据k G计算出我们的公钥K。并且保证公钥K也要在曲线上。*

那么k G怎么计算呢?如何计算k G才能保证最后的结果不可逆呢?这就是ECC算法要解决的。

首先,我们先随便选择一条ECC曲线,a = -3, b = 7 得到如下曲线:

在这个曲线上,我随机选取两个点,这两个点的乘法怎么算呢?我们可以简化下问题,乘法是都可以用加法表示的,比如2 2 = 2+2,3 5 = 5+5+5。 那么我们只要能在曲线上计算出加法,理论上就能算乘法。所以,只要能在这个曲线上进行加法计算,理论上就可以来计算乘法,理论上也就可以计算k*G这种表达式的值。

曲线上两点的加法又怎么算呢?这里ECC为了保证不可逆性,在曲线上自定义了加法体系。

现实中,1+1=2,2+2=4,但在ECC算法里,我们理解的这种加法体系是不可能。故需要自定义一套适用于该曲线的加法体系。

ECC定义,在图形中随机找一条直线,与ECC曲线相交于三个点(也有可能是两个点),这三点分别是P、Q、R。

那么P+Q+R = 0。其中0 不是坐标轴上的0点,而是ECC中的无穷远点。也就是说定义了无穷远点为0点。

同样,我们就能得出 P+Q = -R。 由于R 与-R是关于X轴对称的,所以我们就能在曲线上找到其坐标。

P+R+Q = 0, 故P+R = -Q , 如上图。

以上就描述了ECC曲线的世界里是如何进行加法运算的。

从上图可看出,直线与曲线只有两个交点,也就是说 直线是曲线的切线。此时P,R 重合了。

也就是P = R, 根据上述ECC的加法体系,P+R+Q = 0, 就可以得出 P+R+Q = 2P+Q = 2R+Q=0

于是乎得到 2 P = -Q (是不是与我们非对称算法的公式 K = k G 越来越近了)。

于是我们得出一个结论,可以算乘法,不过只有在切点的时候才能算乘法,而且只能算2的乘法。

假若 2 可以变成任意个数进行想乘,那么就能代表在ECC曲线里可以进行乘法运算,那么ECC算法就能满足非对称加密算法的要求了。

那么我们是不是可以随机任何一个数的乘法都可以算呢? 答案是肯定的。 也就是点倍积 计算方式。

选一个随机数 k, 那么k * P等于多少呢?

我们知道在计算机的世界里,所有的都是二进制的,ECC既然能算2的乘法,那么我们可以将随机数k描 述成二进制然后计算。假若k = 151 = 10010111

由于2 P = -Q 所以 这样就计算出了k P。 这就是点倍积算法 。所以在ECC的曲线体系下是可以来计算乘法,那么以为这非对称加密的方式是可行的。

至于为什么这样计算 是不可逆的。这需要大量的推演,我也不了解。但是我觉得可以这样理解:

我们的手表上,一般都有时间刻度。现在如果把1990年01月01日0点0分0秒作为起始点,如果告诉你至起始点为止时间流逝了 整1年,那么我们是可以计算出现在的时间的,也就是能在手表上将时分秒指针应该指向00:00:00。但是反过来,我说现在手表上的时分秒指针指向了00:00:00,你能告诉我至起始点算过了有几年了么?

ECDSA签名算法和其他DSA、RSA基本相似,都是采用私钥签名,公钥验证。只不过算法体系采用的是ECC的算法。交互的双方要采用同一套参数体系。签名原理如下:

在曲线上选取一个无穷远点为基点 G = (x,y)。随机在曲线上取一点k 作为私钥, K = k*G 计算出公钥。

签名过程:

生成随机数R, 计算出RG.

根据随机数R,消息M的HASH值H,以及私钥k, 计算出签名S = (H+kx)/R.

将消息M,RG,S发送给接收方。

签名验证过程:

接收到消息M, RG,S

根据消息计算出HASH值H

根据发送方的公钥K,计算 HG/S + xK/S, 将计算的结果与 RG比较。如果相等则验证成功。

公式推论:

HG/S + xK/S = HG/S + x(kG)/S = (H+xk)/GS = RG

在介绍原理前,说明一下ECC是满足结合律和交换律的,也就是说A+B+C = A+C+B = (A+C)+B。

这里举一个WIKI上的例子说明如何生成共享秘钥,也可以参考 Alice And Bob 的例子。

Alice 与Bob 要进行通信,双方前提都是基于 同一参数体系的ECC生成的 公钥和私钥。所以有ECC有共同的基点G。

生成秘钥阶段:

Alice 采用公钥算法 KA = ka * G ,生成了公钥KA和私钥ka, 并公开公钥KA。

Bob 采用公钥算法 KB = kb * G ,生成了公钥KB和私钥 kb, 并公开公钥KB。

计算ECDH阶段:

Alice 利用计算公式 Q = ka * KB 计算出一个秘钥Q。

Bob 利用计算公式 Q' = kb * KA 计算出一个秘钥Q'。

共享秘钥验证:

Q = ka KB = ka * kb * G = ka * G * kb = KA * kb = kb * KA = Q'

故 双方分别计算出的共享秘钥不需要进行公开就可采用Q进行加密。我们将Q称为共享秘钥。

在以太坊中,采用的ECIEC的加密套件中的其他内容:

1、其中HASH算法采用的是最安全的SHA3算法 Keccak 。

2、签名算法采用的是 ECDSA

3、认证方式采用的是 H-MAC

4、ECC的参数体系采用了secp256k1, 其他参数体系 参考这里

H-MAC 全程叫做 Hash-based Message Authentication Code. 其模型如下:

在 以太坊 的 UDP通信时(RPC通信加密方式不同),则采用了以上的实现方式,并扩展化了。

首先,以太坊的UDP通信的结构如下:

其中,sig是 经过 私钥加密的签名信息。mac是可以理解为整个消息的摘要, ptype是消息的事件类型,data则是经过RLP编码后的传输数据。

其UDP的整个的加密,认证,签名模型如下:

区块链性能节点的坐标图的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于区块链性能瓶颈、区块链性能节点的坐标图的信息别忘了在本站进行查找喔。

评论