比特币通信协议 - 币圈消息

比特币通信协议篇11、二、TURN简介。在典型的情况下,TURN客户端连接到内网中,并且通过一个或者多个NAT到 详细

比特币算法概述 - 币圈消息

[复制链接]
48 0
wangjia 发表于 2022-11-3 15:19:12 | 只看该作者 |阅读模式 打印 上一主题 下一主题
比特币算法概述篇11、·一个通讯录,里面存储着若干条记录,每条记录是某本书的书名hash值和存储这本书的学生的学号和联系方式。值得注意的是,这里每个学生存储的只是一部分同学的联系方式!
2、节点定位。当你需要找到这本书的时候,你只要对书名进行hash,就可以知道你要找的是哪一个学生的联系方式了!
3、问题描述与场景假设。除此之外,一些节点包含完整的区块链数据库,数据库中包含所有的交易数据,这类节点被称为“全节点”。全节点可以独立自主的校验所有交易!
4、 如果没有,那么C同学就将与B同学在通讯录的同一行的另一位D同学的联系方式告诉A同学,之后A同学在将D同学的联系方式存储起来后与D同学联系,进行下一步查找。以此递归下去直到找到B同学为止!
5、因为节点010是第三位与110不同,因此这三个节点就被分配到110的“K-bucket3”中,节点ID为101的节点因为是第二位与110不同,因此这两个节点就被分配到110的“K-bucket2”中,最后节点ID为111的节点因为是第一位与110不同,因此它就被安排到110的“K-bucket1”中!
6、比特币网络。比特币网络节点有四个功能,分别是:钱包、挖矿、区块链数据库、网络路由。这四大功能并不是比特币中所有节点都包含,不同类型的节点只包含部分功能,只有比特币核心节点才会包含所有的这四个功能!
7、依据其所包含的功能不同节点的类型也不同,但是所有的节点都会包含路由功能,因为所有的节点都要参与校验和广播,并且发现和维持与其他节点的连接!
8、其中Wallet表示钱包功能、Miner表示挖矿功能、FullBlockchain表示完整的区块链数据库、Network表示路由功能[1]。
9、P2P网络根据其路由查询结构可以分为四种类型,分别是集中式、纯分布式、混合式和结构化模型。这四种类型也代表着P2P网络技术的四个发展阶段!
10、·如果没有 就随便找一个也在第4行的C同学与其取得联系,让C同学在自己的通讯录中使用同样的方法找一下是否有B同学的联系方式。这里这样做的原因是C同学学号的第四位一定与B同学学号的第四位一样,因此逻辑上C同学距离B同学的距离一定比A同学距离B同学要近。那么就会出现两种情况:。

