什么是日蝕攻擊
首先簡單介紹一下日蝕攻擊
以太坊的節點發現機制基于Kademlia,但其目的卻不同,Kademlia旨在成為在分布式對等網絡中存儲和查找內容的手段,而以太坊僅用于發現新的節點。由于以太坊的節點是由其公鑰表示的,并且不受IP限制,因此在一個機器上可以同時存在很多節點。攻擊者在很少的服務器上制作出很多的節點,并積極的ping受害者的服務器。通過Kademlia協議,攻擊者的節點信息將存儲并填充在受害者節點列表中。下一步就是讓受害者重啟機器,手段包括斷電、ddos攻擊等等。重啟后,攻擊者再不停的ping被害者的節點以建立tcp連接,一旦被害者所有的tcp連接都是攻擊者制造的,那么就達到了把被害者與正常的網絡隔離的目的,當然最大的目的應該還是為了雙花。有一篇論文是專門介紹日蝕攻擊的,大家可以找來看看。
網上有很多關于日蝕攻擊的詳細介紹,在這里不做贅述。
Jasmy將推出基于以太坊的Layer2解決方案Jasmy Chain:8月29日消息,日本物聯網平臺開發商Jasmy宣布正在構建基于以太坊的Layer2解決方案Jasmy Chain,以增強可擴展性,并提供更加透明、安全、個性化的數據交互體驗。以下是Jasmy Chain的主要設計特點:
支持 Rollup Layer2的賬戶抽象:減少L2交互的摩擦,同時確保與現有EVM標準100%兼容。
集成Jasmy AI引擎的Web3操作系統:所有交互都將變得更加模塊化、高效和智能。
基于DID和用戶數據的精準服務:在Jasmy Chain上,每個人都可以擁有唯一的身份,真正將數據控制權歸還給用戶,確保平等進入全球經濟體系。[2023/8/29 13:03:22]
以太坊是如何防止日蝕攻擊的
在剛才提到的論文中,提到了以太坊的geth1.8.0解決了日蝕攻擊,于是作者拿1.8.0和1.7.3做對比,理清了以太坊解決這個問題的做法。
以太坊開發團隊計劃9月15日推出新測試網 Hole?ky,以取代Goerli:6月26日消息,區塊鏈驗證器和質押服務商Everstake發布博客稱,以太坊團隊剛剛宣布即將推出名為Hole?ky的新測試網,其團隊參加了Hole?ky測試網發布協調電話會議。
目前,以太坊有兩個公共測試網:Sepolia允許開發人員測試合約和應用程序;Goerli允許協議開發人員測試網絡升級,并允許利益相關者測試運行驗證器。根據新提議的以太坊測試網生命周期計劃,Goerli于2023年第一季度進入長期支持階段。在生命周期終止日期(計劃于今年第四季度)之后,它將不再獲得客戶端團隊的支持。因此,下一個測試網應該在2023年底啟動,為Goerli關閉做好準備。[2023/6/27 22:01:43]
直接看代碼。
以太坊啟動時加載p2p網絡的流程如下,
Conor Grogan:數以千計的Kucoin存款地址向以太坊銷毀地址發送了數千萬美元的ETH:金色財經報道,Coinbase主管Conor Grogan在社交媒體發文稱,數以千計的Kucoin存款地址向以太坊銷毀地址發送了數千萬美元的ETH。這要追溯到21年9月,我想沒有人注意到這一點。如果你曾經想知道為什么null地址里有這么多ETH,現在你知道了,銷毀發生在21年9月7日開始的3天內,涉及3500多筆USDT和ETH的交易。也許他們與Bitfinex達成了一次性協議來贖回USDT?雖然不知道他們為什么要燃燒 ETH。[2023/5/30 9:50:16]
cmd/geth/main.goinit方法->geth->startNode()->utils.StartNode()->stack.Start()->running.Start()
IOTA聯合創始人:比特幣和以太坊并沒有真正實現去中心化:7月6日消息,IOTA聯合創始人David S?nsteb?在最近的一次采訪中表示,比特幣和以太坊并沒有實現真正地去中心化。他稱,比特幣和以太坊都需要通過采礦來運作。而這會導致需要復雜昂貴的礦機設備,會導致兩個加密貨幣的集中化。在任何工作量證明(PoW)生態系統中,如果實體擁有足夠的資源來進行大規模挖礦,那么它將對網絡產生重大影響。(Coinjournal)[2020/7/7]
這個running.Start()調用的即是p2p/server.go中的Start()方法,看看這個方法做了什么:
//Startstartsrunningtheserver.//Serverscannotbere-usedafterstopping.func(srv*Server)Start()(errerror){......srv.loopWG.Add(1)gosrv.run(dialer)srv.running=truereturnnil}
行情 | 以太坊未確認交易65564筆:根據公開數據顯示,目前以太坊的網絡未確認交易筆數為65564筆,網絡擁堵程度嚴重。[2018/9/3]
這篇文章主要關注解決日蝕攻擊相關代碼,其他的不做介紹。
上面的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(){}}}...}
注意加粗的代碼,有一個針對inboundCount的操作,當有posthandshake、addpeer消息的時候,會先去check,如果add或del了一個peer,則有對應的inboundCount或者inboundCount--。看看到底check了什么:
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個
時常有讀者留言咨詢:我在xxx價位買的BTC什么時候能解套,我在xxx價位買的以太坊什么時候能解套等類似的問題。“被套”是投資者在任何投資市場都會面臨的處境.
1900/1/1 0:00:00尊敬的EZB用戶:?經TITAN基金會申請,EZB定于2019年9月10日16:00開放主板DCNY交易市場TITAN/DCNY交易對,邀您參與.
1900/1/1 0:00:00摘要 本文是HashKeyResearch繼《解讀FacebookLibra未來,九大問題的思考》、《Defi發展瓶頸非受區塊鏈性能所累.
1900/1/1 0:00:00一、產品方面 1、上線KYC識別功能,用戶可通過人臉、證件識別功能完成KYC認證。2、優化APP端交易深度圖。3、優化APP自選交易幣對,用戶更新APP后仍可保留自選幣對記錄.
1900/1/1 0:00:00證券交易所運營商納斯達克發布公告稱,增加與去中心化金融相關的指數DeFix。公告稱,該運營商已與總部位于倫敦的經紀公司EXANTE合作提供DeFix指數,其中包括Augur和MakerDAO等項.
1900/1/1 0:00:00Ripple前CTOJedMcCaleb在過去兩年一直在大規模傾銷他的XRP代幣。最近,McCaleb的錢包再次收到了1億枚的XRP.
1900/1/1 0:00:00