走进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相似)。