那些非典型的开销导致经典的软件设计模式在合约编程语言中看起来既低效又奇怪。如果想要识别这些模式并理解他们导致效率变高/低的原因,你必须首先对以太坊虚拟机(即 EVM)有一个基本的了解。

你的一些编程“好习惯”反而会让你写出低效的智能合约。对于普通编程语言而言,计算机做运算和改变程序的状态顶多只是费点电或者费点时间,但对于 EVM 兼容类的编程语言(例如 Solidity 和 Vyper),执行这些操作都是费钱的!这些花费的形式是区块链的原生货币(如以太坊的 ETH,Avalanche 的 AVAX 等等...),想象成你是在用原生货币购买计算资源。

用于购买计算、状态转移还有存储空间的开销被称做 燃料(下文统称 gas )。 gas 的作用是确定交易的优先级, 同时形成一种能抵御【女巫攻击】(Sybil resistance)的机制 ,而且还能防止【停机问题】(halting problem)引起的攻击。

欢迎阅读我的文章 Solidity 基础 去了解 gas 的方方面面

这些非典型的开销导致经典的软件设计模式在

【区块链 | EVM】深入理解学习EVM - 深入理解EVM操作码,让你写出更好的智能合约相关推荐

  1. ETH:Windows搭建ETH(区块链技术)利用Web端和小程序端两种方式调用ETH上的SC智能合约

    ETH:Windows搭建ETH(区块链技术)利用Web端和小程序端两种方式调用ETH上的SC智能合约 目录 1.Geth安装.配置文件.与ETH节点交互 1.1.下载并安装好geth客户端 1.2. ...

  2. 头歌-信息安全技术-用Python实现自己的区块链、支持以太坊的云笔记服务器端开发、编写并测试用于保存云笔记的智能合约、支持以太坊的云笔记小程序开发基础

    头歌-信息安全技术-用Python实现自己的区块链.支持以太坊的云笔记服务器端开发.编写并测试用于保存云笔记的智能合约.支持以太坊的云笔记小程序开发基础 一.用Python实现自己的区块链 1.任务描 ...

  3. 区块链知识系列 - 系统学习EVM(二)-存储与安全

    区块链知识系列 - 系统学习EVM(一) 特点 EVM出于所谓运算速度和效率方面考虑,采用了非主流的256bit整数. 不支持浮点数 缺乏标准库支持,例如字符串拼接.切割.查找等等都需要开发者自己实现 ...

  4. 【联邦学习+区块链】《联邦学习vs区块链:谁是“可信媒介”技术领域最强王者?》疑问解答

    联邦学习[1]VS 区块链 [问1]联邦学习,何为"联邦"? 作为一种分布式机器学习技术,联邦学习可以实现各个企业的自有数据不出本地,而是通过加密机制下的参数交换方式共建模型,即在 ...

  5. 【联邦学习 + 区块链】《联邦学习vs区块链:谁是“可信媒介”技术领域最强王者?》阅读记录与提问

    [注]块引用部分是博主自己的思考.. 题目:<联邦[1]学习vs区块链:谁是"可信媒介"技术领域最强王者?> [问1]联邦学习,何为"联邦"? 在互 ...

  6. 区块链软件开发:区块链颠覆性渐渐开始  2019年需求侧开始涌现出大量需求...

    区块链软件开发:区块链颠覆性渐渐开始 2019年需求侧开始涌现出大量需求 需求侧缺乏弹性会导致短期内并不会涌现出大量应用,但这不代表区块链技术没有应用场景,相反随着对于区块链技术的理性认识加深以及技术 ...

  7. 深度学习研究生如何快速提升代码能力,写出高效的代码?

    深度学习代码与前端代码区别 深度学习的代码能力与开发后台或者前端的工程代码能力不是一个概念. 写前端代码:脑海中是整个工程的架构,写代码则是把这些架构用 code 具体化. 写深度学习代码:脑海中浮现 ...

  8. jvm大局观之内存管理篇: 理解jvm安全点,写出更高效的代码

    jvm大局观之内存管理篇: 理解jvm安全点,写出更高效的代码 - 知乎 前言 本篇是java内存区域管理系列教程之一 - 在得知GC Root的组成之后,如何在垃圾回收发生的时刻,找到GC Root ...

  9. 区块链多方计算 人工智能学习笔记

    区块链:让数据不被篡改,但需要复制数据给每一块,造成数据泄露 多方计算 : 让数据用途可控.数控可用但不可见. 人工智能:数据更难造假 主讲人简介: 徐葳,宾夕法尼亚大学学士(在清华本科学习两年),美 ...

  10. 区块链、比特币的学习

    来源 stormzhang 星球「姚晗」的分享: 首先,区块链和比特币几乎可以说是两个完全不同的领域,唯一的联系就是比特币底层实现的所有技术集合我们称之为区块链. 比特币是由日本中本聪提出的一种货币, ...

最新文章

  1. [2008.06.10 23:20:00] 心智成熟的旅程
  2. 在Postgres中为插入语句生成UUID?
  3. hdu 4607 Park Visit 求树的直径
  4. 转载: 8天学通MongoDB——第七天 运维技术
  5. 绝对定位多个字居中显示的css
  6. 机器人绳索英雄下载苹果手机_警察机器人绳索英雄游戏下载-警察机器人绳索英雄苹果版v1.0-FC游戏网...
  7. 我又踩坑了!如何为 HttpClient 请求设置 Content-Type 标头?
  8. 混淆Android JAR包的方法
  9. 10. Browser 对象 - Location 对象(2)
  10. 第五章 高级发布-订阅模式
  11. 最新软件外包公司排名-中国IT人力外包公司排名
  12. 1.1 《数据库系统概论》之数据库系统概述(数据、数据库、数据库管理系统、数据库系统、数据库的产生和发展)
  13. Unity3d 2019室内光照贴图lightmap快速烘焙(转载)
  14. 单片机c语言取反符号怎么打,arduino取反怎么写
  15. 微软面试58道逻辑面试题
  16. java 获取文件后缀及根据文件扩展名判断文件是否图片格式
  17. “ 一条路走到黑,不撞南墙不回头”——C++【DFS(深度优先搜索算法)】入门讲解
  18. vue中使用antv/g6 绘制关系图、结构图
  19. Word文档中styles分析
  20. UI设计中按钮如何设计,常见的按钮设计类型

热门文章

  1. python windows和linux路径_获取windows和linux下U盘路径
  2. Cadence OrCAD Capture在2K屏下原理图不能正常显示设置方法
  3. ubuntu18.04 RTX3080TI安装anaconda、CUDA11.2,及pytorch
  4. 剪辑师设计师必备:百度基于ERNIE-ViL大模型的MG风格人物生成器和动画素材生成器
  5. 探索Flutter读取原生图片资源
  6. 丁海森: 域名投资无须营业执照,小生意,大买卖?
  7. 趣活逆势大涨超20%,但依然被低估了
  8. 去掉win10桌面小图标
  9. 从古代设计思想中看设计的伦理性因素2007
  10. Yearn.Finance(YFI)购买入门