To było dosłownie wszystko, co miałem na świecie oprócz mojego samochodu. Nie piszę postu dla współczucia. Chcę tylko, żeby wszyscy wiedzieli, żeby im się to nie przytrafiło... Wiem, że to ja dokonałem transakcji. Biorę za to odpowiedzialność.
Jak MakerDAO odwrócił transakcję Ethereum?
Mimo, że użytkownik nie "napisał postu dla współczucia", to je otrzymał. Sam MacPherson, z zespołu protokołu w MakerDAO, szczegółowo opisał w tweecie, co stało się potem.Ponieważ adresy Ethereum są "generowane deterministycznie", każdy adres smart na warstwie 2, który "został wcześniej wdrożony przez warstwę 1 EOA", może być replikowany.An interesting story occurred over the past few weeks. It starts with a mistake we see far too often in DeFi - a user has accidentally sent some ETH to the wrong address. The end result is a heart-warming story full of ingenuity.
?? pic.twitter.com/0FFyJcBK8R — Sam MacPherson | hexonaut.eth (@hexonaut) October 15, 2021
EOA to skrót od Externally Owned Account. Jest to normalny adres Ethereum z kluczami prywatnymi, a nie tylko kontem kontraktowym (takim, jakie może być używane w kontraktach DeFi). Adres warstwy 2, z którym korespondowały środki, odpowiadał znanemu kontraktowi Proxy na warstwie 1. Zespół inżynierów był w stanie zatem wstawić dowolny kod smart kontraktu do otrzymanego adresu warstwy 2. Inżynierowie użyli następnie wdrożenia ProxyRegistry warstwy 1, aby znaleźć nonce. Inteligentne kontrakty muszą mieć bowiem ten sam adres i ten sam nonce, aby wdrożyć się na EOA. Następnie zainicjowali arbitralne smart kontrakty do Arbitrum z EOA (portfel ETH użytkownika), aż dotarli do pożądanego nonce, który pozwolił im wdrożyć kontrakt, który chcieli. Jak podsumowuje MacPherson:It turns out that although Ethereum addresses may seem completely random, they are in fact deterministically generated. In particular we can replicate any smart contract address on L2 that has previously been deployed by an L1 EOA.
— Sam MacPherson | hexonaut.eth (@hexonaut) October 15, 2021
Gdy mamy już Proxy wdrożone pod adresem docelowym, możemy wydać polecenie wysłania ETH z powrotem do oryginalnego użytkownika i voila odzyskaliśmy ETH!.Innymi słowy, zespół inżynierów skutecznie znalazł sposób na odwrócenie transakcji blockchain. Po otrzymaniu zwróconego ETH, użytkownik napisał na Reddicie:
Szczerze mówiąc, nie mogę w to uwierzyć. Jak tylko zdałem sobie sprawę z tego, co się stało, byłem pewien, że przepadło na zawsze... Ci faceci nie mieli wobec mnie żadnych zobowiązań, a mimo to wciąż poświęcali czas, aby wymyślić, jak zrobić coś, co wielu ludzi, w tym ja, uważało za niemożliwe.
Komentarze