當調用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)
Bitpanda加入Visa Partner Connect計劃:3月24日消息,奧地利金融科技獨角獸Bitpanda加入Visa Partner Connect計劃,這使得金融機構、銀行和金融科技公司能夠迅速向最終客戶提供加密貨幣、股票/ETF、貴金屬和大宗商品等資產類別的交易和投資服務。在這次合作之后,Bitpanda技術解決方案將開始擴大其在歐洲以外的投資基礎設施。
此外,Bitpanda的基礎設施被設置為一個模塊化系統,通過單一API集成使合作伙伴能夠從中選擇,例如儲蓄計劃、資產到資產互換、加密貨幣質押、碎片化股票、完整的區塊鏈服務等。 加密貨幣托管由受FCA監管的機構級托管提供商Bitpanda Custody提供。
目前其合作伙伴包括德國數字銀行N26、法國貨幣應用程序Lydia、英國金融科技Plum和意大利開放銀行提供商Fabrick等。(Finextra)[2023/3/24 13:24:03]
當連接建立時,通過后面注冊的通知者,從而調用sayHello方法,在這個方法中打開一個hello協議的流,并發送hello消息。
調用Host對象的網絡對象的Notify方法,把自身作為被通知者注冊到網絡對象上。h.Network().Notify((*helloNotify)(hello))
瑞士宇舶表和村上隆推出彩虹寶石腕表NFT系列:2月3日消息,瑞士頂級腕表品牌宇舶表(Hublot)宣布與著名藝術家村上隆合作推出13款腕表,這些腕表將以配套NFT的方式出售。最新發布活動中僅展示了一款腕表及NFT,其他12款將于3月下旬亮相,配套NFT則將于今年四月上線宇舶表官網,每枚售價為5萬瑞士法郎,購買NFT后有一年時間在OpenSea平臺上交易,2024年4月時如果能收集所有12款NFT才有機會購買最稀有的彩虹版本NFT和配套腕表。
此外,本次發布的新款腕表發售對象僅為Hublot Classic Fusion Takashi Murakami NFT所有者,該NFT當前地板價為1.6ETH。[2023/2/3 11:45:58]
在這一步,通過調用host對象的Network方法,返回底層的swarm對象,然后把hello對象轉化為helloNotify對象,最后調用swarm對象的Notify方法,從而當底層的swarm對象有任何事件發生時都會通知helloNotify對象。
在Hello協議中我們只關心建立連接事件,所以helloNotify類型只實現了這個方法,其他方法都為空實現,具體如下:
type?helloNotify?Handler
func?(hn?*helloNotify)?hello()?*Handler?{????return?(*Handler)(hn。
Decentraland創始人Ordano和Meilich加入了Genesis債權人名單:金色財經報道,Decentraland的高管和創始人中,有三位進入了對Genesis Global的50個最大的非內部人士無擔保索賠名單。Decentraland聯合創始人Esteban Ordano現在擔任顧問,他被列為一家名為Winah Securities的實體的聯系人。Genesis欠Winah將近2700萬美元。游戲公司Big Time Studios被拖欠2000萬美元。它由Decentraland的另一位聯合創始人Ari Meilich運營。他在2020年創辦了Big Time,但仍是一名Decentraland顧問。[2023/1/21 11:24:33]
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)????????}????}(。
幣安發布因斷電情況延長云算力挖礦時長計劃的通知:12月28日消息,據幣安公告,由于北美極端天氣影響,幣安云算力產品在2022年12月24日至2022年12月26日期間出現斷電情況,幣安會將受影響的云算力產品挖礦時長延長三天,以補償此次停電情況。如遇再次斷電,幣安將相應延長所有云礦產品的挖礦時長,不再另行通知。[2022/12/28 22:12:34]
當節點作為客戶端,撥號連接到遠程對等節點時,底層的swarm對象會調用自身的notifyAll方法,通知所有的Notify對象有連接被打開,即調用所有Notify對象的Connected方法,包括前面我們注冊的通知對象。當調用helloNotify對象的Connected方法時,這個方法內部調用自身的hello方法,后者返回自身并強制轉化為Handler類型,然后調用它的sayHello方法,對我們當前連接的遠程進行打招呼。
與此同時,當遠程節點作為服務器,接收到我們發送的連接請求生成連接時,它的swarm對象也會通知它的所有Notify對象,從而也會它的前面注冊的通知對象,即調用服務器商的Connected方法,從而調用它的sayHello方法向我們發送它的區塊情況;因為第二步中,我們把Hello對象的handleNewStream方法注冊為Hello協議的處理器,所以當節點接收到遠程節點發送區塊情況時,就會調用這個方法進行處理,這個方法又會調用調用全節點的syncCallBack方法進行區塊同步處理。
Celsius:若用戶在暫停提款、兌換和轉賬期間收到追加保證金通知需盡快回復:6月15日消息,加密借貸平臺Celsius在最新發布的社區常見問題解答中表示,當前在Earn賬戶中所有代幣都將繼續累積獎勵。關于支付追加保證金或還貸問題,如果用戶收到追加保證金通知,需要盡快回復追加保證金通知電子郵件,讓貸款團隊知道是否會增加更多抵押品或償還貸款。為了穩定流動性和運營,Celsius將繼續暫停提款、兌換和賬戶之間的轉賬,之后將向社區分享更多信息。[2022/6/15 4:27:52]
總體上來說,Hello協議通過
sayHello和
handleNewStream開啟了區塊同步,前者把自身的區塊情況發送到遠程節點,后者處理遠程節點發送的區塊情況。
sayHello方法處理如下:
調用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)
}???
來源:IPO早知道整理撰寫,文中觀點僅供參考 編輯:C叔 金融壹賬通此次計劃共計發行3600萬股美國存托股票,擬定的發行區間為每股12至14美元,以此上限計算.
1900/1/1 0:00:00《權力的游戲》從第一季開始就描繪了包括蘭尼斯特、坦格利安、史塔克等七大家族,為了爭奪權力的象征——鐵王座連年征戰,這中間充斥了殺戮、掠奪、權謀,這讓中世紀的歐洲處在一片混沌之中.
1900/1/1 0:00:00來源:ALTCOIN雜志編譯:頭等倉_Saline?編者注:原標題為《三個因素告訴你為什么比特幣需要轉型》比特幣網絡的安全性、比特幣價格和能源消耗是決定比特幣轉型的三大要素.
1900/1/1 0:00:00來源:01區塊鏈 作者:趙越?零壹智庫 ?近一年,資本方對中國區塊鏈行業投資趨于理性。融資事件數量同比下降50%,融資金額同比下滑75%;平均單筆融資金額未發生較大變化,仍維持在7000萬元以上.
1900/1/1 0:00:00區塊鏈技術是比特幣一起在2008年10月31號誕生的。比特幣的創建者中本聰不滿當時西方的貨幣政策。在他看來,西方國家中央銀行對商業銀行的保護以及其貨幣的過度增發是導致當時的金融危機的主要原因.
1900/1/1 0:00:00前言 主要分享ZcashSapling版本的協議細節。多多指教^_^!!! Zcash 迄今為止,Zcash總共經歷了三個版本的迭代,第四次版本升級時間預計在12.11.2019,據官方介紹,此.
1900/1/1 0:00:00