【区块链基础】4——ETH区块结构

资讯 2024-06-25 阅读:51 评论:0
账户 与BTC不同,ETH使用的是基于账户的账本...
美化布局示例

欧易(OKX)最新版本

【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   全球官网 大陆官网

币安(Binance)最新版本

币安交易所app【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

火币HTX最新版本

火币老牌交易所【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

账户

与BTC不同,ETH使用的是基于账户的账本(account-based ledger),账本中记录了各个用户的的余额,交易时不必追溯币的来源。

Unlike BTC xff0c; ETH uses account-based accounts xff08; account-based ledger) xff0c; balances of individual users are recorded in the books xff0c; transactions need not be traced back to the origin of the currency.

基于账户的账本对双花攻击(duoble spending attack)有着天然的防御作用,账户余额是系统中全节点维护的一个状态,称为balance,交易发生时余额随机改变,但与之而来的问题便是重放攻击(reply attack):若将已发布的交易再一次进行广播发布,造成支付者多次支付,接收者将因此获利。

The account book based on the account ran an attack on double flower( duoble sponding attack) natural defensive xff0c; account balance is a state maintained by the entire node of the system xff0c; known as balance, random changes in the balance at the time of the transaction xff0c; but the problem with this is that replays the attack ( replyatrack) xff1a; if the published transaction is broadcast again xff0c; resulting in multiple payments by the payer xff0c; the recipient will profit accordingly.

ETH中使用nonce解决这一问题,nonce作为账户状态中的一个字段,有着计数器的功能,记录了账户有史以来交易的次数,转账时,nonce成为交易内容的一部分,受支付者的签名保护。

ETH uses nonce to solve the problem xff0c; nonce as a field in the account status xff0c; functions with counters xff0c; records the number of transactions in the account's history xff0c; transfers xff0c; nonce becomes part of the transaction xff0c; is protected by the signature of the payer.

ETH有两类账户:

ETH has two types of accounts xff1a;

  1. 外部账户(externally owned account)
    也称普通账户,由公私钥对进行控制,包含之前所述的balance和nonce;另外一类账户为合约账户;
  2. 合约账户(smart contract account)
    合约账户不是通过公私钥对进行控制。在创建合约时,合约将返回一个地址,由此地址可调用合约,但合约账户不能主动发起一次交易,所有的交易只能由外部账户发起,之后可能会引起合约间的相互调用。另外,除了balance和nonce,合约账户还有代码code和存储storage。

由于ETH支持智能合约,要求参与者有比较稳定的身份,这与BTC的设计有所不同。

Because ETH supports smart contracts & #xff0c; requires participants to have a more stable identity & #xff0c; this is different from the BTC design.


状态树

ETH的账户地址是160bits,共20个字节,账户地址到账户状态为一对映射,账户状态为前述的包括balance,nonce,code,storage等。所有的账户组织成一个改进的Merkle Patricia Tree。

The account address of ETH is 160bits, 20 bytes & #xff0c; the account address to account status is a pair & #xff0c; the account status is as described above, including balance, nonce, code, store. All accounts are organized into an improved Merkele Patricia Tree.

存储账户状态的结构为状态树,其基本数据结构为Merkle Patricia Tree。MPT是一种融合了merkle tree和patricia tree两种树结构优点的数据结构,用路径压缩提高效率,并可计算出一个账户状态的根哈希值, 保存于block header中。

The structure of the storage account state is & #xff0c; its basic data structure is Merkle Patricia Tre. MPT is a data structure that combines the advantages of the tree structure of Merkle Tree and Patricia Tree xff0c; efficiency is enhanced by compressing the path xff0c; the root value of an account state xff0c; saved in Block header.

merkle tree可参考:【区块链基础】2——BTC区块结构
patricia tree可参考:patricia-tree

xff1a;

MPT丰富了节点类型,共有如下4个类型的节点:

MPT enriches the node type xff0c; there are four nodes xff1a of the following types;

  • 扩展节点 extension Node: [key, value],只能有一个子节点。这里的value值存储的是孩子节点的哈希值;
  • 分支节点 branch Node [0,1,…,16,value],可以有多个节点。因为MPT树中的key被编码成一种特殊的16进制的表示,再加上最后的value,所以分支节点是一个长度为17的list,前16个元素对应着key中的16个可能的十六进制字符,如果有一个[key, value]对在这个分支节点终止,最后一个元素为value值,存储的是刚好在分支节点结束时的值,若没有节点在分支节点中结束时,value值没有存储数据,即分支节点既可以搜索路径的终止也可以是路径的中间节点。分支节点的父亲必然是extension node;
  • 叶子节点 leaf Node : [key, value],这里的key都是16编码出来的字符串,每个字符只有0-f 16种,value是RLP编码的数据;
  • 空白节点 NULL

