比特幣價格 比特幣價格
Ctrl+D 比特幣價格
ads

HELLO:精通Filecoin:Filecoin 源碼之 Hello 協議_ELLO

Author:

Time:1900/1/1 0:00:00

當調用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)

以太坊客戶端Erigon更新2023年路線圖,包括執行層升級Erigon 3并引入共識層Caplin:7月9日消息,以太坊客戶端Erigon更新2023年路線圖,其執行層從2次升級改為1次,將被命名為Erigon 3(此前是Erigon 4)。同時,引入共識層Caplin,這被設計為與Erigon 3一起作為單一進程運行、或作為獨立進程運行。[2023/7/9 22:26:32]

當連接建立時,通過后面注冊的通知者,從而調用sayHello方法,在這個方法中打開一個hello協議的流,并發送hello消息。

調用Host對象的網絡對象的Notify方法,把自身作為被通知者注冊到網絡對象上。h.Network().Notify((*helloNotify)(hello))

在這一步,通過調用host對象的Network方法,返回底層的swarm對象,然后把hello對象轉化為helloNotify對象,最后調用swarm對象的Notify方法,從而當底層的swarm對象有任何事件發生時都會通知helloNotify對象。

在Hello協議中我們只關心建立連接事件,所以helloNotify類型只實現了這個方法,其他方法都為空實現,具體如下:

type?helloNotify?Handler

BitMEX創始人:BTFP計劃印出4.4萬億美元,美聯儲即將扭轉收緊周期:3月17日消息,BitMEX創始人Arthur Hayes發文表示:美聯儲的銀行定期融資計劃(BTFP)是以另一種方式進行了4.4萬億美元的量化寬松,金額甚至超過為應對COVID危機印出的4.189萬億美元。雖然BTFP計劃被規定只持續一年,但這個計劃幾乎肯定會被預防性地延長。預計美聯儲要么會在即將召開的三月會議上開始降息,要么幾個月后一場嚴重的經濟衰退將迫使它轉向。自銀行危機爆發以來,2年期國庫券收益率已下跌超過100個基點。市場正在高呼銀行體系支持的通縮,而美聯儲最終會聽取市場的呼聲。在這次銀行危機中,加密貨幣再次證明了它是惡臭、浪費、以法定貨幣為驅動的西方金融體系的煙霧報警器。[2023/3/17 13:10:50]

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)????????}????}(。

Amber Group:Mai Finance金庫曾存在嚴重重入漏洞,項目方已部署新預言機合約:金色財經報道,Amber Group發文稱,其區塊鏈安全團隊于10月18日在零利率貸款協議Mai Finance的兩個金庫(SCSEMVT和YCSEMVT)中發現一個嚴重重入漏洞。該漏洞將允許攻擊者操縱抵押品價格,從池中借入所有資金并提走資金。

Amber Group在10月19日聯系QiDao團隊后,QiDao在10月20日提出解決方案并部署一個新的預言機合約。[2022/12/21 21:57:13]

當節點作為客戶端,撥號連接到遠程對等節點時,底層的swarm對象會調用自身的notifyAll方法,通知所有的Notify對象有連接被打開,即調用所有Notify對象的Connected方法,包括前面我們注冊的通知對象。當調用helloNotify對象的Connected方法時,這個方法內部調用自身的hello方法,后者返回自身并強制轉化為Handler類型,然后調用它的sayHello方法,對我們當前連接的遠程進行打招呼。

與此同時,當遠程節點作為服務器,接收到我們發送的連接請求生成連接時,它的swarm對象也會通知它的所有Notify對象,從而也會它的前面注冊的通知對象,即調用服務器商的Connected方法,從而調用它的sayHello方法向我們發送它的區塊情況;因為第二步中,我們把Hello對象的handleNewStream方法注冊為Hello協議的處理器,所以當節點接收到遠程節點發送區塊情況時,就會調用這個方法進行處理,這個方法又會調用調用全節點的syncCallBack方法進行區塊同步處理。

三箭資本將超1.4萬枚stETH轉換為約1366萬枚USDT:6月17日消息,PeckShield 在 Twitter 上表示,被 Etherscan 標記為 3AC(Three Arrows Capital)的地址分為兩筆交易將 14110 枚 stETH 通過 0x Protocol 交易為約 1366 萬枚 USDT。[2022/6/17 4:33:29]

總體上來說,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()

成都一法院判定虛擬貨幣不能用于設立質權:6月1日消息,近日,高新法院審結全國首例要求行使對比特幣質權而引發的民間借貸糾紛案件,與常見的比特幣買賣、比特幣支付不同,該案借款人以其持有的比特幣質押給出借方,在借款合同到期后,借款人要求出借方行使質權,并將剩余的比特幣歸還,故訴至法院。

成都高新法院一審認為虛擬貨幣不能用于設立質權,當事人白某不服提出上訴,成都市中級人民法院認為中國人民銀行聯合各部委多次發文明確,虛擬貨幣不具有與法定貨幣等同的法律地位。比特幣、以太幣等虛擬貨幣不具有法償性,不應且不能作為貨幣在市場上流通使用。(封面新聞)[2022/6/1 3:55:50]

這個方法內部執行流程如下:

調用自身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)

}???

Tags:HELLOHELELLOOTIHello Art TokenChellitELLO幣Robotina

歐易交易所app官網下載
DLT:姚前:基于區塊鏈的新型金融市場基礎設施與傳統FMI有什么區別?_DLTC幣

作者:姚前 來源:中國金融雜志 編者注:原標題為《姚前:基于區塊鏈的新型金融市場基礎設施》習近平總書記在中央局第十八次集體學習時的重要講話.

1900/1/1 0:00:00
加密貨幣:兩個女孩全程不帶現金,只付加密貨幣幾乎游遍大半個國家是一種什么體驗?_比特幣行情圖怎么看

編譯:聽風 來源:白話區塊鏈 巴西阿雷格里港的兩個女孩Caroline和Kaká啟動了一個名為“靠加密貨幣生活”的項目,開啟了一段只使用加密貨幣付款的挑戰之旅.

1900/1/1 0:00:00
BTC:行情伴隨利空消息面下行,空頭危機仍未解除_ETC

作者|哈希派分析團隊 中幣(ZB) 早行情:BTC 現報53536美元:據中幣(ZB)交易平臺行情數據,截止到今日10:00時,BTC 現報53536美元(+4.34%).

1900/1/1 0:00:00
區塊鏈:巴比特專欄 | 從數據庫角度思考區塊鏈_Havens Nook

一、前言 很多新人朋友不明白區塊鏈是個什么東西,不明白它為什么既可以跟比特幣掛上鉤,又可以跟發票掛鉤,又可以跟銀行、供應鏈金融掛上鉤,甚至還可以跟存證掛上鉤,如果去書本上找區塊鏈的定義.

1900/1/1 0:00:00
CFT:CFTC新任主席發文表態:我們不想扼殺加密貨幣創新_數字資產

美國商品期貨交易委員會主席呼吁對加密貨幣實施“以原則為導向的監管”。希思·塔爾伯特在2019年7月接替前主席克里斯托弗·吉安卡洛.

1900/1/1 0:00:00
SDT:增加對接交易所數量 切換新區塊鏈,USDT市場占有率依然領先_USDT

USDT仍然是大多數加密交易者選擇的穩定幣。盡管有人批評Tether沒有完全受到法幣支持以及iFinex的銀行問題,USDT仍然被廣泛使用.

1900/1/1 0:00:00
ads