精通以太坊3:以太坊客户端

精通以太坊3:以太坊客户端

以太坊客户端是一种软件应用程序,他实现了以太坊协议规范,并通过点对点网络与其他以太坊客户端通信。如果遵从以太坊的参考规范并采用标准的通信协议,不同的以太坊客户端之间是可以实现交互的。尽管这些客户端是由不同的开发团队开发的,使用编程语言也不尽相同,但是他们都遵从相同的协议和规则。因此,他们可以在相同的以太坊网络上实现操作和交互。

以太坊是一个开源项目,它采用LGPL v3.0等协议开源所有主要客户端的源代码,可以免费下载,免费用于任何目的。开源的意义并不仅限于免费使用,这也意味着以太坊是由一个志愿者组成的社区所开发的任何人都可以提交自己的修改。

以太坊由被称为“黄皮书”的正式协议规范所定义

相比之下,比特币则没有任何正式的定义规范文档。比特币的标准来自于Bitcoin Core 这个参考实现的代码,而以太坊的协议规范是由一篇包含文字和数学公式的论文所定义的。这个标准协议,加上以太坊的改进提案,定义了以太坊客户端的标准行为。黄皮书会定期修订,以体现以太坊的升级。

拥有标准型协议的好处是存在多个独立开发但又可以互相交互的以太坊客户端。以太坊网络所运行的客户端的多样性比任何其他区块链都多,这也普遍被认为是一个优点。多个独立开发的客户端是防御网络攻击的绝佳方法。因为特定客户端实现策略的漏洞只会影响到那些要修补漏洞的开发者,别的客户端可以保证整个网络几乎不受影响地继续运行。

3.1以太坊网络

以太坊网络,

以太坊经典(Ethereum Classic),

Ella,

Expanse,

Ubiq,

Musicion

等都符合以太坊黄皮书定义的标准,都属于以太坊网络。

他们大多数在协议层兼容,但往往有一些特别的功能或属性,需要支持相关网络的节点运营者手动对以太坊客户端软件做出调整。因此,不是每一个客户端都能运行所有基于以太坊的区块链

当前以太坊协议六种主要实现:六种不同语言写成

Parity ,Rust

Geth,GO

cpp-ethereum,C++

pyethereum,Python

Mantis,Scala

Harmony,JAVA

3.2是否应该运行全功能节点?

以太坊网络的健康,弹性和防审查机制来源于大量独立运行和地理上分散的全功能节点。每一个全功能节点都可以帮助其他新加入网络的节点获取开始运行所需要的区块数据,全功能节点的另一个重要任务是为用户提供独立和权威的交易及合约验证。

然而,运行一个全功能节点需要消耗大量的硬件资源和网络带宽。全功能节点必须下载大约80–100GB的区块数据(截止到2018年9月)并保存在本地硬盘上。随着新的交易和区块的出现,以太坊区块数据每天都在快速增长。

进行以太坊开发工作不一定需要在以太坊主网上运行一个全功能节点。我们可以使用测试网络上的节点完成几乎所有开发相关的工作,测试网络上的节点将帮助你连接到一个更小的公共测试区块链。测试网络使用本地环境下的私有区块链(如:Ganache),或者使用基于云平台的以太坊客户端。

例如:服务提供商Infura提供的服务。

你也可以运行一个仅从远程调用以太坊的客户端,就是说,不在本地保存区块链数据,也不参与区块和交易验证。这样的客户端提供钱包功能,也可以创建并广播交易。远程客户端可以连接到现有的网络中,比如:你自己的全功能节点,公有链,公有或需要许可(PoA)的测试链,私有本地区块链

实际上·,人们经常使用,MetaMask,Emerald Waller,MyEtherWallet或MyCrypto这样的远程客户端在多个不通过网络之间进行切换。

尽管有一些微小差别,但“远程客户端”和“钱包’'这两个术语在以太坊的语境下是可以换用的。相比于钱包软件,远程客户端的区别在于他会对外提供API

不要·把以太坊远程钱包的概念与“轻客户端”的概念弄混

(后者类似于比特币网络中的简单支付验证,也就是SPV节点)。轻客户端通过验证区块头和Merkle proofs来验证交易是否存在于区块中并确认这些交易的有效性,这种验证过程给了他们可以媲美全功能节点的安全性。

相反,远程客户端通常不会验证区块头或交易,他们会完全信任帮助他们连接区块链的全功能节点,因此也丧失了安全性和匿名性。你可以自己运行一个全功能节点来解决这些问题。

3.3全功能节点的好处和弊端

选择全功能节点会给以太坊网络带来帮助,但也会带来相应成本。

好处:

》为以太坊的可扩展性和防审查机制提供更强的支持

》可信的验证所有交易

》可以跟以太坊主网上的所有合约进行交互,并不需要任何中间角色

》可以在以太坊主网上直接部署合约,并不需要任何中间角色

》可以在需要时离线查询(只读形式)区块链的状态,例如:账户,合约

弊端:

》需要大量并且不断增长的硬件以及带宽资源

》需要数小时甚至数天的时间才能完成区块链数据的同步

》必须持续地维护,升级,保持节点在线才能保证区块链数据的同步

3.4公共测试网络的好处和弊端

无论是否运行全功能节点,都应该考虑在公共测试网络上运行节点

好处:

》测试网络节点只需要同步和保存大约10G的区块链数据(2018年4月)

》测试网络节点的区块数据同步只需要数小时就能完成

》在测试网络上部署合约或发起交易所需要的以太币是没有成本的,(可以免费获取)

》测试网络是一个包含众多其他用户和合约的正在实际运行的公共区块链

弊端;

》不能测试网络上使用真实以太币。同样,无法在测试网络上检测安全性,因为并没有黑客对这些没有价值的交易和合约感兴趣

》有些针对主网功能的测试无法在测试网络上完成,例如:

交易手续费(虽然对于在主网上发送交易来说仍是必须的

在测试网络上往往会被忽略,因为gas是免费的

还有,测试网上不会出现主网上有时遭遇的拥堵情形

3.6本地区块链模拟器的好处和弊端

在很多测试情况下,最好的选择是启动单一实例的本地区块链

Ganache(正式名称是testrpc)是其中一种最为流行的本地区块链模拟器,可供开发者在没有其他用户参与的情况下进行测试。私有区块链跟公链一样,也有好处和弊端,但是有些许差异

好处:

》不需要同步区块链数据,几乎不会占用硬盘空间。开发者自己完成第一个区块的挖矿。

》不需要设法获得测试以太币,开发者在挖矿时可以给自己“奖励’'以太币并用于测试

》没有其他用户

》没有其他合约,只有你在私有区块链启动之后在其上部署的合约

弊端:

》没有其他用户意味着跟公链上有区别。私有区块链上并没有交易打包空间或交易打包顺序的竞争

》只有你一个人挖矿,意味着挖矿行为的可预测性,因此没有办法测试在公链上跟挖矿有关的一些场景

》没有其他合约意味着你必须部署测试所需要的所有依赖合约和各种合约库

》无法重建一些公链上的合约并使用它们在公链上的地址进行特殊测试

如:DAO合约

3.7运行全功能节点的硬件要求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值