什么是日蝕攻擊
首先簡單介紹一下日蝕攻擊
以太坊的節點發現機制基于Kademlia,但其目的卻不同,Kademlia旨在成為在分布式對等網絡中存儲和查找內容的手段,而以太坊僅用于發現新的節點。由于以太坊的節點是由其公鑰表示的,并且不受IP限制,因此在一個機器上可以同時存在很多節點。攻擊者在很少的服務器上制作出很多的節點,并積極的ping受害者的服務器。通過Kademlia協議,攻擊者的節點信息將存儲并填充在受害者節點列表中。下一步就是讓受害者重啟機器,手段包括斷電、ddos攻擊等等。重啟后,攻擊者再不停的ping被害者的節點以建立tcp連接,一旦被害者所有的tcp連接都是攻擊者制造的,那么就達到了把被害者與正常的網絡隔離的目的,當然最大的目的應該還是為了雙花。有一篇論文是專門介紹日蝕攻擊的,大家可以找來看看。
網上有很多關于日蝕攻擊的詳細介紹,在這里不做贅述。
以太坊上BTC錨定幣總發行量升至17.67萬枚:DeBank數據顯示,截至目前,BTC錨定幣總發行量升至176733枚,鎖倉量約為85.5億美元。其中WBTC發行量為127145枚,占比為71.94%。緊隨其后的是HBTC和renBTC,發行量分別為21906枚和18364枚。[2021/2/16 19:50:58]
以太坊是如何防止日蝕攻擊的
在剛才提到的論文中,提到了以太坊的geth1.8.0解決了日蝕攻擊,于是作者拿1.8.0和1.7.3做對比,理清了以太坊解決這個問題的做法。
直接看代碼。
以太坊啟動時加載p2p網絡的流程如下,
cmd/geth/main.goinit方法->geth->startNode()->utils.StartNode()->stack.Start()->running.Start()
以太坊基礎設施Infura以太坊API服務中斷:Ethereum和IPFS的API服務供應商Infura表示,其Ethereum Mainnet API服務暫時中斷,團隊正在調查并努力恢復服務功能。注,Infura是由開發者MichaelWuehler開發的一種基礎設施,可以無需運行全節點,即可讓去中心化應用在以太坊上處理信息。一些最流行的去中心化應用或者協議,例如以太坊錢包MetaMask或者去中心化交易所協議0x,都依靠Infura向以太坊主網播送交易數據和智能合約,Infura處理每日高達130億次的請求。[2020/11/11 12:19:06]
這個running.Start()調用的即是p2p/server.go中的Start()方法,看看這個方法做了什么:
//Startstartsrunningtheserver.//Serverscannotbere-usedafterstopping.func(srv*Server)Start()(errerror){......srv.loopWG.Add(1)gosrv.run(dialer)srv.running=truereturnnil}
Circle向以太坊網絡新增發3,878萬枚USDC:據DAppTotal.com穩定幣專題頁面數據顯示:10月21日11時37分 ,USDC發行方Circle向以太坊網絡新增發1筆價值3,878萬美元的USDC, 塊高度為:11097104,交易哈希值為:0xd4b9365a9d79da4618b53f0197e2e3a5605912348bc40f4ea879f3623e896594 。截至目前,Circle在以太坊網絡上的ERC20 USDC總發行量已達2,785,629,641枚。[2020/10/21]
這篇文章主要關注解決日蝕攻擊相關代碼,其他的不做介紹。
上面的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(){}}}...}
當前以太坊未確認交易為93127筆:金色財經消息,據OKLink數據顯示,當前以太坊未確認交易93127筆,當前全網算力為179.70TH/s,全網難度為2.40p,24h 鏈上交易量1,975,341.81ETH,當前平均出平均出塊時間為13s。[2020/7/13]
注意加粗的代碼,有一個針對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}}
動態 | 以太坊未確認交易35535筆:據Etherscan.io數據顯示,以太坊未確認交易35535筆。當前挖礦難度2511.39 TH,交易處理能力6.2 TPS。截至目前以太坊全球均價為153.03美元,最近24小時漲幅為3.04%。[2019/11/28]
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個
尊敬的BIONE用戶: 原定于今日中午12時開啟的LOLTokenIEO申購活動,延遲到今日18時正式開啟。對于延遲給您帶來的不便,敬請諒解,感謝您對BIONE交易所長久的支持.
1900/1/1 0:00:00BTC周線收陽,并成看漲吞沒形態,陽線實體將上周的陰實體吞沒,表明大趨勢方向依舊向好。而且,前期BTC自19年上半年強勢站上7000美元開始,整體走勢仍處于2015年上一輪牛市初始階段形成的長期.
1900/1/1 0:00:00尊敬的幣權BQB用戶: 9月6日最新消息幣權BQB和牛頓達成戰略合作,牛頓將于近期推出新的Newmall機制,以掙錢的商城為理念,賦能有社群的團隊可以直接推廣商城.
1900/1/1 0:00:00一、產品方面 1、上線KYC識別功能,用戶可通過人臉、證件識別功能完成KYC認證。2、優化APP端交易深度圖。3、優化APP自選交易幣對,用戶更新APP后仍可保留自選幣對記錄.
1900/1/1 0:00:00尊敬的幣權BQB用戶: BQB上線CMT,并開放CMT/USDT,CMT/BTC具體時間如下:CMT交易開啟時間:9月09日18:00CyberMiles("CM")是由區塊鏈開發研究室5xla.
1900/1/1 0:00:009月9日消息,英國稅務海關總署、在線平臺eToro和會計行業機構ICAEW最近在一次網絡研討會中聯合向加密交易者提供稅務建議.
1900/1/1 0:00:00