以太坊堆栈简介
上次修改时间: @M1ting(opens in a new tab), 2023年8月15日
就像其他任何一种堆栈结构,完整的“以太栈”会基于不同的目的在不同的项目之间变换。
然而,以太坊的核心技术是提供一种心智模型,这种模型帮助解决了以太坊区块如何在不同的应用之间的交互的问题。 理解堆栈的层级将有助于你理解可以将以太坊融入软件项目的不同方法。
级别 1:以太坊虚拟机
以太坊虚拟机 (EVM) 是智能合约在以太坊上的运行环境。 以太坊区块链上的所有智能合约和状态更改都由交易执行。 以太坊虚拟机处理以在太坊网络上执行的所有交易。
与任何虚拟机一样,以太坊虚拟机在执行代码和执行机器(以太坊节点)之间创建一个抽象级别。 目前,在世界各地散布着成千上万的正在执行的以太坊虚拟机节点。
在后台,那些以太坊虚拟机会使用操作码执行一些特殊的任务。 这些(140 个惟一的)操作码使以太坊虚拟机具有 图灵完备(opens in a new tab),这意味着只要提供足够的资源,以太坊虚拟机几乎可以计算任何东西。
作为去中心化应用程序的开发者,除了了解以太坊虚拟机的存在之外,你不需要了解更多关于以太坊虚拟机的信息,并且可以在以太坊上畅通无阻地授权所有应用程序。
级别 2:智能合约
智能合约是在以太坊区块链上运行的可执行程序。
智能合约使用了特定的编程语言来编译到以太坊虚拟机字节码(调用操作码的低级机器说明)。
智能合约不仅是开放源码库,而且它们基本上是运行 24/7 的开放应用程序接口服务,不能被取消。 智能合约提供了为用户和应用程序(去中心化应用程序)之间交互的公开方法,无需许可。 任何应用程序都可能会与已部署的智能合约集成组成功能,如添加数据源或支持代币交换。 任何人都可以在以太坊上部署智能合约,以便添加自定义功能来满足其应用程序的需要。
作为一个去中心化应用程序开发者,如果你需要在以太坊区块链上添加自定义功能,需要通过写智能合约来实现。 你可能会发现你可以仅仅通过与现有智能合约进行整合来满足你项目的大部分或全部的需要。例如,如果你想要支持支付稳定币或启用分散交换代币。
级别 3:以太坊节点
为了让应用程序与以太坊区块链交互,它必须连接到 以太坊节点。 正在连接到一个节点,你可以读取区块链数据和/或将交易发送到网络。
以太坊节点是运行着软件的电脑,这些软件也就是一个以太坊客户端。 客户端是一种以太坊的实现,它可以验证每个区块中的所有交易,从而确保网络安全和数据准确。 以太坊节点是以太坊区块链。 他们集体存储以太坊区块链的状态,并根据改变区块链状态的交易达成共识。
通过将应用程序连接到以太坊节点(通过 JSON RPC 应用程序接口),应用程序可以从区块链(例如用户帐户余额)读取数据,并向网络广播新交易(例如在用户帐户之间传输以太币或执行智能合约的功能)。
级别 4:以太坊客户端应用程序接口
许多方便的库(由以太坊开源社区建立和维护)允许你的终端用户应用程序连接到以太坊区块链并进行通信。
如果你的面向用户应用程序是一个 web 应用程序,你可以直接选择在你的前端使用 npm 安装
一个 JavaScript 应用程序接口。 或许你会选择使用 Python 或 Java 的应用程序接口在后端实现此功能。
虽然这些应用程序接口不是栈必须的一部分,但它们抽象并消减了与以太坊节点直接互动的大部分复杂性。 它们还提供好用的函数(例如:将 ETH 转化为 Gwei),而作为开发者,你可以花费更少的时间处理以太坊客户端的复杂问题,从而将更多的时间集中于处理你的应用程序的独特功能。
级别 5:终端用户应用程序
在栈的顶层是面向用户的应用程序。 这些是你今天经常用和构建的标准应用程序:主要是网络程序和移动应用程序。
开发这些用户界面的方式基本上保持不变。 用户常常不需要知道他们所使用的应用程序是使用区块链构建的。
准备好选择技术栈了吗?
查看我们的指南为你的以太坊应用程序 设置本地开发环境。
延伸阅读
- 一个 Web 3.0 应用的架构(opens in a new tab) - Preethi Kasireddy
还有哪些社区资源对你有所帮助? 编辑并添加本页面!