以太坊开发者文档01 以太坊技术栈简介
以太坊技术栈简介
像任何软件(技术)栈一样,不同工程中的完整“以太栈”会根据目标而不同。
然而,以太坊的核心组成是提供一个软件应用如何与以太坊区块链交互的心智模型(mental model)。
理解栈的层级会帮助理解以太坊集成到软件工程中的不同方法。
Level 1:以太坊虚拟机
以太坊虚拟机是以太坊智能合约的运行时环境。以太坊区块链上所有智能合约和状态变化都是由交易来执行(executed)的。EVM 处理了以太坊网络上所有的交易过程。
和任意虚拟机一样,EVM 创建了一个在执行代码和执行机(一个以太坊节点)之间的一个抽象层级。现在 EVM 运行在分布在世界各地的节点上。
在底层,EVM 使用一组操作码(opcode)指令来执行特定任务。这些操作码(140个)允许 EVM 实现图灵完备,这意味着 EVM 能够在给定足够资源的情况下完成任何事情。
作为一个 dapp 开发者,你不需要对 EVM 有太多了解,只要知道它存在并且它可靠地为以太坊上所有应用程序不间断地提供动力。
Level 2:智能合约
智能合约是运行在以太坊区块链上的可执行程序。
智能合约使用特定编程语言编写,可以编译为 EVM 字节码(称为 opcodes 的低级机器指令)。
智能合约不仅用作开源库,它们本质上是开放的 API 服务,始终在运行且无法关闭。
智能合约提供用户和应用程序(dapps)可以交互的公有函数,而不需要许可。任何应用程序都可以与部署的智能合约集成以组成功能,例如添加数据馈送(data feeds)或支持代币交换(token swap)。此外,任何人都可以将新的智能合约部署到以太坊,以添加自定义功能以满足其应用程序的需求。
作为 dapp 开发人员,只有当您想在以太坊区块链上添加自定义功能时,您才需要编写智能合约。您可能会发现仅通过与现有智能合约集成就可以满足项目的大部分或全部需求,例如,如果您想支持稳定币支付或启用去中心化的代币交换。
Level 3:以太坊节点
为了让应用与以太坊区块链交互,它必须连接到以太坊节点。连接到节点允许你读取区块链数据和/或发送交易给网络。
以太坊节点是运行软件的计算机 — 一个以太坊客户端。一个客户端是一个以太坊实现,它验证每一个区块上的所有交易,保证网络安全和数据准确。以太坊节点是以太坊区块链。它们共同存储以太坊区块链的状态,并就交易达成共识以改变区块链状态。
通过将您的应用程序连接到以太坊节点(通过 JSON-RPC API),您的应用程序能够从区块链读取数据(例如用户账户余额)以及向网络广播新交易(例如在用户账户之间传输 ETH 或执行智能合约的函数)。
Level 4:以太坊客户端 API
许多方便的库(由以太坊的开源社区构建和维护)允许您的应用程序连接到以太坊区块链并与之通信。
如果您面向用户的应用程序是 Web 应用程序,您可以选择直接在前端使用 npm install
安装 JavaScript API。或者,您可能会选择使用 Python 或 Java API 在服务器端实现此功能。
虽然这些 API 不是(以太坊)栈的必需部分,但它们抽象出直接与以太坊节点交互的大部分复杂性。它们还提供实用功能(例如将 ETH 转换为 Gwei),因此作为开发人员,您可以花更少的时间处理复杂的以太坊客户端,而将更多时间专注于您的应用程序的特定功能。
Level 5:用户端应用程序
(以太坊)栈的顶层是面向用户的应用程序。这些是您今天经常使用和构建的标准应用程序:主要是 Web 和移动应用程序。
您开发这些用户界面的方式基本保持不变。通常,用户不需要知道他们正在使用的应用程序是使用区块链构建的。
准备好选择你的栈了?
查看我们的指南,为您的以太坊应用程序设置本地开发环境。
延伸阅读
- The Architecture of a Web 3.0 application - Preethi Kasireddy