ETH对MPT做了略微的改进:

ETH has made minor improvements to MPT #xff1a;

  1. Extension Node 和 Branch Node 与原生的MPT不同;
  2. prefix 分奇偶数个nibbles(16进制数);

具体以官方的下图为例:
在这里插入图片描述
MPT作用如下:

Examples are xff1a;
, MPT_xff1a;

  1. 防止篡改
    只要根哈希值不变,整个树的任何部分都无法被篡改,每个账户的状态不会被篡改。
  2. 证明账户余额
    账户所在的分支自下而上作为merkle proof发给轻节点,轻节点进行验证。

交易树

用于记录交易的数据信息,其结构也为MPT,其键值为交易在发布的区块中交易的序号。

Data information for recording transactions & #xff0c; it is also structured as MPT, the key value is the serial number of the transaction that is traded in the published block.

收据树

每笔交易完成后形成一个收据,用于记录交易的相关信息与执行结果,其数据结构也为MPT,其键值为交易在发布的区块中交易的序号,与交易树中的节点一一对应,。由于ETH智能合约执行过程比较复杂,增加收据树有利于快速查询执行结果。

Upon completion of each transaction, a receipt & #xff0c is formed; the relevant information and execution results of the transaction are recorded & #xff0c; its data structure is also MPT, its key value is the serial number of the transaction in the published block & #xff0c; it corresponds to the node in the transaction tree xff0c; due to the complexity of the ETH smart contract implementation xff0c; the addition of a receipt tree facilitates quick query implementation results.

布隆过滤器 bloom filter

bloom filter可以比较高效的查找某个元素是否包含在比较大的集合之内。直观的说,bloom算法类似一个hash set,用来判断某个元素(key)是否在某个集合中。和一般的hash set不同的是,这个算法无需存储key的值,对于每个key,只需要k个比特位,每个存储一个标志,用来判断key是否在集合中。

算法:

Bloom filter can be more efficient in finding whether an element is contained in a larger collection. Intuitive & #xff0c; bloom algorithms are similar to a hash set, used to determine whether an element & #xff08; key) is in a particular collection. Unlike the normal hash set & #xff0c; this algorithm does not need to store the value of key xff0c; for each key #xff0c; only a kbit xff0c; for each store a sign xff0c; used to determine whether key is in a pool.

> algorithm #xff1a;

  1. 首先需要k个hash函数,每个函数可以把key散列成为1个整数
  2. 初始化时,需要一个长度为n比特的数组,每个比特位初始化为0
  3. 某个key加入集合时,用k个hash函数计算出k个散列值,并把数组中对应的比特位置为1
  4. 判断某个key是否在集合时,用k个hash函数计算出k个散列值,并查询数组中对应的比特位,如果所有的比特位都是1,认为在集合中。

在查找某一交易时可快速过滤掉大量无关的区块

A large number of unrelated blocks can be quickly filtered off when searching for a transaction


区块

header

 
  • ParentHash:前一个区块header的哈希
  • UncleHash:叔块的哈希,可能比Parent大好几辈
  • Coinbase:挖出区块的矿工地址
  • Root:状态树的根哈希
  • TxHash:交易树的根哈希,类似于比特币中的merkle root
  • ReceiptHash:收据树的根哈希
  • Bloom:布隆过滤器,和收据树相关,提供高效的查询符合某种条件的交易的执行结果
  • Difficulty:挖矿难度
  • GasLimit,GasUsed:和汽油费相关,智能合约消耗汽油费,类似于比特币中的交易费
  • Time:区块产生时间
  • MixDigest:nonce经过计算得到的哈希
  • Nonce:符合难度要求的随机数

block

 
  • header:指向header的指针
  • uncles:指向叔块的header的指针数组
  • transactions:交易列表

extblock

 

extblock为真正发布的区块信息,即为block结构的前三项。

Extblock is the actual release of block information & #xff0c; that is, the first three block structures.

新区块发布
多个区块的状态树共享节点,每次发布新区块,MPT树中部分节点状态会改变,但改变并非在原地修改,而是新建一些分支,保留原本状态。当仅仅有新发生改变的节点才需要修改,其他未修改节点直接指向前一个区块中的对应节点。而交易树与收据树只将当前区块内发布的交易组织起来,如图所示:
在这里插入图片描述
由于以太坊中出块时间15s左右,会产生很多的分叉,保持历史记录的一个好处是,当某些分叉需要回滚时可以更好的查看历史记录。

