前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EVM 学习手册

EVM 学习手册

作者头像
Tiny熊
发布2022-11-07 11:09:27
5910
发布2022-11-07 11:09:27
举报
文章被收录于专栏:深入浅出区块链技术

本文作者:Ethernaut CTF[1]

这个手册是为有抱负的超级开发者策划的 EVM 学习的资源清单。

在第一性原理的思考中,你把事情归结为最基本的真理,然后你从那里推理。 ---- Elon Musk

在智能合约领域,"以太坊虚拟机" 以及其算法和数据结构就是第一性原理。


Jordan McKinney - EVM 解释

从单个合约层面和以太坊的整体世界状态深入解释 EVM 的视频。

  • EVM 解释(Youtube)[2]

Andreas Antonopoulos - 以太坊虚拟机

涵盖了 EVM 如何工作的基本原理,并展示了 EVM 如何与协议层互动。

  • 第 13 章 - 以太坊虚拟机[3]

Openzepplin - 解构 Solidity 合约

一组博文,帮助你了解 solidity 代码是如何被 EVM 解释和执行的。

  • 第 1 部分 - 介绍[4]
  • 第 2 部分 - 运行时间与创建字节码[5]
  • 第 3 部分 - 函数选择器[6]
  • 第 4 部分 - 函数封装器[7]
  • 第 5 部分 - 函数主体[8]
  • 第六部分 - 元数据哈希[9]

Noxx - EVM 深入探索

一组博客文章,深入 EVM 的特定部分,让你从 solidity 代码到 EVM 的操作代码。

  • 第 1 部分 - 函数选择器深入分析[10]
  • 第 2 部分 - EVM 中的内存[11]
  • 第 3 部分 - EVM 中的存储[12]
  • 第 4 部分 - Go Ethereum(Geth)客户端的存储操作码[13]
  • 第 5 部分 - 委托调用深入研究[14]

Karmacoma - 从零开始构建一个 EVM

一组博文,用 Python 从头开始实现 EVM,参考 Ethereum 黄皮书并涉及 EVM 的机制

  • 第 1 部分 - 基本执行环境[15]
  • 第 2 部分 - Branching 指令[16]

Femboy Capital - A Playdate with the EVM

一篇博文介绍了 EVM 的基本概况,在向我们展示如何编写一些汇编之前,解释了堆栈的工作原理。

  • Part 1 - A Playdate with the EVM[17]

Takenobu T. - EVM 图解

PPT 演示,提供了奇妙的视觉效果,不仅展示了 EVM 是如何工作的,而且还展示了世界状态(存储),交易如何操作世界状态,以及更多。

  • EVM 图解[18]

EVM 代码 -- 操作码 的 EVM Playground

一个互动的网站和 EVM Playground。对 EVM 开发者来说是最有价值的工具之一。它包含一个所有操作码的列表,以及描述和一个你可以观察它们如何工作的 Playground。

  • https://evm.codes

Fvictorio - EVM Puzzles

GitHub 上的交互式 EVM 谜题集,这些谜题可以帮助你巩固从其他资源中学到的知识。

  • https://github.com/fvictorio/evm-puzzles

Daltyboy11 - 更多 EVM 谜题

Fvictorio 的互动式 EVM 谜题的 "第二部分",有一组新的挑战,这些谜题同样可以帮助巩固你的学习。

  • https://github.com/daltyboy11/more-evm-puzzles

区块链程序 -- 智能合约存储

一篇博文,对合约存储的数据结构做了很好的概述

  • 了解以太坊智能合约存储[19]

Jeancvllr - EVM Assembly

一篇关于 EVM 汇编、操作码和在 solidity 中使用汇编的博文。

  • Solidity Tutorial All About Assembly[20]

Peter Robinson - Solidity 到字节码、内存和存储

一段深入的视频,介绍了合约如何被编译成字节码,如何处理其内存/存储,以及如何被 EVM 解释。

  • EVM 从 Solidity 到字节码、内存和存储[21]

Marek Kirejczyk - Ethereum 背后的秘密

一段深入的视频,探讨了用于存储 Ethereum 世界状态的算法和数据结构。

  • Ethereum 背后的秘密: 算法与数据结构[22]

官方 Solidity 文档

官方 Solidity 文档,介绍如何在 solidity 合约中处理存储、内存和 calldata。

  • 存储中的状态变量布局[23]
  • 内存中的布局[24]
  • Calldata 的布局[25]

参考资料

[1]

Ethernaut CTF: https://learnblockchain.cn/people/11048

