以太坊(Ethereum)的详细介绍

第一章 Ethereum基本原理

以太坊介绍

Ethereum(以太坊)是一个去中心化的计算平台。你可以把它想象成一台并不在单一设备上运行的计算机。也就是说Ethereum可以同时在世界各地的数千台设备上运行,而这也就意味不存在唯一拥有者。

Bitcoin和其他加密货币一样,Ethereum也允许进行数字资产转移。但它的功能应用却更广泛——可以配置自己的代码,并与其他应用程序进行交互。同时,Ethereum具有的灵活性更是允许各种复杂程序的创建。

简单来说,Ethereum背后的主要思想是:开发者可在分布式网络上创建和运行代码,而并非在中央服务器上。而这在这就意味着,这些应用程序理论上是不能被关闭或删改的。

Ethereum与ETH的关系

表面上看之间的联系并不那么直观,但实际情况是Ethereum(以太坊)的使用单位并不叫做Ethereum或Ethereums。Ethereum指的是协议本身,而作为动力的代币则被称为Ether(以太币ETH)。

Ethereum的价值所在

之前我们提到Ethereum(以太坊)的代码是在分布式系统中运行的。因此,程序不能被外部所篡改。当它们被添加到Ethereum数据库中(即区块链)后,则代码更不可能被修改。此外数据库的所有人可见则允许你在交互之前进行代码审查。

所有这些就意味着,任何人在任何地方都可以发行不能被下线的应用。并且,Ethereum的价值存储单位Ether则为这些应用程序内的价值转移设定了条件。我们将构成应用的编程称作Smart Contracts(智能合约)。大多数情况下,它们可以在无人工介入的情况下运行。

毫无疑问,“可编程货币”的理念目前吸引了众多用户、开发者以及企业的参与。

区块链是什么?

Blockchain(区块链)不仅是Ethereum的核心,还是存储协议所含信息的数据库。如果你曾阅读过“Bitcoin简介”,你就会对区块链的运行机制有基本的了解。Ethereum的区块链与Bitcoin(比特币)的区块链类似,只是在数据的存储方式以及所存储的数据方面有所不同。

Ethereum区块链就好似一本可以添页的书。书中的每一页被称为“Blcok(区块)”,而区块中则存储着交易信息。当我们想要添加新篇页的时候,我们就需要在页面顶端计入一个特殊值。该特殊值则表明此新页是基于前页按顺序添加,而并非随意加入。

此特殊值就像是页码一样,帮助我们辨别新区块是否按照顺序添加。而我们则是使用“Hashing(哈希运算)”来完成这一过程。 

哈希运算获取一条数据(此时为区块中的所有数据),并输出一条唯一的标识符(也就是哈希)。两份数据输出同一哈希的可能性非常低,并且该过程也是单向的。这就表明通过哈希运算可以轻松的获得散列,但你并不能通过逆转哈希来获得用于创建该散列的信息。在随后的章节我们将介绍为何这对挖矿至关重要。

这样我们就有了将所有页面按正确顺序连接的机制。任何试图改变顺序或移除页面的操作都将被轻易发现。

Ethereum与Bitcoin的不同之处

Bitcoin依赖于区块链技术和金融激励来构建全球数字现金系统。且所引入的关键创新,允许全球用户在无中央机构的情况下进行协作。Bitcoin允许每位参与者都可在自己的计算机上运行程序,而这就为金融数据在去信任化、去中心化环境中达成一致提供了条件。

Bitcoin被认为是第一代区块链。且并不是作为复杂系统而创建的,而这也造就了它在安全方面的优势。有意地非灵活性则优化了基础层的安全性。Bitcoin中智能合约的语言是受限制的,因此并不能很好的适应交易外的应用程序。

相比之下,第二代区块链的功能则更多。除了金融交易之外,那些平台还提供了更高程度的可编程性。Ethereum为开发者们提供了更多的自由,允许他们可使用自己的代码来创建更多的去中心化应用程序(DApps)。

Ethereum是第二代区块链浪潮的先驱,目前也是最闪耀的先行者。它与Bitcoin既相似又不同。在某些方面可执行相同的功能,但在其他方面又完全不同,各自都具有各自的优势。

Ethereum的运行机制

我们可以将Ethereum定义为状态机(State Machine)。也就是说,在任何给定时间节点你都可以获得账户余额和智能合约的当前状态快照。新的操作会导致状态更新,就意味着所有的节点都将更新快照来反映更改。


Ethereum中状态更新。

在Ethereum上运行的智能合约由交易(来自用户或其他合约)触发。当用户向合约发送交易时,网络中的每个节点都会运行合约代码并记录输出。而这一过程是通过Ethereum Virtual Machine(以太坊虚拟机)来实现的,其中EVM将智能合约转换成计算机可以读取的指令。

为了更新状态,会采用一种叫做“挖矿”的机制。与Bitcoin类似,“挖矿”也是通过工作证明算法(POW)来完成的。稍后将进行深入探讨。

Smart Contract简介

Smart Contract(智能合约)就是代码。但该代码既不明智,也不是传统意义上的契约。其中的Smart代表智能,也就是特定条件下的自我执行。而之所以被视为Contract(合约),是因为它执行双方之间的协议。

