主页 > 最新版imtoken官网 > 区块链日常问答节点(一)

区块链日常问答节点(一)

最新版imtoken官网 2023-04-25 06:50:59

区块链节点

区块链节点通常是指区块链网络中的计算机,也就是说,任何连接到区块链网络的计算机(包括手机、矿机等)都称为节点。 例如,比特币网络是一条公共链。 当用户在其联网计算机上运行比特币程序时,该计算机就成为比特币区块链网络中的一个节点。 指已下载相关加密货币的节点软件参与点对点网络的计算机。 操作节点可以是普通钱包用户,也可以是矿工,也可以是多人协作。 不同的区块链对节点的数量和要求不同。 通常,一个节点首先需要有一定的存储空间来保证足够好的性能,避免一运行就被阻塞,然后设备需要联网,可以使用矿机、服务器、电脑等来操作和访问区块链。 具体用到什么工具? 取决于节点要求。

区块链节点有什么特点:

1、具有存储空间,块状数据可存储在TF卡、U盘、移动硬盘、电脑中。

2.连接网络,所有存储空间设备必须连接网络。

3、参与区块链,需要在存储空间上运行区块链的相应程序,通过可视化终端进行交易。

每台安装了数字货币客户端并连接到数字货币区块链的计算机都是数字货币区块链的有效节点。 世界上有多少这样的电脑或手机,就有多少区块链上的节点。

下面将进一步介绍节点要完成的功能、节点的作用、矿池节点、Bitcoin Core、SPV。

节点要完成的功能

引用精通比特币的观点,比特币节点有四个功能:钱包、挖矿、保存完整的区块链、路由。

image-20220118210601182

第一个功能是钱包,这里的钱包指的是钱包软件,不是地址加私钥本身。 钱包的功能包括收集钱包中与地址相关的UTXO,以便计算地址余额、构造交易、发送交易以及其他与转账相关的功能。

第二个功能是挖矿。 挖矿节点会收集交易,制作区块头,然后参与POW算力竞赛,寻找随机数,生成区块并获得区块奖励和手续费。

比特币节点是如何收到交易的_比特币节点怎么做_比特币节点是什么

第三个功能是保存完整的区块链。 区块链数据庞大,并非所有比特币节点都会下载完整的最新区块链。

第四个功能是路由。 所有类型的节点都将具有此功能。 所有节点都有义务帮助其他节点验证和传播交易,寻找其他节点,维护整个网络的连接。

节点的不同角色

节点被划分为不同的角色,每个角色的节点各司其职。

image-20220118211105430

第一个角色是一个普通的全节点。 只要一个节点下载了完整的、最新的区块链数据,它就是一个全节点。 当然,全节点也有路由功能,可能包含也可能不包含其他功能。 全节点是整个网络的中坚力量,因为只有全节点才能真正自己验证交易。 即将推出的轻节点不具备完整的链条,无法看到所有的交易历史,也无法直接验证交易。 他们需要向全节点请求必要的交易数据。

第二个角色是Bitcoin Core全节点,是最全面的节点。 Bitcoin Core 是比特币的参考实现,也是比特币网络上最流行的客户端软件。 安装了Bitcoin Core的节点首先是全节点,同时具备钱包和挖矿能力。

三是SPV钱包节点。 这种节点通常只关心自己钱包中地址相关的交易,不会下载完整的区块链,因此也被称为轻节点。 钱包通常安装在资源有限的移动设备上,因此适用于轻节点。 轻节点可以发起简单支付验证(SPV)向全节点请求数据来验证交易。

第四种是独立的挖矿节点。 挖矿节点的主要工作当然是挖矿。 独立节点,即不加入矿池的节点,需要下载完整的区块链进行挖矿,所以独立挖矿节点也是全节点。

以上四种是比特币P2P网络上的基本节点角色。

矿池节点

除了这四类基础节点外,还有另外两类节点参与矿池挖矿。

image-20220118211353048

比特币节点是什么_比特币节点怎么做_比特币节点是如何收到交易的

第一个是矿池服务器。 很多比特币矿工会聚在一起,组成一个矿池,一起挖矿。 矿池将搭建专用矿池服务器直接与比特币P2P网络通信,保存完整的区块链,挖矿节点只需要与服务器通信即可。

另一个是矿池挖矿节点。 虽然他们也参与挖矿,但是这样的节点只是使用他们的财富计算而不是保存完整的区块链,从而节省了存储成本。

与矿池的服务器-客户端架构类似,钱包也有类似的钱包服务器节点,可以让轻节点通过特定的协议更高效地获取最新的区块链数据。

关于节点的分类,我们就此打住。 节点要完成四个功能,即挖矿、钱包、路由和存储区块链。 不同角色的节点也会专注于不同的功能。 此外,并非所有节点都直接连接到比特币 P2P 网络。 比如一些轻钱包节点或者矿池挖矿节点会和特定的服务器通信。 这些服务器是比特币 P2P 网络上的节点。

