在以太坊P2P网络中寻找Dapp服务节点

这篇文章主要介绍了在以太坊P2P网络中寻找Dapp服务节点 ,文中通过代码以及文档配合进行讲解,很详细,它对在座的每个人的研究和工作具有很经典的参考价值。 如果需要,让我们与区块链资料网一起学习。

https://www.interchains.cc/17519.html

在以太坊P2P网络中寻找Dapp服务节点是很好的区块链资料,他说明了区块链当中的经典原理,可以给我们提供资料,在以太坊P2P网络中寻找Dapp服务节点学习起来其实是很简单的,

不多的几个较为抽象的概念也很容易理解,之所以很多人感觉在以太坊P2P网络中寻找Dapp服务节点比较复杂,一方面是因为大多数的文档没有做到由浅入深地讲解,概念上没有注意先后顺序,给读者的理解带来困难

以太坊ethP2P网络中寻找Dapp服务节点

  • p2p网络
  • RPC

提供一种获取免费RPC节点的方法,方便交易的部署

Dapp服务节点即开启了RPC的以太坊eth节点,对于钱包来说,只需要能把用户签名的交易发送出来,自己搭建节点和使用别人的节点发送数据是一样的,目前不管是快速同步还是轻节点都需要好长时间才可以达到可用的要求,为此很有必要通过P2P网络查找可用的RPC节点。

此文主要介绍如何从分布式网络中获取节点,然后尝试RPC连接,连接上后做chainId和networkId判断,尝试获取多个和以太坊eth主网一致的节点做备用服务节点。

P2P

这两个模块最先接触到的是P2P,记的那时候对区块链blockchain只是了解皮毛,有个面试官问了我什么是KAD,多节点连接的时候如何判断对方是否在线。对于从未接触这方面内容的我,支支吾吾随便说了一些变走了。后来了解到他们是基于以太坊eth二次开发的,而以太坊ethDevp2p中的节点发现使用了KAD,一种结构化的分布式网络,不过以太坊eth只利用KAD中节点距离做节点分类,对获得数据并没有有效利用

ENODE

以太坊eth通过节点发现获得了很多邻居节点,每个邻居节点的数据都以Enode展示的,Enode中含有公钥+IP和端口,p2p连接中会使用节点公钥做数据加密。

用法

p2p一般对系统安全性要求较高,涉及到节点的随机加密连接,网络中收到的信息都需要验证。目前网络中发布的有3类信息。

  • 节点发现
    • pingpong,finnode,neighbor
  • 加密连接
    • rlpx,协议验证
  • 上层消息
    • 握手,发交易,发区块,区块hash,获取区块

RPC

RPC中的api想必做Dapp开发的一定特别熟悉,最常用的发送交易eth_sendTransaction,查询收据eth_getTransactionReceipt,查询余额eth_getBalance,这些一定如数家珍。刚开始接触RPC的是通过nodejs学习的,需要配置web3 Provider,以至于后来用Go发交易的时候写出来的代码跟以太坊ethGo客户端的完全不一样,Go里面表示余额的big.int我都用string表示,Go客户端里有ethclient,这个可以很方便的调用,根本不需要写蹩脚的代码。

开放API

以太坊eth默认开放了如下api,eth:1.0 net:1.0 rpc:1.0 web3:1.0只要对方开启rpc,并设置rpcaddr0.0.0.0,外部节点即可连接查询。Go客户端在web3.jsweb3ext.go中定义了js代码如何调用rpc。

RPC和P2P

区别是一个面对Dapp用户需要对外提供某种服务,一个是区块链blockchain中的验证程序,需要保证网络的安全性。联系是JSON RPC的实现基于TCP,而目前大多数P2P网络是基于TCP连接的。

站在用户的角度考虑,肯定要尽快的同步数据,并将交易发出去。

  • 快速同步,需要服务器,存储20G,同步时间较长。
  • 轻节点同步 需要半小时以上,提供轻节点服务的节点较少
  • 此方案 几分钟内可查找到多个可用节点

此方案默认节点使用8545端口,如果使用是其他端口,目前没有较好方法获取,可使用nmap获取,尚未实现IP端口扫描。

p2p的节点管理中当连接数低于8个,会一直节点发现,我们可以拿到源源不断的新节点做RPC连接,直到找到满足要求的节点。

NetworkID

以太坊eth中networkID在节点握手的时候会判断,主网,测试网使用不同的配置,从而达到网络隔离。

ChainID

以太坊ethEIP155引入,在The DAO事件后,以太坊eth分叉出ETC,为防止重放攻击引入,主网测试网的配置也不一样。

syncing

RCP查询eth_syncing,只有同步完成的节点方可使用。

离线签名

离线签名可以将交易在Dapp端签名后发送到节点,由节点验证通过发送到区块链blockchain网络中,交易签名是用账户私钥签名交易的TxHash,如果交易被节点篡改,则签名验证无法通过,节点伪造签名和交易信息无意义。

部分转自网络,侵权联系删除www.interchains.cchttps://www.interchains.cc/17519.html

区块链毕设网(www.interchains.cc)全网最靠谱的原创区块链毕设代做网站 部分资料来自网络,侵权联系删除! 最全最大的区块链源码站 !
区块链知识分享网, 以太坊dapp资源网, 区块链教程, fabric教程下载, 区块链书籍下载, 区块链资料下载, 区块链视频教程下载, 区块链基础教程, 区块链入门教程, 区块链资源 » 在以太坊P2P网络中寻找Dapp服务节点

提供最优质的资源集合

立即查看 了解详情