智能合约概念由计算机科学家Nick Szabo在20世纪90年代末首次提出。他将此概念假象为自动售货机来解释,并声明这将是现代智能合约的先行者。在这个自动售货机中,也存在一个简单合约。也就是当用户插入硬币后,机器会根据人们的选择提供产品。

智能合约则将此类逻辑应用到数字环境中。也就是说你可以在代码中明确规定某种逻辑,例如当合约中收到两个以太币时,输出“Hello, World!”。

在Ethereum中,开发者将对逻辑进行编码,以便EVM读取。随后开发者将它发送到登记合约的特殊地址。之后任何人都可以查看和使用合约。除非开发者在编写合约时设定了条件,否则不能被删除。

现在,该合约就有了地址。而如果想要与它进行交互,则用户需要向地址中发送2个ETH。随后合约代码就被触发了,且网络上所有的计算机都可执行。当看到支付已经完成,就会记录输出(你好,世界!)。

以上是Ethereum可完成过程的最基本示例。而随着发展,更复杂且涉及更多合约的应用程序逐渐开始构建。

Ethereum之父

2008年,化名Satoshi Nakamoto(中本聪)的开发者(或开发团体)发布了Bitcoin白皮书。而这也彻底改变了数字货币的格局。一位名为Vitalik Buterin的年轻程序员对此概念的进一步应用进行了研究和试验,最后具体化为Ethereum。

以太坊是由Buterin在2013年发表了的一篇博客中提到的,文章名为《Ethereum—终极智能合约和去中心化应用平台》。在文章中,他描述了一个名为“图灵完备区块链”的概念,表示一个具有足够时间和资源的去中心化计算机可以执行任何应用程序, 

现如今,可在区块链上配置的应用程序越来越多,而其所属类型的唯一限制也只有开发者的想象力。Ethereum旨在查明区块链技术是否存在超出Bitcoin设计限制之外的应用范围。

Ether的发行机制

在2015年Ethereum首次供应了7200万以太币(Ether)。其中超5000万的代币在首次代币发行(ICO)中公开销售。届时参与者则可在交易所内使用法定货币或Bitcoin来购买ETH。

The DAO和Ethereum Classic

借助于Ethereum,互联网中的开放协作(Open collaboration)也以全新的方式呈现。例如DAOs(去中心化自治组织),类似于计算机程序,完全由计算机代码控制。

该组织的最早且最宏大的一次尝试则是“The DAO”项目。“The DAO”是由一些复杂的智能合约组成,并作为独立风险基金运作。而DAO代币则是以ICO形式分配,并授予代币持有者股份所有权和投票权。

然而,在上市不久之后,它就遭到了黑客的恶意攻击,三分之一的资金被盗取。更值得一提的是,当时以太币总供应量的14%都被锁定在DAO中。毋庸置疑,这对于羽翼未丰的Ethereum网络来说是一场灾难性事件。

在经过紧急磋商之后,决定将Ethereum硬分叉为两条链。其中一条分叉中恶意交易被逆转以恢复资金,也就是现在的“Ethereum Blockchain(以太坊区块链)”。另一条分叉中的交易没被逆转保持不变,也就是现在“Ethereum Classic(以太坊经典)”。

此事件让我们明确意识到此技术中所存在的风险,也让我们体会了将大量财富托付于自治代码可能的后果。同时向我们展示了在开放式环境中达成集体决策所具有的挑战。倘若忽略漏洞,则The DAO通过互联网完美诠释了智能合约在实现去中心化协作(大规模网络中)方面的潜力。

第二章—Ether的产生背景

如何创建新的Ether

之前我们提到过Minging(挖矿)。如果你了解Bitcoin,那么你就会知道挖矿过程对于区块链的安全和更新多么重要。而Ethereum与Bitcoin的挖矿原一样都是根据协议对挖矿者进行Ether奖励。

Ether的供应量

截止2020年2月,Ether的总供应量约为1亿1千万。 

与Bitcoin不同,Ethereum的代币发行计划在创建前并没有被设定好。Bitcoin通过限制供应量并降低新面世代币的数量来保护价值。而Ethereum则通过代币为去中心化应用程序(DApps)提供基础。目前尚未确定何种类型的代币发行计划适合此目的,所以Ethereum是无期限的。

Ethereum挖矿的运行机制

Minging(挖矿)对于网络安全至关重要。它确保了区块链可以公平合理的更新,并允许了网络在无单一决策者的情况下运行。在挖矿活动中,节点的子集(也就是矿工)奉献计算能力来解决加密难题。

他们实际上就是将一组未决交易及其数据进行哈希运算。为了使区块有效,哈希值必须低于协议的规定值。如果一次操作失败,他们可以修改某些数据进行再尝试。

由于存在竞争,所以矿工必须以最快速度完成哈希运算,通常使用哈希率来衡量矿工的能力。网络上的哈希算力越高,则加密难题越难解决。当矿工找到真正的解决方案后,他还需向网络中广播,以便于其他参与者对有效性进行验证。

高速连续的哈希运算费用是昂贵的。当矿工在为网络安全付出努力时,就会获得奖励。而奖励则是区块中所有的交易费用。他们也接收新生成的Ether(在撰写本文是为2ETH)。

Ethereum Gas简介

还记得之前提到过的“ Hello, World!”合约么?该程序非常简单,且计算费用也不高。并且Ethereum生态系统中的任何人都可运行。

