什么是日蝕攻擊
首先簡單介紹一下日蝕攻擊
以太坊的節點發現機制基于Kademlia,但其目的卻不同,Kademlia旨在成為在分布式對等網絡中存儲和查找內容的手段,而以太坊僅用于發現新的節點。由于以太坊的節點是由其公鑰表示的,并且不受IP限制,因此在一個機器上可以同時存在很多節點。攻擊者在很少的服務器上制作出很多的節點,并積極的ping受害者的服務器。通過Kademlia協議,攻擊者的節點信息將存儲并填充在受害者節點列表中。下一步就是讓受害者重啟機器,手段包括斷電、ddos攻擊等等。重啟后,攻擊者再不停的ping被害者的節點以建立tcp連接,一旦被害者所有的tcp連接都是攻擊者制造的,那么就達到了把被害者與正常的網絡隔離的目的,當然最大的目的應該還是為了雙花。有一篇論文是專門介紹日蝕攻擊的,大家可以找來看看。
網上有很多關于日蝕攻擊的詳細介紹,在這里不做贅述。
Bitstamp將于9月25日起終止對美國客戶的以太坊質押服務:金色財經報道,加密交易所Bitstamp表示,考慮到美國當前的監管動態,將于9月25日起終止對美國客戶的以太坊質押。
Bitstamp美國首席執行官Bobby Zagotta表示,美國客戶將停止獲得質押獎勵,所有其他Bitstamp服務將不受影響。在2023年9月25日之前,客戶將繼續獲得質押獎勵,之后所有質押資產將被解除質押,獎勵連同本金將記入用戶的主Bitstamp賬戶余額。[2023/8/24 18:18:47]
以太坊是如何防止日蝕攻擊的
在剛才提到的論文中,提到了以太坊的geth1.8.0解決了日蝕攻擊,于是作者拿1.8.0和1.7.3做對比,理清了以太坊解決這個問題的做法。
直接看代碼。
以太坊啟動時加載p2p網絡的流程如下,
以太坊客戶端Nethermind已公開Warp2.0源代碼:3月10日消息,以太坊客戶端Nethermind已發布Warp2.0源代碼,不過其首席技術官GregVardy表示,還沒有準備好投入生產,還需要執行一些東西。
注,Warp旨在將任意Solidity合約轉換到Cairo,并將它們部署到StarkNet上。[2022/3/10 13:47:51]
cmd/geth/main.goinit方法->geth->startNode()->utils.StartNode()->stack.Start()->running.Start()
這個running.Start()調用的即是p2p/server.go中的Start()方法,看看這個方法做了什么:
//Startstartsrunningtheserver.//Serverscannotbere-usedafterstopping.func(srv*Server)Start()(errerror){......srv.loopWG.Add(1)gosrv.run(dialer)srv.running=truereturnnil}
DeFi風險分級協議Saffron V2版本上線以太坊主網,存款功能已上線:10月20日消息,DeFi風險分級協議Saffron V2版本上線以太坊主網,目前已開放存款功能,此外,挖礦獎勵將在10月24日之前暫停,屆時是否重新啟動挖礦獎勵將由治理投票決定。V2版本前端目前支持Metamask、CoinbaseWallet、Fortmatic和WalletConnect四種錢包。Saffron團隊表示,目前持有V1版本LP代幣的用戶依然可以在V1版本中解除質押。[2021/10/20 20:44:11]
這篇文章主要關注解決日蝕攻擊相關代碼,其他的不做介紹。
上面的gosrv.run(dialer)連接池管理協程,負責維護TCP連接的列表,監聽各種信號,處理peer的增刪改
func(srv*Server)run(dialstatedialer){...running:for{scheduleTasks()select{...casec:=<-srv.posthandshake://Aconnectionhaspassedtheencryptionhandshakeso//theremoteidentityisknown(buthasn'tbeenverifiedyet).iftrusted{//EnsurethatthetrustedflagissetbeforecheckingagainstMaxPeers.c.flags|=trustedConn}//TODO:trackin-progressinboundnodeIDs(pre-Peer)toavoiddialingthem.select{casec.cont<-case<-srv.quit:breakrunning}casec:=<-srv.addpeer://Atthispointtheconnectionispasttheprotocolhandshake.//Itscapabilitiesareknownandtheremoteidentityisverified.iferr==nil{//Thehandshakesaredoneanditpassedallchecks.p:=newPeer(c,srv.Protocols)//Ifmessageeventsareenabled,passthepeerFeed//tothepeerifsrv.EnableMsgEvents{p.events=&srv.peerFeed}name:=truncateName(c.name)srv.log.Debug("Addingp2ppeer","name",name,"addr",c.fd.RemoteAddr(),"peers",len(peers)1)gosrv.runPeer(p)peers=pifp.Inbound(){}}...casepd:=<-srv.delpeer://Apeerdisconnected.d:=common.PrettyDuration(mclock.Now()-pd.created)pd.log.Debug("Removingp2ppeer","duration",d,"peers",len(peers)-1,"req",pd.requested,"err",pd.err)delete(peers,pd.ID())ifpd.Inbound(){}}}...}
動態 | Netta發現以太坊智能合約虛擬機重大漏洞 覆蓋80%虛擬機:11月9日訊,近日,Netta研究院表示,其和清華大學軟件學院動態分析小組合作發現以太坊智能合約虛擬機(EVM)重大漏洞,目前該漏洞已被美國國家信息安全漏洞庫CVE認證,并稱這次漏洞遠比“The DAO”事件要嚴重,如被利用,或將嚴重破壞整個以太坊經濟模型,對全球運行多數公鏈造成沖擊。 據提供ID,經登錄CVE官方網站確已查詢到收錄信息,但該漏洞描述顯示“RESERVED”,漏洞被保密,并未披露具體細節。[2018/11/9]
注意加粗的代碼,有一個針對inboundCount的操作,當有posthandshake、addpeer消息的時候,會先去check,如果add或del了一個peer,則有對應的inboundCount或者inboundCount--。看看到底check了什么:
金色晚報 | 網易區塊鏈服務NBaaS正式上線 香港出現比特幣和以太坊ATM機:云南將上線基于區塊鏈技術的旅游平臺;云歌智能獲3000萬美元融資;雞尾酒供應商MicroBarBox接受BCH支付。更多晚報內容,請查看圖片。[2018/9/5]
protoHandshakeChecks最終也是調用encHandshakeChecks:
func(srv*Server)encHandshakeChecks(peersmap*Peer,inboundCountint,c*conn)error{switch{case!c.is(trustedConn|staticDialedConn)&&len(peers)>=srv.MaxPeers:returnDiscTooManyPeerscasepeers!=nil:returnDiscAlreadyConnectedcasec.id==srv.Self().ID:returnDiscSelfdefault:returnnil}}
inboundConn表示連接類型為主動連接過來。
看加粗的這段邏輯:如果該連接是信任的,且是主動連接過來的,且主動連接過來的節點數量大于srv.maxInboundConns()時,則拒絕此連接。
可以看出來,以太坊是通過限制主動連接過來的數量來阻止日蝕攻擊的。我們順便看下這個數量是多少:
func(srv*Server)maxInboundConns()int{returnsrv.MaxPeers-srv.maxDialedConns(。func(srv*Server)maxDialedConns()int{ifsrv.NoDiscovery||srv.NoDial{return0}r:=srv.DialRatioifr==0{r=defaultDialRatio}returnsrv.MaxPeers/r}
MaxPeers默認是25,defaultDialRatio表示能夠接受主動連接的比例,默認是3,所以最多允許傳入的tcp連接數量就是25/3=8個
親愛的用戶: 胖比特國際站已上線項目CarryProtocol(CRE)并支持CRE/USDT交易對,現已開放交易.
1900/1/1 0:00:00尊敬的用戶: 為慶祝IPC火熱上線,IPC將聯合BiKi平臺舉辦“買入拼手速,凈買入瓜分15000IPC”活動.
1900/1/1 0:00:00在最近的一次采訪中,DashCoreGroup首席執行官RyanTaylor表示,他們的PrivateSend功能最初是在masternode層上開發的.
1900/1/1 0:00:00親愛的KuCoin用戶:KuCoin已完成ONE交易競賽獎勵的發放,請獲獎者在資產中心>我的福利>其他獲贈頁面查詢獎勵的發放記錄.
1900/1/1 0:00:00穩定幣運營商Paxos推出了PAXGold(PAXG),這是一種黃金支持的以太坊(ETH)代幣.
1900/1/1 0:00:00本文觀點僅代表個人,僅限交流學習,所有內容不構成任何投資建議。想及時了解更多行情信息,請添加官方進群:jiamibaoluo“計劃你的計劃,交易你的計劃”,當交易者在交易者有所斬獲的時候,就會慢.
1900/1/1 0:00:00