比特币算法概述篇21、那这里就会有人问了,万一某一个学生联系不上了那么岂不是他保存的书就没有办法获得了?为了解决这个问题,Kad算法采取的方法是将这本书的副本存储在学号与000110最接近的若干位学生手里,这样学号为000101等若干学生手里也会有这本书!
2、Kad算法作为一种分布式数据存储及路由发现算法,因其具有简单性、灵活性、安全性的特点,被以太坊用作底层P2P网络的主要算法。下面我们将通过一个例子来形象的说明Kad算法的主要内容及其运行过程!
3、其实这种使用异或来计算距离的方式,这里所有的节点都分布在二叉前缀树的叶子节点上,这种组织形式相当于按其节点ID的每一位对节点距离进行分类!
4、 如果C同学有B同学联系方式,那么他就将B同学的联系方式告诉A同学!
5、区块链技术最早的使用是在比特币中,前面我们也说到了,比特币网络采用的结构是混合式网络!
6、通过前面的内容我们已经知道了找到另一个学生联系方式的方法以及每个学生存储的通讯录是怎样的的结构。那我们就来找一本书来看一下在Kad算法中查找某一确定节点的方式是怎样的!
7、在Kad算法中它是这样做的:将每本书的书名做一个hash计算,将得到书名的hash值作为书本的索引,然后在书本的索引与节点ID之间建立一个映射。如果一本书的hash值为000110,那么这本书就会被分配给学号为000110的学生!
8、区块链的底层网络技术采用的是peer-to-peer网络,简称P2P网络。这是一种分布式网络通信技术,又称“对等网络”。与传统的客户端/服务器端结构不同的是,在P2P网络中各个节点之间没有主从之分,地位都是对等的,每一个节点既可以是服务器端也可以是客户端!
9、总结。还有一些节点只包含了部分区块链数据,一般只包含区块头,这类节点通过“简易支付验证”的方式完成对交易的验证,该类节点被称为“SPV节点”或者“轻量级节点”!
10、节点信息。Trias联合“北大软微-八分量协同创新实验室”定期举办技术沙龙。该实验室成立于去年9月份,以可信计算、区块链等作为主要研究方向,致力于推动智能互联新时代下的人机互信问题的解决。针对沙龙具体细节问题,我们将推出由实验室教授、博士生主笔撰写的系列文章。本期文章由北京大学的博士生张晓磊撰写!
比特币算法概述篇31、Kad算法中节点间的距离是逻辑距离,这个逻辑距离是通过对节点ID进行异或来计算的。目标节点到本节点的距离在[2(i-1),2i)范围内时,该节点被归为“K-bucketi”。比如节点ID为000111的节点与节点ID为000011的节点之间的距离计算为:000111Å000110=000111Å000011=000100。那么按照上述的算法就是,在节点ID为000111的K-bucket中,节点ID为000110的节点被分配到“K-bucket1”中、节点ID为000011的节点被分配到“K-bucket3”中!
2、目前主流的矿池协议是Stratum协议。钱包功能一般是帮助用户来查看自己的余额、管理公私钥对以及发起交易,在比特币网络中除了比特币核心钱包是全节点之外,大部分的钱包都是轻量级节点!
3、https://en.wikipedia.org/wiki/Kademlia。
4、回到以太坊中,在前面已经提到了每个节点ID是256位长,因此在以太坊中的节点的K-bucket大小分配为256行每行最多存储16节点的路由信息!
5、以太坊作为新一代以区块链作为底层技术的平台,在很多方面与比特币很类似,其节点同样具有钱包、挖矿、区块链数据库和路由四大功能、同样也是由于节点包含不同的功能而将其分为不同的类型、同样除了主网络之外还存在着许多的扩展网络。但是,与比特币不同的是其底层网络结构,比特币主网的P2P网络是无结构的,而以太坊使用P2P网络是有结构的,其P2P网络通过Kademlia算法来实现。Kad算法作为DHT技术的一种,可以在分布式环境下实现快速而又准确的路由和定位数据的功能。下面我们着重讲一下Kad算法的基本内容!
6、每个学生手中有以下信息:。矿工节点是通过在特殊的设备上面运行工作量证明算法的方式来相互竞争的生成新的区块!
7、·如果有 就直接联系B向他借书;。
8、那么接下来的问题就是怎么找到他们的联系方式。这里我们对Kad算法中的路由表 “K-bucket”进行介绍,作为一张路由表,K-bucket里面存储的就是节点的路由信息,但是和一般的路由表不一样的是,在K-bucket中是通过距离来对节点进行分类的,这里提到了节点间的距离问题。我们先来看下在kad算法中是如何计算两节点间的距离的!
9、学号为000111的A同学想要找一本名叫《西游记》的书,他首先通过对书名计算hash值来得到这本书的索引,经过计算得到《西游记》的hash值为001011,那么他就知道这本书被保存在学号为001011的B学生手里。接着,A同学就计算与这个学生的距离来查找他的通讯录,经过异或计算:000111Å001011=001100,经过计算发现这个距离12位于[23,24)这个区间中,因此A同学就去他的通讯录的第4行去找有没有B同学的联系方式:。
10、资源存储及查找。这里的信息指的是书名的hash值和书本的内容!
比特币算法概述篇41、一个包含了各种节点,不同节点之间运行着比特币主网络协议、。
2、引用。那么问题来了,我们应该如何将书本分发给各个同学呢?
3、Trias中的goosip协议与Kad算法比较相关。相对于我们今天讲的Kad算法来说,二者对应的层面是不同的,Kad算法更接近底层,而goosip协议偏高层一点,底层Kad算法在开始将节点的路由表创建好为goosip协议做准备,当goosip协议挑选a个节点进行广播同步信息时,Kad算法可以保证这a个节点都收到消息并将其存储下来!
4、就像我们在学校中对每一个学生有着唯一的标识一样,在Kad算法中给每个节点设置了几个属性来唯一标识一个节点,分别是:节点ID、端口号。对应到我们的例子中就是:节点ID对应着学生的学号,。
5、其中,比特币采用的身世混合式,而现今公链大多采用的是结构化类型。在结构化网络的具体实现上,大都采用DHT算法的思想。基于DHT算法思想的具体实现方案有Chord、Pastry、CAN和Kademlia等算法。其中Kademlia算法是以太坊网络使用的算法,本文中我们将对其进行详细描述!
6、这时有人就会问,上面提到一本书不是不仅仅保存在一个同学手里吗?我们为什么非要就找这一个同学?这是因为上面我们描述的是通过一个确定的节点ID来查找另一个节点的过程,对应着Kad算法中的FIND_NODE指令,当然问题中提到的做法是Kad算法中的另一个指令FIND_VALUE。这个指令是通过资源的索引值来搜索指定的资源,其操作过程与FIND_NODE非常类似,最后终止的条件就是有某一个节点返回了我们要查找的资源数据即可!
7、我们假设这样一个场景:为了公平起见每个人保存其中的几本,如果你想要看其他的书,就需要向保存这本书的学生来借。那么问题是我们怎么能找到保存着这本书的学生呢?如果一个一个去问的话,效率显然极低。将这个问题放到P2P网络中,就是一个节点如果需要某个资源,它怎么获取这个资源?怎么快速地找到存储该资源的节点?
8、值得一提的是,K-bucket的这种更新机制是只有老的节点失效后,才会将新节点加入到K-bucket中,这样做会保证在线时间长的节点会有更大概率被保留,增加了网络的稳定性,避免网络中节点因大量新节点加入更新K-bucket而出现拒绝服务的情况!
9、以上就是本文分享的所有内容,我们先介绍了P2P网络的基本知识,。
10、最近非常火的区块链技术对于大家来说应该并不陌生。但是很多人只是了解区块链技术的一些概念,对其底层的一些技术实现原理可能不是很了解。这篇文章会向你介绍区块链底层采用的通信网络技术及其网络中节点间的通信协议!
比特币算法概述篇51、以太坊网络。矿工节点中有些节点是全节点,被称为“独立矿工”,另外一些矿工节点则需要依赖矿池服务器维护的全节点进行挖矿工作,这类矿工被称为“矿池矿工”,矿池矿工与矿池服务器形成矿池,这是一个局部的集中式网络。它们之间通过特殊的矿池协议进行通信!
极客公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:比特币算法概述
喜欢 (0)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
收藏
收藏0
转播
转播
分享
分享
分享
淘帖0
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝0

帖子2930859

发布主题
阅读排行更多+

Powered by 顺水鱼MT4外汇EA网! X3.2© 2001-2017 顺水MT4外汇EA公司.( 陕ICP备17014341号-1