而这就引出了以下问题:当成千上万人都在运行复杂合约时网络将会怎样?如果某个人将他的合约设定为持续循环的相同代码,且每个节点都需要无限期运行它又会是怎样?很显然,这些过程占用了很大资源,并且可能会导致整个系统崩溃。

幸好Ethereum引入了gas来规避这种风险。这就像汽车不能在无燃料的情况下行驶一样,合约也不能在没有gas的情况下运行。合约的运行则需要用户支付一定数量的gas。如果没有足够的gas,则合约将终止。 

其实,这就是一种收费机制。将概念应用到交易上就是:矿工的主要动机是收益,因此他们将忽略费用较低的交易。

但请记住Ether与Gas是不一样的。Gas平均价格的波动很大程序上取决于矿工。当你进行交易时,就要使用ETH来支付gas。并且也会如Bitcoin在收费方面一样:如果网络拥挤且很多用户都在试图交易的话,gas的价格就会上涨。相反,如果网络中没有太多活动,价格就会下降。

虽然gas的价格会改变,但每次操作所需的gas量是固定的。也就是说,复杂的合约将比简单的交易消耗更多的gas。因此,gas就成为了算力的度量基础。并以此来确保系统将根据用户所使用的Ethereum资源量来收取合适的费用。

因为Gas只是Ether的很小一分部。所以,我们使用更小的单位“gwei”来表示。1gwei相当于十亿分之一的Ether。

简单来说,你的确可以运行一个长时间循环的程序,但此操作很快将变得非常昂贵。这样Ethereum中的节点就可以缓解网络中的垃圾信息了。

Gas平均价格随时间推移的变化(单位gwei)。来源:Etherscanio

Gas price和gas limits

假设Alice正在进行一笔交易。她会计算出想要为单位gas支付的费用(可以通过ETH Gas Station),也就是gas price。也许她会设置较高的价格以此来激励矿工尽快处理她的交易。 

同时她也会设置一个gas limit,用来自我保护。合约出现问题时,会使得所消耗的gas要多于她所计划的。而gas limit的作用就是确保,当设置gas量消耗完时,操作将停止。那时合约也会失效,且Alice最终支付的金额不会超过她最初所允许的支付额。

乍一看,这似乎很难理解。但其实就是告诉你,可以手动设置愿为单位gas支付的费用(gas Price),以及该笔交易可消耗的最大gas量(gas limit)。而大多数的钱包都会为你处理该问题。同时gas price决定矿工打包交易的速度,而gas limit则决定你愿意为此交易支付的最多gas量。

Ethereum区块的挖矿时间

将一个新区块链添加到区块链中的平均时间为12-19秒。而如果网络转变为Proof of Stake(权益证明),那么速度将会更快。

什么是Ethereum代币

Ethereum最大的魅力在于可允许用户在链上创建自己的资产,并且这些资产可以像Ether一样进行存储和转移。开发者们可以在智能合约中对资产管理规则以及代币参数进行设定。其中包括代币发行量,代币发行机制,是否可被分割,是否可替换等。在Ethereum上创建的代币都需要符合ERC-20技术标准,因此这些代币也被称为ERC-20代币。

代币的功能性为创新者们提供了更广的试验平台,允许他们在金融和技术等前沿领域进行更多的尝试。从发行应用内统一货币,再到生产以实物资产为基础的独特代币,都具有很大的设计灵活性。未来的应用前景将会更加广泛,且一些最佳用例也会慢慢浮现。

第三章—走进Ethereum

如何购买ETH?

如何使用信用卡/借记卡购买ETH?

Binance允许你通过浏览器无缝购买ETH。操作步骤:

  1. 登陆数字货币买卖门户。 
  2. 选择你想要购买的加密货币(ETH),以及用来支付的货币。
  3. 登录Binance(或注册账户)。
  4. 选择支付方式。
  5. 按照提示输入卡片信息,并完成身份验证。
  6. 搞定!你的币安账户里面将会存入您所借贷的ETH。

如何在P2P市场购买ETH

你也可以在P2P市场中购买和卖出ETH。通过币安移动应用程序,您可以从其他用户那里购买代币,操作步骤:

  1. 打开APP,然后登陆或注册账户。
  2. 选择“一键换币“,然后点击界面左上角的“购买”。
  3. 在弹出的交易类型中选择一种,然后点击“购买 “。
  4. 你可以使用其他数字货币支付(点击“数字货币支付”)或使用法币支付(点击“法币支付”)。 
  5. 接着,系统会要求你指定支付方式。
  6. 选择“购买ETH”。
  7. 此时,你需要付款。完成后,点击“标记为已付”并确认。
  8. 待卖方把BTC发送给你,交易即告完成。

购买ETH后有什么用

Bitcoin不同的是,Ethereum并非仅用于加密货币网络。它还可以用来构建去中心化应用程序,而Ether也作为可贸易代币,成为了该生态系统的燃料。因此,Ether的主要作用则是为Ethereum网络提供动力。

不仅如此,Ether也可与其他传统货币一样,用来购买商品和服务。

接受Ether作为付款方式的零售商热度图。

ETH的功能

人们可以使用Ethereum的原生货币ETH来作为数字货币或抵押品。也有一些人将ETH视为与Bitcoin一样的价值存储手段。但它又与Bitcoin不同,因为Ethereum区块链的高度可编程性赋予了ETH更多效用。也就意味着Ether成为了去中心化金融应用程序,去中心化市场、交易所、游戏以及其他应用的生机之源。 

