03以太坊客户端

以太坊客户端是实现以太坊规范并通过对等网络与其他以太坊客户端进行通信的软件应用程序。不同的以太坊客户端如果符合参考规范和标准化通信协议,就可以互操作。虽然这些不同的客户端由不同的团队和不同的编程语言实现,但他们都“说”相同的协议并遵循相同的规则。

以太坊是一个_open source_项目,源代码可在开放(LGPL v3.0)许可下使用,可免费下载并用于任何目的。开源意味着不仅仅是免费使用。这也意味着以太坊由一个开放的志愿者社区开发,任何人都可以修改。

以太坊由名为“黄皮书”的正式规范定义。 这与比特币相反,比特币没有任何正式的定义。比特币的“规范”是比特币核心的参考实现,以太坊的规范定义在一篇结合了英文和数学的(正式的)规范的论文中。 这个正式的规范,除了各种以太坊改进建议之外,还定义了以太坊客户端的标准行为。随着对以太坊的重大改变,黄皮书会定期更新。

作为以太坊明确的正式规范的结果,以太坊客户端有许多独立开发的,可互操作的软件实现。以太坊在网络上运行的实现方式比任何其他区块链都多。

以太坊网络

存在各种基于以太坊的网络,这些网络很大程度上符合以太坊“黄皮书”中定义的正式规范,但它们可能或不能互操作。

在这些以太坊网络中有:Ethereum,Ethereum Classic,Ella,Expanse,Ubiq,Musicoin等等。虽然大多数在协议级别上兼容,但这些网络通常具需要以太坊客户端软件维护人员进行微小更改以支持每个网络的功能或属性。因此,并非以太坊客户端软件的每个版本都可以在每个以太坊区块链上运行。

目前,以六种不同语言编写的以太坊协议有六个主要实现:Go(Geth),Rust(parity),C ++(cpp-ethereum),Python(pyethereum),Scala(mantis)和Java(harmony)。

在本节中,我们将看看两个最常见的客户,Geth和Parity。我们将学习如何使用每个客户端启动一个节点,并探索他们的一些命令行和应用程序编程接口(API)。

我应该运行一个完整的节点吗?

区块链的健康,弹性和抗审查取决于拥有有多少独立运营和地理上分散的完整节点。每个完整节点都可以帮助其他新节点获取块数据以引导其操作,并为运营商提供对所有交易和合约的权威和独立验证。

但是,运行完整的节点会导致硬件资源和带宽的巨大成本。完整的节点必须下载超过80GB的数据(截至2018年4月;取决于客户端)并将其存储在本地硬盘上。随着新的交易和区块的添加,这种数据负担每天都会迅速增加。完整节点的硬件要求 中有关于此主题的更多信息。

在以太坊开发中,运行在活跃网络(主网)上的完整节点不是必需的。你可以使用_testnet_节点(它存储小型公共测试区块链的副本),或本地私有区块链(参见 [ganache]),或服务提供商提供的基于云的以太坊客户端(参见 [infura]),做几乎任何事。

你还可以选择运行轻量级客户端,该客户端不会存储区块链的本地副本或验证块和交易。这些客户端提供钱包的功能,并可以创建和广播交易。

轻量级客户端可用于连接到现有网络,例如你自己的完整节点,公共区块链,公开或许可的(PoA)测试网或私有本地区块链。在实践中,你可能会使用轻量级客户端,如MetaMask,Emerald Wallet,MyEtherWallet或MyCrypto作为在所有不同节点选项之间切换的便捷方式。

尽管存在一些差异,术语“轻量级客户端”和“钱包”可以互换使用。通常,轻量级客户端除了提供钱包的交易功能外,还提供API(如web3js API)。

不要将以太坊中轻量级钱包的概念与比特币中简化支付验证(SPV)客户端的概念混淆。SPV客户验证区块头并使用merkle证明来验证区块链中是否包含交易。以太坊轻量级客户端通常不验证区块头或交易。他们完全信任由第三方运营的完整客户端,让他们通过RPC访问区块链。

完整节点的优点和缺点

选择运行一个完整的节点可以帮助各种基于以太坊的网络,但也会给你带来一些温和的或适中的成本。我们来看看一些优点和缺点。

优点:

  • 支持基于以太坊的网络的弹性和抗审查。

  • 权威性验证所有交易。

  • 可以与公共区块链上的任何合约进行交互(无需中介)。

  • 如有必要,可以离线查询(只读)区块链状态(账户,合约等)。

  • 可以在不让第三方知道你正在读取的信息的情况下查询区块链。

  • 可以直接将自己的合约部署到公共区块链中(无需中介)。

缺点:

  • 需要大量且不断增长的硬件和带宽资源。

  • 需要几个小时或几天才能完成第一次初始下载的同步。

  • 必须维护,升级并保持联机才能保持同步。

公共测试网的优点和缺点

无论你是否选择运行完整节点,你可能都需要运行公共testnet节点。我们来看看使用公共测试网的一些优点和缺点。

优点:

  • 测试网络节点需要同步并存储少得多的数据,根据网络大小约为10GB(截至2018年4月)。

  • 测试网络节点可以在几个小时内完全同步。

  • 部署合约或进行交易需要测试ether,它没有价值,可以从几个“faucet”免费获得。

  • Testnets是与其他许多用户和合约共享的区块链,运行“live”。

缺点:

  • 你不能在测试网上使用“真实”的钱,它以测试ether运转。

  • 因此,你无法针对真正对手进行安全性测试,因为没有任何风险。

  • 公共区块链的某些方面无法在testnet上真实地测试。例如,交易费虽然是发送交易所必需的,但由于gas是免费的,因此不需要在测试网上考虑。测试网不会像公共网络那样经历网络拥塞。

本地实例(TestRPC)的优点和缺点

对于许多测试目的,最好的选择是使用 testrpc 节点启动一个实例私有区块链。TestRPC创建一个本地私有区块链,你可以与之交互,而无需任何其他参与者。它分享了公共测试网的许多优点和缺点,但也有一些差异。

优点:

  • 不同步,磁盘上几乎没有数据。你自己挖掘第一块。

  • 无需测试ether,你可以将挖矿奖励“奖励”给自己,用于测试。

  • 没有其他用户,只有你。

  • 没有其他合约,只有你启动后部署的合约。

缺点:

  • 没有其他用户意味着它不像公共区块链一样。没有交易空间或交易排序的竞争。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值