❶ 以太坊多节点私有链部署
假设两台电脑A和B
要求:
1、两台电脑要在一个网络中,能ping通
2、两个节点使用相同的创世区块文件
3、禁用ipc;同时使用参数--nodiscover
4、networkid要相同,端口号可以不同
1.4 搭建私有链
1.4.1 创建目录和genesis.json文件
创建私有链根目录./testnet
创建数据存储目录./testnet/data0
创建创世区块配置文件./testnet/genesis.json
1.4.2 初始化操作
cd ./eth_test
geth --datadir data0 init genesis.json
1.4.3 启动私有节点
1.4.4 创建账号
personal.newAccount()
1.4.5 查看账号
eth.accounts
1.4.6 查看账号余额
eth.getBalance(eth.accounts[0])
1.4.7 启动&停止挖矿
启动挖矿:
miner.start(1)
其中 start 的参数表示挖矿使用的线程数。第一次启动挖矿会先生成挖矿所需的 DAG 文件,这个过程有点慢,等进度达到 100% 后,就会开始挖矿,此时屏幕会被挖矿信息刷屏。
停止挖矿,在 console 中输入:
miner.stop()
挖到一个区块会奖励5个以太币,挖矿所得的奖励会进入矿工的账户,这个账户叫做 coinbase,默认情况下 coinbase 是本地账户中的第一个账户,可以通过 miner.setEtherbase() 将其他账户设置成 coinbase。
1.4.8 转账
目前,账户 0 已经挖到了 3 个块的奖励,账户 1 的余额还是0:
我们要从账户 0 向账户 1 转账,所以要先解锁账户 0,才能发起交易:
发送交易,账户 0 -> 账户 1:
需要输入密码 123456
此时如果没有挖矿,用 txpool.status 命令可以看到本地交易池中有一个待确认的交易,可以使用 eth.getBlock("pending", true).transactions 查看当前待确认交易。
使用 miner.start() 命令开始挖矿:
miner.start(1);admin.sleepBlocks(1);miner.stop();
新区块挖出后,挖矿结束,查看账户 1 的余额,已经收到了账户 0 的以太币:
web3.fromWei(eth.getBalance(eth.accounts[1]),'ether')
用同样的genesis.json初始化操作
cd ./eth_test
geth --datadir data1 init genesis.json
启动私有节点一,修改 rpcport 和port
可以通过 admin.addPeer() 方法连接到其他节点,两个节点要要指定相同的 chainID。
假设有两个节点:节点一和节点二,chainID 都是 1024,通过下面的步骤就可以从节点二连接到节点一。
首先要知道节点一的 enode 信息,在节点一的 JavaScript console 中执行下面的命令查看 enode 信息:
admin.nodeInfo.enode
" enode://@[::]:30303 "
然后在节点二的 JavaScript console 中执行 admin.addPeer(),就可以连接到节点一:
addPeer() 的参数就是节点一的 enode 信息,注意要把 enode 中的 [::] 替换成节点一的 IP 地址。连接成功后,节点一就会开始同步节点二的区块,同步完成后,任意一个节点开始挖矿,另一个节点会自动同步区块,向任意一个节点发送交易,另一个节点也会收到该笔交易。
通过 admin.peers 可以查看连接到的其他节点信息,通过 net.peerCount 可以查看已连接到的节点数量。
除了上面的方法,也可以在启动节点的时候指定 --bootnodes 选项连接到其他节点。 bootnode 是一个轻量级的引导节点,方便联盟链的搭建 下一节讲 通过 bootnode 自动找到节点
参考: https://cloud.tencent.com/developer/article/1332424
❷ geth以太坊客户端轻节点模式启动怎么与全节点启动的geth连接
一般来说,Undefined index就是自己编写过程中出现了的的确确的写法问题notice一般提示关于与执行代码没有直接关系的错误,但不要忘记,notice有时会返回一些多余的错误信息
❸ 现在数字货币都有什么币种啊
虚拟币在经过这几年的发展,现在已经形成了一个不小的市场,而在市场上被大众所接受的币种也趋于稳定的状态,币圈喜欢什么币,什么样的币在币圈有前景,这些都值得我们去研究。
数字货币是区块链的一种产物,我们不去探究这个深层次的东西,就是简单说说,如果你想玩数字货币,肯定需要先有数字货币,而现在场外交易(OTC)是你获得数字货币的不二选择。
一、 比特币(英文:Bitcoin 缩写:BTC)
这个是币圈所公认的,作为虚拟币的风向标,领头羊。比特币的每一个涨跌都牵动币圈玩家的神经。它已经不再是一个简单的虚拟币币种,更像一个虚拟币界的图腾标志。所有谈到虚拟币发展的无论如何都不可能绕过BTC去讨论,几乎所有的交易平台上面必须必备的就是BTC的交易对。
与大多数货币不同,比特币不依靠特定货币机构发行,它依据特定算法,通过大量的计算产生,比特币经济使用整个P2P网络中众多节点构成的分布式数据库来确认并记录所有的交易行为,并使用密码学的设计来确保货币流通各个环节安全性。P2P的去中心化特性与算法本身可以确保无法通过大量制造比特币来人为操控币值。基于密码学的设计可以使比特币只能被真实的拥有者转移或支付。这同样确保了货币所有权与流通交易的匿名性。比特币与其他虚拟货币最大的不同,是其总数量非常有限,具有极强的稀缺性。该货币系统曾在4年内只有不超过1050万个,之后的总数量将被永久限制在2100万个。
比特币可以用来兑现,可以兑换成大多数国家的货币。使用者可以用比特币购买一些虚拟物品,比如网络游戏当中的衣服、帽子、装备等,只要有人接受,也可以使用比特币购买现实生活当中的物品。
二、 以太坊(英文:Ethereum 缩写:ETH)
以太坊(Ethereum)是下一代密码学账本,打算支持众多的高级功能,包括用户发行货币,智能协议,去中心化的交易和我们认为的第一个完全的去中心化自治组织(DAOs)或去中心化自治公司(DACs)应用。以太坊(Ethereum)并不是把每一单个类型的功能作为特性来特别支持,相反,以太坊(Ethereum)包括一个内置的图灵完备的脚本语言,允许通过被称为“合同”的机制来为自己想实现的特性写代码。一个合同就像一个自动的代理,每当接收到一笔交易,合同就会运行特定的一段代码,这段代码能修改合同内部的数据存储或者发送交易。高级的合同甚至能修改自身的代码。
以太坊可以
❹ 什么是NFT,NFT交易平台有哪些
NFT是Non-Fungible Tokens的缩写,意思是不可互换的代币,它是相对于可互换的代币而言的。不可互换的代币也称为非同质代币。
什么是可互换的代币?比如BTC、ETH这些代币都是同质代币,所以相互之间是可互换的,也就是说,你的一枚ETH和我的一枚ETH本质上都是一样的,具有相同的属性、价格。而不可互换的代币,或者非同质代币,它们都是独一无二的,就像是艺术品,每件都不一样。它们之间无法相互替换,所以称之为不可互换代币或非同质代币。
NFT不像BTC和ETH可以分割为0.1或者0.0002,NFT的单位永远为1,NFT的典型特征就是唯一性和稀缺性。
NFT市场在加密领域开始引起人们的关注,主要是从加密猫开始的。2017年的Cryptokitties作为首款现象级加密游戏应用,率先将NFT带入了大众的视野,每一只加密猫都对应着链上的一个NFT代币有唯一的ID和基因,不同猫的基因进行组合,得到新NFT代币表示的猫在市场上进行拍卖,其中最贵一只猫卖出了几十万的天价。
NFT因17年的以太猫而火,开创了以太坊上的协议ERC721,称为以太坊上的第一个NFT标准。
OpenSea:成立于 2018 年,是一个基于区块链的全球数字物品买卖市场。OpenSea 的定位是业界领先的去中心化交易所(Decentralized Exchange,DEX),提供点对点(peer-to-peer)的以太坊同质化代币(NFT)交易。
Nifty Gateway :是一个受监管的、非同质化代币(NFT)的货币市场,利用 Gemini 的后端基础设施建立了美元兑换平台。在平台上,用户可以用信用卡购买 NFT,出售时可直接兑现到银行帐户中。
MakersPlace :于 2016 年发布,是一个基于区块链技术的、为艺术家和创作者提供全方位服务的平台,用于铸造代表其作品的 NFT。借助区块链技术,收藏者通过 MakersPlace 获得的每个数字创作都是由创作者签名和发行的独特的数字创作。
Rarible :是 NFT 发行与交易平台,创建和出售由区块链保护的数字藏品。该平台是一个供用户铸造、销售和创建收藏品的开源的、非托管的平台。任何用户都可以进入 Rarible,创作和展示自己的艺术品,也可以用以太坊代币购买艺术品来收藏。
SuperRare:成立于 2017 年,被誉为拥有全球数字艺术家网络的互联网数字艺术市场,拥有近 700位艺术家。Super Rare基于区块链技术,遵循 ERC721 标准,艺术品的整个历史和起源都可以在分布式账本上追踪,任何人都无法作弊造假。
VIV3 :今年刚刚发布,是 Flow 公链上第一个综合市场。VIV3 的成立是从物理所有权向数字所有权转变的开端,旨在让十亿人能够创造、交易和拥有世界上最有价值的作品。Flow 是一个高度可扩展、可组合的智能合约平台,它能够在不影响去中心化的前提下提供主流级应用所需的性能。
❺ 区块链之联盟链(三) 认识Fabric
Fabric 是超级账本联盟推出的核心区块链框架,它适合在复杂的企业内和企业间搭建联盟链。根据超级账本联盟的目标, Fabric 被建设为一个模块化的、支持可插拔组件的基础联盟链框架。;
与以太坊系的Quorum不同,Fabric从一开始就只考虑企业间的应用。其独有的channel概念,将企业根据业务目的不同以不同的子网连接起来, 每一个子网对应一个channel,而每个channel有自己独立的区块链。而Quorum很显然是只有一个公网(所有企业节点都加入进去),企业与企业间的私有业务是通过Private Manager 完成的。
理解channel的最简单方法就是,将它类比为一个消息服务提供的Topic,实际上Fabic最早就是基于Kafka 的分布式消息服务来实现。
在Fabric网络中,一个企业可以有一个或多个节点加入整个联盟链;一个企业可以加入1个或者多个Channel(子网); 一个节点可以加入1个或者多个channel。每个channel构成一个子网,所以Fabric 是 一种由子网组成的网络。
那么Fabric是怎么实现智能合约的执行和完成业务上链(将事务结果记录在区块链里)的呢?
与其它框架不同, Fabric 将整个过程分成了三个阶段:
业务背书阶段 : 客户的请求发送的背书节点,通过智能合约完成业务的计算(但不更新状态),并完成背书;将背书结果返回个客户端。
业务的排序阶段 : 客户端将背书结果通过Channel被发送到排序节点(orderer),在排序节点完成事务的排序,并打包到block里,最后下发给所有连接到channel的节点。
业务验证并写入账本阶段 : 通过Gossip 网络,所有Channel的节点都会接收到新的block,节点会验证block中的每一个事务,确定是否有效:有效地将会跟新world state,无效的将会标志为“无效”,不会更新World state,但整个block会被完整的加入到帐本中(包括无效的事务)。
根据以上的描述,Fabric 节点实际可以分为 ,普通节点和Order节点:
Peer, 普通节点, 完成背书(包括只能合约的执行)和验证.
orderer, 排序节点,完成排序。
加入orderer节点的Fabric网络可以被描述如下:
每一个Channel,都定义了所有属于channel的节点,但是并不需要所有节点都连接到Orderer 节点(节点间可以通过gossip 协议通讯来传播私有数据或事务).
在区块链中,共识是区块链的基础。与公有链不同,联盟链的共识要求所有加入账本的事务是确定的、最终的,也就是不可以有分叉,区块与区块间的顺序是一定的,只存在唯一条链。在Fabric 中,这个客观需求正是由排序实现的,所有的事务将被提交给orderer节点获得确定的顺序,并最终打包成block进入帐本。 Fabric 从1.4.1开始支持基于Raft实现排序服务, 可以认为基于Raft实现共识。
基于RAFT的排序服务相对于早期的Kafka 具有更好的分布性,配置更加简单,是联盟链里常用的一个常用的达成共识的算法,Quorum就 默认使用RAFT作为共识层。简单的说,RAFT是一个leader和follower的模式, 所有加入RAFT网络的节点,任意时候都有一个leader, 只有这个leader有权决定事务的顺序,并打包成Block,其它节点只能作为follower提交事务和同步block。
基于FAFT网络,每个企业可以有一个或多个节点参与到Orderer中去。在Frabric中企业间的网络连接可以变化成如下形式:
区块链的使用用户在以太网中被称作EOA(External of Account), EOA的载体是钱包。我们沿用这个概念,来看看Fabric是如何实现用户和发起事务的。Fabric中EOA是一个CA中心发布的certificate(x.509),一个Certificate代表一个Identity(这与以太坊还是有很大区别的, 以太坊中一个EOA其实是一个hash地址),EOA能够参与的channel以及被授权的操作是有channel的MSP( Membership Service Provider)决定的(如下图)。
注:certificate 是一种密码学上验证身份的通用做法; certificate包含了个人的信息,公钥以及发布这个certificate的CA的签名。验证方只需要拥有这个CA的证书(包含CA的公钥),就可以验证这个签名是否正确,certificate的内容是否有篡改。简单的说,通过CA和Certificate,我们可以获得一个可验证的的身份和信任链。
如上图,fabric中通要使用Wallet作为EOA的载体,一个Wallet中可以包含多个Identity(x.509 certificate)。 Identity 通过 CA提供的信任链来验证正确性。
验证了身份之后, Fabric 通过MSP在区块链网络中解决该身份是否代表组织的成员和在组织内具有什么角色。例如,channel首先会验证当前用户Identity是否是有效地身份,然后通过MSP查看其所处的企业和具有的角色,最终确定该用户是否有权执行操作。
可以说,Fabric的访问控制是通过MSP来完成的。在每一个需要访问控制的地方都需要定义一个MSP。 例如,每个channel都定义一个MSP,这个MSP规定了在channel范围内资源的访问权限。 MSP 是Fabric里一个晦涩难懂的概念,也是其赋予企业间安全访问的基础。
前文提到, Fabric 将业务处理和上网分成了三个部分, 背书,排序,验证后加入账本。
其中背书是Fabric执行智能合约的阶段。以太坊中,智能合约是在EVM中执行的,有多种语言支持。 在Fabric,智能合约被称为chaincode: 一个chaincode 可以理解为是智能合约的容器,可以包含一个或多个智能合约, 不用于EVM, chaincode是在 JVM 或NodeJS中执行。
客户应用程序通过智能合约来访问账本,每一个可访问的智能合约都被安装在客户端可以访问的节点上,并被定义在channel里。(有只能合约的节点被称为背书节点,没有只能合约的节点被称未提交节点,提交节点只维护账本)
客户应用提交一个交易请求, 请求到达背书节点, 背书节点首先会验证客户的签名,确保客户的身份有权执行本次交易,接着执行交易提及的智能合约(chaincode),并生成一个背书响应(或者叫做交易提案,tran-proposal)。这个背书响应中通常包含World state 的读集合,写集合, 以及节点对本次交易的签名。这里与以太坊系联盟链最主要的不同是: 背书阶段只模拟交易,并不真正更新交易结果。 而真正更新交易在第三阶段完成。背书节点最后将生成的背书响应fanhui给客户端, 智能合约部分的执行就结束了。
通常一个交易的执行需要多方的签名,所以客户端需要将一个交易发送给多个背书节点,这些背书节点的选择需要满足背书策略的要求。
下图是一个包含有客户、背书节点,提交节点的网络示意图。
根据Fabric官方的参考文档,客户交易的正果过程可使用下图描述。
如上图,从1到3,为背书阶段,4为排序阶段,4.1,4,2, 5为验证提交阶段。 参考 Frabic的节点 概念,可以了解更多在交易细节的概念。
总的来看, Fabric 更专注于企业间,通过上文,可以让大家对Fabric的基本构成与概念有一个总的了解。 Fabric本身并不神秘,都是使用的现有的企业间的技术。要更好的了解,建议参考阅读分布式消息系统和企业的安全基础设施(CA相关)的支持。与以太坊系联盟链实现比较, Fabric 的子网更概念对于复杂企业间应用适应更强,但是其复杂的安全考量,使得运营成本很高,另外,Fabric 使用Certificate做为用户身份,有很大的局限性,在新的2.0里,Fabric对于此处将有所改变。
下一篇,我们将来看看Sawtooth , 由Inter 提供的区块链框架。
区块链之联盟链(一) 认识以太坊
区块链之联盟链(二) 认识Quotum
区块链之联盟链(三) 认识Fabric
区块链之联盟链(四) 认识Sawtooth
❻ 币易上的BTC、USDT、ETH、BCH、LTC是什么意思
BTC、USDT、ETH、BCH、LTC的意思分别是:
1、BTC
比特币(BitCoin),概念最初由中本聪在2009年提出,根据中本聪的思路设计发布的开源软件以及建构其上的P2P网络。比特币是一种P2P形式的数字货币。点对点的传输意味着一个去中心化的支付系统。
2、USDT
泰达币,是一种将加密货币与法定货币美元挂钩的虚拟货币,是一种保存在外汇储备账户、获得法定货币支持的虚拟货币。
3、ETH
以太坊,是一个开源的有智能合约功能的公共区块链平台,通过其专用加密货币以太币(Ether)提供去中心化的以太虚拟机(EthereumVirtualMachine)来处理点对点合约。
4、BCH
比特币现金,是由一小部分比特币开发者推出的不同配置的新版比特币。
2017年8月1日20:20分,比特币现金开始挖矿,每个比特币投资者的账户上将出现与比特币数量等量的比特币现金(BCH)。
5、LTC
莱特币(Litecoin),简写:LTC,货币符号:Ł;是一种基于“点对点”(peer-to-peer)技术的网络货币,也是MIT/X11许可下的一个开源软件项目。它可以帮助用户即时付款给世界上任何一个人。
参考资料来源:网络-比特币
参考资料来源:网络-泰达币
参考资料来源:网络-以太坊
参考资料来源:网络-比特币现金
参考资料来源:网络-莱特币
❼ 以太坊钱包不更新
网络不顺畅或其它。
节点同步慢原因以及解决方法:1、以太坊钱包节点同步需要联网操作,如果你的网络不畅通就会造成同步慢这种情况,所以在同步之前请检查好你的网络,确认网络状况良好在进行同步。2、节点同步需要占用大量的内存,如果你的电脑内存不够就会造成阶段同步慢甚至停止同步这种情况,建议用户在同步节点之前清理一下电脑保证电脑内存充足,目前有用户反映同步节点内存最高可占用100G左右内存哦。3、可以在以太坊钱包中修改peer数,默认peer是25个,建议你可以修改成巨大的数值,例如9999个。4、同步阶段还需要你的路由器支持uPnP。可以在路由器设置中修改。5、需要公网IP,如果你没有的话就会慢很多,所以建议设置一个公网IP吧。6、也有网友反映是钱包本身的问题,以太坊钱包软件本身并不是很成熟,在同步节点的时候会有很多问题出现,这个只有等待以太坊官方修改。7、电脑配置不能太低。8、第一次同步时使用--fast选项,可以更快地同步到最新块。9、使用的是geth,运行时间长了可能会有问题,可以考虑每天重启一次geth。10、及时更新geth到最新版本。11、硬盘空间要足够大,建议至少1T以上。为了运行以太坊全节点,买了500G的硬盘空间,使用--fast同步完成后才占40多G空间,之后正常模式同步硬盘占用空间快速增长,3个月左右已经430G了,最近又买了500G磁盘空间。12、交易未被打包时,相同nonce值可以覆盖之前的交易,覆盖交易只看nonce值,至于交易的其它部分内容可以相同也可以不同。13、如果有低nonce值还未被打包,新的交易gasPrice再高,也需要先等低nonce值的交易被打包,如果低nonce值的交易因为gasPrice设低了而等待,需要先使用相同nonce值来修改gasPrice。
以太币(ETH)是以太坊的一种加密数字代币,被视为“比特币2。0版”,创始人是杰弗里_维尔克。
❽ 廊坊seo:虚拟货币有哪些
1、比特币
平民币,英文名PopulaceCoin,简称POC,诞生于2014年3月7日。POC总量与世界人口相近(总量70.57亿)。
POC基于6种加密算法(blake, bmw, groestl, jh, keccak, skein)9轮运算的超级安全哈希运算,适合CPU挖矿,每15秒产生一个区块,总量70.57亿(与世界人口相近)。
❾ 以太坊源码分析--p2p节点发现
节点发现功能主要涉及 Server Table udp 这几个数据结构,它们有独自的事件响应循环,节点发现功能便是它们互相协作完成的。其中,每个以太坊客户端启动后都会在本地运行一个 Server ,并将网络拓扑中相邻的节点视为 Node ,而 Table 是 Node 的容器, udp 则是负责维持底层的连接。下面重点描述它们中重要的字段和事件循环处理的关键部分。
PrivateKey - 本节点的私钥,用于与其他节点建立时的握手协商
Protocols - 支持的所有上层协议
StaticNodes - 预设的静态 Peer ,节点启动时会首先去向它们发起连接,建立邻居关系
newTransport - 下层传输层实现,定义握手过程中的数据加密解密方式,默认的传输层实现是用 newRLPX() 创建的 rlpx ,这不是本文的重点
ntab - 典型实现是 Table ,所有 peer 以 Node 的形式存放在 Table
ourHandshake - 与其他节点建立连接时的握手信息,包含本地节点的版本号以及支持的上层协议
addpeer - 连接握手完成后,连接过程通过这个通道通知 Server
Server 的监听循环,启动底层监听socket,当收到连接请求时,Accept后调用 setupConn() 开始连接建立过程
Server的主要事件处理和功能实现循环
Node 唯一表示网络上的一个节点
IP - IP地址
UDP/TCP - 连接使用的UDP/TCP端口号
ID - 以太坊网络中唯一标识一个节点,本质上是一个椭圆曲线公钥(PublicKey),与 Server 的 PrivateKey 对应。一个节点的IP地址不一定是固定的,但ID是唯一的。
sha - 用于节点间的距离计算
Table 主要用来管理与本节点与其他节点的连接的建立更新删除
bucket - 所有 peer 按与本节点的距离远近放在不同的桶(bucket)中,详见之后的 节点维护
refreshReq - 更新 Table 请求通道
Table 的主要事件循环,主要负责控制 refresh 和 revalidate 过程。
refresh.C - 定时(30s)启动Peer刷新过程的定时器
refreshReq - 接收其他线程投递到 Table 的 刷新Peer连接 的通知,当收到该通知时启动更新,详见之后的 更新邻居关系
revalidate.C - 定时重新检查以连接节点的有效性的定时器,详见之后的 探活检测
udp 负责节点间通信的底层消息控制,是 Table 运行的 Kademlia 协议的底层组件
conn - 底层监听端口的连接
addpending - udp 用来接收 pending 的channel。使用场景为:当我们向其他节点发送数据包后(packet)后可能会期待收到它的回复,pending用来记录一次这种还没有到来的回复。举个例子,当我们发送ping包时,总是期待对方回复pong包。这时就可以将构造一个pending结构,其中包含期待接收的pong包的信息以及对应的callback函数,将这个pengding投递到udp的这个channel。 udp 在收到匹配的pong后,执行预设的callback。
gotreply - udp 用来接收其他节点回复的通道,配合上面的addpending,收到回复后,遍历已有的pending链表,看是否有匹配的pending。
Table - 和 Server 中的ntab是同一个 Table
udp 的处理循环,负责控制消息的向上递交和收发控制
udp 的底层接受数据包循环,负责接收其他节点的 packet
以太坊使用 Kademlia 分布式路由存储协议来进行网络拓扑维护,了解该协议建议先阅读 易懂分布式 。更权威的资料可以查看 wiki 。总的来说该协议:
源码中由 Table 结构保存所有 bucket , bucket 结构如下
节点可以在 entries 和 replacements 互相转化,一个 entries 节点如果 Validate 失败,那么它会被原本将一个原本在 replacements 数组的节点替换。
有效性检测就是利用 ping 消息进行探活操作。 Table.loop() 启动了一个定时器(0~10s),定期随机选择一个bucket,向其 entries 中末尾的节点发送 ping 消息,如果对方回应了 pong ,则探活成功。
Table.loop() 会定期(定时器超时)或不定期(收到refreshReq)地进行更新邻居关系(发现新邻居),两者都调用 doRefresh() 方法,该方法对在网络上查找离自身和三个随机节点最近的若干个节点。
Table 的 lookup() 方法用来实现节点查找目标节点,它的实现就是 Kademlia 协议,通过节点间的接力,一步一步接近目标。
当一个节点启动后,它会首先向配置的静态节点发起连接,发起连接的过程称为 Dial ,源码中通过创建 dialTask 跟踪这个过程
dialTask表示一次向其他节点主动发起连接的任务
在 Server 启动时,会调用 newDialState() 根据预配置的 StaticNodes 初始化一批 dialTask , 并在 Server.run() 方法中,启动这些这些任务。
Dial 过程需要知道目标节点( dest )的IP地址,如果不知道的话,就要先使用 recolve() 解析出目标的IP地址,怎么解析?就是先要用借助 Kademlia 协议在网络中查找目标节点。
当得到目标节点的IP后,下一步便是建立连接,这是通过 dialTask.dial() 建立连接
连接建立的握手过程分为两个阶段,在在 SetupConn() 中实现
第一阶段为 ECDH密钥建立 :
第二阶段为协议握手,互相交换支持的上层协议
如果两次握手都通过,dialTask将向 Server 的 addpeer 通道发送 peer 的信息
❿ ETL币发行量有多少
ETL总发行量21,000,000,000 ,其中空投∶10%、核心创始团队∶9%、生态基金∶ 5%、社区合伙人&首次代币预发售∶16%、DEFI奖励∶ 10%、DAO投票∶ 10% 、GAS燃料费∶ 5%、储备金∶6%、开发基金∶ 2%、营销基金∶ 2%