假如ETH丢失会怎样

ETH并不基于任何银行,也就说你将对自己的资金负责。你可以将代币存储到交易所,又或者自己的钱包中。但请记住,在使用钱包进行自我保管时,一定要将助记词妥善保管,以便于在丢失钱包的访问权时进行资金恢复。

Ethereum交易是否可逆转

一旦数据被添加到Ethereum区块链,则几乎无法更改或移除。这就意味着交易被固定前(发出交易指令前),一定要对发送资金的目标地址和金额进行仔细检查。在发送较大金额时,你最好先向该地址中发送少量资金来进行地址确认。

由于智能合约遭到黑客攻击,迫使Ethereum在2016进行了硬分叉,以便逆转恶意交易。但此种逆转情况也只是特殊事件的极端措施,而并不是常态。

Ethereum交易是公开的

所有被添加到Ethereum区块链上的交易都是公众可见的。即使Ethereum地址上并没有显示真实姓名,Observer(观察者)也会通过其他方法来确定你的身份。

利用Ethereum获益

由于ETH并不是一种稳定的资产,所以它既可能给你带来收益,也可能带来损失。一部分人选择长期持有Ether,并押注该网络在将来会成为全球性的可编程结算层。另一部份人则选择使用Ether来与其他Altcoins(山寨币)进行交易。而这两种策略也都存在各自的金融风险。

而作为去中心化金融(DeFi)活动的主要支柱,ETH还可以用来放贷、作为贷款的抵押、铸造合成资产,又或者在将来用作押注等。

有些投资者可能会长期投资Bitcoin(比特币),且他们的投资组合中并不包含其他数字资产。而有些投资者则更加灵活,会在投资组合中混合ETH和其他山寨币,又或者是将一定比例的资金用于短期交易(例如,日内交易或摆动交易)。市场中并不存在一体通用的赚钱方式,所以每个投资者都应该根据自己的实际情况来选择最适合自己的策略。

应如何存储ETH

目前市场上有很多种方式来存储代币,而每种方式也都存在它的利弊。正如其他涉风险事物一样,最好的选方式就是在可用选项中进行多元化选择。

通常,存储解决方案要么是为托管,要么为非托管。托管解决方案意味着你可以将资金委托给第三方保管(例如交易所)。此时,你就需要登录托管方平台来进行加密资产交易。

非托管解决方案则正好相反——自己使用加密货币钱包来掌管资金。加密钱包不会像物理钱包那样装入硬币,而是提供了允许你访问区块链上资产的加密秘钥。请谨记:在使用非托管钱包时,务必要备份好你的助记词!

如何向Binance账户充值ETH

如果你想把自己的Ether存入Binance,需遵循以下步骤:

  1. 登录Binance账户(或注册Binance账户)
  2. 进入现货账户并点击充值。
  3. 在代币列表中勾选ETH。
  4. 选择主网并向该地址中发送ETH。
  5. 操作完成。当交易被确认后,Ether就会存入你的Binance账户。

如何利用存入Binance中的ETH

你需要将ETH存入Binance账户,以便于进行各种交易活动。在Binance上存储ETH既简单又安全。并且Binance生态系统还允许你通过贷款、持仓返利、空投促销以及抽奖活动等方式来赚取收入。

如何从Binance中提取ETH

如果你想讲Binance账户中的ETH提取出来,则需要遵循以下步骤:

  1. 登录Binance。
  2. 进入现货账户并选择提现。
  3. 在代币列表中勾选ETH。
  4. 选择主网
  5. 输入收款地址和金额
  6. 通过电子邮件认证。
  7. 操作完成。在交易被确认之后,ETH就将存入你提供的地址当中。

如何将ETH存储到Ethereum钱包中

如果你想将ETH存储到自己的钱包中,那么就有两种选择:Hot Wallet(热钱包)和Cold Wallet(冷钱包)。

Hot Wallet(热钱包)

以某种方式与互联网连接的加密货币钱包被称为热钱包。通常会是一个移动或桌面的应用程序,并允许你查看余额,或进行代币的发送与接收。由于热钱包与网络是连接的,所以很容易受到攻击,但它却非常便于人们的日常使用。Trust Wallet就一种支持多种货币的移动钱包。

Cold Wallet(冷钱包)

冷钱包则是一种不暴露在互联网当中的加密钱包。由于不存在网络攻击向量,所以被攻击的几率就明显降低了。然而冷钱包却不如热钱包那样便携易用。硬件钱包和纸钱包都属于冷钱包。而现在很少人会使用过时且具有风险的纸钱包了。

以太坊的标志和图案是什么样的?

Vitalik Buterin设计了最初的以太坊图案。它由两个旋转的求和符号Σ(希腊字母中的Sigma)组成。而以太坊最终的标志(基于此图案)是由菱形(称为八面体)围绕,由四个三角形包围。 与其他加密货币类似,以太坊也是由标准的Unicode符号组成,因此在应用程序和网站中可以轻松显示以太坊的价格。 正如美元使用符号$表示一样,以太币使用的符号为Ξ。

第四章—可扩展性、ETH2.0和Ethereum发展前景

扩容能力是什么?

简单的来说,可扩展性(scalability)就是对系统增长能力的衡量。就比如,在计算中网络或服务器可以通过不同方法扩容来处理更多的需求。

