當調用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)
破產法庭將允許FTX暫時不透露機構客戶名稱,并永久刪除個人客戶名稱:6月10日消息,特拉華州威爾明頓的美國破產法官 John Dorsey 裁定,FTX 可以從其破產申請中永久刪除個人客戶的姓名,該決定聽取了 FTX 此前表示的「公開客戶姓名會使他們面臨風險」的證詞,即使個人客戶的電子郵件地址等其他識別信息處于保密狀態。
此外,John Dorsey 還授權 FTX 可臨時從其客戶名單中刪除公司和機構投資者的名字,但 FTX 必須在 90 天內對此提出新的要求。Dorsey 表示,機構客戶不會面臨與個人相同的風險,但如果 FTX 決定整體出售其加密貨幣交易業務,機構客戶的名字可能對其來說是有價值的財產。[2023/6/10 21:27:38]
當連接建立時,通過后面注冊的通知者,從而調用sayHello方法,在這個方法中打開一個hello協議的流,并發送hello消息。
調用Host對象的網絡對象的Notify方法,把自身作為被通知者注冊到網絡對象上。h.Network().Notify((*helloNotify)(hello))
在這一步,通過調用host對象的Network方法,返回底層的swarm對象,然后把hello對象轉化為helloNotify對象,最后調用swarm對象的Notify方法,從而當底層的swarm對象有任何事件發生時都會通知helloNotify對象。
標記為Amber的地址將1萬枚ETH轉至Binance:2月1日消息,據Lookonchain監控,2小時前,標記為Amber的地址將1萬枚ETH(約合1580萬美元)轉至Binance。[2023/2/1 11:40:36]
在Hello協議中我們只關心建立連接事件,所以helloNotify類型只實現了這個方法,其他方法都為空實現,具體如下:
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)????????}????}(。
IRC與Stellar發展基金會合作,試行數字現金支付系統:金色財經報道,國際救援委員會 (IRC) 與Stellar發展基金會合作,試行由Stellar網絡、Circle的USDC、Vibrant和MoneyGram International提供支持的數字現金支付系統,以加密貨幣快速、敏捷、鏈上可追溯性和問責制的特性,幫助烏克蘭難民和其他受戰爭影響的人。[2022/12/16 21:47:55]
當節點作為客戶端,撥號連接到遠程對等節點時,底層的swarm對象會調用自身的notifyAll方法,通知所有的Notify對象有連接被打開,即調用所有Notify對象的Connected方法,包括前面我們注冊的通知對象。當調用helloNotify對象的Connected方法時,這個方法內部調用自身的hello方法,后者返回自身并強制轉化為Handler類型,然后調用它的sayHello方法,對我們當前連接的遠程進行打招呼。
與此同時,當遠程節點作為服務器,接收到我們發送的連接請求生成連接時,它的swarm對象也會通知它的所有Notify對象,從而也會它的前面注冊的通知對象,即調用服務器商的Connected方法,從而調用它的sayHello方法向我們發送它的區塊情況;因為第二步中,我們把Hello對象的handleNewStream方法注冊為Hello協議的處理器,所以當節點接收到遠程節點發送區塊情況時,就會調用這個方法進行處理,這個方法又會調用調用全節點的syncCallBack方法進行區塊同步處理。
15名Terraform員工在調查期間被禁止離開韓國:金色財經報道,由于韓國檢察官正在調查Terra 的 LUNA 和 UST 的大規模倒塌事件,其 15 名前任和現任員工不得離開韓國。這 15 名知名員工包括貸款協議 Anchor 的前開發人員。他們都受到了出國旅行的限制,可能會被邀請接受審訊。彭博社在這里引用了來自韓國的聯合通訊社。
然而,韓聯社消息人士拒絕透露目前的調查情況,也拒絕透露有多少 Terra 員工已經受到質疑。但消息人士表示,在這種情況下,通常會實施出境禁令。截至目前,Terra 尚未收到任何評論。(u.today)[2022/6/22 4:43:38]
總體上來說,Hello協議通過
sayHello和
handleNewStream開啟了區塊同步,前者把自身的區塊情況發送到遠程節點,后者處理遠程節點發送的區塊情況。
sayHello方法處理如下:
調用Host對象的NewStream,生成一個處理Hello協議的流對象。s,?err?:=?h.host.NewStream(ctx,?p,?protocol)
if?err?!=?nil?{
????return?err
}
任天堂美國公司前總裁:游戲行業正在將元宇宙元素融入到游戲中:5月30日消息,任天堂美國公司前總裁Reggie Fils-Aimé認為,游戲行業正穩步地將元宇宙元素融入到游戲中。Fils-Aimé認為,像任天堂這樣的老牌游戲公司,憑借其在構建互動和持久性世界方面的經驗,將在元宇宙競爭中處于領先地位。此外,Fils-Aimé表示,雖然關注未來的元宇宙很重要,但為消費者提供有趣和好玩的內容應該是游戲公司的目標。(Newsbitcoin)[2022/5/30 3:51:06]
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)
}???
據Cointelegraph11月26日報道,Blockstream首席執行官亞當?巴克在一次專訪中表示,對他而言,比特幣是至高無上的,甚至連央行發行的穩定幣或其他數字貨幣都無法與之媲美.
1900/1/1 0:00:00作者:?閃電黃世亮 原標題:《資產上鏈需要的是制度建設,而不是技術突破》鏈上資產有很多好處,但相比于鏈下資產來說,鏈上資產總量相當小。鏈下資產能轉換成鏈上資產,對鏈和資產是雙贏.
1900/1/1 0:00:00作者:EdFelten 翻譯&校對:閔敏&阿劍來源:以太坊愛好者編者注:原標題為《觀點|17萬個以太坊和40萬個ENS域名》Rollup是近年來在智能合約可擴展性方面最火爆的想法.
1900/1/1 0:00:00大型匯款網絡公司速匯金宣布,基于區塊鏈的支付公司瑞波公司已經完成了最初的承諾,完成了最后一筆2000萬美元投資.
1900/1/1 0:00:00據CCN12月5日報道,日本最大的銀行三菱日聯金融集團曾被廣泛報道的加密貨幣計劃已“大打折扣”.
1900/1/1 0:00:00央行上海總部表示,近年來,與虛擬貨幣相關的炒作花樣翻新、投機盛行,價格暴漲暴跌,風險快速聚集。相關融資主體通過違規發售、流通代幣,向投資者籌集資金或比特幣、以太坊等虛擬貨幣,其本質上屬于未經批準.
1900/1/1 0:00:00