接下来,我们将详细介绍上面提到的Bitcoin Core和SPV。

比特币核心

当首字母B为小写时,比特币是指一种加密货币,即比特币。 当 B 大写时,比特币代表比特币协议或比特币网络。 所谓网络就是很多台电脑连接起来的,每台电脑上都要安装一个软件,那么大家猜猜这个软件叫什么名字? 中本聪最初写这个软件的时候,他叫它比特币,后来为了区别,他把软件的名字改了,叫它比特币核心。

比特币核心是一个开源软件

Bitcoin Core 是比特币协议的一个实现,是一个开源软件。

首先,什么是了悟? 作为一套协议,比特币只是规定了游戏规则。 这套规则要实现,需要有人开发真正的软件,也就是说必须实现。 Realization是一个名词,英文叫做implementation。 当然,一套协议的实现并不局限于一个,比特币的实现有多种,但Bitcoin Core是在使用上具有绝对优势的实现。

比特币核心是一个开源软件。 软件仓库地址在。 谁,什么时候,修改了哪一行代码,一目了然。 我们说比特币是一个真正开放的系统。 开放的含义分为多个层次。 代码的开源就是游戏规则的透明化,这是其中的一个层次。

核心功能

接下来介绍一下Bitcoin Core包含的核心功能。

比特币节点怎么做_比特币节点是如何收到交易的_比特币节点是什么

核心应该提供运行节点的基本功能。 比特币是一个点对点网络,所以网络上的所有机器都是客户端,没有服务器。 Core作为客户端软件,要承担维护网络运行的所有职责,主要包括: 首先,下载并保存完整的比特币区块链。 其次,它包括一个图形界面的钱包软件,可以构造和签署交易并向全网广播,可以发送和接收比特币。 第三,接收网络上的交易,验证交易并打包成块,实现挖矿功能。

总之,比特币的功能基本都是通过Bitcoin Core来实现的。

团队的背后

Bitcoin Core背后的开发团队是一个松散的组织,人员不断变动,不会受任何个人控制。

最早的开发者只有一个人,中本聪。 虽然中本聪已经消失多年,但是中本聪创造的很多东西一直被传承下来,比如以C++为主要开发语言,使用Qt开发图形界面,使用椭圆曲线密码学等等。 直到今天,仍有人将 Bitcoin Core 称为中本聪客户端。

后来,球队的领导层又发生了两次变动。 接替中本聪的 Gavin Anderson 选择离开,是因为他觉得维护项目的工作太过琐碎。 目前的开发是由不同公司的人共同进行的,其中Blockstream的话语权相对较大。

但是,任何人都不能操纵比特币的发展。 Bitcoin Core 之所以受欢迎,是因为它是所有实现中最好的。 如果项目被恶意操纵,导致发展方向出现偏差,矿工可以选择其他实现安装。 与其他开源项目一样,比特币也可以分叉,是一种尊重选择的文化。

总结

Bitcoin Core 是比特币协议的一个实现。 它是安装在比特币节点上的软件。 该软件是开源的,任何人都不能操纵其开发。 新功能的加入需要社区先达成共识。

简单支付验证 SPV

SPV(Simplified Payment Verification),“简单支付验证”,是中本聪在比特币白皮书中专门引入的一个概念。 其实很简单,但是你必须提前了解区块结构、Merkle Tree和hash的概念。

块状结构

一个区块主要由两部分组成,一是“区块头”(Block Headers),二是“区块体”(Block Body)。 区块头包含了这个区块的一些信息,比如版本号、随机数、挖矿难度等,其中“上一个区块的哈希”比较有意思,因为每个区块都依赖这个信息链接成一条链. 注意,这里的前一个区块的哈希值实际上并没有取出整个区块数据来计算哈希值,而只是区块头的哈希值。

比特币节点怎么做_比特币节点是如何收到交易的_比特币节点是什么

image-20220118212437248

区块头中的另一项,Merkle root,是我们比较感兴趣的一个参数,如果有Merkle root,那它就一定对应着一棵Merkle树,Merkle树必然对应着很多小数据。 没错,每一小块数据都是一笔交易。 每个区块一般包含 2000 多笔交易,这些交易的数据不存储在区块头中,而是存储在区块体中。 注意Merkle树并没有保存在区块体中,也没有保存在区块头中,所以每次使用Markle树都需要重新计算。 计算出的默克尔根就是最终保存在区块头中的默克尔根。

img

