tl;dr: 我犯了和wintermute一样的错误,把原本要转到主网合约的10个eth转到了测试网合约地址。最终成功地用了和攻击wintermute的黑客一样的方法拿回了这笔钱。
合约地址0x2446E0F228D9EB3bCc6318b08Ac7029B2A2552d5。该地址为我在rinkeby上面部署的某合约地址,主网转账的时候误转了。

第一笔0x8ad84cfb38d0c3e7e8e6c67df90632218458cd949bcd2eea059da70ed9dda377即为错转账交易,转到了上述地址。可以看到一共打了10eth。

于是想找办法在主网重新得到合约0x2446e0f228d9eb3bcc6318b08ac7029b2a2552d5的控制权,从而拿回这10eth。
查阅资料发现以太坊的合约地址是msg.sender和nonce的函数,即由sender address和nonce number唯一确定。

于是去查询当时rinkeby时部署的地址和nonce

发现nonce是170,因此只要在主网上nonce=170部署一个合约,该合约的地址就是原本错转的地址。
合约地址相同之后,只需要给合约添加一个提款函数。

主网中我的nonce当时在60左右,于是连续发起了100次转账,并在etherscan.io/tx/0x8ad84cfb38d0c3e7e8e6c67df90632218458cd949bcd2中nonce达到了170,成功部署了相同地址的合约。
之后调用合约的claim函数就拿回了合约的10eth
总结:
evm的create目前只是用调用者和nonce做为地址的变量,任何调用者和nonce相同的创建行为在不同的evm上面都会有同一个地址。
之前wintermute遭遇的事情就是别人在op上面用gnosis-safe的合约凑到了wintermute在eth上面相同的nonce,因为gnosis-safe的合约地址在主网和op上面都一样,所以最后生成的多签钱包地址也一样。因此就得到了wintermute在op上面的多签钱包。
在我的这个例子,我在eth和rinkeby上面用相同的wallet,用同一个nonce也可以得到相同的地址。
转帐前先小额测试一笔是个好习惯。
