背景
6月9日,Optimism与Wintermute双双发布公告,向社区披露了一起2000万OP代币丢失的事件。Optimism委托了Wintermute来为OP在二级市场上提供流动性服务,同时将向Wintermute提供2000万枚OP代币。为了接收这笔代币,Wintermute给了Optimism一个多签地址,在Optimism测试发送了两笔交易且Wintermute确认无误后,Optimism将2000万OP转移到了该地址。在Optimism转完币之后,Wintermute却发现自己没办法控制这些代币,因为他们所提供的多签地址暂时只部署在了以太坊主网上,尚未向Optimism网络部署。Wintermute立即启动了补救操作,但已有攻击者察觉到了这一漏洞,并抢在Wintermute之前将多签部署到了Optimism网络的该地址之上,成功控制了这2000万代币。那么问题来了,为什么会出现这种漏洞?
某SAND聪明钱地址向币安转入200万枚SAND:金色财经报道,Lookonchain监测数据显示,一个擅长高卖低买的SAND聪明钱地址在2月1日将200万枚SAND(150万美元)转入币安。
过去一个月,每当SAND价格上涨时,该地址就将SAND转至币安,以平均0.64美元转入价格向币安转入总计125万枚SAND(约915万美元)。目前,该地址仍持有250万枚SAND(约183万美元)。[2023/2/1 11:40:19]
前置知识
首先需要确定交易签名是否符合标准,符合标准的签名会对9个RLP编码元素(nonce,gasprice,gas,to,value,data,chainid,0,0)进行哈希,其中包含了chainid,因此符合标准的签名v值就为{0,1}+chainid*2+35。而对不符合标准的签名,其只对6个元素进行哈希(nonce,gasprice,gas,to,value,data),因此签名后v值为{0,1}+27。而不同的链会定义有不同的chainid,不同的chainid会得到不同的v值。根据ECDSA我们知道在v值不同的情况下,就算r与s值相同,签名所还原出的公钥也是不同的。因此对于符合标准的交易是无法在其他链上成功进行重放的。
Web3游戏开发商Flowstate Games完成200万美元融资:10月11日消息,Web3游戏开发商Flowstate Games宣布完成200万美元Pre-Seed轮融资,Play Ventures Future Fund领投,Web3基础设施开发公司Equilibrium、Elite Game Developers创始人Joakim Achrén及其天使投资团队参投。
得益于这笔最新融资,该公司将推出首款Web3汽车格斗游戏Smash Stars: Thunderdome,玩家可以用车载大炮击落敌人,每一款都将以NFT形式在游戏中体现,车辆将能在二级市场上进行交易。
此外,Flowstate Games还与Immutable X达成合作,旨在解决NFT交易费用、安全性和碳中和等问题。(Venturebeat)[2022/10/11 10:30:28]
值得一提的是在以太坊伦敦升级时实施的引入了新的交易格式0x02||RLP(),chainid是单独编码的,而不包含在签名v值中了,签名v值只是作为一个简单的奇偶校验位,因此当前交易签名得到的v值变为0或1。
当前BTC全网合约持仓总量为24.49亿美元 24小时增加1200万美元:据合约帝持仓报告显示,当前全网合约持仓总量为24.49亿美元,24小时增加1200万美元。其中,Huobi合约5.52亿美元,24小时减少0.95%;OKEx合约6.42亿美元,24小时减少1.80%;BitMEX合约4.21亿美元,24小时增加2.10%;Binance合约4.41亿美元,24小时增加0.37%;Bybit合约3.9亿美元,24小时减少5.93%。[2020/10/12]
交易重放
在我们了解完以上交易签名构造后我们就可以很清晰的知道签名v值为27或28是可以在不同链上被重放的。那么该如何在不同链上进行重放呢?这与我们发送交易并无不同,只需要将原始交易内容再其他链上进行发送即可。
创至股份拟200万元开办区块链技术研究院:创至股份(839736)3月29日公告,公司拟以民办非企业形式出资开办区块链技术研究院,注册地为上海市,开办资金为200万元。公告显示,公司拟投入研发区块链技术,基于公司在多年项目实践中储备的开发能力及积累的业务大数据,全面启动新兴技术在公司现有业务场景及其他业务相关领域中的研发探索与应用实践。[2018/3/29]
以Wintermute2000万个OP代币被窃取事件为例,攻击者在此次事件中重放了GnosisSafe部署Factory合约的交易。我们在这里尝试重放GnosisSafeDeployer3的nonce为3的交易。
一种较为简单的方法是先通过Etherscan获取原始交易:
然后直接通过Optimistic的eth_sendRawTransaction
(https://eth.wiki/json-rpc/API)接口进行发送即可。
若无法直接获取到原始交易内容,我们可以先通过eth_getTransactionByHash
(https://eth.wiki/json-rpc/API)接口获取交易内容。
再对交易内容进行RLP编码后得到原始交易内容:
然后再通过Optimistic的eth_sendRawTransaction
(https://eth.wiki/json-rpc/API)接口进行发送即可。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。