概览

以太坊是一种用于在不受中心化监管机构管控的环境下构建应用程序和组织、持有资产、进行交易和通信的技术。使用以太坊时无需提供任何个人详细信息,用户控制自己的数据以及共享内容。以太坊有自己的加密货币 — 以太币,用以支付在以太坊网络上进行特定活动的费用。

简而言之,以太坊背后的核心思想是:开发人员可以在分布式网络中创建并运行代码,无需使用中央服务器。因此,这些应用程序在理论上不会被关停或受到审查。

还不明白?让我们来一步一步详细解释。

人物介绍

维塔利克·布特林(Vitalik Buterin),1994年出生在俄罗斯莫斯科郊外的一个小镇,后来移民加拿大,在多伦多长大。以太坊发明人。4岁编程.12岁C++开发游戏2007年的时候,沉迷于《魔兽世界》三年因为游戏方修改补丁移除了人物技能的不满,毅然决然地放弃了游戏,19岁辍学开发以太坊.

以太坊与比特币有什么不同?

以太坊立足比特币创新之上,于 2015 年启动,两者之间有一些显著不同。

两者都允许你使用数字货币,而无需支付服务提供商或银行。但是以太坊是可编程的,所以你还可以在以太坊网络上构建和部署去中心化应用程序。

以太坊可编程意味着,你可以构建特定的应用程序,以此使用区块链来存储数据或控制你的应用程序功能。这就形成了一条通用区块链,可以通过编程来让其做任何事情。由于对以太坊的功能没有任何限制,以太坊网络上可以出现伟大的创新。

比特币只是一个支付网络,而以太坊更像是一个金融服务、游戏、社交网络和其他应用程序的市场,它们尊重你的隐私并且不能审查你。

如果把比特币系统看成区块链 1.0,则以太坊是当之无愧的升级迭代版,是区块链 2.0 的典范。

以太坊白皮书

​​https://ethereum.org/zh/whitepaper/​​

在白皮书摘要部分,他这样描述以太坊的目标:

以太坊的目标是,提供一个区块链,内置有成熟的图灵完备的编程语言,用这种语言可以创建合约来编码,实现任意状态转换功能。

“状态转换”反映了维塔利克对比特币系统和区块链的认识。在白皮书中他认为,比特币是一个状态转换系统,而他为以太坊设计了一个更灵活的状态转换系统。

以太坊的目标描述可以细分成以下三个部分:

维塔利克要创建一个新的区块链。

这个区块链的特色是,有一个能实现所有计算,即所谓的图灵完备的脚本编程语言。

这个脚本语言可以用来创建复杂的“智能合约”,用以控制区块链的状态转换,也即进行链上数字资产的转移。

以太坊虚拟机 – EVM

EVM是一个计算引擎,有助于智能合约的部署和操作。没有EVM,就不可能在以太坊协议上执行软件程序。因此,EVM是以太坊核心架构的关键部分。

为了理解以太坊虚拟机,我们必须首先探索两个概念:“虚拟机”和“图灵完整性”

虚拟机

虚拟机是模拟物理计算机行为的程序。虚拟机有它的存储和处理单元,在你的电脑上作为进程运行。这有点像一台电脑在另一台电脑上运行。

虚拟机类似于普通的Windows或MacOS软件。这里的区别在于虚拟机被设计为执行更高级的功能。此外,与常规操作系统不同,虚拟机无法访问计算机的其他部分,如存储或带宽。

如果你使用模拟器在PC上玩过Android游戏,那么虚拟机可能很熟悉。虽然模拟器和虚拟机有很大不同,但它们都接近硬件的能力,可以在“Sandbox(沙盒)”环境中执行代码。

图灵完备性

英国数学家艾伦·图灵(Alan Turing)发明了第一台图灵机器,它是当今计算机的先驱。只要有足够的时间和资源,图灵整机可以处理任何计算,无论多么复杂。

图灵机是图灵受打字机的启发而假想出来的一种抽象机器,其处理对象是一条无限长的一维纸带。纸带被划分为一个个大小相等的小方格,每个小方格可以存放一个符号(可以是数字、字母或其他符号)。有个贴近纸带的读写头,可以对单个小方格进行读取、擦除和打印操作。为了让读写头能访问到纸带上的所有小方格,可以固定纸带,让读写头沿着纸带左右移动,每次移动一格,或者固定读写头,让纸带左右移动。

那么读写头该如何移动,移动之前或移动之后又该作何操作呢?这取决于机器当前的状态,以及读写头当前所指小方格中的内容,机器中有着一张应对各种情况的策略表,它记录着读写头在特定情况下应该执行的行为。

比如: “当你身处编号53的格子并看到其内容为0时,擦除,改写为1,并向右移一格。此外,令下一状态为运行。”这个指令集就对应着程序员所写下的程序了。
现在,让我们将这些想法结合起来,定义以太坊虚拟机:以太坊虚拟机(EVM)是一个巨大的虚拟机,允许部署和执行代码。您只需安装必要的客户端软件即可访问EVM,并使用它在以太坊上执行程序。本质上,EVM充当“世界计算机”,在分散的环境中执行软件操作。

