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

这篇具有很好参考价值的文章主要介绍了《区块链原理与技术》学习笔记(四) ——以太坊的基本架构、账户模型和智能合约。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

《区块链原理与技术》学习笔记 第四部分

  • 三、以太坊
    • 1. 以太坊简介
      • 1.1 以太坊发展的阶段
      • 1.2 以太坊与比特币对比
    • 2. 以太坊的基本架构及原理
      • 2.1 基本概念
      • 2.2 状态转移
      • 2.3 基本架构
    • 3. 账户模型与转账
      • 3.1 账户模型
    • 4. 智能合约
      • 4.1 合约账户与数据存储
      • 4.2 驱动智能合约

三、以太坊

1. 以太坊简介

以太坊在比特币原有的性能和应用场景基础上进行了拓展,是第一个支持智能合约的区块链系统,让区块链的应用场景从单一的加密数字货币交易,延伸到灵活多样
的自定义应用设计。

1.1 以太坊发展的阶段

  • Frontier(前沿)阶段:仅供开发者测试使用
  • Homestead(家园)阶段:提供图形界面,提示安全性和平稳性
  • Metripolis(大都会)阶段:在智能合约执行性能、以太坊经济政策等方面进行了优化。
  • Serenity(宁静)阶段:共识机制从PoW转向PoS,采用更多先进技术。

1.2 以太坊与比特币对比

技术方面
以太坊提供了对智能合约的支持,在交易上采用了账户模型,使账户的状态可以实时保存在账户里。另外,燃料费(Gas)的设置让以太坊对合约指令执行进行限制,降低被攻击的风险。

性能方面
在奖励机制上,以太坊增加了叔块奖励,并将出块时间减少到15s左右;

在共识机制上,以太坊采用了PoW的Ethash变种算法,对内存要求较高,限制了强算力矿机的优势。后来以太坊使用了PoS,使持币者也能有一定决定权。

社区方面
以太坊社区比比特币社区更活跃。

2. 以太坊的基本架构及原理

2.1 基本概念

状态:所有的账户、余额、智能合约代码、智能合约状态等统称状态。
智能合约:作用于状态转换的代码
以太坊虚拟机:执行状态转换代码的虚拟机
区块链数据:包括以太坊数据链的数据,和状态数据、收据数据等
节点:保存区块链数据的节点。

2.2 状态转移

已知区块N执行前的状态为S,执行后的状态为S’,S’由S经过N中的交易进行状态转换后得到,转换过程由EVM执行。

由于变换规则固定,因此只要S确定,得出的S’就一定是确定的。

若以太坊区块发生了分叉,我们可以通过区块头的状态根(state root)快速回滚到分叉前的状态。

2.3 基本架构

  • 每个节点独立地维护区块链数据
  • 当有新的交易产生时,节点独立各自从区块链数据读取信息并执行。
  • EVM将执行结果写回区块链数据
  • 节点之间通过共识机制达成共识,维护全网状态一致。

以太坊底层架构,区块链原理与技术,区块链,学习

3. 账户模型与转账

3.1 账户模型

以太坊对于用户账户的记录由所有以太坊节点上,整个系统来确定记录用户的行为,是去中心化的。

账户的公钥和私钥由椭圆曲线计算得到,对公钥使用KECCAK256哈希算法,再取最后40位即为以太坊账户的地址。

以太坊的账户结构记录了这个地址的余额(Balance),最小单位为Wei,和地址发起交易次数的计数器(Nonce),可以检验交易合法性以及账户发起交易的顺序。

只有交易的Nonce和账户的Nonce对应,交易才是合法的。

以太坊的账户模型是为了参与者有稳定的身份,从而能支持智能合约,用智能合约可以实现一些金融衍生品,有利于参与者投资。

4. 智能合约

智能合约利用提前规定好的代码来管理和变化存储在以太坊上的状态变量,并且依靠区块链系统在参与者间实现对执行的一致认可。

4.1 合约账户与数据存储

表示合约的账户称为合约账户,在记录了账户的余额和累计交易次数以外,把合约的计算机代码通过机器码的形式保存在"合约机器码"的字段中,而合约的状态(变量)保存在一个存储的映射表中,存储表的哈希值会存储在账户的"合约存储"字段中。

以太坊底层架构,区块链原理与技术,区块链,学习

合约地址有两种生成方法:

  • 通过合约创建者的地址和Nonce计算得到;
  • 通过合约创建者地址、指定的初始化值和合约代码的哈希值计算得到

当出现合约创建合约的情况时,创建合约的合约账户的Nonce值需要改变。

4.2 驱动智能合约

4.2.1 调用合约

  • 交易的接收方为智能合约所在地址
  • 交易的data字段指定调用的函数和函数的参数。使用了函数名的哈希值作为调用过程函数的索引,哈希值后附上经序列化编码的参数。

