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