加密货币中的可扩展性指的是区块链可扩展容那更多用户的程度。其中的更多用户意味着区块链将涉及更多的操作和交易竞争。

Ethereum扩容必要性

Ethereum的拥护者认为互联网的下一次迭代将会在该平台上建立。而那时的Web3.0将带来一种分布式拓补结构,不再需要中间商、会更注重隐私性,并最终转向数据的自我拥有。而这些基础属性将通过分布式存储/通讯协议和智能合约式的分布式计算来构建。

而为了实现之这一目标,Ethereum需要在不损害去中心化的前提下,大规模提升网络处理交易的能力。目前,Ethereum并未像Bitcoin那样通过限制区块大小来限制交易量。而只是向区块中纳入了gas limit(单一区块中可容纳最大gas量)。

比方说一个区块的gas limit为100,000gwei,则当向该区块中提交10笔gas limit为10,000,又或者是2笔gas limit为50,000的交易时,任何其他的交易都需要等待下一个区块。

对于每个人都在使用的系统来说,这并不理想。而且当未决交易数量超过区块可用空间,就会很快出现积压。同时gas price价格也将上涨,此时人们就不得不支付更高价格来使自己的交易被优先处理。也就说繁忙的网络会使得特定用例中的操作变得非常昂贵。

当初风靡一时的CryptoKitties游戏则是Ethereum网络局限性很好的示例。2017年,基于Ethereum的游戏CryptoKitties吸引了大量用户在网络中进行交易来进行虚拟猫(代表不可替换代币)的繁殖。而迅速的普及也使得待处理交易火箭式上升,最后导致了网络的极度拥堵。

Blockchain可扩展性三角困局

从表面上来看只要提高区块的gas limit就可以缓解所有可扩展性问题。也就是上限越高,网络在固定时间范围内就可处理更多的交易,对吧?

遗憾的是,除非牺牲Ethereum的某些关键特性否则这是不可行。Vitalik Buterin提出了Blockchain Trilemma(区块链不可能三角—如下图)来解释区块链必须达到的微妙平衡。


区块链三角困局:扩容(1)、安全(2)和去中心(3)。

上述三个特性中只能取其二。例如Ethereum和Bitcoin等区块链都将安全性和去中心化放在了首位。它们的共识算法确保了网络的安全性,但其中的网络是由成千上万的节点组成,所以降低了网络的可扩展性。由于接收和验证交易都是由众多节点来完成的,所以相比于中央式方案要慢的多。

另一种情形则是移除区块的gas limit,这样的网络则同时具有安全性和可扩展性,但不再是去中心化。 

此时单一区块中将包括更多的交易,最后形成更大的区块。而网络中的节点扔需定期下载和广播区块,所以就需要大量的硬件基础。也就是说,当gas limit提高时,节点验证、存储以及广播区块的难度将会增加。

在此过程中无法更上节奏的节点将会退出。假如此种方式持续下去,则仅会有少部分强大的节点幸存,而这就导致了系统的更加中心化。最后你会得到一个安全且可扩展的区块链,但并会去中心化。

最后一种情况是,区块链选择了去中心化和可扩展性。也就是网络牺牲了共识算法来实现更快的速度和去中心化,而结果却是安全性降低了。

Ethereum的交易处理率

最近这些年,Ethereum的TPS(每秒交易量)很少会超过10。对于一个计划成为“世界计算机”的平台来说,这个数字低的惊人。

可扩展性解决方案一直都是Ethereum发展过程中重要部分。而Plasma就是解决方案的一种。该解决方案旨在帮助Ethereum及其他区块链网络提高效率。

Ethereum2.0

Ethereum的确具有很大潜能,但并不能掩饰其存在的局限性。之前我们也已经讨论过在可扩展性方面的局限性。简言之,如果Ethereum想成为新经济体强有力的支柱,则它就必须每秒处理大量的交易。而鉴于网络的分布式特性,导致该问题很难解决,而且多年来Ethereum的开发者们也致力于该难题解决方案研发。

一方面,为了保持网络的去中心化特性,必须设置一定限制。然而当运行节点的操作条件越高,网络中的参与者就会越少,而网络也将逐渐中心化。所以提高Ethereum处理交易的能力时节点的负担就会增加,从而威胁到网络的完整性。

Ethereum以及其他PoW(工作量证明)加密货币的另一弊端是,它们都是资源密集型。也就说为了能在区块链上成功添加区块,就必须进行挖矿。而此种区块添加方式则需要大能耗快速计算。

为了解决上述局限性,遂提出了一系列升级计划,统称为Ethereum2.0(或ETH2.0)。一旦全面实施,则将会有效提升网络的性能。

Ethereum分片

通过以上理解我们知道,每个节点都会存储区块链副本。而每个节点也都将随着区块链的变化而更新,这一过程将消耗巨大宽带和可用内存。

而如果使用名为“Sharding(分片)”的方法,则该过程就可避免。通过名字就知道该过程是将网络划分为不同节点子集,也就是所谓的shards(分片)。每一个分片都将处理自己的交易和合约,同时也会按照要求与其他网络的分片进行通信。并且由于每个分片都将独立验证,所以它们不需要存储其他分片的数据。


2020年3月的网络VS实施分片的网络

