挪用porcelain.API 工具的 PubSubSubscribe 要领,订阅 <code>/fil/msgs/devnet-3 主题的动静通知,并配置为全节点的 MessageSub 属性。</li><li>启动一个协程,在协程中挪用全节点的 <code>handleSubscription 要领,处理惩罚区块通知。这个要领主体是一个无限轮回。它从参数指定的主题中读取主题,并挪用参数指定的要领举办处理惩罚。区块通知订阅的是 /fil/blocks/devnet-3,它的处理惩罚要领是全节点的 <code>processBlock 要领。
'生成net.Bootstrapper 引导工具。
挪用 getRepo,获恰当地客栈 <code>repo.Repo 接口 工具。这个要领内部挪用客栈的 OpenFSRepo 函数,生成并初始化客栈工具,它的流程如下:<ul><li>按照客栈路径和版本,生成客栈 <code>repo.FSRepo 工具。
生成core.MessageQueue 工具。
挪用客栈工具的 loadConfig 要领,加载客栈的设置文件 <code>config.json。
挪用 chain/syncer.go 的 <code>NewSyncer 函数,生成区块链chain.Syncer 同步工具。
挪用客栈工具的 openDealsDatastore 要领,打开生意业务数据存储。</li></ul>这个要了解生成客栈存储工具,并生存在客栈工具的 <code>dealsDs 属性。这次工具对应的目次为 deals。</li></ul></li><li>获取情况变量。</li><li>获取呼吁行参数。</li><li>挪用节点的 <code>New 要领,建设一个节点。首先,生成一个设置工具,利用前面几步形成的选项参数和客栈工具来配置设置工具;然后挪用设置工具的 Build 要领,构建一个 Filecoin 节点。当我们不带参数启动时,设置工具中只有客栈工具会被配置。<code>Build 函数执行流程如下:
假如设置工具中没有客栈工具,则生成一个内存版客栈工具。
生成呼吁行情况commands.Env 工具。
挪用客栈工具的 openDatastore 要领,加载客栈的数据存储文件。默认环境下,数据存储范例为 <code>badgerds,所以加载的文件目次为客栈下的这个目次。这个要了解生成客栈存储工具,并生存在客栈工具的 ds 属性。</li><li>挪用客栈工具的 <code>openKeystore 要领,打开客栈的 keystore 文件。这个要了解生成私钥存储工具,并生存在客栈工具的 <code>keystore 属性。
启动一个协程,在协程中挪用全节点的 handleSubscription 要领,处理惩罚动静通知。动静通知订阅的是 <code>/fil/msgs/devnet-3,它的处理惩罚要领是全节点的 processMessage 要领。这个要领把收到的动静举办反序列化,然后挪用 core.Inbox 工具的 <code>Add 要领,把动静工具生存在 core.MessagePool 工具中。
'生成 PorcelainAPI 工具。
''挪用 readGenesisCid 函数,获取创世区块的 CID''。</li><li>生成chain.Store 工具。</li><li>生成chain.ChainStateProvider 工具。</li><li>生成 <code>powerTable 工具,范例为 consensus.MarketView 工具。
利用区块存储工具和bitswap 工具,生成区块处事工具。
生成获取区块 net.Fetcher 工具,以便从长途节点获取数据。
按照设置工具是否有嘉奖,挪用差异的要领节点共鸣器。假如嘉奖工具为空,则挪用 consensus/processor.go 的 <code>NewDefaultProcessor 函数,生成共鸣器;不然,挪用 NewConfiguredProcessor 函数,生成共鸣器。两个函数都生成 consensus.DefaultProcessor 工具,区块在于它们的属性。</li><li>挪用 <code>consensus/NewExpected.go 的 NewExpected 函数,生成 consensus.Protocol 接口 节点共鸣consensus.Expected 工具。按照设置工具是否有 proofs.Verifier 接口工具,在生成进程中会利用差异的参数。</li><li>挪用 go-libp2p-pubsub 类库的 <code>NewFloodSub 函数,生成一个 宣布/订阅pubsub.PubSub 工具 fsub,监听自身的所有动静。</li><li>利用客栈repo.Repo 接口 工具的 <code>walletDs 属性作为钱包后端,生成钱包wallet.Wallet 工具。
配置心跳处事。
然后,挪用 basic_host.go 中界说的 <code>NewHost 来建设 host 工具。在建设 host 工具进程中,把 swarm 工具生存为 host 工具的网络工具,同时配置 swarm 的毗连处理惩罚器和流处理惩罚器别离为 host 工具的 newConnHandler 和 <code>newStreamHandler 两个要领。
生成区块验证器consensus.DefaultBlockValidator 工具。
挪用内部函数 runAPIAndWait ,启动全节点。<ul><li>''挪用节点的 <code>Start 要领,启动 Filecon 节点''。
挪用chain.Store 工具的 Load 要领,加载当地已有区块。</li><li>挪用全节点工具的 <code>miningAddress 要领,获取矿工地点;假如设置了矿工地点,则挪用node.Node 全节点工具的 setupMining 要领,配置挖矿。这个要领挪用 <code>initSectorBuilderForNode 函数,初始化初始化扇区生成器,并生存在全节点工具的 sectorBuilder 属性上。</li><li>生成 <code>syncCallBack 同步回调函数工具,用于处理惩罚区块同步。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。