即将到来的以太坊网络Constantinople升级为SSTORE操作引入了更便宜的gas成本。作为一种不必要的副作用,当在Solidity智能合约中使用address
functiondeposit(uintid)publicpayable{deposits+=msg
functionupdateSplit(uintid,uintsplit)public{require(split<=100);splits=split;}functionsplitFunds(uintid)public{//Herewouldbe://Signaturesthatbothpartiesagreewiththissplit//Splitaddresspayablea=first;addresspayableb=second;uintdepo=deposits;deposits=0;a
以太坊创始人V神发布关于“单槽终结路径”的研究文章:金色财经报道,1月25日,以太坊创始人Vitalik发布了关于“单槽终结路径”的研究文章,文章表示,由很多论据推论,尽管以太坊现在有超过28w个验证者,但仍可以将以太坊最终确认时间减小至单个Slot时间。
实现“单槽终结”可以提升用户体验,减少以MEV为目的的重组链并减少协议复杂性和错误几率。但这是一个是长远的计划,其顺序会排在PoS、分片、Verkle树之后。目前,实现这一目标主要思路有:
1.通过超级委员会实现,即通过至少数百名的超级委员会验证者完成共识中单个slot内的验证工作。
2.让如今的巨量的验证者更快更高效的发挥作用,即让聚合签名过程更高效。
此外,对于“单槽终结”实施有具体如下4点要求。
1.加紧优化签名聚合工作;2.确定超级委员会规模;3.研究、达成一致并指定一个理想的共识和分叉机制选择;4.同意并在实施路径上执行这些。[2022/1/25 9:11:04]
}<新的易受攻击代码的示例>该代码以一种意想不到的方式受到攻击:它模拟一种安全的资金均摊服务。双方可以共同接收资金,决定如何split资金以及接收支付。攻击者可以创建这样一对地址,其中第一个地址是以下列出的攻击者合约,第二个地址是任何攻击者账户。该攻击者将充值一些钱。pragmasolidity^0
EIP-1559暂定于7月14日部署到以太坊主网上:半小时前,EthHub联合创始人Anthony?Sassano发推称:“EIP-1559暂定于2021年7月14日部署到以太坊主网上。”[2021/4/24 20:53:16]
functionattack(addressa)external{victim=a;PaymentSharerx=PaymentSharer(a);x
function()payableexternal{addressx=victim;assembly{mstore(0x80,0xc3b18fb600000000000000000000000000000000000000000000000000000000)pop(call(10000,x,0,0x80,0x44,0,0)。functiondrain()external{owner
以太坊ERC-721智能合约数量创历史新高:金色财经报道,CoinMetrics周二发布的报告显示,由于最近的“NFT热潮”,以太坊上ERC-721智能合约的数量达到了约19000的历史新高。研究人员指出,NFT市场仍有很大的增长空间。[2021/3/26 19:19:15]
}<攻击者合约列为第一个地址>该攻击者将调用自己合约的attack函数,以便在一个交易中披露以下的事件:1、攻击者使用updateSplit设置当前split,以确保后续升级是便宜的。这是Constantinople升级的结果。攻击者以这样的方式设置split,即第一个地址(合约地址)接收所有的资金。2、攻击者合约调用splitFunds函数,该函数将执行检查*,并使用transfer将这对地址的全部存款发到合约。3、从回调函数,攻击者再次更新split,这次将所有资金分配到攻击者的第二个账户。4、splitFunds的执行继续,全部存款也转到第二个攻击者账户。简而话之,攻击者只是从PaymentSharer合约中偷走了其他人的以太币,并且可以继续。为什么现在可以攻击?
Tether向以太坊网络新增发6000万枚USDT(已授权未发行):金色财经报道,据Whale Alert数据显示,北京时间3月20日4:16,Tether公司向以太坊网络新增发6000万枚USDT,价值约6050.34万美元。Bitfinex首席技术官Paolo Ardoino表示,请注意,这是一笔已授权但未发行的交易,这意味着该金额将用作下一次发行请求的库存。[2020/3/20]
在Constantinople之前,每个storage操作都需要至少5000gas。这远远超过了使用transfer或send来调用合约时发送的2300gas费。在Constantinople之后,正在改变“dirty”存储槽的storage操作仅需要200gas。要使存储槽变的dirty,必须在正在进行的交易期间更改它。如上所示,这通常可以通过攻击者合约调用一些改变所需变量的public函数来实现。然后,通过使易受攻击的合约调用攻击者合约,例如,使用msg.sender.transfer(...),攻击者合约可以使用2300gas费成功操纵漏洞合约的变量。必须满足某些先决条件才能使合同变得易受攻击:1.必须有一个函数A,函数中transfer/send之后,紧跟状态改变操作。这有时可能是不明显的,例如第二次transfer或与另一个智能合约的互动。2.攻击者必须能够访问一个函数B,它可以(a)改变状态,(b)其状态变化与函数A的状态发生冲突。3.函数B需要在少于1600gas时能执行(2300gas费-为CALL提供700gas)。我的合约是否易受攻击?要测试您是否容易受到攻击:检查transfer事件后是否有任何操作。检查这些操作是否改变了存储状态,最常见的是分配一些存储变量。如果你调用另一个合约,例如,token的transfer方法*,检查哪些变量被修改。做一个列表。检查合约中非管理员可以访问的任何其他方法是否使用这些变量中的一个。检查这些方法是否自行改变存储状态。检查是否有低于2300gas的方法,请记住SSTORE操作只有200gas。如果出现这种情况,攻击者很可能会导致您的合约陷入不良状态。总的来说,这是另一个提醒,即为什么Checks-Effects-Interactions模式如此重要。作为节点运营商或矿工,我需要做什么?
下载最新版本的以太坊客户端:最新的geth客户最新的Parity客户端最新Harmony客户端最新的万神殿客户端最新的Trinity客户端以太坊钱包/迷雾的最新版本|作者:ChainSecurity|翻译:猎豹区块链安全团队
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。