EVM是图灵完备的,因为它可以用于执行各种复杂度的计算。这就是以太坊与比特币的区别,因为比特币是图灵不完整的,限制了其功能。

以太坊虚拟机是如何工作的?

Opcodes(机器码)

EVM使用一系列称为“操作码”的指令来执行不同的任务。EVM中有140多个操作码可以执行不同的进程,因此以太坊将其描述为图灵完备。

我们需要操作码,因为EVM无法解释用Solidity编写的指令,Solidity是用于编写智能合约的语言。因此,智能合约代码被转换为操作码,因此它们可以在EVM环境中执行。

例如,可以使用create操作码创建智能合约,也可以使用STOP操作码暂停正在运行的合约。

Gas(燃料)

Gas是在EVM环境中执行代码的资源。就像你在现实生活中需要汽油来驱动汽车一样,EVM也需要汽油来执行操作。每次代码执行都会产生一笔Gas费,这取决于许多因素,比如操作的复杂性和网络范围的需求。汽油费激励个人将计算能力借给以太坊。如果没有Gas费,EVM就不能像一台分散的计算机一样工作。

Gas还有另一个用途:防止执行恶意操作,如分布式拒绝服务(DDoS)攻击。虽然EVM几乎可以运行任何计算,但很难预测每个操作的运行时间。

精心设计的恶意操作可以无限运行,导致网络失去计算能力,最终崩溃。Gas燃料费用通过迫使恶意参与者为计算过程中执行的每一步付费来防止这一问题。

特点

确定的

一个确定的程序能够向同一组输入提供相同的输出,而与它执行相同代码的次数无关。在以太坊网络中,DAPP一次能够处理数百万美元的交易,不同的用户需要知道代码在执行的每个阶段是如何反应的。

隔离的

智能合约需要在完全隔离的环境中运行,以确保如果智能合约发生黑客攻击或bug,而不会影响底层协议的其余部分。

可终止的

以太坊智能合约是图灵完备的。因此,只要有足够的时间和资源,它理论上能够无限期执行。智能合约应该附带终止机制,因为很难确定合约是否会在给定的时间限制内完成所有操作。以太坊使用gas限额来终止超出执行额度的智能合约。

什么是以太币?

以太坊区块链上的代币称为以太币(Ether),代码为ETH。它也是以太坊上用来支付交易手续费和运算服务的媒介。

之前我们简单提到过“挖矿”。挖矿过程是保护和更新区块链的关键。以太坊的挖矿原理与之相同,即根据协议为挖矿参与者(费时费力且成本高昂)提供以太币奖励。

以太币的单位

以太币的主要单位是以太/Ether,即一个以太币,以太币的最小单位是wei。

​wei是以虚拟币先驱人物:戴伟 Wei Dai 命名,戴伟是一位兴趣广泛的密码学专家,他在 1998年发明了B-money匿名的、分布式的电子加密货币系统,强调点对点的交易和不可更改的交易记录。中本聪发明比特币的时候,借鉴了很多戴伟的设计,并和戴伟有很多邮件交流。​

以太币的单位如下:

单位

Wei 值

Wei

wei

1 wei

1

Kwei

1e3 wei

1,000

Mwei

1e6 wei

1,000,000

Gwei

1e9 wei

1,000,000,000

microEther

1e12 wei

1,000,000,000,000

milliEther

1e15 wei

1,000,000,000,000,000

Ether

1e18 wei

1,000,000,000,000,000,000

什么是智能合约?

智能合约是在满足预定标准时在区块链上运行的自动执行程序。它们通常用于自动执行交易,以便每个人都可以立即知道结果,而无需任何第三方参与或时间损失。

交易、投资、借贷等金融应用只是智能合约的一小部分用途。它们可用于游戏、医疗保健和房地产,甚至可用于构建整个公司结构。

实际上,参与者不会每次在以太坊虚拟机上请求计算时都编写新代码。 相反,应用程序开发者将程序(可重用的代码片段)上传到以太坊虚拟机状态,用户发出请求以使用不同参数执行这些代码片段。 我们将这些上传至网络并由网络执行的程序称为智能合约。

简单来说,你可以把智能合约想象成一种自动售货机:通过特定参数调用脚本后,如果满足某些特定条件,就会执行一些操作或计算。 例如,如果调用者将以太币发送给特定的接收者,简单的卖方智能合约就可以创建和分配数字资产所有权。

任何开发者都可以创建智能合约,并使用区块链作为其数据层,将其公开给网络,但要向网络支付以太币。 然后,任何用户都可以调用智能合约来执行其代码,并再次向网络支付费用。

因此,通过智能合约,开发者可以任意构建和部署面向用户的复杂应用程序和服务,例如市场、金融工具、游戏等。