分片”是一种复杂的扩容方式,需要大量的设计和实施工作。然而,倘若成功实施,则网络的吞吐能力将会以数量级提升。

Ethereum Plasma简介

Ethereum Plasma是一种链下扩容解决方案。顾名思义,也就是将交易脱离区块链以便于提高网络吞吐量。此时的它就与侧链和支付通道有些相似。

通过Plasma,侧链就可以与Ethereum区块链主链锚定,并保持一定程度的通信。它们的运作大体上是独立的,也就是用户依靠主链来解决争端,靠侧链来完成他们的活动。

Ethereum扩容成功的关键在于减少节点必须存储的数据量。Plasma方案则允许开发者在主链的智能合约中规定“子链”的一些规则。之后就可以将主链上昂贵的操作(构建应用或处理交易)转移到“子链”完成。

以太坊rollup介绍

Rollups类似于Plasma,他们都是将交易从主链中脱离,以此实现以太坊的扩容。那么,他们都是如何运作的呢? 

通过在主链上的单个合约中,持有二级链上的所有资金,并保持该链当前状态的加密证明。二级链的运营者在主网合约中存入保证金,并确保仅将有效的状态转换提交给主网合约。基于当前的思路,由于该状态是在链下维护的,因此无需将数据存储在区块链上。但是,Rollups与Plasma的主要区别是将交易提交给主链的方式。Rollups使用特殊的交易类型,这种方式可以汇总海量交易,并将其捆绑在一起成为特殊的区块,称为Rollup区块。   

有两种不同类型的rollup:Optimistic和ZK Rollup。两者都通过不同方式保证状态转换的正确性。 

ZK Rollups 使用一种被称为零知识证明的密码学验证方式进行交易提交。其中一种较为特别的方法被称为zk-SNARK。我们无法得知它工作的具体细节,但是会明确它的确被Rollups所使用。这是一种可以让互补认同的双方互相证明自己所拥有特定的信息,而又不不需要互相透露该信息是什么的方式。 

就ZK Rollups而言,这种信息是提交到主链的状态过渡。这样做的一个很大好处是,这个过程几乎会立即发生,而且几乎没有机会提交损坏的状态。

优化滚动 牺牲了某些可调整性以获得更大的灵活。通过使用一个名为优化虚拟机(OVM)的虚拟机,这些虚拟机允许智能合约在二级链上运行。 另一方面,这种方式不会有加密证据提交给主链,证明该状态过渡是正确的。 为了缓解这个问题,会稍微将状态进行延迟,支持用户质疑和否定提交到主链的无效区块。 

Ethereum权益证明机制(POS)

权益证明(PoS)是工作量证明(PoW)替代方案,用来验证区块。在PoS系统中新区块并不是通过挖矿来获得,而是通过铸造(有时也被称为锻造)来完成。矿工不再需要通过算力来竞争。现在的候选区块是由周期性随机选择出的节点(验证者)来完成验证的。如果操作正确,则该节点将会获得区块中所有的交易费用,有时也可能根据协议获得区块奖励(增发代币)。

由于PoS过程中不涉及采矿,所以它被认为是一种环境友好型方案。验证者消耗的能量相比于矿工要少的多,结果就是可以在消费级硬件上铸造区块了。

Ethereum2.0的升级过程中,会通过名为Casper的更新将PoW变革成PoS。目前确切的日期还未知,但第一次迭代可能会在2020年推出。

Ethereum Staking(权益质押)

在PoW协议中,网络的安全性由矿工来保证。其中的矿工并不会作弊,因为作弊只会白白浪费电力而并不会获得任何奖励。在PoS中并不存在此种博弈关系,而是通过其他加密经济学措施来确保网络安全。

PoS中防止不诚实行为的不是能源浪费风险而是资金损失顾虑。验证者(Validator)需要抵押一定数量的代币才可能获得验证权。如果节点试图作弊,则他所质押的代币(一定量的Ether)将会被销毁,而如果该节点无响应或脱机则质押代币也将逐渐耗尽。

Ethereum中所需ETH质押量

想获得验证权的最低质押量为32ETH。此高额设定可有效的防止51%攻击。

Ethereum中ETH的质押收益率

收益率的大小并不固定。因为收益不仅取决于你抵押的代币量,还受到网络中总ETH质押量以及通货膨胀率的影响。粗略估算,目前年收益率大约为6%。当请记住,这个数字也只是现在,并不代表未来。

质押锁定期

想要取回ETH时,就会被放入到一个取款队列。如果不排队的情况下,最短的赎回时间为18个小时,且时间会根据当时正在取款的人数动态调整。

质押安全性

因为你是负责网络完全的验证者,所以需要将各种风险考虑在内。如果验证节点长时间离线,则将会损失很大一部分押金。而当你的押金低于16ETH时,就被会被移出验证者集合。

还存在另一个系统性风险因素。权益证明机制(PoS)之前未在大规模网络上实施,所以不能保证它不会出现崩溃。软件总是存在缺陷和漏洞的,而且可能会造成毁灭性影响,尤其是质押价值达到数十亿美元的时候。

第五章—Ethereum和去中心化金融(DeFi)

什么是去中心化金融(DeFi)?

去中心化金融(DeFi)是指一种将金融应用程序去中心化的运动。DeFi将在公有,开源的区块链上构建,并允许所有的网络用户免费访问,也就是非许可性的。而正是由于这一特性,可能会吸引数十亿人加入到这个全新的世界金融体系当中。 

