當調用Filecoin全節點的
start方法啟動全節點時,調用hello協議的
New方法,這個方法的處理如下:
生成Hello對象。hello?:=?&Handler{
????host:??????????????h,
????genesis:???????????gen,
????chainSyncCB:???????syncCallback,
????getHeaviestTipSet:?getHeaviestTipSet,
????net:???????????????net,
????commitSha:?????????commitSha,
}
其中host對象為底層libp2提供的Host對象;genesis為創世區塊的CID;chainSyncCB為全節點對象的syncCallBack函數,用于從遠程節點同步區塊;getHeaviestTipSet為porcelain.API對象的ChainHead方法,用于返回區塊鏈頭部的tipset;net表示當前的網絡環境,比如測試網、正式網;
調用host對象的SetStreamHandler方法,設置自身的handleNewStream方法作為/fil/hello/1.0.0協議的處理器。h.SetStreamHandler(protocol,?hello.handleNewStream)
32%的家族辦公室目前持有數字資產投資:5月9日消息,據高盛5月8日發布的題為“展望未來:家族辦公室投資洞察”的報告,32% 的家族辦公室目前持有數字資產投資,包括加密貨幣、NFTs、DeFi 和聚焦于區塊鏈的基金。
高盛在發布的《2023 年家族辦公室投資洞察報告》中指出,盡管去年家族辦公室對加密投資的興趣上升,但 2023 年這類投資者對數字資產市場的信心出現了大幅下滑[2023/5/9 14:52:18]
當連接建立時,通過后面注冊的通知者,從而調用sayHello方法,在這個方法中打開一個hello協議的流,并發送hello消息。
調用Host對象的網絡對象的Notify方法,把自身作為被通知者注冊到網絡對象上。h.Network().Notify((*helloNotify)(hello))
在這一步,通過調用host對象的Network方法,返回底層的swarm對象,然后把hello對象轉化為helloNotify對象,最后調用swarm對象的Notify方法,從而當底層的swarm對象有任何事件發生時都會通知helloNotify對象。
在Hello協議中我們只關心建立連接事件,所以helloNotify類型只實現了這個方法,其他方法都為空實現,具體如下:
Web3游戲發行商Fenix Games完成1.5億美元資金籌集:11月25日消息,Web3游戲發行商Fenix Games現已籌集1.5億美元,投資者包括Phoenix Group和迪拜風險投資公司Cypher Capital,計劃收購、投資和發行區塊鏈游戲。
Fenix Games首席執行官兼聯合創始人Chris Ko之前是Mythical Games的企業發展高級副總裁,曾在Electronic Arts和Kabam擔任總經理職務,在此之前,其還曾擔任貝萊德投資組合經理和摩根大通股票研究分析師。Fenix Games其他聯合創始人包括Mythical Games聯合創始人Rudy Koch、曾在瑞士信貸擔任全球電子交易主管的Antonio Hallack、Mythical Games前首席運營官Matt Nutt。[2022/11/25 12:33:55]
type?helloNotify?Handler
func?(hn?*helloNotify)?hello()?*Handler?{????return?(*Handler)(hn。
const?helloTimeout?=?time.Second?*?10
func?(hn?*helloNotify)?Connected(n?net.Network,?c?net.Conn)?{????go?func()?{????????ctx,?cancel?:=?context.WithTimeout(context.Background(),?helloTimeout)????????defer?cancel()????????p?:=?c.RemotePeer()????????if?err?:=?hn.hello().sayHello(ctx,?p);?err?!=?nil?{????????????log.Warningf("failed?to?send?hello?handshake?to?peer?%s:?%s",?p,?err)????????}????}(。
美國參議員呼吁銀行業監管部門審查SoFi的加密數字貨幣業務行動:金色財經報道,美國參議員Sherrod Brown、Jack Reed、Chris Van Holland和 Tina Smith向數字金融公司SoFi和幾家銀行監管機構寫了公開信,要求對 SoFi 的加密產品進行審查。給 SoFi的信表達了對該公司擴大其加密業務、它如何持有客戶的加密貨幣以及它的狗狗幣 (DOGE) 上市的擔憂,該公司網站上的一篇博客文章將其作為“拉高出貨”硬幣的一個例子。
立法者要求SoFi解釋其如何列出待售加密貨幣、如何處理客戶投訴以及如何確定“數字資產風險敞口的適當信用、市場和運營風險資本要求”。[2022/11/22 7:54:13]
當節點作為客戶端,撥號連接到遠程對等節點時,底層的swarm對象會調用自身的notifyAll方法,通知所有的Notify對象有連接被打開,即調用所有Notify對象的Connected方法,包括前面我們注冊的通知對象。當調用helloNotify對象的Connected方法時,這個方法內部調用自身的hello方法,后者返回自身并強制轉化為Handler類型,然后調用它的sayHello方法,對我們當前連接的遠程進行打招呼。
與此同時,當遠程節點作為服務器,接收到我們發送的連接請求生成連接時,它的swarm對象也會通知它的所有Notify對象,從而也會它的前面注冊的通知對象,即調用服務器商的Connected方法,從而調用它的sayHello方法向我們發送它的區塊情況;因為第二步中,我們把Hello對象的handleNewStream方法注冊為Hello協議的處理器,所以當節點接收到遠程節點發送區塊情況時,就會調用這個方法進行處理,這個方法又會調用調用全節點的syncCallBack方法進行區塊同步處理。
上海市《徐匯區關于支持元宇宙發展的若干意見》正在面向社會征求意見:8月2日消息,據上海市徐匯區政府官方文件通知,徐匯區已于近日發布《徐匯區關于支持元宇宙發展的若干意見(征求意見稿)》,現公開征求市民和有關單位的意見,征求意見截止日期為2022年8月20日。征求意見稿提到,將對聚焦虛擬現實、增強現實、數字孿生、人工智能、區塊鏈、物聯網等元宇宙底層支撐技術的企業進行扶持,助力企業等創新主體開展研發攻關,推動企業加快建設5G/6G、GPU、交互、云化、物聯網等元宇宙后端基礎設施,鼓勵企業研發生產虛擬主機、VR(虛擬現實)、AR(增強現實)、MR(混合現實)、腦機交互等元宇宙終端設備,支持企業在社交消費、教育醫療、文體娛樂、政務管理等領域開展符合法律規定的元宇宙場景內容搭建和生產。
其中,對開展元宇宙關鍵技術研發的企業,補助總額最高可至500萬元。特別重大的項目,可按“一事一議”原則依法給予支持。征求意見適用于工商注冊和稅務登記關系均在徐匯區,信用記錄良好的元宇宙相關領域企業及機構。[2022/8/2 2:54:04]
總體上來說,Hello協議通過
sayHello和
handleNewStream開啟了區塊同步,前者把自身的區塊情況發送到遠程節點,后者處理遠程節點發送的區塊情況。
sayHello方法處理如下:
BlockFi CEO:我可以100%確認不會以2500萬美元的價格出售:金色財經消息,加密貨幣交易和借貸平臺BlockFi CEO發推表示,我可以100%確認我們不會以2500萬美元的價格出售。我鼓勵大家只相信直接從BlockFi聽到的細節,我們將盡快與您分享更多信息。
此前消息,知情人士稱,FTX接近敲定以2500萬美元收購BlockFi。[2022/7/1 1:43:23]
調用Host對象的NewStream,生成一個處理Hello協議的流對象。s,?err?:=?h.host.NewStream(ctx,?p,?protocol)
if?err?!=?nil?{
????return?err
}
defer?s.Close()?//?nolint:?errcheck
調用自身的getOurHelloMessage方法,獲取自身區塊鏈頂端的信息。msg?:=?h.getOurHelloMessage()
這個方法內部執行流程如下:
調用自身getHeaviestTipSet方法,獲取區塊鏈頂端的信息這個方法是plumbing.API對象ChainHead方法的引用。
使用獲取到的區塊鏈信息,生成并返回消息對象Message。
通過流發送區塊信息到遠程節點。
handleNewStream方法處理如下:
生成消息對象Message,并從流中讀取遠程對等節點發送過來的內容到消息對象中。var?hello?Message
if?err?:=?cbu.NewMsgReader(s).ReadMsg(&hello);?err?!=?nil?{
????log.Debugf("bad?hello?message?from?peer?%s:?%s",?from,?err)
????helloMsgErrCt.Inc(context.TODO(),?1)
????s.Conn().Close()?//?nolint:?errcheck
????return
}
調用自身的processHelloMessage方法,處理遠程節點發送的消息。這個方法代碼如下:func?(h?*Handler)?processHelloMessage(from?peer.ID,?msg?*Message)?error?{
????if?!msg.GenesisHash.Equals(h.genesis)?{
????????return?ErrBadGenesis
????}
????if?(h.net?==?"devnet-test"?||?h.net?==?"devnet-user")?&&?msg.CommitSha?!=?h.commitSha?{
????????return?ErrWrongVersion
????}
h.chainSyncCB(from,?msg.HeaviestTipSetCids,?msg.HeaviestTipSetHeight)
return?nil
}
它的處理邏輯比較簡單:
首先,檢查遠程節點發送的創世區塊哈希是否自身的創世區塊哈希相等。如果不等,直接返回錯誤。
然后,檢查網絡類型。
最終,調用自身的chainSyncCB方法,處理遠程節點發送的區塊信息。這個同步回調方法對象在全節點的啟動方法Start中生成。它的主要生成就是根據遠程節點發送的區塊鏈最頂層的信息,生成一個types/SortedCidSet對象,然后調用chain/syncer.go中的HandleNewTipset方法來處理遠程發送的區塊信息。
根據前面處理消息的結果進行不同的處理。switch?err?:=?h.processHelloMessage(from,?&hello);?err?{
case?ErrBadGenesis:
????log.Debugf("genesis?cid:?%s?does?not?match:?%s,?disconnecting?from?peer:?%s",?&hello.GenesisHash,?h.genesis,?from)
????genesisErrCt.Inc(context.TODO(),?1)
????s.Conn().Close()?//?nolint:?errcheck
????return
case?ErrWrongVersion:
????log.Debugf("code?not?at?same?version:?peer?has?version?%s,?daemon?has?version?%s,?disconnecting?from?peer:?%s",?hello.CommitSha,?h.commitSha,?from)
????versionErrCt.Inc(context.TODO(),?1)
????s.Conn().Close()?//?nolint:?errcheck
????return
case?nil:?//?ok,?noop
default:
????log.Error(err)
}???
作者:?榴蓮哥 來源:?火訊財經資訊 編者注:原標題為《賽迪區塊鏈研究院院長劉權:區塊鏈應用即將在電子政務領域爆發》導語:10月25日,習近平總書記在中央局第十八次集體學習時.
1900/1/1 0:00:00來??源:21世紀經濟報道編者注:原標題為《區塊鏈到底該怎么玩?中國經濟未來怎么走?我們跟諾貝爾經濟學獎得主聊了聊》。本文作了不改變作者原意的刪減.
1900/1/1 0:00:00證券日報記者馬方業李冰 來源:證券日報 作為區塊鏈技術的主要特征之一,“去中心化”被提及的最為頻繁,也被認為最具顛覆性.
1900/1/1 0:00:00原創:聽風 密碼學中的加密、解密技術,是區塊鏈技術中的重要組成部分。為了更好地理解區塊鏈,我們有必要弄明白隱藏在加密技術背后的核心哲學理論、黑客文化,以及它們又是如何影響區塊鏈和加密貨幣的?今天.
1900/1/1 0:00:00最近在反復思考一個很有意思的問題,僅僅在一百年前,人類還難以快速自如的橫跨各大洲,但一百年后的今天,地球變得如此之小,以至于各種文明不得不短兵相接.
1900/1/1 0:00:0012月5日,海南自貿港數字經濟和區塊鏈國際合作論壇在海口正式開幕。在兩場主題圓桌“部長圓桌:數字經濟下的國際交流與合作”以及“一帶一路的數字經濟新機會”上,來自俄羅斯、哈薩克斯坦、印度尼西亞、馬.
1900/1/1 0:00:00