4.2.2 创建合约

  • 因为没有合约账户地址,交易中的接收方地址为0
  • data存储合约的代码和初始化代码

4.2.3 停机问题与Gas
以太坊智能合约运行的每一个操作都规定了需要消耗的Gas的数值,并要求交易的发起者预先支付Gas额度,若运行合约代码时,Gas额度被消耗殆尽,则程序终止,解决了智能合约永不停机的问题。

4.2.4 以太坊虚拟机
以太坊运行智能合约使用统一的虚拟机EVM,这是一个256位的栈虚拟机,所有指令都是对栈顶的操作。文章来源地址https://www.toymoban.com/news/detail-642239.html

到了这里,关于《区块链原理与技术》学习笔记(四) ——以太坊的基本架构、账户模型和智能合约的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[27]以太坊-反思

    目录 一、智能合约的反思         1.Is smart contract really smart?         2. Irrevocability is a double edged sword.         3. Nothing is irrevocable. 二、语言设计上的反思         1.Is solidity the right programming language?         2.编写智能合约的语言应该有什么样的表达力? 三

    2024年01月20日
    浏览(55)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[20]以太坊-权益证明

    目录 一、为什么要转入权益证明         1.比特币系统的相关数据          2.以太坊的统计数据         3.比特币和以太坊当成一个国家 二、思考         1.矿工为什么要挖矿?         2.为什么要给矿工这些收益,这些出块奖励呢?         3.矿工具体

    2023年04月25日
    浏览(42)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[17]以太坊-GHOST协议

    目录 一、以太坊的出块时间及可能带来的问题         1.以太坊的出块时间         2.以太坊与比特币系统的平均出块时间对比         3.带来的问题 二、GHOST协议         1.GHOST协议的核心思想         2.GHOST协议的缺陷         3.改进后的GHOST协议    

    2024年02月09日
    浏览(50)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[23]以太坊-智能合约-3

    智能合约-1 智能合约-2 1.假设某个全节点要打包一些交易到一个区块里,这些交易里有一些是对智能合约的调用,那么这个全节点应该先执行完智能合约再挖矿,还是先挖矿获得记账权再执行这些智能合约?         在区块链中,如果有一笔转账交易发布上去,需要所有的全

    2023年04月23日
    浏览(44)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[25]以太坊-智能合约-5

    智能合约-1 智能合约-2 智能合约-3 智能合约-4 网上竞拍第二版:由投标者自己取回出价 (1)存在的问题         重入攻击,如果有黑客写了一个如下方程序会怎么样?         这个hack_bid跟前面的那个黑客合约hack_bid合约是一样的,通过调用拍卖bid函数参与竞拍,ha

    2024年03月11日
    浏览(63)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[22]以太坊-智能合约-2

    智能合约-1 目录 一、智能合约的创建和运行         1.智能合约的创建         2.汽油费         3.错误处理         4.嵌套调用 二、思考         1.GasLimit和GasUsed         2.以太坊中的GasLimit跟比特币的区别 1.智能合约的创建         智能合约 由一个外

    2024年02月19日
    浏览(49)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[21]以太坊-智能合约-1

    目录 一、什么是智能合约 二、智能合约的代码结构         1.Solidity语言         2.bid函数         3.fallback()函数  二、外部账户如何调用智能合约 三、一个合约如何调用另一个合约中的函数         1.直接调用         2.使用address类型的call()函数      

    2024年02月05日
    浏览(43)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[15]以太坊-交易树和收据树

     目录 一、以太坊中的三种树 二、状态树、交易树和收据树的区别 三、交易树和收据树的用途         1.交易树和收据树的用途         2.如何实现复杂的查询操作         3.以太坊中Bloom Filter的用途 四、以太坊的运行过程        在以太坊中,存在三种基于树的

    2024年02月05日
    浏览(53)
  • 微服务架构基本原理学习笔记(一)

    微服务是一种技术架构,通常我们可以把它理解为一组可以相互之间协同工作的应用程序或服务,这些应用程序或服务能够被单独部署到不同的服务器中,并且能够自主运行和维护。 微服务技术只是一个名称而已,或许我们在日常工作中已经或多或少在使用其中的一种或几种

    2024年02月06日
    浏览(38)
  • 微服务架构基本原理学习笔记(二)

    上一篇:微服务架构基本原理学习笔记(一) 从一个已有的单体架构的应用程序开始进行微服务架构的重构往往是一个不错的选择。随着业务量和功能的增加,我们可以考虑使用微服务架构来扩充应用程序中原有的功能,或者每次添加新功能时,都为其创建一个新的微服务。

    2024年02月07日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包