什么是日蝕攻擊
首先簡單介紹一下日蝕攻擊
以太坊的節點發現機制基于Kademlia,但其目的卻不同,Kademlia旨在成為在分布式對等網絡中存儲和查找內容的手段,而以太坊僅用于發現新的節點。由于以太坊的節點是由其公鑰表示的,并且不受IP限制,因此在一個機器上可以同時存在很多節點。攻擊者在很少的服務器上制作出很多的節點,并積極的ping受害者的服務器。通過Kademlia協議,攻擊者的節點信息將存儲并填充在受害者節點列表中。下一步就是讓受害者重啟機器,手段包括斷電、ddos攻擊等等。重啟后,攻擊者再不停的ping被害者的節點以建立tcp連接,一旦被害者所有的tcp連接都是攻擊者制造的,那么就達到了把被害者與正常的網絡隔離的目的,當然最大的目的應該還是為了雙花。有一篇論文是專門介紹日蝕攻擊的,大家可以找來看看。
網上有很多關于日蝕攻擊的詳細介紹,在這里不做贅述。
比特大陸新款以太坊礦機E9性能:單臺算力3GH/s,單位功耗0.85J/M:4月24日,在2021年新基建區塊鏈峰會中,比特大陸環太區商務負責人高天林在演講中公布以太坊礦機E9性能,單臺算力3GH/s,功耗2556W,單位功耗0.85J/M。[2021/4/24 20:53:56]
以太坊是如何防止日蝕攻擊的
在剛才提到的論文中,提到了以太坊的geth1.8.0解決了日蝕攻擊,于是作者拿1.8.0和1.7.3做對比,理清了以太坊解決這個問題的做法。
直接看代碼。
以太坊啟動時加載p2p網絡的流程如下,
cmd/geth/main.goinit方法->geth->startNode()->utils.StartNode()->stack.Start()->running.Start()
USDC Treasury在以太坊網絡增發超3195萬枚USDC:Whale Alert數據顯示,北京時間4月16日04:25起,USDC Treasury在以太坊網絡上增發三筆共31,954,744枚USDC。[2021/4/16 20:25:04]
這個running.Start()調用的即是p2p/server.go中的Start()方法,看看這個方法做了什么:
//Startstartsrunningtheserver.//Serverscannotbere-usedafterstopping.func(srv*Server)Start()(errerror){......srv.loopWG.Add(1)gosrv.run(dialer)srv.running=truereturnnil}
這篇文章主要關注解決日蝕攻擊相關代碼,其他的不做介紹。
以太坊宣布推遲原定今年8月舉行的Devcon大會:金色財經報道,以太坊官方發布博客文章稱,將推遲Devcon大會的時間,不再繼續推進在8月份舉辦的目標。Devcon團隊期望隨著疫苗的可用性增加以及與大流行相關的趨勢有所改善,很快能夠公布新的日期。[2021/1/27 13:37:13]
上面的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(){}}}...}
V神:以太坊2.0需要很長時間 各方批評激發了改善工作:8月12日消息,推特網友Sabin P提問稱,可擴展性非常重要,這就是人們在ETH中等待多年的原因。今天的技術最終將成為絕對的未來,但是你不認為2.0會花費很多時間嗎?V神回復稱,是的,2.0需要很長時間。這就是為什么我很高興我們終于有了測試網,并且同時擁有其他擴展技術如rollups。此外他還稱,對以太坊肯定有批評,但我敢肯定,以太坊的人也知道其中絕大部分,這些批評激發了大家為改善局面所做的工作。[2020/8/12]
注意加粗的代碼,有一個針對inboundCount的操作,當有posthandshake、addpeer消息的時候,會先去check,如果add或del了一個peer,則有對應的inboundCount或者inboundCount--。看看到底check了什么:
protoHandshakeChecks最終也是調用encHandshakeChecks:
分析 | 以太坊基本面表現不佳 對BTC匯率持下降趨勢 ?:據TokenGazer數據分析顯示,截止至7月22日11時,以太坊價格為$226.31,總市值為$24,200.7M,主流交易所交易量約為$166.59M,環比有一定幅度下滑;以太坊對比特幣匯率保持下降趨勢;基本面方面,以太坊鏈上交易量近期震蕩下行,單日減量明顯,活躍地址數保持下降趨勢,算力保持穩定;ETH 鏈上DApp交易量持續下滑,近期表現不佳;以太坊30天開發者指數約為2.26;以太坊與BTC的關聯度保持穩定,目前關聯度約為0.8;ERC20代幣總市值約為以太坊總市值的67.12%,持續回升。[2019/7/22]
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個
金色財經比特幣9月9日訊RickRieder是貝萊特集團全球固定收益首席投資官,也是其全球分配投資團隊負責人,他最近談到如今的經濟和貨幣政策狀況,并認為如果經濟增長停滯不前.
1900/1/1 0:00:00FXstreet分析稱,BTC/USD周六上漲近2%,但難以繼續上漲。因為缺乏基本面驅動因素表明,這是對上周五大幅下跌的技術性修正.
1900/1/1 0:00:00尊敬的中幣用戶: 中幣決定在“活動區”上線UP首期項目LivenPay,現就相關事項公告如下:1、項目名稱:LivenPay;2、UP申購時間:香港時間2019年9月12日14:00至2019年.
1900/1/1 0:00:00尊敬的幣權BQB用戶: BQB上線BTM,并開放BTM/USDT具體時間如下:BTM交易開啟時間:9月10日16:00比原鏈旨在探索不同類型資產與區塊鏈的結合.
1900/1/1 0:00:00FunTwitter? 每日最新大咖觀點,看我就夠了!2019/09/10?期本期作者:三月既望公眾號:野花說 01 1.25億美金保單護航、梅隆銀行提供存儲.
1900/1/1 0:00:002019年作為公鏈回血元年,我們看到許多新的公鏈項目都乘著大行情的暖風重新殺回幣圈的戰場。但是我們也看到,很多在幾年前風光無限的國產公鏈也都無疾而終.
1900/1/1 0:00:00