首发于 盗盗叨叨叨
区块链节点与钱包的分类、边际和使命,看这篇文章就足够了

区块链节点与钱包的分类、边际和使命,看这篇文章就足够了

之前有一个同学问过我两个问题:“是不是只有成为节点才能进行交易?”、“钱包、尤其是轻钱包是不是也可以挖矿?”。对于第一个问题答案按照经验和常识显然是「否」的,譬如今天我们可以通过 Bitcoin Core、Mist、火币、imToken等不同形式的物态或者渠道来完成不同数字货币的交易。第二个问题对于绝大多数人来说第一反应肯定也是「否」的,因为我们似乎听说过各种传闻,比如说手写计算也能挖矿、比如说挖矿需要强大的算力,手机算力明显不足以支撑、甚至有些人还研究了POS的挖矿原理等等…上述种种问题,想的越多导致脑袋越来越混乱,后来我探其究竟,发现根本问题是对「节点」和「钱包」的分类、边际、主要使命分不清楚导致的疑惑,相信到今天为止还是会有不少人会跟我当初一样犯困,那就让我们带着这些疑问开启我们的正文:


先抛开钱包的话题,我们来看看在比特币网络中节点的类型都有哪些?


# 常规节点的分类

官方参考实现的节点同时具备路由、区块链存储、挖矿和钱包这四个模块。根据节点在区块链网络中扮演的角色和自生侧重功能的不同(当然,也有简单出于效率和成本的考虑),有些节点会缺少其中的一个或几个模块。也正是因为节点自我定位的不一样,造就了节点有着一些不一样的分工和使用场景。在具体介绍节点分类之前,我们先快速缕一下这个四个模块的主要功能:


1、路由(network routing):

路由模块承担了发现和维持对等节点的连接、以及广播和接纳新区块的功能实现。理论上,路由模块应该是所有节点都应该具备的模块,否则单一的节点无法参与完整区块链网络的共识和协同。当然也有例外,比如矿池模型中就没有路由模块,但它却十分依赖路由的一些核心协议。

2、区块链存储(full blockchain database):

区块链存储模块负责保存完整的、最新的区块链副本,本质上就是数据。

3、挖矿(miner):

在比特币的区块链网络上,挖矿模块的任务是通过在某种特殊的硬件设备上执行POW共识算法,以相互竞争的方式创建新的区块。其他平台链上也存在类似的概念,可能基于的硬件或者执行的共识算法不一样等等。

4、钱包(wallet):

钱包模块主要功能是用于管理节点的私钥、资产以及进行交易行为等。


有了这些基础模块的定义,我们来开始具体分析下目前区块链网络上不同节点的角色扮演是怎么划分:


## 参考实现节点(reference client)

在比特币创建伊始,几乎所有的节点都是按照官方推荐参考实现的这种方式搭建。很多人会在自己的机器上搭建这样的节点,或挖矿或当钱包使用,其中最具代表的产品是 Bitcoin Core。用户下载运行该客户端即意味着加入到比特币区块链主网节点的建设,但是随着全网算力这些年的突飞猛进,这种节点出于投资回报和效率的考量变成一种非最优的解决方案。


## 完整区块链节点(full blockchain node)

## 独立矿工节点(solo miner)

按照我的理解,参考实现节点、独立矿工节点因同时具备区块链存储和路由两个模块,理论上可以称之为完整区块链节点/全节点。区别仅仅是管理员构建该节点的初衷不同,从而赋予了节点不同的名字和使命。


很不好意思的说,主要出于当时知识结构的不完整,我在《 区块链是什么,如何简单易懂地介绍区块链》中所描述的节点,其实都应该简单粗暴的理解为完整区块链节点/全节点,最好权当做参考实现节点来对待,这样可能对那篇文章所构建的世界观更容易接受和理解。


## 轻量级钱包节点(lightweight(SPV) wallet)

