主页 > imtoken钱包官网版最新 > 比特币和以太坊区块链架构对比分析(上)

比特币和以太坊区块链架构对比分析(上)

imtoken钱包官网版最新 2023-05-23 05:54:14

这是比特币提供的通用对外接口,通过该接口可以控制比特币节点,相应的功能由节点后台的HTTP/JSON RPC服务器提供。 该接口有助于开发以不同语言访问比特币节点功能的应用程序。

3. 区块链管理、交易验证、相邻节点管理和共识

这些元素之间存在很强的相关性。 首先,一个新的比特币节点在初始启动时,需要发现相邻节点并与至少一个节点建立连接。 连接建立后,如果初始比特币全节点需要启动区块链管理来下载和验证整个区块链,该节点可以从多个相邻节点并行下载不同区间的区块链。 在比特币网络中,当每 10 分钟产生一个新区块时,节点将验证并接收新区块,并扩展节点拥有的区块链,并在这个过程中参与共识。 广义上的共识管理包括:挖矿、区块验证和交易验证规则。 挖矿的概念比较容易理解:不断对区块头进行哈希处理,每次尝试改变一个随机数,直到满足一定的条件。 生成合格块。 这里需要理解的是区块验证和交易验证。

(1) 区块验证

区块验证的基本流程如下图所示

以太坊对比比特币_莱特币为什么比比特币便宜_比特币 莱特币 以太坊

除了上述的基本验证之外,还有一个重要的概念就是重组区块链。 这种情况通常发生在节点发现网络中有一条较长的不属于当前区块链的区块链时。 打开现有区块并重组区块链。 这部分后面会结合内存池管理和回滚进行讲解。

(2) 交易验证

交易验证的条件检查非常复杂。 详见《区块链技术指南》一书P68第2页。 验证交易的合法性,即每一笔要花费的比特币都必须有对应的来源。 在实现上,交易的输入输出由脚本和值组成,通过比特币的脚本引擎在一个简单的堆栈计算平台上执行。 但也正是因为堆栈式的脚本语言限制了比特币的可扩展性,而以太坊在此基础上引入了“图灵完备性”,大大扩展了功能应用(这点的对比会在后续部分提到) .

这里有两个脚本:解锁脚本和锁定脚本

用于解锁UTXO(使用私钥匹配锁定脚本)的脚本称为解锁脚本(Signature script),也称为交易输入;

交易输出指向一个锁脚本(PubKey script),它表示:谁的签名能匹配输出地址,谁就给谁钱。

作为最常见的比特币交易脚本类型(Pay-to-Public-Key-Hash:P2PKH(Pay-to-Public-Key-Hash))组合:

以太坊对比比特币_莱特币为什么比比特币便宜_比特币 莱特币 以太坊

基本的交易验证流程如下:

1)解锁脚本运行过程,即push操作

以太坊对比比特币_莱特币为什么比比特币便宜_比特币 莱特币 以太坊

2)锁定脚本运行过程,即栈操作

以太坊对比比特币_莱特币为什么比比特币便宜_比特币 莱特币 以太坊

4. 内存池管理,块和数据库的重组

在比特币网络中,一笔经过验证的交易在被放入一个挖出的区块之前,首先会被放入节点内存中的一个交易池中,需要按照一定的优先顺序从交易池中进行选择。 优先级可以根据 1)交易中输入对应的UTXO的“链龄”

链龄是指记录链上交易的区块的深度度量,以此为起点计算后续加入的区块

2)除以交易金额的大小

链龄较旧或交易量较大的交易具有较高的优先级。

优先级计算通过以下方式完成

priority=Sum(输入值*输入年龄)/交易大小

此外,一些比特币节点还会维护一个“孤儿”交易池,即如果一笔交易的输入对应的UTXO暂时无法在链上找到(可能是延迟造成的,没有更新),也就是缺失的“父”交易,这些交易会暂时放在“孤儿”交易池中,待“父”交易到来后再移入内存池,请参考区块验证过程多于。

以上处理涉及到区块链重组和数据库访问,这里举一个简单的例子:

有区块A和B,部分节点先接收区块A,并在此基础上延伸链; 一些节点先收到区块 B,然后链分叉。 如果 B 区块的链条变长以太坊对比比特币,对于那些与 A 区块有关的网络节点,会断开 A 区块,然后连接 B 区块,重新组织区块链。 其中,断开块和重组块涉及UTXO更新,断开块内的交易回滚到交易内存池,“回滚”记录用于回滚断开块内的交易。

除了区块基础数据存储外,比特币还引入了数据库来方便交易操作和验证。 对应的数据存储和访问各种功能的关系如下:

以太坊对比比特币_莱特币为什么比比特币便宜_比特币 莱特币 以太坊

5.比特币节点和P2P网络管理

比特币节点按功能可分为三种类型

(1) 全功能节点以太坊对比比特币,即具有钱包、RPC服务器、挖矿、节点验证区块和交易、相邻节点间消息传递等功能的节点。

(2) 基本全节点,相对于全功能节点进行了简化,只做区块和交易的交易和消息传递。

(3) SPV节点,主要负责验证可信节点的区块和交易。 该节点有两个特殊属性:

1)在相邻节点的连接中设置一个过滤器,称为布隆过滤器,只接收钱包中包含的公钥地址的交易。

这里出现两个问题:

满足什么规则的节点可以作为spv节点,比如是否可以信任或授权?

附带钱包中的公钥地址是从哪里获取的?

2)执行两次验证

基本流程如下

以太坊对比比特币_莱特币为什么比比特币便宜_比特币 莱特币 以太坊

比特币的节点和网络构成具有“去中心化”的特点,即节点之间的发现是完全自治的,这主要基于P2P网络管理的基本功能。

(1) 发现相邻节点

(2) 连接和管理与相邻节点的socket连接

(3)节点间交换不同的P2P消息

(4) 禁止行为异常的相邻节点连接,防止DoS攻击

而这些功能需要基于一个基本点:新节点出现后如何发现并连接到相邻节点?

这里有两种方法:

1)使用“DNS种子”查询DNS,DNS种子就是提供比特币节点地址的DNS服务器

2)直接使用一个已知的邻居节点作为种子节点,通过他发现更多的邻居节点,因为邻居节点之间会互相转发新节点的地址,并将已知地址发送给新节点。

一个新的比特币节点的默认配置是主动连接8个相邻节点,同时允许最多125个相邻节点发起连接请求; 另一方面,节点会自动维护与连接节点的连接,以保证整个网络有效运行。 因此,比特币网络节点可以自由加入或离开,真正实现了动态调整和自我维护。

6.规则管理

比特币节点必须遵循一定的规则,以确保它们的行为与其他节点一致,包括:

(1) 共识规则

即所有节点必须遵守的规则

(2) 个性化规则

即,共识以外的规则。 一个典型的例子是节点可以拒绝保存和传输大于 200KB 的交易。 这里有一个原则:个性化规则是基于共识规则的,它们之间不能有冲突。

附参考文章:

比特币脚本与交易分析——智能合约原型