什么是日蚀攻击
首先简单介绍一下日蚀攻击
以太坊的节点发现机制基于Kademlia,但其目的却不同,Kademlia旨在成为在分布式对等网络中存储和查找内容的手段,而以太坊仅用于发现新的节点。由于以太坊的节点是由其公钥表示的,并且不受IP限制,因此在一个机器上可以同时存在很多节点。攻击者在很少的服务器上制作出很多的节点,并积极的ping受害者的服务器。通过Kademlia协议,攻击者的节点信息将存储并填充在受害者节点列表中。下一步就是让受害者重启机器,手段包括断电、ddos攻击等等。重启后,攻击者再不停的ping被害者的节点以建立tcp连接,一旦被害者所有的tcp连接都是攻击者制造的,那么就达到了把被害者与正常的网络隔离的目的,当然最大的目的应该还是为了双花。有一篇论文是专门介绍日蚀攻击的,大家可以找来看看。
网上有很多关于日蚀攻击的详细介绍,在这里不做赘述。
以太坊网络总共销毁超123万枚ETH:金色财经报道,据Ultrasound数据显示,截止目前,以太坊网络总共销毁1234672.46枚ETH。其中,OpenSea销毁129633.31枚ETH,ETH transfers销毁120854.69枚ETH,Uniswap V2销毁110900.10枚。
注:自以太坊伦敦升级引入EIP-1559后,以太坊网络会根据交易需求和区块大小动态调整每笔交易的BaseFee,而这部分的费用将直接燃烧销毁。[2021/12/21 7:53:12]
以太坊是如何防止日蚀攻击的
在刚才提到的论文中,提到了以太坊的geth1.8.0解决了日蚀攻击,于是作者拿1.8.0和1.7.3做对比,理清了以太坊解决这个问题的做法。
直接看代码。
以太坊启动时加载p2p网络的流程如下,
荣宝斋国画NFT通过IRISnet从BSN文昌链转移到以太坊区块链:12月1日消息,文化工作室荣宝斋以中国国画为特色的NFT已成功从区块链服务网络(BSN)文昌链转移到以太坊区块链上的OpenSea市场。根据IRISnet在Cosmos上发布的博客文章,这笔交易于11月16日在四个区块链之间进行:文昌链和IRITA Hub(均在BSN获得许可),以及公链IRIS Hub(IRISnet)和以太坊。IRISnet博客文章称,跨链转移说明了如何利用链间技术支持涉及不同司法管辖区要求的全球商务。(Forkast)[2021/12/1 12:43:53]
cmd/geth/main.goinit方法->geth->startNode()->utils.StartNode()->stack.Start()->running.Start()
灰度宣布将对以太坊信托基金进行份额拆分:12月2日 ,灰度官方宣布,将对以太坊信托基金的发行份额进行9比1拆分。进行份额拆分后,于2020年12月14日登记在册的持有人将为所持的每份额获得8份额外的份额。份额分割将于2020年12月17日对在2020年12月14日营业时间结束前登记在册的持有人生效。份额分割之后,该信托基金的份额将继续在OTCQX上以代码ETHE进行报价。(Globenewswire)[2020/12/2 22:55:22]
这个running.Start()调用的即是p2p/server.go中的Start()方法,看看这个方法做了什么:
//Startstartsrunningtheserver.//Serverscannotbere-usedafterstopping.func(srv*Server)Start()(errerror){......srv.loopWG.Add(1)gosrv.run(dialer)srv.running=truereturnnil}
V神:以太坊协议面临着协议升级和去中心化治理可能被攻击的问题:金色财经报道,10月26日,《万物生长,代码奔腾》大会在上海召开。以太坊创始人V神分享了他对目前去中心化治理的看法。为什么要去中心化治理:区块链领域最大的问题就是对于那些公共物品和服务的项目融资难。在区块链出现之前,许多去中心化的项目失败、难以为继的主要问题就是资金匮乏。比特币和以太坊出现之后,我们可以看到早期的比特币社区成员财富剧增社区并不缺钱,而以太坊和其他上一轮ICO浪潮的公链项目也由于在2014-2018年融了很多钱因此社区也不太缺钱。相比之下,对于那些公共物品来说,融资个问题。
Vitalik认为现在有两个问题:以太坊协议面临着协议升级的问题、去中心化治理可能被攻击的问题。尤其是去中心化治理攻击问题是我们需要关注的,包括:治理权利被经济权益所分散,加密资产的借贷(尤其是governance token的借贷)会因为治理失败影响代币价格导致无法偿还抵押物资产如以太坊。[2020/10/26]
这篇文章主要关注解决日蚀攻击相关代码,其他的不做介绍。
Coinfirm:以太坊首个被挖出ETH流向0x05开头地址:区块链分析和反公司Coinfirm最近发现以太坊首个区块挖出的ETH流入地址是0x05a56e2d52c817161883f50c441c3228cfe54d9f,该地址共收到5枚ETH付款,之后随着时间的推移,这个地址一共累积了265.63 ETH。自第一个区块开采出来之后,以太坊在网络和资产价格方面已经发生重大变化,现在正朝ETH 2.0迈进。本文撰写时,ETH价格已经突破350美元,为353.13美元,24小时涨幅6.49%,市值达395.48亿美元。[2020/8/1]
上面的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个
尊敬的EZB用户: EZB计划于2019年9月4日16:00时开放DCNY的充值功能,并开通DCNY/USDT交易市场,邀您参与交易!DCNY暂不开放提现功能,前期仅作为内部流转和首次合作的测试。具体开放提现时间请关注平台公告.
1900/1/1 0:00:009月3日,Cocos-BCX与纯白矩阵共同宣布达成战略合作关系,双方将在IDE工具、区块链游戏生态等方面进行深度合作.
1900/1/1 0:00:00根据DREP官方消息,DREP团队将于2019年9月6日12:00开始进行DREP智能合约升级,新的DREP合约地址为:0x22dE9912cd3D74953B1cd1F250B825133cC2C1b3.
1900/1/1 0:00:00比特币止跌企稳,主流币在EOS带领下集体反弹日线级别,比特币仍是缩量整理走势,MA7日均线有上穿MA60日均线的迹象,短时盘面看反弹走势;小时线级别,比特币昨天小幅回撤后,进入了10300-10560美金区间整理走势.
1900/1/1 0:00:00尊敬的用户: 币钻国际数字交易服务平台已接受HUNG项目方申请,将于近期以聚变交易模式重新开放HUNG/USDT交易市场.
1900/1/1 0:00:00一句话简介:打造大文娱产业新经济体系。英文全称:NewStar英文简称:NST中文名称:网红链项目司法管辖区:?塞舌尔项目简介:NewStar旨在通过区块链技术改造文娱行业底层经济体系,并重新架构一套去中心化分账及结算系统,为文娱行业.
1900/1/1 0:00:00