在DeFi生态系统当中,用户们可通过P2P网络和去中心化应用程序(DApps)与其他用户和智能合约进行交互。DeFi的最大优势在于提供众多功能的同时,仍保持用户享有资金的所有权。 

简言之,去中心化金融(DeFi)运动旨在构建一个全新的金融系统来摆脱目前体系中的限制。由于DeFi相对较高的去中心化程度和开发者基础,所以大多数应用都是在Ethereum上构建的。

去中心化金融(DeFi)的应用前景

大家都知道,Bitcoin的最大优点在于并需要任何中央机构来协调网络运作。倘若我们根据此理念来开发可编程应用程序将会是怎样?而这就是DeFi所形成的价值:没有中央协调机构,不会出现单点故障。 

之前提到过,DeFi的最大优势在于“开放访问”。世界上有数十亿人无法访问任何类型的金融服务。再试想一下,在没有任何金融保障的情况下,你该如何管理你的日常生活。目前就有几十亿人过着此种生活,而DeFi想要服务的对象就是这类人群。

去中心化金融(DeFi)是否会接管世界

之前所说的那些听起来都很不错,然而为什么DeFi还未在世界普及流行呢?其实,目前大多数DeFi应用程序都处在实验阶段,几乎难以使用且经常崩溃。而这也证明了此生态系统的框架设计是非常困难的,尤其是在分布式的开发环境中。

对于软件工程师、博弈理论家、机制工程师以及其他设计者来说解决DeFi生态系统中存在的挑战是一条漫长的道路。所以,DeFi应用程序是否会接管世界还未可知。

现存的去中心化金融(DeFi)应用

目前去中心化金融最知名的用例便是稳定币(Stablecoins)。本质上来讲,稳定币是一种与现实资产(例如法定货币)挂钩的区块链代币。比方说BUSD,该货币就是与USD(美元)挂钩。而由于这些代币都是基于区块链的,所以在存储和转换方面都非常方便。

在借贷方面的应用也很受欢迎。目前市场中有很多P2P服务允许你进行资金出贷来赚取利息。其中Binance Lending(币安宝)就比较流行。操作方式很简单,你只需要将资金存入借贷钱包,第二天赚取利息了。

DeFi应用程序最令人兴奋的是,它几乎可以应用到任何领域。它可以渗透到各种类型的P2P和去中心化市场中,允许用户进行加密收藏品以及其他数字物品的交易。它们还可以创造合成资产,也就说任何人可以为任何有价值的物品创造市场。现在也开始慢慢进入预测和衍生品市场。

Ethereum上的去中心化交易所(DEXs)

去中心化交易所(DEX)允许交易直接在用户钱包之间发生。当你在Binance(中心化交易所)中进行交易时,首先需要将资金发送到平台,之后再通过内部系统进行交易。

而去中心化交易所(DEX)则不同。你可以通过智能合约来完成钱包与钱包之间的交易,以此来避免交易所被黑客攻击等风险。

Binance DEX、Uniswap、Kyber Network、IDEX等都是一些比较知名的去中心化交易所。并且为了达到较高的安全性,一些交易所甚至允许你在硬件钱包中完成交易。


中心化交易所VS去中心化交易所

我们用上图来解释中心化交易所和去中心化交易所之间的区别。在左图中,你可以看到Binance介于交易双方之间。所以,当Alice想要使用代币A与Bob交换代币B的时,他们首先要将资产存入到交易所中。完成交易后,Binance会按理重新配置他们的账户余额。

右边是一个去中心化交易所。你会注意到,在交易中并不存在第三方。交易时Alice的代币通过智能合约直接转换成Bob的代币。此种方式下,合约将会自动执行,且无需信任中间机构。

截止2020年2月,DEXs的使用量稳步上升。然而交易量与中心化交易所相比还相差甚远。但是,如果开发者和设计者们充实DEX的用户体验,那么它必定会更受欢迎,且有朝一日与中心化交易所抗衡。

第六章—走进Ethereum网络

什么是Ethereum Node(以太坊节点)

“Ethereum node”是用来描述与Ethereum网络交互的程序的术语。以太坊节点可以是任何设备,从简单的移动手机钱包应用程序到存储整个区块链副本的计算机。

Ethereum网络中存在很多类型的节点,而每个节点也都已某种方式充当通讯站。

Ethereum node的工作原理

Ethereum不同与Bitcoin,并不存在单一的程序来作为参考实现。在Bitcoin生态系统中,“比特币核心(Bitcoin Core)”是主要节点软件,而再Ethereum黄皮书中则存在一系列的单独程序(但兼容)。目前使用最多的是Geth和Parity。

Ethereum full nodes(全节点)

如果你想要在Ethereum网络中独立验证区块链数据,那么就需要使用之前提到的软件来运行全节点(Full nodes)。

该软件会通过其他节点下载区块,并验证其中所包含的交易是否正确。软件还将运行所有已调用的智能合约,以确保你收到信息与其他节点相同。如果正常运行,网络中每个节点的设备上都会存有相同的区块链副本。

全节点对于Ethereum的运行至关重要。如果不存在遍布全球的众多节点,则网络将会丢失它的抗审查与去中心化特性。

Ethereum light nodes(轻节点)

