【区块链】复习九之以太坊数据结构

这篇具有很好参考价值的文章主要介绍了【区块链】复习九之以太坊数据结构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、账户

比特币是采用基于交易的账本模式,优点有:隐私保护比较好;缺点有:没有显示地记录账户余额,交易不方便(要一次性花出去)

以太坊是基于账户的账本模式
优点:显示地记录账户余额
交易更加方便
对双花攻击(支付方不诚实)有着天然的防御
缺点:易遭受重放攻击(收款方不诚实)。

1.1账户分类

以太坊为了实现智能合约,将账户分为:外部账户EOA和合约账户
外部账户:由密钥控制,无代码与之关联
合约账户:由智能合约代码控制,有代码与之关联

1.1.1外部账户

是由人们通过私钥创建的账户,是真实世界的金融账户的映射,拥有该账户私钥的任何人都可以控制该账户,这也是人类与以太坊账本沟通的唯一媒介。
外部账户包括balance(以太币余额)和nonce随机数(用于确定每笔交易只能被处理一次的计数器)

特点

  • 拥有以太币余额
  • 能发送交易,包括转账和执行合约代码
  • 被私钥控制
  • 没有相关的可执行代码

1.1.2合约账户

被外部账户或者合约创建,合约在创建时被自动分配到一个账户地址,用于存储合约代码啊以及合约部署或者执行过程中产生的存储数据。
合约账户地址是通过SHA3哈希算法产生。只能通过外部账户来驱动合约执行合约代码。
合约账户包括code合约代码和storage账户的存储

特点

  • 有相关的可执行代码
  • 不能发起交易
  • 合约代码能够被交易或者其他合约消息使用
  • 合约代码被执行时可再调用其他合约代码
  • 合约代码被执行时可执行复杂运算,可永久地改变合约内部的数据存储

为了智能合约,签合约需要稳定的账户模式,所以设计了这样的账户模式。

2、MPT树

2.1Trie树

前缀树或字典树,是一种有序树状的数据结构,其中的键通常时字符串。
与二叉树不同,键时由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,节点对应的key是根节点到该节点路径上的所有节点key值前后拼接而成。根节点对应空字符串key。

2.2Patricia Trie

空间使用率经过优化的Trie。但是在Patricia Trie里如果存在一个父节点只有一个子节点,那么这个父节点将与子节点合并,大大加快搜索节点速度。

2.3MPT树

结合了字典树和默克尔树的优点
MPT树中的节点类型:

  • 叶子节点:没有子节点,表示为[key,value]的一个键值对(偶数2奇数3)
  • 扩展节点:也是这样一个键值对,但是value是其他节点的hash值,通过hash连接到其他节点,只有一个子节点(偶数0奇数1)
  • 分支节点:是一个长度为17的list,分支节点的父节点必然是扩展节点,可以有多个子节点
  • 空节点:空字符串
    构建例题见习题

3、消息和交易

以太坊可以看作是基于交易的状态机。一个交易表示从一个状态转换至另一个状态的合法过度。
从全局状态变化的角度看,以太坊可看作是一个状态连,通过交易来驱动账户的状态发生变化。
从具体实现的角度看,以太坊可看作是一个区块链。
从账本的角度看,以太坊可看作是一个交易的堆栈。
以太坊中有两种类型的交易:创建合约和发送消息
区块的顺序是由某个共识算法来决定。

4、状态转换函数

APPLY(S,TX)->S’
S是初始状态,TX是一笔新的交易。
交易是外部世界和以太坊内部状态的桥梁

5、以太坊区块

包括区块头和区块体。
区块头较为轻量级,包含了一系列的数值、引用的数值和哈希值
区块体:较为重量级,包含了该区块收纳的交易列表和叔块列表

5.1区块头

  • parentHash父区块哈希
    通过此纪录才能完整的将区块有序组织,形成一条区块链,并且可以防止父区块内容被修改
  • sha3Uncles叔父区块集的哈希
    表示区块引用的多个叔背区块。在以太坊中,不能成为主链一部分的孤儿区块如果有幸被猴笼的区块收留近区块链就变成了叔块。通过叔块奖励机制,来降低以太坊软分叉和平衡网速慢的矿工利益。
  • miner挖出该区块的全节点地址
  • stateRoot状态树根哈希
    表示执行完此区块中的所有交易后以太坊状态快照ID。
  • transactionsRoot交易树根哈希
    可以验证某交易是否包含在此区块中,类似默克尔根哈希
  • receiptRoot收据树根哈希
    由区块交易在执行完成后生成的交易回执信息集合生成。类似购物后的小票,上面由交易真实花费的汽油、日志等等
  • logsBloom日志布隆过滤器
    是一个256长度byte数组,提取自receipt,用于快速定位查找和验证交易回执中的智能合约事件信息。
  • difficulty挖矿难度系数
  • nubmer区块高度
  • gasLimit汽油量上限(动态调整的)
  • gasUsed实际消耗汽油量
  • misHash混合哈希
    用于校验区块是否正确挖出,实际上是区块头数据不包含nonce时的一个哈希值
  • nonce以太坊挖矿随机数,长度8byte.mixhash只有用一个正确的nonce才能进行POW。

