5:以太坊网络的连接
以太坊网络
分布式, 在共识的基础上由参与节点维护和保护区块链的点对点网络。请参阅挖矿。
以太坊网络统计
EthStats.net 是以太坊网络实时统计的仪表板。该仪表板显示重要信息,例如当前区块,哈希难度,天然气价格和天然气支出。网页上显示的节点只是网络上实际节点的选择。任何人都可以将他们的节点添加到EthStats仪表板。Github上的Eth-Netstats README描述了如何连接。
EtherNodes.com 在以太网主网和现代测试网上显示节点数量和其他信息的当前和历史数据。
Distribution of client implementations on the current live network : 以太链的实时统计.
公有链,私有链和联盟链
今天的大多数以太坊项目都依靠以太坊作为公共区块链,该区块链可以接入更多的用户,网络节点,货币和市场。然而,通常有理由选择私人区块链或联盟区块链(在一组受信任的参与者中)。例如,许多垂直行业的公司(如银行业务)都希望以太坊成为自己的私人区块链的平台。
以下是博客文章“公共和私人区块链”的摘录,其中解释了基于权限的三种区块链之间的区别:
公开区块链:公开区块链是世界上任何人都可以阅读的区块链,世界上任何人都可以发送交易,并希望在他们有效的情况下将其包括在内,并且世界上的任何人都可以参与共识流程 - 流程用于确定添加到链中的块以及当前状态。作为集中或准中央信任的替代品,公共区块链通过隐含经济学得到保护 - 经济激励和使用机制的密码验证相结合,例如工作证明或股权证明,遵循一般原则,即某人可以拥有的程度共识过程中的影响力与他们可以承担的经济资源的数量成正比。这些区块链通常被认为是“完全去中心化的”。
联盟区块链:联盟区块链是一个区块链,其共识流程由预先选定的一组节点控制;例如,可以想象一个由15家金融机构组成的联盟,每个联盟都运营一个节点,其中10个必须签署每个区块才能使区块有效。阅读区块链的权利可能是公开的,或者仅限于参与者,并且还有混合路线,例如区块的根哈希值与API一起公开,允许公众成员进行有限数量的查询取回区块链状态某些部分的密码证明。这些区块链可能被视为“部分去中心化”。
私有区块链:完全私有区块链是区块链,写权限集中在一个组织中。读取权限可能是公开的或限制在任意范围内。可能的应用包括单个公司内部的数据库管理,审计等,因此在许多情况下公众可读性可能不是必要的,但在其他情况下,需要公共可审计性。
虽然这些私有/联盟区块链可能与公有区块链没有任何关系,但他们仍然通过投资以太坊软件开发来为整个以太坊生态系统做出贡献。随着时间的推移,这将转化为软件改进,共享知识和就业机会。
如何连接
Geth不断尝试连接到网络上的其他节点,直到它具有对等点。如果您的路由器上启用了UPnP或在面向Internet的服务器上运行了以太网,它还会接受来自其他节点的连接。
Geth通过称为发现协议的东西找到同行。在发现协议中,节点彼此闲聊以找出网络上的其他节点。为了最初开始,geth使用一组引导节点,其终点记录在源代码中。
检查连接和ENODE ID
要检查交互式控制台中客户端连接的对等点的数量,net模块有两个属性,可以为您提供关于对等点数量以及您是否是侦听节点的信息。
要获得有关连接的对等方的更多信息(如IP地址和端口号,支持的协议),请使用admin对象的peers()函数。admin.peers()返回当前连接的对等体列表。
要检查geth使用的端口并找到您的enode URI,请执行以下操作:
加快区块链的下载速度
当您启动以太坊客户端时,以太坊区块链会自动下载。下载以太坊区块链所需的时间可能因客户端,客户端设置,连接速度和可用对等点的数量而异。以下是更快速获取以太坊区块链的一些选项。
使用geth
如果您正在使用geth客户端,则可以采取一些措施加速下载以太坊区块链的时间。如果您选择使用--fast标志执行以太坊快速同步,则不会保留过去的事务数据。
在执行全部或部分正常同步操作后,您不能使用此标志,这意味着在使用此命令之前,不应该有以太坊区块链的任何部分。 有关更多信息,请参阅此以太坊Stack.Exchange答案。
以下是您希望更快速地同步客户端时使用的一些标志。
--fast:
此标志可以通过状态下载进行快速同步,而不是下载完整的块数据。这也将大幅减少区块链的大小。注意:只有在您从头开始同步您的区块链并仅出于安全原因第一次下载区块链时,才能运行fast。看到这个Reddit帖子获取更多信息。
--cache=1024
兆字节的内存分配给内部缓存(最小16MB /数据库强制)。默认值是16MB,因此根据您的计算机有多少RAM应该有所作为,将此数值增加到256,512,1024(1GB)或2048(2GB)。
--jitvm
该标志启用JIT VM。
控制台的完整示例命令:
有关快速同步和区块链下载时间的更多讨论,请参阅此Reddit帖子。
导出/导入区块链
如果已经同步完整的以太坊节点,则可以从完全同步的节点导出区块链数据并将其导入到新节点中。您可以通过geth export filename导出完整节点并使用geth import filename将区块链导入到您的节点中来完成geth。详情请看这个链接
静态节点,信任节点和启动节点
Geth支持一个称为静态节点的功能,如果您有某些您始终想要连接的对等节点。静态节点在断开连接时重新连接。您可以通过在 /static-nodes.json中添加如下内容来配置永久静态节点(这应该与您的chaindata和keystore文件夹所在的文件夹相同)
您还可以使用admin.addPeer()通过Javascript控制台在运行时添加静态节点
常见的连接问题
有时你就是无法连接。最常见的原因是:
*你当地的时间可能不正确。参加以太坊网络需要准确的时钟。检查你的操作系统如何重新同步你的时钟(例如sudo ntpdate -s time.nist.gov),因为即使是12秒太快也可能导致0个同级。
* 某些防火墙配置可能会阻止UDP通信流量。您可以使用控制台上的静态节点功能或admin.addPeer()手动配置连接。
要在没有发现协议的情况下启动geth,可以使用--nodiscover参数。在运行测试节点或在运行实验测试网络时, 可以这么做.