全节点的运行允许你直接为网络的健康和安全做贡献。但是,全节点通常需要单独的机器来运行和维护。而对于无法运行全节点(或只是不想)的用户,轻节点则是更好的选择。

顾名思义,轻节点都是轻量级的——它们需要更少的资源且占用更小的空间。所以,可以在手机或手提电脑等轻便式设备上运行。然而这些代消耗也是有代价的——它们并不是完全的自给自足。也就说它们不是整链同步,因此就需要全节点来提供相关信息。

轻节点客户端在零售商、服务商以及用户中相当流行。目前已被广泛用于收付款领域中。

Ethereum挖矿节点

挖矿节点(Minging code)既可以是全节点客户端也可是轻客户端。Ethereum网络中“挖矿节点”这个术语的使用并不像在Bitcoin中那样的深入且广泛,但也还是用来识别那些参与者。

想要对Ethereum进行挖矿,就需要具备一些特殊的硬件。其中最常见的是构建矿机。用户通过矿机将多个(GPUs)链接起来进行高速哈希运算。

通常矿工有两种挖矿选择:一种是单独挖矿。单独挖矿意味着矿工独自工作来创建区块。如果成功,就会独享挖矿奖励。另一种则是加入矿池。当矿工加入矿池后,他们就将自己的算力与其他人合并起来。这样就可以更快地生成区块,但同时也需要与矿池中的其他成员分享奖励。

Ethereum节点的运行条件

区块链一个最重要的特性就是开放性。这就意味着任何人都可以运行Ethereum节点,并完成交易和区块的验证工作。

与Bitcoin一样,也有很多企业提供了即插即用的Ethereum节点。此种设备对于那些只想启动并运行单一节点的人们来说非常便利,单弊端是需要为此便利支付额外费用。

之前提到过,Ethereum中存在很多类型的节点客户端,诸如Geth和Parity。如果你想要运行自己的节点,就需要掌握这些应用程序的安装方法。

除非你要运行名为“归档节点”的特殊节点,否则消费级的便携式计算机就足够应付Ethereum的全节点运行了。但最好不要日常工作设备,因为节点运行会降低电脑速度。 

运行节点时最好保证设备长期在线。倘若节点离线,那么再次联机时就可能花费大量时间来进行同步。因此,最好是选择低成本且易于维护的设备。例如,在Raspberry Pi运行轻节点。

Ethereum挖矿条件

不久之后Ethereum网络就将过渡到PoS机制,所以Ethereum挖矿不再是最安全的长期投资方式。也就说明,转变完成之后,Ethereum的矿工们将面临转移到其他网络或卖掉设备的事实。

但目前此种转变尚未完成,所以如果想参与到Ethereum挖矿中,则需要持有特殊的硬件,例如GPUs或ASICs等。想要收益可观,那么定制矿机和廉价电力环境则是必备的。此外,你还需创建一个Ethereum钱包,并配置挖矿软件来使用。这一切都需要大量时间和资金,所以在进入该市场前,轻仔细考虑是否做好迎接各种挑战的准备。 

Ethereum ProgPoW解读

ProgPow代表Programmatic Proof of Work,是Ethereum挖矿算法Ethash的扩展。它使得GPU相比于ASICs更具竞争力。 

多年来,在Bitcoin和Ethereum社区中,抗ASIC一直是个饱受争议的话题。目前的Bitcoin网络中,ASIC已经成为一种主要的挖矿力量。 

Ethereum网络中,虽说存在ASICs,但并不是主流,大部分矿工仍在使用GPUs。然而,随着越来越多公司将Ethereum ASIC矿机引入到市场,此种状况很快会有所改变。然而ASICs到底存在什么问题呢?

一方面,ASICs会明显降低网络的去中心化。如果GPU矿机无法盈利,那就必须关闭它的挖矿操作,而此时算力只集中在少数矿商手中。此外,ASIC芯片的开发是相当昂贵的,只有少数的公司会具备此能力和资源。而此种现状可能会导致Ethereum的矿业集中在少数公司手中,形成一定程度的行业垄断。

自2018年以来,ProgPow的集成问题一直都是饱受争议。有些人认为它对于Ethereum生态系统是有益的,而也有一些人则表示它可能会导致硬分叉。随着PoS机制的到来,ProgPoW是否可在网络上实施将逐渐显现。

Ethereum的软件开发者

Ethereum网络与Bitcoin是一样的,都是开源 的。任何人都可以参与开发协议,或构建应用程序。而且,Ethereum开发者社区也是区块链领域中最大研发团体。

Andreas Antonopoulos,Gavin Wood的Mastering Ethereum,以及Ethereum.org的Developer Resource等资源都是新进开发者们很好的选择。 

Solidity简介

智能合约的概念是在20世纪90年代被首次提出,而目前在区块链领域中的应用却带来了一系列全新的挑战。2014年由Gavin Wood提出的Solidity已经成为Ethereum上智能合约开发的主要编程语言。语法与Java、JavaScript以及C++类似。

本质上来说,就是开发者可通过Solidity语言,来编写可分解为以太坊虚拟机(EVM)能够理解的指令代码。你可以通过Solidity GitHub来了解该语言的工作原理。

对于Ethereum开发者来说Solidity并不是唯一选择。还有一种比较流行的语言——Vyper(语法上与Python相似)。

本文链接地址:https://www.wwsww.cn/ytf/4869.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。