當用戶以守護進程模式啟動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屬性。
Kraken聯合創始人:即將到來的比特幣減半可能會引發下一個牛市的開始:金色財經報道,加密貨幣交易所Kraken聯合創始人兼前首席執行官Jesse Powell在Bankless播客中預測,即將到來的比特幣減半可能會引發下一個牛市的開始。?Powell表示,從這個行業損失 100 億美元的資本只是一個巨大的打擊。如果把它偷走,那本可以成為偉大的東西并推動這個行業向前發展。所以這需要一些時間才能從中恢復過來,FTX 的后果給許多零售用戶和機構造成了數十億美元的損失,使加密行業的聲譽需要修復,這最終需要一些時間。不過,他表示,下一次比特幣減半預計將在 2024 年上半年發生,這可能是市場的下一個看漲催化劑。?[2022/11/22 7:53:32]
調用倉庫對象的openWalletDatastore方法,打開錢包數據存儲。這個方法會生成倉庫存儲對象,并保存在倉庫對象的walletDs屬性。這次對象對應的目錄為wallet。
調用倉庫對象的openChainDatastore方法,打開區塊鏈數據存儲。這個方法會生成倉庫存儲對象,并保存在倉庫對象的chainDs屬性。這次對象對應的目錄為chain。
調用倉庫對象的openDealsDatastore方法,打開交易數據存儲。
這個方法會生成倉庫存儲對象,并保存在倉庫對象的dealsDs屬性。這次對象對應的目錄為deals。
獲取環境變量。
獲取命令行參數。
調用節點的New方法,創建一個節點。首先,生成一個配置對象,使用前面幾步形成的選項參數和倉庫對象來設置配置對象;然后調用配置對象的Build方法,構建一個Filecoin節點。當我們不帶參數啟動時,配置對象中只有倉庫對象會被設置。Build函數執行流程如下:
FTX提交破產申請后Coinbase交易量暴跌75%:金色財經報道,據加密市場分析平臺Nomics數據顯示,在FTX提交破產申請后,Coinbase的交易量暴跌了約75%,表明加密投資者或因市場日益動蕩而對整個加密貨幣行業產生懷疑。瑞穗高級分析師丹·多列夫 (Dan Dolev) 表示,FTX提交破產申請之后,越來越多投資者開始重新評估是否要交易加密貨幣,這可能會損害像Coinbase這樣的交易平臺,此外Coinbase首席執行官Brian Armstrong在社交媒體上發文稱,現在需要強調Coinbase和FTX并不一樣。[2022/11/13 12:56:40]
如果配置對象中沒有倉庫對象,則生成一個內存版倉庫對象。
生成區塊存儲對象。?
'調用配置對象的buildHost方法,生成libp2pHost對象'。buildHost方法調用libp2p的New方法,這個方法最終調用config/config.go中定義的NewNode方法,這個方法:
首先,調用swarm的NewSwarm方法創建一個swarm對象。
然后,調用basic_host.go中定義的NewHost來創建host對象。在創建host對象過程中,把swarm對象保存為host對象的網絡對象,同時設置swarm的連接處理器和流處理器分別為host對象的newConnHandler和newStreamHandler兩個方法。
然后,調用swarm的AddTransport方法,添加指定的傳輸協義。
BTC最后活躍5y-7y供應量達到2年高點:金色財經報道,據Glassnode數據顯示,BTC最后活躍 5y-7y供應量達到2年高點,供應量為1,089,301.678 BTC。[2022/10/16 17:27:57]
最后,調用host的Listen方法,開始監聽指定的地址。
生成pinger服務對象。
生成區塊驗證器consensus.DefaultBlockValidator對象。
使用libp2pHost對象和路由對象,生成bitswap網絡對象。
使用bitswap網絡對象和區塊存儲對象,生成bitswap對象。
使用區塊存儲對象和bitswap對象,生成區塊服務對象。
生成獲取區塊net.Fetcher對象,以便從遠程節點獲取數據。
''調用readGenesisCid函數,獲取創世區塊的CID''。
生成chain.Store對象。
生成chain.ChainStateProvider對象。
生成powerTable對象,類型為consensus.MarketView對象。
根據配置對象是否有獎勵,調用不同的方法節點共識器。如果獎勵對象為空,則調用consensus/processor.go的NewDefaultProcessor函數,生成共識器;否則,調用NewConfiguredProcessor函數,生成共識器。兩個函數都生成consensus.DefaultProcessor對象,區塊在于它們的屬性。
中國文物交流中心:對有平臺擅自發售數字藏品的情況啟動調查核實:金色財經報道,中國文物交流中心通過官微發布聲明表示,對有平臺擅自以中國文物交流中心指導、監制和監修等名義發售數字藏品的情況啟動調查核實,并敦促相關網絡平臺及時停售下架所涉及到的數字藏品。(新民晚報)[2022/8/11 12:17:51]
調用consensus/NewExpected.go的NewExpected函數,生成consensus.Protocol接口節點共識consensus.Expected對象。根據配置對象是否有proofs.Verifier接口對象,在生成過程中會使用不同的參數。
調用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方法,訂閱這個主題的消息通知。
廣東能源局聯合通信管理局全面整治“挖礦”:金色財經報道,6月13日至19日全國節能宣傳周,2022年廣東省節能宣傳周來臨之際,廣東省能源局、廣東省通信管理局聯合開展全面整治虛擬貨幣“挖礦”活動。廣東省能源局、廣東省通信管理局表示,將加大力度,將虛擬貨幣“挖礦”活動整治工作進行到底,堅決維護互聯網健康安全秩序,推動經濟社會高質量發展。
據悉,廣東省能源局、廣東省通信管理局聯合印制了全面整治虛擬貨幣“挖礦”活動的宣傳海報,并通過“一圖讀懂”揭露了虛擬貨幣“挖礦”的本質及其危害。尤為值得注意的是,虛擬貨幣“挖礦”活動已被列入《產業結構調整指導目錄》(2019年本)淘汰類,屬“落后生產工藝裝備”范疇。虛擬貨幣“挖礦”活動違反《中華人民共和國民法典》《中華人民共和國循環經濟促進法(2018修正)》《中華人民共和國節約能源法》等法律法規。[2022/6/16 4:32:07]
生成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服務器。
這個時代,從不缺少有勇氣的創業者。當區塊鏈隨風暴而來,他們像一面旗幟,獨自在這偉大的風暴中承受。金華月便是這眾多的區塊鏈創業者之一。金華月是跨鏈錢包Theia的創始人、連續創業者、天使投資人.
1900/1/1 0:00:00來源:小蔥區塊鏈 名為DeathRansom的比特幣勒索病在誕生初期幾乎淪為笑柄,因為受感染的用戶發現這個病鎖死文件的邏輯非常粗糙,僅僅是在原始文件文件名后添加了一個“.wctc”的擴展名.
1900/1/1 0:00:00來源:小蔥區塊鏈 11月份以來,比特幣跌幅近30%,價格刷新近半年新低。當然,其他主流貨幣的跌幅更為慘烈,多數幣種刷新四月份以來新低.
1900/1/1 0:00:00來源:新華社 最近,“區塊鏈”火了。從居高不下的熱度中,可以感受到企業、機構對區塊鏈技術和產業發展的熱情,但一些地方出現的“虛火”過旺、操作跑偏等現象也不容忽視.
1900/1/1 0:00:00據Cointelegraph11月26日報道,法國央行第一副行長呼吁在歐洲建立基于分布式賬本技術的結算和支付系統.
1900/1/1 0:00:00原文:光明網 作者:孔繁鑫孫宗鶴 中共中央局10月24日就區塊鏈技術發展現狀和趨勢進行第十八次集體學習.
1900/1/1 0:00:00