向金马老师致敬的方式就是完整的抄写他的作品:《精通比特币》第六、七章速度

快速入门比特币的最少必要知识:协议、节点

协议:是计算机领域的专业术语(protocol),计算机领域有很多协议,如:http协议。协议是大家一起制定,共同遵守,的文件,比如一些离婚协议,租房合同;协议的内容如果大家都认可是可以扩展的。

节点:一般是指计算机网络里面的单个计算机或者网络设备。每个节点的功能可能各不相同,但在网络中是一个一个独立且相互连接的个体。在比特币网络里面,我们常常说的节点,往往是带有比特币客户端的计算机或者网络设备。

6.1 p2p网络架构

P2P(peer to peer):点对点;比特币网络架构就是P2P。比特币网络中的每一台计算机都彼此对等 ,每个节点共同提供网络服务,不存在任何“特殊”节点。每个节点完全平等的对外提供服务,同时使用其他节点提供的服务。

比特币网络就是按照比特币P2P协议运行的一系列节点的集合。

6.2节点类型及分工(依据功能)

比特币节点价值和地位一律平等,但是各个节点的功能却不一样,每个节点分工不同。

一个全节点包括4个功能:1、钱包;2、矿工;3、完整区块链;4、网络路由节点。

???节点包含4个功能的是全节点,还有不包含4个功能的节点吗?是天生不全,还是有意不全?

先是通过百度,后来才想起来查证原文(只需要点一下直播中的链接)才知道节点有7种分类呢,

1、核心客户端(全节点);

2、完整区块链节点(含:完整区块链、网络路由节点);

3、独立矿工(含:矿工、完整区块链、网络路由节点);

4、轻量spv钱包(钱包、网络路由节点);

5、矿池协议服务器(如:pool、stratum服务器。将运行其他协议的节点:如矿池挖矿节点,stratum节点,连接至P2P网络的网关路由器);

6、挖矿节点(包含不具有区块链、但具备stratum协议节点(s)或其他矿池挖矿协议节点(p)的挖矿功能);

