木星链 木星链
Ctrl+D收藏木星链
首页 > 币赢 > 正文

PRO:精通IPFS:系统启动篇

作者:

时间:1900/1/1 0:00:00

当用户以守护进程模式启动filecoin时,最终执行的命令位于

commands/daemon.go文件,它的

Run方法直接调用同文件中的

daemonRun函数进行处理。这个函数的处理如下:

调用getRepo,获得本地仓库repo.Repo接口对象。这个方法内部调用仓库的OpenFSRepo函数,生成并初始化仓库对象,它的流程如下:

根据仓库路径和版本,生成仓库repo.FSRepo对象。

锁定相关仓库的repo.lock文件,并设置仓库对象的lockfile属性,从而确保同时只有一个全节点可以使用仓库,以便维护仓库的完整性。

调用仓库对象的loadFromDisk方法,从磁盘上加载仓库的各种数据,并同继续完善仓库对象。这个方法的流程如下:

调用仓库对象的readVersion方法,从仓库文件中读取仓库的版本号,并与仓库对象自身的版本号进行比较。如果不匹配,则抛出错误。

调用仓库对象的loadConfig方法,加载仓库的配置文件config.json。

调用仓库对象的openDatastore方法,加载仓库的数据存储文件。默认情况下,数据存储类型为badgerds,所以加载的文件目录为仓库下的这个目录。这个方法会生成仓库存储对象,并保存在仓库对象的ds属性。

调用仓库对象的openKeystore方法,打开仓库的keystore文件。这个方法会生成私钥存储对象,并保存在仓库对象的keystore属性。

Uniswap创始人推出名为UniswapX的新开源协议:金色财经报道,Uniswap创始Hayden Adams推出了一种名为UniswapX的新开源协议,该协议将聚合去中心化交易池的流动性。根据官方博客文章,Uniswap发布的该协议将使用户能够通过汇集流动性来源来找到最佳交易价格。该聚合器服务已作为可选测试版功能在Uniswap Labs的以太坊前端平台上推出。[2023/7/18 11:00:26]

调用仓库对象的openWalletDatastore方法,打开钱包数据存储。这个方法会生成仓库存储对象,并保存在仓库对象的walletDs属性。这次对象对应的目录为wallet。

调用仓库对象的openChainDatastore方法,打开区块链数据存储。这个方法会生成仓库存储对象,并保存在仓库对象的chainDs属性。这次对象对应的目录为chain。

调用仓库对象的openDealsDatastore方法,打开交易数据存储。

这个方法会生成仓库存储对象,并保存在仓库对象的dealsDs属性。这次对象对应的目录为deals。

获取环境变量。

获取命令行参数。

调用节点的New方法,创建一个节点。首先,生成一个配置对象,使用前面几步形成的选项参数和仓库对象来设置配置对象;然后调用配置对象的Build方法,构建一个Filecoin节点。当我们不带参数启动时,配置对象中只有仓库对象会被设置。Build函数执行流程如下:

Kyber Network将于5月24日重启KyberSwap Elastic:5月20日消息,链上流动性协议Kyber Network发推称,将于5月24日重新启动KyberSwap Elastic,届时将会提供升级的智能合约、新的审计与额外的安全措施。本次有限的重新启动将增加LM奖励,流动性挖矿与其他奖励还将包括来自Arbitrum分配的116万枚ARB、Optimism分配的25万枚OP、Avalanche分配的1.9万枚AVAX等其他生态系统合作伙伴的资金。

此外,Arbitrum Farm将于5月25日开放,Optimism将于5月27日开放、Polygon将于5月29日开放、Avalanche将于5月31日开放,也将支持zkSync。这些Fram池第一个月提供100% boosted奖励,第二个月提供50% boosted奖励。[2023/5/20 15:14:38]

如果配置对象中没有仓库对象,则生成一个内存版仓库对象。

生成区块存储对象。?

'调用配置对象的buildHost方法,生成libp2pHost对象'。buildHost方法调用libp2p的New方法,这个方法最终调用config/config.go中定义的NewNode方法,这个方法:

首先,调用swarm的NewSwarm方法创建一个swarm对象。

然后,调用basic_host.go中定义的NewHost来创建host对象。在创建host对象过程中,把swarm对象保存为host对象的网络对象,同时设置swarm的连接处理器和流处理器分别为host对象的newConnHandler和newStreamHandler两个方法。

NFTGo NFT年报:NFT清洗交易占去年总交易量的35%:2月15日消息,根据NFTGo.io发布的2023NFT年报,2022年BAYC在主导NFT市场的蓝筹项目中交易量最大,达63.9万枚ETH,占总交易量的7%。同属Yuga Labs的Otherdeeds和MAYC位列第二、第三,占比分别为5.47%和5.07%。

在去除清洗交易(Washing Trading)的情况下,OpenSea在各大NFT交易平台全年总交易量上排名榜首,总交易量约774万枚ETH,是第二名LookRare总交易量的6倍。Blur自去年10月上线,三个月总交易量达近40万枚ETH,并在12月日均交易量超过OpenSea。此外,NFT交易平台更加聚焦垂直领域,譬如强制版税、数据看板、批量快速购买、聚合比价等。

