所有智能合约开发者的EVM解谜游戏来了

本文介绍了Decipher EVM Puzzles游戏,这是一个基于Franco的EVM puzzles的扩展版本,旨在帮助Web3开发者通过解决谜题和CTF挑战来掌握EVM opcodes。该游戏提供不同难度级别和提示,覆盖多种操作码,并推荐使用EVM Codes Playground和ETHERVM's list of Opcodes等工具辅助解谜。文章还提供了EVM和操作码的学习资源链接。

以太坊新闻周刊 推荐 [ 开始游戏 ] 🤾🏻‍♂️

在 web3 开发者领域,解决 puzzles、CTF 挑战、游戏等显然是牢固掌握任何特定主题的最有效方式之一。

无论是像 Cryptozombies 这样有趣的初学者互动游戏,还是像 Ethernaut 或 Damn Vulnerable Defi 这样严肃的 web3 安全相关的 CTF 挑战,它们都有助于我们围绕特定的复杂主题建立强大的心智模型,并通过实践来学习(而不是仅仅阅读)。

我个人一直是这些挑战和 puzzles 的忠实粉丝。我喜欢它们。❤️

在开始我的 EVM 文章系列 之前,我花了很多时间解决 Franco 创建的 EVM puzzles,并且 学到了很多东西

因此,我决定自己制作一个 EVM puzzle 游戏,其中包含一些更有趣的 puzzles,即 Decipher EVM Puzzles

Decipher EVM Puzzles 游戏是 Franco 的 EVM puzzles 的扩展版本,但具有 更高的复杂度,一个 难度级别选择器,不仅可以帮助资深开发者,还可以帮助初学者尝试,以及 更多有趣的 puzzles,涵盖了范围广泛的 opcodes(以及破解这些 puzzles 的有趣方法)。

开始游戏 🤾🏻‍♂️

怎么玩?

git clone https://github.com/zaryab2000/decipher_EVM_Puzzles.git
npm install
npx hardhat play

就是这样。

完成后,系统应该会提示你执行以下操作 👇

然后,只需选择难度级别并开始游戏。

它是什么 & 有什么新功能?

Decipher EVM puzzles 基本上是 puzzles 的集合,其中包括一系列不同的 opcodes,只有当玩家提供正确的输入时才能成功执行。

什么是输入?

每个 puzzle 都可能需要玩家输入以下内容之一:

  • 仅 CallData
  • 仅 CallValue
  • CallData 和 CallValue 都有

你作为玩家的主要目标是提供正确的输入集,以便交易不会回滚。

如果它回滚,你就失败了...❌

如果它成功执行,你就解决了那个 puzzle。✅

有什么新内容?

  • 根据你的专业知识选择难度级别

处理 EVM opcodes 可能有点吓人。但是,你需要在某个地方开始。

因此,这些 puzzles 不仅适用于资深的智能合约开发人员,也适用于最近开始探索 EVM 和 opcodes 的初学者。

只需根据你对 opcodes 的专业知识选择难度级别,然后立即开始游戏

  • 复杂 Puzzles 的提示

有些 puzzles 可能有点复杂难以解决。 对于困难的 puzzles,玩家可以选择获得一些 提示并再次尝试解决。

不要作弊——仅在绝对必要时才使用提示。 😁

  • 有趣的 Puzzles 具有有趣的解决方案 ( 必须注意)**

一些 puzzles 的解决方案可能更像是一个公式,而不是一个特定的值。

例如,一些 puzzles 可能需要一种输入类型,其中 Calldata 大小必须为 nCallValue 必须为 n+4,你才能正确解决它。

对于这种情况,CallData 大小可以是 4 或 5 或 6,CallValue 可以分别是 8 或 9 或 10

对于这样的 puzzle,必须理解公式,而不是追逐 1 个特定的 calldata 大小或 callvalue 作为正确答案

同一 puzzle 的解决方案也可能不止 1 个特定输入。

  • 更多 Opcodes,更多乐趣