7、轻量(SPV)Stratum钱包(包含不具有区块链的钱包、运行stratum协议的网络节点。

7个葫芦娃啊。

每个节点都参与全网络的路由功能,同时也可能包含其他功能。每个节点都参与验证并传播交易及区块信息,发现并维持与对等节点的连接

路由功能是指:每个节点都会主动连接各自的邻居节点,从而为整个网络服务。

4个功能任意组合,就会出现不同的节点,也就是说,很多节点并不是全节点:如钱包。

6.3扩展比特币网络

比特币网络本身是遵守比特币协议的各个节点组合。但是协议本身有些功能是无法实现的,比如:挖矿和钱包功能。如果要实现的话就需要去扩展比特币网络协议。

比如:许多连接到比特币网络的大型公司运行着基于Bitcoin核心客户端的全节点客户端,它们具有区块链的完整拷贝及网络节点,但不具备挖矿和钱包功能。

这些网络公司为了拥有这些功能,会在原来的比特币网络协议上,增补一些上述功能的特殊协议。

协议:就是规则,但是一切可以商量着来。

扩展之后的比特币网络,它包含了多种类型的节点、网关路由器、边缘路由器、钱包客户端、以及它们相互连接所需的各类协议。

这些扩展协议的存在,使得整个比特币网络拥有了更多的功能。

6.4网络发现

比特币网络里面的节点是存在于复杂的网络之中的。

每一个新的节点出现之后,为了可以和整个区块链网络里面的节点进行协作,这个节点就必须要主动去和已经存在的节点联系。这样才能加入到比特币网络的大家庭里面。

这个新节点与已有节点建立联系的过程,称作:网络发现。发现的目的是:找到自己的对等节点。

网络发现的过程就像:搬家之后找邻居。(家庭地址就是IP地址)

新节点是如何找到自己的对应节点并产生联系的呢?

区块链里面网络节点众多,新节点刚开始找邻居的时候,是很难一下子就找到自己的对等节点的。

为了能够提高网络发现的效率,在整个网络里面存在一种特殊的节点,这类节点称作:种子节点。

如果把新节点找到对应节点的过程比做是搬家找邻居,那么,种子节点就是你将入住小区的居委会大妈。

居委会大妈的手里掌握着大把的小区邻居的信息。你把信息给大妈,大妈帮你寻找可以与你对应的邻居节点。

下一步就是你自己和邻居产生深联系。你把自己的信息给邻居,邻居还会帮你把你的信息再次传递给他的邻居。邻居的邻居还会在传播,一次下去,很快,整个小区都会知道你的地址,找到你将很容易了。

大妈们都很热心的。

另外,你还可以向你的邻居节点发出请求,获取你邻居所知道的其他邻居节点的地址信息。

就这样,全网节点就都彼此知道大家的节点地址了。

你也可以找到与你对等的节点了,完成网络发现的目标。

这个村儿太友爱了!

还有一种情况是:节点和整个比特币网络失去联系,退出网络了,就好像你有搬入和搬出小区的自由一样。就好像你做了一段时间矿工,突然不想做了立刻比特币网络一样。

人搬入小区住别的地方,节点能搬哪里呢?是不是消耗了。

这种情况下,节点之间的地址是不可靠的,比特币网络就发明了自己的一套机制来处理这种情况。

比特币网络里面每个节点必须不断的做两件事情:在失去的同时发现新的邻居节点,找到并主动提供帮助。

网络发现其实就是节点之间主动帮忙的结果。

下面讲解节点是怎么知道自己邻居是否搬家的。

原来节点之间是需要定期发送信息维护连接的。和人一样的社交规则。如果两个节点之间持续90分钟没有发送信息了,节点的任何一方都可以认定邻居节点从网络里离开了,这时,就可以找新邻居了。

这样的机制,保证了整个比特币网络可以自动调整节点规模的增减。

节点的规则和人之间的规则一样的,节点不能独处,人之间没有社交也是不可能的。

6.5全节点

抱有一份完整的、最新的区块链拷贝的节点,我们叫它全节点。

全节点可以独立的进行建立并校验整个区块链,也就是从第一块创世区块一直建立到网络中最新的区块的整个比特币网络。

由于全节点拥有全新的拷贝,所以全节点“不需借助或信任其他系统即可独立地对所有信息进行验证。”

由于全节点包含整个区块链的完整信息,如果你的计算机想拥有一个全节点,你的硬盘至少需要20GB的存储空间。

6.6库存清单

库存清单其实是一个比喻的说法,意思是说:每个节点里面都有存储一份与自己的相连接的节点的名单。

当网络里面的两个节点需要连接的时候,这两个节点会相互交换各自所存储的节点清单信息,这样可以保证,一个新的全节点可以构建完整的区块链信息。

这就是交换库存清单的过程。

6.7SPV简易支付验证节点

上面说过只有全节点拥有完整的全网区块链拷贝,也只有全节点具备独立验证的能力。

很多节点,是没有全节点独立验证能力的,所以会采用一种叫做SPV的验证方式。

采用SPV验证方式的节点叫做SPV节点。

SPV节点不会去下载所有的区块链信息,而只是去下载每个区块的头部信息。(与就是区块头的信息)

SPV的验证方式,是通过参考交易在区块链的深度,而不是高度,来验证交易的。

简单来说,检查一个区块的上面是否叠加了6个区块,如果有,证明这个交易是确实发生的。

有6块就可以证明确实交易了

第七章:区块+链

区块是区块链最基本的组成单位。每一个区块里面包含着众多的交易信息,也包含一些与相邻区块联系的信息,你可以简单的把区块看作是一个帐本,帐本里包含着很多交易信息。

链:是一个比喻的说法,链条关系是一种很稳固的关系,往往表示前后关系十分紧密,在区块链里每个区块都是前后连接的。

7.1区块链

区块链的意识是:由包含信息的区块从后向前有序链接起来的数据结构。

实际上区块链并不是整个一条链条,而是一条断开的链。也可以看成是一根垂直的链。

最底部的区块叫创世区块。

区块链里面的高度,指的就是区块与创世区块之间的距离,顶部或顶端的区块是新加入的,新区块离创世区块最远。

还可以把垂直的区块比成一个玻璃杯里面叠加的冰块。这个结构就是编程领域常见的一种数据结构:栈。

SPV的验证方式看的是区块所在的高度。

其实就是从垂直的角度来看,这个区块在从高到低的顺序上有多少个区块叠加在自己身上,只要自己的深度超过6个(也就是在自己的上面叠加了6个区块),就可以说明自己所带的交易信息是验证过的。

“从上往下看,超过6个后,区块在区块链中的位置越深,被改变的可能性就越小。在100个区块之后,区块链已经足够稳定,这时Coinbase交易(包含新挖出的比特币的交易),可以被支付。几千个区块(一个月)后的区块链将变成历史,永远不可能被改变了。

7.2区块结构

单个区块的结构,也就是单个帐本的内部结构。

单个区块是有两部分组成的:一个是区块头,一个是区块主体。

区块头里面有三组元数据组成:父区块的哈希值,挖矿竞争相关数据,merkle树根(所有交易信息的数据结构)

7.3区块头标示符

每一个区块都有自己的标示符,使自己易于查找和辨别。

第一种:识别方式是:区块头哈希值,相当于每个区块的身份证

通过SHA256加密算法,对区块头里面的信息进行计算,将可以得到一个区块头的唯一哈希值。

整个比特币网络里面的区块,都有自己唯一的哈希值,这个哈希值,自己的区块是没有存储的,整个网络会有专门的存储。就好像,你办了身份证,但是身份证是放在派出所里保管的。

第二种识别方式:区块链的高度。

相当于区块住的楼层高度。但是与区块头哈希值不同的是,区块的高度,不是一个区块的唯一标示符,因为存在区块链分叉。

区块链分叉可以理解为:两个或者两个以上的区块可能有相同的区块高度,在区块链里争夺相同的位置。

在整个区块链网络里面,每个矿工都有自己的区块,同时,只能有一个区块获胜,最后被加入到区块链中。

所以,在区块链的顶部位置,在某个时刻,可能有多个区块拥有完全相同的区块高度,此时,即使你知道区块的高度,但是就是无法确定到底具体是哪个区块。

所以,高度不是区块的唯一识别。

7.4区块的链接:区块+链

链指的是区块之间的联系,每一个区块的头部区块里,会存储自己的“父区块”的区块哈希值。

有意思的是:区块不存自己的哈希值而存它爹的身份证,是想延续光荣?

父区块:当前区块的前一个区块。从垂直的角度来看,就是压在自己身下的最近距离的一个区块。

以此类推,第二个区块的父区块就是创世区块,也就是第一个区块 。

这样的机制,使得每个区块都能根据自己的父区块的唯一标示符,一路查找到创世区块。

这样就形成了一个不间断的链条结构。

7.5Merkle树

merkle树,是一种独特的数据结构。这个结构主要用来表示每个区块里面的所有交易记录的。这个树存在的意义,是为了快速验证交易是否存在。这里面涉及到二叉树的算法,二叉树算法可以理解为一种提高计算效率的数学公式。

markle树形结构的应用,使得验证一条交易信息是否存在的时间复杂度大大降低。

markle树的特点和作用具体表现为:当区块大小由16笔交易(4KB)急剧增加为65535笔交易(16MB)时,为证明交易存在的Markle路径长度增长极其缓慢,仅仅从128字节到512字节

这样的方式,使得SPV的(简单支付验证)有了可能。

SPV节点不保存所有交易也不会下载整个区块,仅仅保存区块头,它们使用认证路径或者Merkle路径来验证交易存在于区块中,而不必下载区块中的所有交易。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容

  • “那些你爱的人/温柔的那么柔软/无知的我/是落叶落魄又落魄/曾经幻灭的岁月/穿插沉默的现在/呼...
    打油诗人张正义阅读 357评论 0 0
  • 落叶的疲乏 总在根的泥土里挣扎 看不见 夜长的没了头绪 无情 谁的思念正被抽丝剥茧 摸不着,梦是尾巴 躲进现实的旗...
    劍心阅读 737评论 13 5
  • 回想了一下自己刚生完孩子的时光——我永远都不会忘记那时的狼狈不堪,像头困兽在烟雾缭绕的房间里冲撞、挣扎、反复,恨不...
    小男神麻麻阅读 873评论 0 0