若没有剔除清洗交易,LooksRare 2022年交易量则超过OpenSea,约为1000万枚ETH。2022年,清洗交易总量约为900万枚ETH,占2022年全年总交易量的35%。[2023/2/15 12:08:53]

然后,调用swarm的AddTransport方法,添加指定的传输协义。

最后,调用host的Listen方法,开始监听指定的地址。

生成pinger服务对象。

生成区块验证器consensus.DefaultBlockValidator对象。

使用libp2pHost对象和路由对象,生成bitswap网络对象。

使用bitswap网络对象和区块存储对象,生成bitswap对象。

克罗地亚零售巨头Konzum:加密货币支付一直在增加:金色财经报道,尽管熊市仍在继续,但今年克罗地亚最大的连锁超市Konzum的比特币等加密货币支付一直在增加。该公司的商业应用主管InesBarbir表示,在2021年推出加密支付后,Konzum的加密支付购买量有所增加。

???Konzum于2021年12月正式开始接受加密货币作为其产品的付款方式,允许客户使用BTC和ETH以及USDT和USDC稳定币等九种加密货币在线支付。(cointelegraph)[2022/8/2 2:52:54]

使用区块存储对象和bitswap对象,生成区块服务对象。

生成获取区块net.Fetcher对象,以便从远程节点获取数据。

''调用readGenesisCid函数,获取创世区块的CID''。

生成chain.Store对象。

生成chain.ChainStateProvider对象。

生成powerTable对象,类型为consensus.MarketView对象。

根据配置对象是否有奖励,调用不同的方法节点共识器。如果奖励对象为空,则调用consensus/processor.go的NewDefaultProcessor函数,生成共识器;否则,调用NewConfiguredProcessor函数,生成共识器。两个函数都生成consensus.DefaultProcessor对象,区块在于它们的属性。

调用consensus/NewExpected.go的NewExpected函数,生成consensus.Protocol接口节点共识consensus.Expected对象。根据配置对象是否有proofs.Verifier接口对象,在生成过程中会使用不同的参数。

摩根大通:Coinbase和Robinhood的股东面临重大的股票稀释:金色财经报道,摩根大通(JPM)周一在给客户的一份说明中表示,加密货币交易所Coinbase和经纪平台Robinhood的股东面临着因员工薪酬计划中包含的限制性股票单位(RSU)而导致的更高股份稀释风险。

鉴于这两只股票在全球加密货币价格和股市暴跌中受到影响,稀释可能会在对股东不利的时候出现。Coinbase和Robinhood的股票今年迄今分别下跌了约73%和51%。

鉴于股价的急剧下跌,摩根大通预计Coinbase和Robinhood将通过RSU降低员工股权授予,尽管它仍然预计RSU发行带来的股份攀升将推动稀释在未来几年每年仍有7%的速度。该银行估计,如果这个7%的速度连续五年持续下去,它可能会使每个公司对现有股东的价值减少30%。[2022/7/26 2:37:31]

调用go-libp2p-pubsub类库的NewFloodSub函数,生成一个发布/订阅pubsub.PubSub对象fsub,监听自身的所有消息。

使用仓库repo.Repo接口对象的walletDs属性作为钱包后端,生成钱包wallet.Wallet对象。

调用chain/syncer.go的NewSyncer函数,生成区块链chain.Syncer同步对象。

生成core.MessagePool对象。

生成core.Inbox对象。

生成core.MessageQueue对象。

生成node.defaultMessagePublisher对象。消息发布对象绑定的主题为/fil/msgs/devnet-3,它会在这个主题上发布消息。在全节点的启动方法中通过,通过调用porcelain.API对象的PubSubSubscribe方法,订阅这个主题的消息通知。

生成core.Outbox对象。这个对象上一步创建的消息发布对象,当调用porcelain.API对象的MessageSend方法发送消息时,内部调用本对象的Send方法,进行发送。发送方法最终调用消息发布对象的Publish,把经过签名之后的消息发布到相应的主题上。当消息发送之后,别的全节点对象因为订阅了消息主题,所以会调用全节点的processMessage的方法进行处理。具体见全节点启动过程。

'生成PorcelainAPI对象。

'生成Filecoinnode.Node全节点对象。

'生成net.Bootstrapper引导对象。

返回Filecoin全节点对象。

调用内部函数runAPIAndWait,启动全节点。

''调用节点的Start方法,启动Filecon节点''。

调用chain.Store对象的Load方法,加载本地已有区块。

调用全节点对象的miningAddress方法,获取矿工地址;如果配置了矿工地址,则调用node.Node全节点对象的setupMining方法,设置挖矿。这个方法调用initSectorBuilderForNode函数,初始化初始化扇区生成器,并保存在全节点对象的sectorBuilder属性上。

生成syncCallBack同步回调函数对象,用于处理区块同步。

调用protocol/hello/hello.go文件的New函数,进行Hello消息处理设置这个方法内部处理如下:

生成一个hello协义处理器对象,并设置为全节点对象的HelloSvc属性。

设置libp2p/fil/hello/1.0.0协义处理器为protocol.hello.Handler对象的handleNewStream方法。

设置libp2p网络对象的连接通知为protocol.hello.helloNotify对象。

调用Filecoin节点的setupProtocols方法,设置各种协义。这个方法内部处理如下:

生成protocol.block.MiningAPI对象,并保存为全节点对象的BlockMiningAPI属性。

调用protocol/retrieval/api.go文件的NewAPI函数,生成protocol.retrieval.API对象,并促为全节点对象的RetrievalAPI属性。

调用protocol/storage/api.go文件的NewAPI函数,生成protocol.storage.API对象,并促为全节点对象的StorageAPI属性。

以全节点对象为参数,调用protocol/retrieval/NewMiner.go的NewMiner函数,生成一个检索矿工,并为设置全节点对象的RetrievalMiner属性。这个函数首先生成一个检索矿工,然后调用全节点对象的libp2pHost对象的SetStreamHandler方法,设置/fil/retrieval/free/0.0.0协议的处理器为检索矿工的handleRetrievePieceForFree方法,最后返回检索矿工。

调用porcelain.API对象的PubSubSubscribe方法,订阅/fil/blocks/devnet-3主题的区块通知,并设置为全节点的BlockSub属性。?

调用porcelain.API对象的PubSubSubscribe方法,订阅/fil/msgs/devnet-3主题的消息通知,并设置为全节点的MessageSub属性。

启动一个协程,在协程中调用全节点的handleSubscription方法,处理区块通知。这个方法主体是一个无限循环。它从参数指定的主题中读取主题,并调用参数指定的方法进行处理。区块通知订阅的是/fil/blocks/devnet-3,它的处理方法是全节点的processBlock方法。

启动一个协程,在协程中调用全节点的handleSubscription方法,处理消息通知。消息通知订阅的是/fil/msgs/devnet-3,它的处理方法是全节点的processMessage方法。这个方法把收到的消息进行反序列化,然后调用core.Inbox对象的Add方法,把消息对象保存在core.MessagePool对象中。

调用chain.Store对象的HeadEvents方法,使用其返回的发布/订阅对象的Sub方法,订阅新区块头部主题new-head。

调用porcelain.API对象的ChainHead方法,返回处理区块链头部的函数,在一个协程中调用全节点的handleNewHeaviestTipSet方法,处理区块链头部消息。

非离线模式下,启动net.Bootstrapper引导对象。引导对象会连接到所有的引导节点,并在连接成功后,调用protocol.hello.helloNotify对象的Connected方法,从而向远程节点发送自身的顶层区块信息,而远程节点也会向我们发送它的顶层区块信息,从而开启区块同步过程。

设置心跳服务。

生成命令行环境commands.Env对象。

生成服务器配置变量

生成GoServeMux处理器对象,设置它处理/debug/pprof/请求的对象为Go自身的DefaultServeMux;处理/api/请求的go-ipfs-cmds类库的handler对象。handler对象持有上面生成的环境变量、服务器配置变量等。

创建Http服务器。

在一个单独线程中启动Http服务器。

标签:PRONEWAPIAINprops币会不会退出市场NEWOapi3币最新消息NCHAIN

币赢热门资讯
区块链:经济参考报:“区块链+金融”场景落地渐次展开 能否大规模应用尚存挑战

来源:经济参考报作者:罗逸姝 张莫记者在采访中了解到,目前,区块链技术应用已经延伸到了数字金融等领域,尤其在供应链金融、跨境金融支付等领域,多项应用已经“生根发芽”.

1900/1/1 0:00:00
MES:Messari研报:一文详解加密资产发行方式

Messari长期关注加密资产供应曲线的变化趋势。在过去的6个月里,我们花了很多时间为排名靠前的加密资产建立了完整的流动-供给曲线.

1900/1/1 0:00:00
PAL:推特精选 | 首个SEC合规ICO照样破发50%,散户遍体鳞伤

来源:野花说01Paypal?CEO称自己只持有比特币,Paypal退出Libra是因其无法满足需求PaypalCEODanSchulman?在接受财富杂志访问时表示,他持有数字货币.

1900/1/1 0:00:00
cosmos:从NGC朱威宇和Dovey的激辩说起,聊聊Cosmos

近几日一直在学习Nervos这个项目,查阅了各种资料与文献。惊讶于1confirmation对Nervos的评价如此之高:“这是我们所见过的在以太坊之外建造Layer1的最强团队?”.

1900/1/1 0:00:00
COIN:报告 | 加密货币行业最主要的十大发展趋势

文章来源:Bitcoinist作者:ChristinaComben译者:星球日报Azuma原标题:《星球前线|一文概括当前行业十大趋势》11月12日.

1900/1/1 0:00:00
区块链:监管加码规范清理,实为区块链行业健康发展铺路

摘要事件:近日,媒体集中报道多地监管部门集中清理规范涉及区块链、虚拟币等违法违规现象,为行业健康发展铺平道理.

1900/1/1 0:00:00