Decipher EVM puzzle 包含更多 opcodes,并尝试使开发人员熟悉尽可能多的 opcodes。

在解决这些 puzzles 时,你会遇到一堆有趣的 opcodes 以及 位移位、掩码、逻辑运算(与、或)、SSTORE、SLOAD、MSTORE、使用 CREATE Opcode 创建合约等概念,以及更多。

可以提供帮助的工具

虽然你可以随意进行游戏,但我还是想推荐两个工具,它们无疑会让你的生活更轻松。

  1. Evm Codes Playground
  • 前往 EVM Playground
  • 点击下拉菜单并选择 Bytecode 选项。

  • 将 opcodes 粘贴到界面的左侧部分。

  • 你可以使用下面的框来传递 calldata、callvalue 或两者的输入值。
  • 在单步执行 opcodes 的任何给定时间,下面的部分应表示 内存、堆栈、存储或返回值的状态。 这将帮助你快速理解和解决 puzzles。

2. ETHERVM 的 Opcodes 列表

  • 其次,访问 Ethervm 网站 以获取所有 opcodes 的列表。
  • 使用此方法,你可以快速检查特定 opcode 的含义,最重要的是它们如何从堆栈中获取输入。

这两个工具足以让你快速理解和解决 puzzles。

关于 Opcodes 和 Puzzles 的快速说明

解决这些 puzzles 基本上意味着你需要不断检查、理解和试验不同的 opcodes。

这是为了理解 opcode 的工作方式,这将从根本上帮助你获得 puzzles 的正确解决方案。

虽然你最终将不得不处理大量的 opcodes,但有 3 个 opcodes 你必须非常了解,JUMP、JUMPIJUMPDEST。

为什么是这 3 个?

从本质上讲,每个 puzzle 基本上都是一个挑战,你需要弄清楚如何使执行流程从一个特定的位置 JUMP 到另一个具有 JUMPDEST opcode 的位置。

如果你还不明白,请不要担心。 当你开始探索这些 opcodes 或解决 puzzles 时,你会了解更多。

或者,你也可以单击下面的切换栏,快速了解这 3 个 opcodes 👇

关于 JUMP、JUMPI 和 JUMPDEST 的快速说明 📝

如果你还不了解这 3 个 opcodes,最好快速记下它们是什么以及它们的作用。

顾名思义,这些 opcodes 主要帮助跳转并将执行流程移动到特定位置。

  • JUMPDEST:此 opcode 仅表示要 跳转到的有效位置。 这意味着,尽管 JUMP 和 JUMPI opcodes 可以将执行流程转移到任何位置,但它们的目标位置应始终包含 JUMPDEST。 否则,它将不被视为有效的跳转,并且执行将恢复。
  • JUMP:此 opcode 仅从堆栈中获取最上面的值,并将执行移动到该特定位置。
  • JUMPI:这与 JUMP 完全相似,但是,这更像是一个有条件的跳转。 仅当满足条件时才会跳转。

什么条件?

JUMPI 仅在以下情况下跳转:

a. 如果堆栈的第二个位置是 NON-ZERO 值,则 JUMP

b. 如果堆栈的第二个位置是 ZERO 值,则 DO NOT JUMP

总结

虽然这是 Decipher EVM puzzle 游戏的第一个版本,但我将在下一个版本中添加更多具有挑战性和难度的 puzzles。

在开始 puzzle 之前,最好对以太坊虚拟机以及 opcodes 有一个很好的了解。

如果你是完全的初学者,你可以从本 文章系列 开始,了解 EVM 和 Opcodes 的基础知识。

EVM 第一部分:以太坊虚拟机的 ABC - 以太坊虚拟机及其工作机制的初学者友好快速入门指南。 EVM 第二部分:智能合约从 Solidity 代码到 Bytecode 的历程

进一步阅读

  • 原文链接: decipherclub.com/deciphe...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
decipherclub
decipherclub
江湖只有他的大名,没有他的介绍。