un.Block

发布于 2021-10-09到 Mirror 阅读

以太坊和 EVM

我们主要来学习一下 ETH 和 EVM,ETH 的诞生让区块链世界充满无限可能;开发部分我们承接上期的安全话题,聊聊如何写出安全可靠的代码

区块链理论:可编程的区块链

Ethereum 是什么

Q: What is Ethereum?
A: The foundation for our digital future.

BTC 标志着一种全新形式的货币的出现,它不受任何中心化机构的控制。随着时间的推移,人们开始意识到,BTC 带来的区块链技术除了用来记账,还可以应用到更广阔的领域,随之而来的就是以太坊 (Ethereum)。

关于 BTC 和 Ethereum 的区别,推荐阅读 ⬇️

Bitcoin vs. Ethereum: What's the Difference?

Vitalik Buterin 创造的 Ethereum 实现了一个内置编程语言的区块链协议。由于 Ethereum 支持了编程语言,那么理论上任何区块链应用都可以使用这门语言进行定义,并且运行在以太坊虚拟机 (Ethereum Virtual Machine, EVM) 上。

Ethereum 通过区块链技术,在维护去中心化的支付网络的同时,还存储着防篡改的去中心化应用程序 (DApp) 与智能合约 (Smart Contract)。

Ethereum 协议就像互联网时代的 TCP/IP 协议一样,基于这个协议,区块链应用开发者可以在顶层高效便捷地开发顶层应用。

通过阅读以下文档,你可以深入的了解以太坊 ⬇️

Vitalik Buterin:以太坊是什么

官方文档:WHAT IS ETHEREUM

EVM 是什么

EVM 的行为就像一个数学函数一样。给定一个输入,它就会产生一个确定性的输出。因此,我们可以将 Ethereum 理解为一个状态转换函数(或状态机)。

关于 (EVM) Ethereum Virtual Machine 的描述略有玄学的味道,它不能被认为是云服务器或集群服务器,但它确实是作为一个单一实体存在于世界上,由运行着 Ethereum 客户端的成千上万台电脑链接维护。

Ethereum 协议存在的价值是为了保持 EVM 的连续、不间断、不被篡改的稳定运行,EVM 是所有 Ethereum 账户和智能合约的生存环境。在链上的任何一个区块,Ethereum 都只有一个 “规范” 的状态,而 EVM 就是定义了区块之间计算出新的有效 “规范状态” 的机器。

ETHEREUM VIRTUAL MACHINE (EVM)

就像部署在中心化网络的应用程序消耗服务器资源一样,在 EVM 上运行程序(或转账)也是需要消耗资源的,我们称消耗的资源为 Gas,你可以把它理解驱使汽车前进的为汽油,Gas Fee 就是最终消耗的资金。

关于 Gas Fee、Gas Limit、Gas Price,我们下次再聊。

除了 EVM,还有另外一条较为著名的可编程链叫 BSC (Binance Smart Chain), BSC 也能运行智能合约,他和 EVM 兼容并行工作 An Introduction to Binance Smart Chain (BSC)

区块链开发:安全开发

上期我们提到 Force DAO 因为一个低级漏洞而发生了安全事故,那么本期我们就来了解一下,如何写出安全的代码

知己知彼,百战不殆,认识常见的攻击可以提高我们的代码安全意识,Consensys 的 Known Attacks 列出了常见的各种攻击如 Reentrancy、Front-Running 等,并给出了相关的解决方案。

在 DApp 开发过程中,我们经常会遇到转账、外部调用等有风险的操作,要使代码安全可靠,除了在编码时注意代码逻辑与各种判断条件,我们还可以使用被认为是较可靠的第三方库来处理有风险的操作,如 Openzeppelin,它是一个建立在社区审核代码基础上的安全智能合约开发库,它

  • 实现了 ERC20 和 ERC721 等标准
  • 灵活的基于角色的访问控制方案
  • 提供可充用的 Solidity 智能合约组件

在开发的过程中,我们可以使用静态分析器来检测低级漏洞,开发完成后,可以通过编写各种测试来提高代码的可靠性,也可以将项目代码移交第三方安全机构(如 Certik)进行代码审计,由专业的的区块链安全专家对代码进行分析,并给出相关改进建议。

找第三方审计某程度上可以理解为:由可信赖的机构为项目的安全性背书,增强用户信心。

区块链工具分享

在 DApp 开发过程中,我们可以通过这些工具来提高代码可靠性:

  • Slither:基于 Python 的开源 Solidity 静态分析框架,能够对代码进行静态分析,并提供 API 来编写自定义分析
  • MythX:收费的专业级安全分析服务工具,通过标识分析与模糊化输入来验证智能合约的正确性
  • Solidity Visual Auditor:一个 VSCode 上的插件,提供以安全为中心的语法和语义代码高亮
  • Solar:一个正在开发中的静态分析框架,提供GUI操作界面与自由地交互式分析,介绍文章