New blocks release status-sharing tree sharing nodes xff0c; each release of new nodes xff0c; part of MPT tree status changes xff0c; but changes do not modify xff0c; instead, new branches xff0c; reserve status. xff0c need to modify xff0c; other unmodified nodes directly point forward the corresponding nodes in a block xff0c; trading trees and receipts only organize transactions issued within the current block xff0c; xff1a;

交易驱动的状态机 transaction-drived state machine

ETH为一个交易驱动的状态机,其状态为状态树中账户的状态,通过执行交易树的交易,可驱动系统由当前状态转移到下一个状态,其状态转移时确定性的,即通过给定的当前状态和交易,能确定性的转移到下一个状态。



ETH is a transaction-driven state machine xff0c; its status is the state of the account in the status tree xff0c; transactions by executing the transaction tree xff0c; driveable systems from current status to next status xff0c; determinative xff0c at the time of the transfer; i.e., by giving the current state and transaction xff0c; and capable of making a determinative transition to the next state.





参考资料
区块链基础系列

欢迎打赏Σ(っ°Д°;)っ

Welcome to

美化布局示例

欧易(OKX)最新版本

【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   全球官网 大陆官网

币安(Binance)最新版本

币安交易所app【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

火币HTX最新版本

火币老牌交易所【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址
文字格式和图片示例

注册有任何问题请添加 微信:MVIP619 拉你进入群

弹窗与图片大小一致 文章转载注明

分享:

扫一扫在手机阅读、分享本文

发表评论
平台列表
美化布局示例

欧易(OKX)

  全球官网 大陆官网

币安(Binance)

  官网

火币(HTX)

  官网

Gate.io

  官网

Bitget

  官网

deepcoin

  官网
热门文章
  • 美国可以使用什么加密货币交易所_前10名比特币交易平台名单

    美国可以使用什么加密货币交易所_前10名比特币交易平台名单
    美国可以使用什么加密货币交易所?What is an encrypted currency exchange that the United States can use?随着加密货币的普及,加密货币交易所也越来越多。对于美国的加密货币交易者而言,选择一个可靠、安全且易于使用的交易所是十分重要的事情。那么,美国可以使用哪些加密货币交易所呢?以下是前10名比特币交易平台名单:The choice of a reliable, secure, and easy-to-use...
  • 2017比特币已经挖出,比特币是什么?

    2017比特币已经挖出,比特币是什么?
    20 17比特币已经挖出了目录。20 17比特币被挖出来了。比特币是什么?比特币在20 17达到挖矿上限。在20 17中,比特币达到了挖矿上限,这意味着比特币的总数达到了2 1 100,000。比特币挖矿会越来越少。由于比特币挖矿的奖励每四年减半一次,未来比特币挖矿的数量将减少,比特币的价格可能会上涨。影响比特币市场的主要因素。除了挖矿上限和奖励减半之外,比特币市场还受到供需、投资者情绪和监管政策等因素的影响。比特币的未来前景。随着全球对比特币的认知度越来越高,比特币的前景仍...
  • 2015年宝马3系二手车价格多少钱

    2015年宝马3系二手车价格多少钱
    爱你一生不变心6558 2022-04-28 13:20:03 二手车能不能买主要看车况,如果车况好就可以考虑,车况不好价格再低也别考虑,像2015款宝马3系目前行情价是在18.32万这样,如果低...
  • Coinbase:财富100强企业过去一年的Web3采用率增长39%

    Coinbase:财富100强企业过去一年的Web3采用率增长39%
    随着比特币、以太坊等主流加密货币在web2世界的认可度变得越来越高,许多web2传统公司也积极拥抱web3,加速采用和开发区块链产品的速度和应用层面。With ˂a style= "max-width": 90%" href=https://m.php.cn/zt/21172.html" target="_blank" bitcoin, ˂a style="color:#f60; text-decoration: unde...
  • 区块链技术原理(转载)

    区块链技术原理(转载)
    转自:https://cloud.tencent.com/developer/article/1838661From: https://clud.tencent.com/development/article/1838661 本文主要是对区块链进行概念分析和组成技术解析,从哈希运算、数字签名、共识算法、智能合约、P2P网络等技术在区块链中的应用进行综合分析This paper focuses on conceptual analysis and technical com...
标签列表