轻量级钱包节点跟全节点相比最显而易见的特点是不需要完整下载数据,也不需要承担那么多的责任,它基于中本聪提出的SPV(Simplified Payment Verification - 简单支付验证)方式就可以在比如手机和网页端等平台上运行。要知道,在整个比特币的区块链生态中,并不是所有的节点都会参与挖矿,对于大多数普通用户来说,比特币和区块链之于他们最大的意义就是消费和投资,他们关心的问题只是验证和自己相关的交易是否成功 —— 如果单纯出于这种场景考虑,显然SPV可以更高效的满足他们。


在继续介绍SPV之前,我们还是快速回顾下全节点是如何校验一笔交易记录的,以及其中需要执行的事务流程:

  1. 全新加入的节点连接至附近的全节点,本身需要事先下载好完整区块链上的所有数据。
  2. 当当前节点收到一笔交易,结合自己节点上历史的数据,快速定位到这条交易记录具体的账号。
  3. 根据定位得到的具体账号以及那条交易记录,开始检验其交易记录的签名是否准确(是否被篡改)、其输入值是否“有效”(是否使用过,避免双花)、其输入值的数字之和是否大于等于输出值的数字(否有足够余额可供支出)等等工作。


现在我们来继续说说SPV:SPV 全称叫 Simplified Payment Verification - 简单支付验证。是“Payment-支付验证” 而不是“Transaction-交易验证”,交易验证的话就会涉及到我们上面讨论的1-2-3-4步的所有验证环节,相对来说比较复杂。SPV提出了另外一套极简、但只用来校验支付是否可信的办法,其核心是“判断当前这笔支付是否被主网上的其他全节点所收录,并且后续得到了多少区块进行确认”。事务的流程大致如下:


  1. (SPV)节点需要随时连接至附近的全节点,本身需要事先下载好完整区块链的区块头信息;注意是每块80字节的区块头信息。
  2. 当当前(SPV)节点收到一笔交易记录,或中心、或去中心化的方式得到与其交易相关交易的 Merkle Tree 分支;然后通过一个 Merkle 证明,验证其根在完整区块链的区块头里。(关于区块头中的元信息和Merkle Tree可以参考我之前写的《 探索比特币“挖矿”和“区块”的数学本质》)
  3. 如果确实这笔交易存在于主链的某个区块的区块头里,还需要顺带做一定程度的验证,验证其区块之后有额外更多区块连接(工作量证明),最终极大程度证明其支付合法。


对比,由此可见,全节点对交易数据的校验十分依赖自身完整的区块链的数据,对于完成一笔交易记录的校验,大量冗余数据的协同以及执行步骤是必不可少的,这样可以有效提高安全性和独立自主性。而SPV可以极大地节省了存储空间、丰富了用户使用场景;区块头就80个字节,未来交易量无论有多大,按照 6个/小时 的出块速度,每年产出 52560个区块,相当于每年新增的存储需求仅为 4MB,一百年之后累计存储也只有 400MB 而已,对于现在主流的设备Hold住也是完全没有问题的… 显然,彼此的优缺点是相互交叉。


# 矿池节点的分类

我们上面讲的是一个常规节点的分类,众所周知由于全网算力指数级的上涨,独立矿工节点(solo miner)挖到区块获得奖励的概率在今天来看来几乎不太可能,独立矿工需要事先投入巨额的资源才有机会加入到“矿工俱乐部”,包括还不限于大容量的区块链存储空间、费神费力的运维成本以及逐年上涨的电力费用等等。基于上述种种现状考虑,技术极客就提出了矿池(mining pool)的概念 —— 一种将少量算力联合计算挖矿的组织方式。在这种机制下,个体不管算力的多少、不需要大容量存储空间,通过某种矿池协议(比如:Stratum)就加入到矿池组织中进行挖矿。通过与矿池签订“契约”之后,矿工们能够根据贡献的算力多少,每天稳定获得一定数量的收益,而不再需要等到真正挖到一个区块才能获得奖励。


矿池概念的引入,解决了我一开始研究比特币和区块链的一个困惑 —— 都说挖矿需要事先同步好几十个GB的历史数据,硬盘肯定是少不了的,但是为什么现在一台裸的显卡或者ASIC芯片就能开始挖矿呢?!好吧,如果你至今还存在这样的疑问,下面的内容将帮你全部解答。


## 池协议服务节点(pool protocol servers)

