火星链 火星链
Ctrl+D收藏火星链
首页 > 加密货币 > 正文

SRV:以太坊是如何解决日蚀攻击(eclipse attack)的?

作者:

时间:1900/1/1 0:00:00

什么是日蚀攻击

首先简单介绍一下日蚀攻击

以太坊的节点发现机制基于Kademlia,但其目的却不同,Kademlia旨在成为在分布式对等网络中存储和查找内容的手段,而以太坊仅用于发现新的节点。由于以太坊的节点是由其公钥表示的,并且不受IP限制,因此在一个机器上可以同时存在很多节点。攻击者在很少的服务器上制作出很多的节点,并积极的ping受害者的服务器。通过Kademlia协议,攻击者的节点信息将存储并填充在受害者节点列表中。下一步就是让受害者重启机器,手段包括断电、ddos攻击等等。重启后,攻击者再不停的ping被害者的节点以建立tcp连接,一旦被害者所有的tcp连接都是攻击者制造的,那么就达到了把被害者与正常的网络隔离的目的,当然最大的目的应该还是为了双花。有一篇论文是专门介绍日蚀攻击的,大家可以找来看看。

网上有很多关于日蚀攻击的详细介绍,在这里不做赘述。

Gala Games拟将存量和未售出的NFT游戏物品从以太坊迁移到GalaChain:金色财经报道,为了进一步减少以太坊链上 Gas 费支出,区块链游戏平台 Gala Games 拟将存量和未售出的 NFT 游戏物品从以太坊迁移到 GalaChain,以为用户提供更加无缝的 Web3 游戏体验。作为本次迁移活动的一部分,Gala Games 还将会为玩家提供一批 NFT 盲盒,每个盒子将放置Gala Games 生态系统中三个随机游戏物品,且无需成本即可在 GalaChain 上铸造、发布和分配。[2023/8/8 21:31:21]

以太坊是如何防止日蚀攻击的

在刚才提到的论文中,提到了以太坊的geth1.8.0解决了日蚀攻击,于是作者拿1.8.0和1.7.3做对比,理清了以太坊解决这个问题的做法。

直接看代码。

Chia Network CEO:以太坊仍然只支持大约两倍于比特币的交易吞吐量:金色财经报道,加密初创公司Chia Network的新任首席执行官Bram Cohen表示,以太坊被认为是“世界计算机”,具有无限的链上扩展能力,允许人们将其用作真正的计算资源。这显然是一个愚蠢的想法。所有的链上验证都必须由所有的完整节点来复制,这极其冗余。

即使拨到接近临界点,并且通过大量工程来提高这个限制,以太坊仍然只支持大约两倍于比特币的交易吞吐量。即使对于区块链性能而言,这种低迷是因为 Solidity 和 EVM 是一个垃圾平台,并且几乎没有工作可以解决平凡的工程问题来使事情变得更好。但是,即使有一个伟大的恒定系数性能,即现在的10倍容量,\"世界计算机\"的想法始终是一个妄想的幻想。我现在提出这个问题不是为了嘲笑他们,而是因为这种计划的改变很容易被遗忘,就好像它从未发生过一样。相反,以太坊的发展设法使整个事情变得更加集中,并加剧了他们的 MEV 问题。

似乎连分片计划(也是一个坏主意)也被悄悄地放弃了,转而支持 ZK rollups 和发布证明,这是一个合理的计划,但仍然只是一个计划。[2023/5/6 14:46:06]

以太坊启动时加载p2p网络的流程如下,

以太坊Ropsten测试网已完成合并:6月9日消息,以太坊Ropsten测试网已完成合并。截至目前,以太坊主网权益证明(POS)的过渡日期仍未确定,目前仅是基于测试网的合并试验。在完成Ropsten过渡后,另外两个测试网(Goerli和Sepolia)也将过渡到权益证明,然后才会将重点转移到主网上。[2022/6/9 4:11:31]

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}

动态 | 软件公司推出在以太坊区块链上创建的域名.crypto:在区块链上建立域名的软件公司Unstoppable Domains宣布推出在以太坊区块链上注册的域名.crypto。(BusinessWire)[2019/10/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(){}}}...}

公告 | X网提高矿工费应对以太坊网络拥堵行:X网发布公告称,行情显示以太坊区块链交易出现拥堵,待处理交易量连续多个小时维持在4万上方,最高一度突破6万。我们将在不增加用户提现手续费的基础上,主动提高ETH及其他ERC-20代币的提现矿工费,由原来的最低51Gwei提高到现在的最低0.00000018ETH(180Gwei),高出的部分由X网支付。[2018/7/3]

注意加粗的代码,有一个针对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个

标签:PEEREERSRVCONPeerplaysmeer币主网上线SRV价格conv币会下线吗

加密货币热门资讯
FEX:关于WBFex上线VIDY的公告

尊敬的WBFex用户:WBFex即将在开放区上线VIDY/USDT交易对,具体时间安排如下:充值时间:2019年9月10号17:00交易时间:2019年9月10号18:00提币时间:2019年9.

1900/1/1 0:00:00
EOS:末日战车ETC暴涨6% 主流币又要开始回落吗 | 09月05日行情分析

本文观点仅代表个人,仅限交流学习,所有内容不构成任何投资建议。想及时了解更多行情信息,请添加官方进群:jiamibaoluo“计划你的计划,交易你的计划”,当交易者在交易者有所斩获的时候,就会慢.

1900/1/1 0:00:00
TPS:关于LOEx国际站开放ANB充提币

尊敬的LOEx用户:ANB已经完成系统升级,LOEx国际站将于新加坡时间2019年9月6日09:30开放ANB充币、提币业务.

1900/1/1 0:00:00
比特币:用户粘性不足?数据显示,大型交易所的散户投资者越来越少

越来越多的人在交易加密货币?Emmm,真实情况可能跟你想得不一样。加密数据追踪公司TokenAnalyst的数据显示,最近几个月,主要交易所的比特币交易越来越低频.

1900/1/1 0:00:00
BTC:消息面的黑天鹅在减少 为什么市场还是不为所动

昨日晚间,国常会要求引导利率下行,降准降息已经在路上,这也预示着全球两大最主要的经济体都出现货币宽松,再加上欧洲已经基本宣布要启动QE,全球最主要的几大经济体集体放水,资产价格自然会水涨船高.

1900/1/1 0:00:00
COM:关于TEP延迟提币的公告

尊敬的WBFex用户:经与TEP项目方协商,将延迟提币时间,具体提币时间为:9月9日14:00TEP项目介绍:Tepleton,基于底层跨链技术的区块链新金融解决方案.

1900/1/1 0:00:00