5.2区块体

包括:交易集合和叔辈区块头集合。文章来源地址https://www.toymoban.com/news/detail-424697.html

到了这里,关于【区块链】复习九之以太坊数据结构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (11-3-7 )检测以太坊区块链中的非法账户:模型评估

    11.3.7  模型评估 模型评估(Model Evaluation)是在机器学习和统计建模中的重要步骤,用于评估构建的模型的性能和有效性。它涉及使用不同的指标和技巧来量化模型在处理数据和进行预测时的表现,并帮助确定模型是否足够好以满足特定任务的需求。 ( 1 ) 对模型进行全面评

    2024年02月02日
    浏览(48)
  • 《区块链原理与技术》学习笔记(四) ——以太坊的基本架构、账户模型和智能合约

    《区块链原理与技术》学习笔记 第四部分 三、以太坊 1. 以太坊简介 1.1 以太坊发展的阶段 1.2 以太坊与比特币对比 2. 以太坊的基本架构及原理 2.1 基本概念 2.2 状态转移 2.3 基本架构 3. 账户模型与转账 3.1 账户模型 4. 智能合约 4.1 合约账户与数据存储 4.2 驱动智能合约 以太坊

    2024年02月13日
    浏览(49)
  • 数据结构(期末总复习)

    目录 第一章 绪论 第二章 线性表 线性表常用操作辨析总结 第三章 栈和队列 第四章 串 第五章 数组与广义表 第六章 树 1.结构体成员的类型必须是基本数据类型。(F) 原因: 结构体成员类型不只是基本数据类型,同时也可以是另一种结构体类型,也可以是指针类型,同时也

    2024年02月03日
    浏览(47)
  • 数据结构期末复习笔记

    #搬运自己的原创笔记到这,从flowus# #因为后面时间不够了,所以没有把笔记做完,期末考试的最后的代码题一般都是书上的代码,考的简单,这个学期就是递归树。#       1.循环链表 2.双向链表 1.顺序栈 2.链栈 1.循环队列(顺序队列) 2.链式队列

    2024年01月21日
    浏览(45)
  • 数据结构复习+答案

    一、选择题:(每小题2分,共30分) 1、在数据的逻辑结构中,树结构和图结构都是( ) A.非线性结构 B.线性结构 C.动态结构 D.静态结构 2.在一个长度为n的顺序表中插入一个元素的算法的时间复杂度为( ) A.O(1) B.O(log n) C.O(n) D.O(n2) 3.指针p1和p2分别指向两个无头

    2024年02月12日
    浏览(46)
  • 数据结构复习

    什么是数据结构?数据结构是抽象数据类型的物理实现 抽象数据结构,怎么理解抽象 数据结构 抽象数据类型:对数据类型的描述,这种描述是抽象的,描述1.数据对象集,2.与数据集合关联的操作集 抽象:不依赖于具体实现,只描述是什么,不涉及如何做到 数据对象类型的抽

    2024年02月10日
    浏览(33)
  • 数据结构期末复习(2)链表

    链表(Linked List)是一种常见的数据结构,用于存储一系列具有相同类型的元素。链表由节点(Node)组成,每个节点包含两部分:数据域(存储元素值)和指针域(指向下一个节点)。通过节点之间的指针连接,形成一个链式结构。 链表可以分为单向链表和双向链表两种类型

    2024年02月03日
    浏览(57)
  • 【数据结构】复习题(一)

    一、选择题 1.组成数据的基本单位是()。 A. 数据项 B.数据类型 C.数据元素 D.数据变量 2.设数据结构A={D,R},其中D={1,2,3,4},R={r},r={1,2,2,3, 3,4,4,1},则数据结构A是()。 A.线性结构 B.树型结构 C.图型结构 D.集合 3.数组的逻辑结构不同于下列()的逻辑结构。 A.线性表 B.栈 C.队列 D.树 4.二

    2024年02月04日
    浏览(45)
  • 北京大学肖臻老师《区块链技术与应用》公开课笔记:以太坊原理(一):以太坊概述、账户、状态树、交易树和收据树

    1、ETH-以太坊概述 比特币和以太坊是两种最主要的加密货币,比特币被称为区块链1.0,以太坊被称为区块链2.0 以太坊在系统设计上针对比特币运行过程中出现的问题进行了改进,比如: 出块时间 ,比特币的区块时间是10分钟,以太坊的出块时间大幅度降低到了十几秒,而且

    2024年01月18日
    浏览(57)
  • 数据结构复习题(包含答案)

    1、研究数据结构就是研究( D  )。 A. 数据的逻辑结构                      B. 数据的存储结构    C. 数据的逻辑结构和存储结构    D. 数据的逻辑结构、存储结构及其基本操作 2、算法分析的两个主要方面是(  A )。 A. 空间复杂度和时间复杂度         B. 正

    2024年02月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包