4.ETH-交易树和收据树

交易树(Transaction Trie) 交易树是为每一个区块单独构建的、一次性的数据结构,它的唯一目的就是存储该区块内包含的所有交易,并为它们生成一个唯一的、可验证的“指纹”。当一个验证者(Validator)要创建一个新区块时,它会为这个区块专门构建一棵交易树: 1. 收集数据:验证者从交易池中选择一批交易,并将它们按特定顺序(通常由验证者自己决定,以优化Gas费收益)排列好,形成一个列表。 2. 构建MPT:它会创建一个全新的、空的默克尔·帕特里夏·树,然后将这个交易列表存入其中。 * 键 (Key):不是交易哈希,也不是地址,而是这笔交易在这个列表中的索引(index),例如第0笔、第1笔、第2笔... 这个索引会经过RLP编码。 * 值 (Value):就是这笔交易本身的完整数据(包含了nonce, to, value, gasLimit, data等所有字段),同样经过RLP编码。 3. 生成根哈希:当所有交易都插入到这棵树中后,…

3.ETH-状态树

以太坊的核心功能,就是维护一个从“地址 (Address)”到其对应“状态 (State)”的、持续更新的、全球共享的巨大映射(Mapping)关系。这个宏大的、在某一瞬间的完整映射,就被称为以太坊的世界状态 (World State)。而我们之前讨论的状态树(State Trie),正是实现这个映射的技术手段。 以太坊的地址和状态 以太坊地址是一个独一无二的标识符,它代表了网络上的一个“位置”或“目的地”。所有可以接收资产或信息的实体,都拥有一个地址。一个以太坊地址是一个以0x开头的、由40个十六进制字符(数字0-9和字母a-f)组成的字符串。 例如:0x742d35Cc6634C0532925a3b844Bc454e4438f44e实际上这个地址也是由一个公钥进行一定的哈希算法得到的。 而以太坊所述的状态,具体指账户的状态,根据上节所述的不同的账户,EOA与合约账户往往状态不太一样。 一个外部拥有账户的状态,主要由两项数据构成: * nonce: 一个计数器,记录了“这个地址已经发送过多少笔交易”。每成功发送一笔交易,nonce就加1。它的核心作用是防止交易重放。…

2.ETH-账户

BTC的交易结构不符合常识 比特币的账本不记录任何人的“账户余额”。它只记录一笔笔“未被花费的交易输出”,即 UTXO (Unspent Transaction Output)。这个账本记录有一些不符合我们日常常识的地方: * 没有“账户”这个概念:比特币协议层面没有“账户”。你的“余额”并不是一个存在某处的数字,而是你的钱包软件在背后默默地帮你扫描整个区块链,把你所有能花的“电子钞票”(UTXOs)加起来的总和。 * 花钱就像用现金,必须整张花掉:假设你的钱包里有一张价值5 BTC的UTXO(一张电子钞票),而你只想给朋友转1 BTC。 * 你不能从这张5 BTC的“钞票”上撕下1 BTC给朋友。 * 你必须把整张5 BTC的钞票都花掉。这笔交易会产生两个新的输出(两张新钞票): * 一张价值1 BTC的新钞票,支付给你的朋友。 * 一张价值4 BTC的新钞票(扣除手续费后略少于4 BTC),作为**“找零”**支付给你自己的一个新地址。…

1.ETH-概述

以太坊是一个开源、去中心化的全球计算平台。它不仅仅是一种像比特币那样的数字货币,更是一个强大的基础设施,允许任何人在其上构建和运行去中心化的应用程序。 以太坊于2015年由程序员维塔利克·布特林(Vitalik Buterin)等人推出,其核心愿景是创建一个超越比特币单一货币功能的、图灵完备的区块链平台。 核心组成部分 1. 以太币 (Ether, ETH) * 网络原生货币:ETH是以太坊生态系统的“血液”和官方货币。 * 价值载体:像比特币一样,ETH可以被用作价值存储、投资品或支付手段。 * 网络燃料 (Gas):在以太坊上执行任何操作,无论是转账还是运行复杂的应用程序,都需要消耗计算资源。用户必须支付ETH作为“Gas费”(燃料费),以补偿那些为网络提供计算能力和安全保障的验证者。 2. 智能合约 (Smart Contracts) * 核心创新:这是以太坊与比特币最根本的区别。智能合约是部署在以太坊区块链上的一段代码,它能根据预设的规则自动执行。 * 工作方式:一旦合约被部署,它就无法被篡改,并会严格按照代码逻辑执行,无需任…