type
Post
status
Published
date
Jul 3, 2019
slug
summary
tags
Web3
category
Web3
icon
password
Property
May 23, 2023 12:43 PM
转载自我的微信公众号——无常随心说。

什么是区块链的节点?

在传统的中心化模式下,我们通过一个可信的第三方机构来向账本添加交易记录
notion image
而比特币是基于P2P网络的,P2P就是Person to person,网络中的每个人都可以直接联络交流,大家都是平等的,每个人在这个网络中都被称为一个节点
notion image
节点可以有不同的功能,具有不同功能的节点,组成了区块链网络
notion image
路由功能:就是跟其他节点互联的功能,只有路由功能的节点是中继节点,这是每个节点必须有的功能(不然别人联系不上你 钱包功能:有这个功能的节点就能管理自己的账户,与别人进行交易,只有钱包和路由功能的节点一般是普通个人用户。完整区块链:也就是完整的账本,每个节点都有权保存一份完整的账本,具有此模块的。挖矿功能:如果你想通过挖矿来赚取比特币,就可以开启挖矿功能,开启了挖矿功能的节点又被叫做矿工。具有全部四个功能的节点叫做全节点。
在分布式去中心化的比特币网络,没有一个中心化机构来统一地保管账本,而是在每个具有完整区块链功能的节点上都保留一个完整的账本,理想状态下,所有节点上的账本都是一模一样的。
就我们简单使用而言,当我们下载了一个比特币钱包并运行它时,我们就成为了比特币网络节点的一份子,并且具有钱包功能,可以参与比特币的交易。
梳理一下
任何人都可免费充当节点节点可以挖矿可以对账可以交易可以路由节点之间是平等的,没有上下级之分任意节点之间可以直接相互通信
那么我们的交易记录如何同步得写到所有节点上呢?

交易记录如何入账?

我们先说正常情况是什么样的,再考虑各种奇怪的诡异的情况是怎么处理的. 交易记录入账大体可以分为五个步骤
notion image
  1. 第一步是创建交易记录,这个我们在上一篇文章已经说过
  1. 然后我们把这个交易记录向任意一个节点广播,收到信息的节点就会继续向它相连的其他节点广播,直到全网节点都收到这个交易记录。
  1. 收到交易记录的节点会验证这条记录的合法性,合法性包括两个要素,第一是这条交易记录是不是转账人发起的,这一点我们可以通过验证数字签名来检验;第二是转账人账户上有没有这么多钱,这一点通过查询账本以前的记录就可溯源。如果节点认为这个交易记录是合法的,那么它就把这条交易记录添加到自己的交易池(存放未被确认交易记录的地方)中;如果认为不合法,则抛弃之。最终交易池里的记录会生成区块添加到区块链上,这个时候交易记录才算得到确认。那么区块是如何生成的呢?
  1. 你会发现,由于网络传播的时延,不同节点收到的交易记录的顺序或者内容都有可能会不同,虽然理论上最终会保持一致,但在每一个单独的时间点它们可能会不太一样,这样的话我们就需要一个账本来作为标准,其他的账本都跟它同步,这样来保证所有账本都是相同的,避免混乱。然而在选择标准的过程中,我们还要坚持区块链去中心化的原则,不能选择固定的一个节点作为标准账本,不然就相当于选择了一个中心化机构。
如何在所有人都不互相信任的情况下,让所有人的账本同步呢?这就是比特币问题的核心,也是区块链技术中最重要的东西。这个问题实际上就是计算机科学上有名的拜占庭将军问题。而区块链实际上是拜占庭问题的一个解决方案 那么中本聪(区块链发明者的网名)做了什么呢?
notion image
  1. 得到记账权的节点产生的新区块广播之后,其他节点会进行检验,验证这个区块合法后就把它加到自己的账本——区块链上。到这里,交易记录就被记录在了所有节点的所有账本上,完成了交易。
  1. 保险起见,还要等待这个区块之后产生5-6个新区块,这个交易才算最终确认。
记账流程如下
创建交易信息->验证交易信息是否合法加入交易池->等待新区块生成,交易得到初步确认新区块生成->验证区块是否合法将新区块加入到区块链上->交易得到第二次确认等待直到这个新区块之后产生了5-6个区块->交易得到最终确认
明白了什么比特币网络的节点和交易流程之后,问题似乎更多了
  • 中本聪给节点们布置的数学题是什么?我数学好算的就比别人快吗?
  • 如果我是一个恶意攻击者,我都有哪些手段对比特币网络进行攻击?面对这些攻击,区块链又是怎么做的?
  • 为什么新区块要等待5-6个新区块生成才能最终确认?
欲知后事如何,且听无常下回分解~
 
 
到底什么是区块链(三)——哈希函数、工作量证明和攻击区块链!到底什么是区块链(一)——交易记录和比特币钱包