池协议服务节点中除了用于挖矿的Stratum协议之外,还十分依赖P2P协议连接到一个或多个完整区块链节点,间接实现访问一个区块链完整副本的目的。


## 挖矿节点(mining nodes)

挖矿节点不需要额外的硬件模块,最终由池协议服务节点代替自己验证区块和交易,从而缓解挖矿节点运行一个完整节点的负担。


## 轻量级Stratum钱包节点(lightweight(SPV) stratum wallet)

抽象的来说,矿池可以想象成在比特币的主网中开辟了一个黑盒的子网络,矿池通过在这个子网络中设置一个比主网挖矿难度小1000倍以上的 Difficulty,挖矿节点挖的是一个类比特币/区块、但名叫“份额”的东西,这套机制能够保证了子网络中的挖矿节点有较大概率挖到一个“份额”。


我们还是拿掷骰子为例,比特币的网络要求节点掷到小于等于数字 ② 赢得整个比赛,并获得(比特币)奖励;但是矿池只要求节点掷到小于等于数字 ⑤ 就可以赢得小组内的比赛,获得(份额)奖励。所以,当一个挖矿节点掷到数字 ④,尽管他并没有通过完成更高难度的比赛来赢得更大的奖励,但至少他可以以较低的成本获得了这个矿池奖励给他的“份额”。与此同时,对于矿池中所有节点的累加,总是有较大的概率其中的一个节点掷到数字 ① 或者 ②,那么,对于矿池来说,矿池作为一个整体它就赢得整个比赛和(比特币)奖励。显然,最终“份额”与“比特币”之间会存在某种经济模型的兑换,这里就不再做更多赘述。


综合上述这些所有节点,在比特币的区块链网络中最终组成的拓扑结构大概会如下图所示:

参考实现节点、完整区块链节点、独立矿工节点、轻量级钱包节点彼此两两相连,其中轻量级钱包节点需要至少连接到一个完整区块链节点/全节点上。池协议服务节点一对多伺候着无数的挖矿节点和有限的轻量级Stratum钱包节点,同时池协议服务节点本身必须连接到至少一个完整区块链节点/全节点上。


# 钱包的分类,以及它到底算不是一个节点、它是否可以进行挖矿?

钱包和节点是两个完全不同的概念,本来不应该拿出来一起讨论,但是因为两者之间存在少许的交集,且现在大多数用户都在使用围绕ERC20协议设计的imToken、Kcash等接近中心化的轻钱包,这就让很多新人对区块链节点、尤其是轻节点和轻钱包扮演的角色产生误区。如果你确实对此存在一些模棱两可的东西,继续下面的阅读就对了:


不好意思,可能是几句废话,节点和钱包的区别仅仅是一开始讨论问题的视角不一样:比如这里,因为我们事先提出了要去探讨一下「节点的分类」,所以,我们才从比特币区块链网络中主要的节点中抽象出了参考实现节点、完整区块链节点、独立矿工节点等等节点类型。这些节点的首要任务是校验和维护一个不断增长、内含交易记录的区块链体。


钱包的使命就更为清楚 —— 保存私钥、管理交易和数字资产等。钱包的分类可以从很多维度进行不同的划分,这里我们就不展开讨论了,只讨论其中的一个维度 —— 按照「中心化的程度」对钱包进行分类,后来我发现之前所有关于节点和钱包产生的困惑主要源自于此:


根据钱包依赖中心化的程度,我们可以把钱包分成:全节点钱包、轻钱包、中心化钱包。

## 全节点钱包

全节点钱包里保存着一份完整的、最新的区块链副本,工作不仅仅是保存私钥、管理交易和数字资产等,还顺带承担起区块链上交易数据的校验以及区块的路由等复杂工作。也正是因为这个原因,全节点钱包具有隐私性好、能够独立自主地完成所有交易数据的校验而不需要依赖其他节点;缺点就是需要一定的存储空间和耗时同步。


由此可见,参考实现节点某种意义上等同于全节点钱包。你可以将参考实现节点当普通挖矿节点来用、也可以单纯当做钱包来使,主要取决于拥有者架设该节点的初衷。其中,比特币全节点钱包最具代表的是 Bitcoin Core,类似的概念在以太坊中有 Mist、Parity。


