什么是日蝕攻擊
首先簡單介紹一下日蝕攻擊
以太坊的節點發現機制基于Kademlia,但其目的卻不同,Kademlia旨在成為在分布式對等網絡中存儲和查找內容的手段,而以太坊僅用于發現新的節點。由于以太坊的節點是由其公鑰表示的,并且不受IP限制,因此在一個機器上可以同時存在很多節點。攻擊者在很少的服務器上制作出很多的節點,并積極的ping受害者的服務器。通過Kademlia協議,攻擊者的節點信息將存儲并填充在受害者節點列表中。下一步就是讓受害者重啟機器,手段包括斷電、ddos攻擊等等。重啟后,攻擊者再不停的ping被害者的節點以建立tcp連接,一旦被害者所有的tcp連接都是攻擊者制造的,那么就達到了把被害者與正常的網絡隔離的目的,當然最大的目的應該還是為了雙花。有一篇論文是專門介紹日蝕攻擊的,大家可以找來看看。
網上有很多關于日蝕攻擊的詳細介紹,在這里不做贅述。
Argent以太坊zkSync網絡Layer2錢包候補名單注冊用戶突破50萬:3月7日消息,總部位于倫敦的初創公司Argent已經推出了一款新的加密錢包,旨在降低與DeFi系統交互的成本和環境影響。Argent表示,已有超過500,000人注冊了候補名單,以使用基于zkSync的第2層帳戶,這是一種專注于以太坊的擴展解決方案。此前去年12月份消息,智能合約錢包Argent宣布其Layer2版本正式上線zkSync。(The Block)[2022/3/7 13:42:28]
以太坊是如何防止日蝕攻擊的
在剛才提到的論文中,提到了以太坊的geth1.8.0解決了日蝕攻擊,于是作者拿1.8.0和1.7.3做對比,理清了以太坊解決這個問題的做法。
直接看代碼。
以太坊啟動時加載p2p網絡的流程如下,
以太坊網絡當前已銷毀170.49萬枚ETH:金色財經報道,據Ultrasound數據顯示,截止目前,以太坊網絡總共銷毀1704911.84枚ETH。其中,OpenSea銷毀202888.85枚ETH,ETHtransfers銷毀163817.29枚ETH,UniswapV2銷毀120561.37枚。
注:自以太坊倫敦升級引入EIP-1559后,以太坊網絡會根據交易需求和區塊大小動態調整每筆交易的BaseFee,而這部分的費用將直接燃燒銷毀。[2022/1/31 9:24:05]
cmd/geth/main.goinit方法->geth->startNode()->utils.StartNode()->stack.Start()->running.Start()
這個running.Start()調用的即是p2p/server.go中的Start()方法,看看這個方法做了什么:
數據:以太坊鏈上NFT銷售總額突破85億美元 創歷史新高:金色財經報道,根據最新數據顯示,以太坊鏈上NFT銷售總額突破85億美元,創下歷史新高,本文撰寫時為8,504,090,764美元,鏈上交易數量為3,741,371筆。此外,NFT鏈上銷售總額逼近130億美元,目前為12,871,479,476美元,同樣創下歷史新高,目前以太坊鏈上NFT銷售額最高,Ronin鏈上NFT銷售額位居第二,為2,746,467,717美元。[2021/11/1 6:23:55]
//Startstartsrunningtheserver.//Serverscannotbere-usedafterstopping.func(srv*Server)Start()(errerror){......srv.loopWG.Add(1)gosrv.run(dialer)srv.running=truereturnnil}
一匿名人士在IPFS和以太坊鏈上推出警察問責協議:近期一位匿名人士在星際文件系統(IPFS)和以太坊區塊鏈上設計和構建了警察問責(PAN)協議。該協議致力于讓公民和警察通過匿名和可搜索的方式提交警察不當行為,且協議不受任何權力實體控制。上周二,該協議在Kovan測試網上啟動,該網絡覆蓋了美國50個城市的警察部門,用戶可以對警察部門進行匿名投訴。美國非裔男子喬治·弗洛伊德(GeorgeFloyd)之死引發了人們對于警察濫用暴力和種族歧視問題的關注。(CoinDesk)[2020/6/24]
這篇文章主要關注解決日蝕攻擊相關代碼,其他的不做介紹。
上面的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(){}}}...}
動態 | 以太坊聯合創始人Jeffrey Wilcke承認向交易所轉入9.2萬枚ETH:Trustnodes此前報道分析,進行9.2萬枚ETH大額轉賬的或是以太坊開發商、創始團隊成員之一Jeffrey Wilcke。根據Zenith Ventures顧問Richard Burton發布的截圖,Jeffrey Wilcke曾在推特確認,其向交易所轉入9.2萬枚ETH,將為其游戲項目籌集資金;Wilcke目前已經刪除該推文。據悉,Jeffrey Wilcke是Grid Games聯合創始人。
此前消息,Etherscan記錄顯示,12月25日,總計9.2萬枚ETH(目前價值約為1150萬美元)從一個未知錢包地址轉移到Kraken交易所。針對此前有關“V神疑似向Kraken轉移了9.2萬枚ETH”的報道,V神在推特上進行了否認。(Trustnodes)[2019/12/27]
注意加粗的代碼,有一個針對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個
FunTwitter? 每日最新大咖觀點,看我就夠了!2019/09/06?期本期作者:三月既望?公眾號:野花說 01 Staking價值近三月縮水48%TheBlock發布了一份Staking.
1900/1/1 0:00:002019年作為公鏈回血元年,我們看到許多新的公鏈項目都乘著大行情的暖風重新殺回幣圈的戰場。但是我們也看到,很多在幾年前風光無限的國產公鏈也都無疾而終.
1900/1/1 0:00:00親愛的KuCoin用戶:KuCoin已完成LUNA交易競賽獎勵的發放,請獲獎者在資產中心>我的福利>其他獲贈頁面查詢獎勵的發放記錄.
1900/1/1 0:00:002019年5月的越南區塊鏈大會上,金色財經有幸采訪到了Filestorm的創始人兼CEO傅獻農先生。Filestorm是傅先生帶領的美國硅谷工程師打造的全球首款IPFS區塊鏈分布式存儲平臺.
1900/1/1 0:00:00親愛的BinanceJEX用戶:JEX.com已實現幣安聯合登錄,即使用幣安賬號可一鍵登錄BinanceJEX.
1900/1/1 0:00:00北京時間9月7日8點,反映加密貨幣市場整體走勢的ChaiNext100指數報877.76點,過去24小時下跌2.56%,成交額365.49億美元,成交較前24小時增加20.24%.
1900/1/1 0:00:00