[2]

EVM 解释(Youtube): https://www.youtube.com/watch?v=kCswGz9naZg&feature=youtu.be

[3]

第13章 - 以太坊虚拟机: https://github.com/ethereumbook/ethereumbook/blob/develop/13evm.asciidoc

[4]

第1部分 - 介绍: https://blog.openzeppelin.com/deconstructing-a-solidity-contract-part-i-introduction-832efd2d7737/

[5]

第2部分 - 运行时间与创建字节码: https://blog.zeppelin.solutions/deconstructing-a-solidity-contract-part-ii-creation-vs-runtime-6b9d60ecb44c

[6]

第3部分 - 函数选择器: https://blog.zeppelin.solutions/deconstructing-a-solidity-contract-part-iii-the-function-selector-6a9b6886ea49

[7]

第4部分 - 函数封装器: https://blog.zeppelin.solutions/deconstructing-a-solidity-contract-part-iv-function-wrappers-d8e46672b0ed

[8]

第5部分 - 函数主体: https://blog.zeppelin.solutions/deconstructing-a-solidity-contract-part-v-function-bodies-2d19d4bef8be

[9]

第六部分 - 元数据哈希: https://blog.zeppelin.solutions/deconstructing-a-solidity-contract-part-vi-the-swarm-hash-70f069e22aef

[10]

第1 部分 - 函数选择器深入分析: https://noxx.substack.com/p/evm-deep-dives-the-path-to-shadowy?s=r

[11]

第2部分 - EVM中的内存: https://noxx.substack.com/p/evm-deep-dives-the-path-to-shadowy-d6b?s=r

[12]

第3部分 - EVM中的存储: https://noxx.substack.com/p/evm-deep-dives-the-path-to-shadowy-3ea?s=r

[13]

第4部分 - Go Ethereum(Geth)客户端的存储操作码: https://noxx.substack.com/p/evm-deep-dives-the-path-to-shadowy-5a5?utm_source=%2Fprofile%2F80455042-noxx&utm_medium=reader2&s=r

[14]

第5部分 - 委托调用深入研究: https://noxx.substack.com/p/evm-deep-dives-the-path-to-shadowy-a5f?utm_source=%2Fprofile%2F80455042-noxx&utm_medium=reader2&s=r

[15]

第1部分 - 基本执行环境: https://www.notion.so/Building-an-EVM-from-scratch-part-1-the-execution-context-c28ebb4200c94f6fb75948a5feffc686

[16]

第2部分 - Branching指令: https://www.notion.so/Building-an-EVM-from-scratch-part-2-branching-instructions-d864da164256426a9a1a0f7cc475c840

[17]

Part 1 - A Playdate with the EVM: https://femboy.capital/evm-pt1

[18]

EVM图解: https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf

[19]

了解以太坊智能合约存储: https://programtheblockchain.com/posts/2018/03/09/understanding-ethereum-smart-contract-storage/

[20]

Solidity Tutorial All About Assembly: https://jeancvllr.medium.com/solidity-tutorial-all-about-assembly-5acdfefde05c

[21]

EVM从Solidity到字节码、内存和存储: https://www.youtube.com/watch?v=RxL_1AfV7N4&t=2s

[22]

Ethereum 背后的秘密: 算法与数据结构: https://www.youtube.com/watch?v=OxofT39TJgg

[23]

存储中的状态变量布局: https://learnblockchain.cn/docs/solidity/internals/layout_in_storage.html

[24]

内存中的布局: https://learnblockchain.cn/docs/solidity/internals/layout_in_memory.html

[25]

Calldata的布局: https://learnblockchain.cn/docs/solidity/internals/layout_in_calldata.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 深入浅出区块链技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Jordan McKinney - EVM 解释
  • Andreas Antonopoulos - 以太坊虚拟机
  • Openzepplin - 解构 Solidity 合约
  • Noxx - EVM 深入探索
  • Karmacoma - 从零开始构建一个 EVM
  • Femboy Capital - A Playdate with the EVM
  • Takenobu T. - EVM 图解
  • EVM 代码 -- 操作码 的 EVM Playground
  • Fvictorio - EVM Puzzles
  • Daltyboy11 - 更多 EVM 谜题
  • 区块链程序 -- 智能合约存储
  • Jeancvllr - EVM Assembly
  • Peter Robinson - Solidity 到字节码、内存和存储
  • Marek Kirejczyk - Ethereum 背后的秘密
  • 官方 Solidity 文档
    • 参考资料
    相关产品与服务
    对象存储
    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档