## 轻钱包/轻节点钱包/轻量级节点钱包/SPV钱包/SPV轻钱包/链上轻钱包…

轻钱包、轻节点钱包、SPV钱包、链上轻钱包等等等等实质上都是一个东西,鉴别的唯一标准是核心设计思想是否参考了中本聪的SPV(简单支付验证)理论。关于SPV理论,我们在介绍轻量级钱包节点的时候已经做了简单的概念讲解,这里就不再赘述了。


前提是基于SPV校验某一笔支付确实存在主网的最长链上,并且后续得到了其他区块进行确认。由此可见,如果按照我们这个角度定义轻钱包,那么,前面在节点部分讲到的轻量级钱包节点,其实可以约等同于这里的轻钱包/SPV钱包,区别主要也只是取决于拥有者架设该节点的初衷到底是用来当钱包使用,还是说发扬共产主义精神作为主网上的一个普通节点。其中,比特币里较为知名的SPV钱包是Electrum,以太坊中有imToken、MetaMask 和 MyEtherWallet等接近类似的概念。


至此,我们可以回答下开篇提出的一个问题:

钱包、尤其是轻钱包是不是也可以挖矿?


首先我们需要将挖矿的定义定义清楚,我们假设这里的挖矿是指节点具备一定的算力然后执行POW工作量证明,对于手写挖矿之类的钻牛角尖不再其讨论范畴。基于这个前提讨论,那么,钱包、如果是全节点钱包(或者更直接的讲就是Bitcoin Core),那他具备一定挖矿的功效;如果仅仅是SPV轻钱包,那他本身不具备挖矿的功能。


## 中心化钱包/托管钱包/链下轻钱包…

这类型的钱包完全依赖运营该钱包的主体和机构。钱包客户端中只保存私钥,只有在需要交易的时候,通过客户端本地的私钥完成一次签名,而其他数据都放置在中央的云端。甚至很多、比如交易所性质的钱包连私钥都不被用户真正拥有,而是以一种“借贷”、“托管”的形式都保存在中央平台上。优点是实时高效、用户体验好;缺点不用多说了,用户需要严重信任钱包的运营主体。


有些人图方便也会叫这类钱包叫做轻钱包,他们思考的角度仅仅是不需要同步节点数据、交易便捷等,所以赋予了一个「轻」的概念。这是不讨喜甚至让很多人混淆的根源,所以我给他起了一个叫“链下轻钱包”以便与“SPV轻钱包”/“轻钱包”/“链上轻钱包”做一个区分,不过这些都不重要,如果能够真正理解内部机制的区别的对于到底叫什么也就无所谓了。


梳理完了关于节点和钱包的知识点,最后,我们终于可以轻松的回答下开篇提出的另外一个问题:

“是不是只有成为节点才能进行交易?”


答案显然是「否」的。对于中心化钱包,比如99%的交易所,普通用户在其中并不作为区块链主网上的一个节点存在,但是他可以高效的完成交易,只是他的交易是以“借贷”、“托管”的形式都保存在中央平台上。即便成为一个节点,节点和交易之间也并不能划上等号,要判断节点中是否具有“钱包”模块,对于没有钱包模块的节点,他是不能完价值传递的。



## 参考阅读

天下网标王天水网站设计公司大庆网站优化按天收费武威企业网站建设哪家好长葛网站seo优化营口营销网站报价思茅百度网站优化排名报价张掖百度竞价包年推广多少钱汕头关键词排名包年推广多少钱巢湖网站推广价格定西seo优化价格坪山网络推广公司铜川SEO按效果付费多少钱湘西关键词按天扣费公司桐城百度seo推荐秦皇岛企业网站制作公司中山百度关键词包年推广推荐濮阳建网站报价泰州百度网站优化忻州百度竞价哪家好大庆网站建设推荐本溪seo排名公司乐山百度竞价多少钱西安百度爱采购报价南阳网站推广报价资阳关键词排名包年推广公司固原seo推荐钦州网站优化按天收费多少钱民治模板推广坪山外贸网站建设淄博网站优化推广多少钱香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化