一旦理解了区块结构,就可以理解全节点(Full Node)和轻客户端(Thin Client)的区别。 全节点就是一个程序,比如中本聪自己写的Bitcoin Coin。 程序运行后,会将整个区块链下载到本地。 比特币的区块数据到2018年底估计达到173G,不算大,但在手机上跑全节点基本不可能。 于是就有了轻客户端的概念,比如Electrum就是轻客户端。 轻客户端可以安装在电脑上也可以安装在手机上,为什么呢? 因为轻客户端只下载区块头,每个区块头只有80K,所以由区块头组成的一条链只有几十兆。

SPV 是在轻客户端环境中验证交易有效性的过程。

SPV验证流程

安装全节点往往是因为我们要挖矿。 安装轻客户端,通常作为钱包软件使用。 SPV 需要解决的是轻客户端条件下的支付确认问题。

当然,钱包是用来负责当前账户的转入和转出操作的。 先说转会吧。 轻客户端可以构造一个交易,对交易进行签名,然后广播到全网。 这就是转移操作。 再说线上交易很多,但是轻客户端只下载自己账户相关的交易。 所以无论是转入还是转出交易,下载到本地轻客户端都是一个相对孤立的交易,因为区块体并没有保存在本地。 那么如何验证交易是否生效呢? 这就是SPV旨在解决的问题。 我们知道,一笔交易要在区块链上生效,意味着必须满足两个条件:一是交易已经被打包到某个区块中,二是在此之上又被打包了5个区块堵塞。 即所谓六证。

但是,轻客户端毕竟不在这里保存任何交易,所以在取出一个独立的交易时,无法确定它属于哪个区块。 这时轻客户端需要发起SPV流程。 首先,轻客户端需要发起一个专门的确认请求比特币节点怎么做,将交易广播给网络上相邻的全节点。 全节点收到交易后,会搜索交易属于哪个区块,然后计算出这个区块的Merkle Tree。 这时候Merkle Tree最大的优势就发挥出来了,因为要确认一笔交易是否从属于一个Merkle根,不需要将整个Merkle Tree发送给轻节点,只需要发送与当前交易相关的信息。 部分默克尔树就可以了。 这样,轻节点收到这部分Merkle树后,在本地计算这笔交易的hash,然后根据这部分Merkle树上的每一个hash值,一路计算得到Merkle根。 如果这个值和自己的区块头完全匹配比特币节点怎么做,则交易验证成功。

因此,整个 SPV 流程都依赖于全节点的帮助来验证交易。 轻节点无法自行验证交易,而是通过确认其他全节点已接受交易,间接完成交易确认。 但是,全节点有没有可能反馈一个假的Merkle Tree呢? 答案是不可能的。 在 Merkle 验证中,不可能通过伪造的交易哈希获得已知的 Merkle 根。 比特币使用 sha256 算法来计算 Merkle 树哈希。 伪造就相当于和sha256算法相撞,这根本不可能。

SPV 有什么用?

那么中本聪引入的SPV技术有实际用途吗?

第一个用于实现钱包软件。 如果一个钱包软件要安装在移动设备上,你要避免下载超过 100G 的区块数据。 那么只有两个想法。 一种是使用中心化服务器,让钱包先将信息发送到服务器,然后由服务器验证交易。 这种想法显然是偏中的。 另一个想法是 SPV。 像 Electrum 这样的钱包可以只通过下载区块头来验证交易。 整个数据量和计算量小,可以直接在低端设备上运行。 所以很多轻客户端也叫轻钱包,或者SPV钱包。

比特币节点是如何收到交易的_比特币节点怎么做_比特币节点是什么

SPV 的另一个用途是实现侧链技术。 侧链是一条可以通过双向锚定使用主链上货币的链,可以在上面进行各种创新。 例如基于比特币侧链开发的RootStock,可以实现基于比特币的智能合约平台。 双向锚定过程依赖于 SPV 技术。

因此,虽然SPV在白皮书中占据的篇幅不多,但在实践中却发挥着非常重要的作用。

总结

最后总结一下: 首先,一个区块由区块头和区块体组成。 区块头中上一个区块的哈希值其实就是上一个区块的区块头的哈希值,所以要单独下载区块头。 还送个链子。 其次,比特币网络上相同的节点可以分为两种类型:全节点和轻客户端。 轻客户端只下载区块头。 第三,SPV解决的是轻客户端中单笔交易的确认过程。 大致思路是向相邻的全节点请求部分默克尔树信息,如果本地验证通过,则证明其他全节点接受了这笔交易。 这笔交易。 第四,SPV是开发钱包软件和侧链的关键技术,意义重大。

问答

独立矿工和合作矿工

合伙人矿工是什么样的节点?

你怎么认为?

参考

简单支付验证 SPV (happypeter.github.io)

比特币核心 (happypeter.github.io)

比特币网络节点分类-知乎(zhihu.com)

轻节点SPV——知乎(zhihu.com)

区块链节点与区块的关系_区块链轻节点技术_微信_39786341的博客-CSDN博客