普通地址收到轉賬後變成合約?
為了自己接受乙太幣付款,我首先嘗試了其他人是如何實現它的。因此,我在一家使用 Coinbase Commerce 接受加密支付的商店購買了一件商品,並用乙太幣支付了我的商品。這是我的付款交易: https ://etherscan.io/tx/0x229fc693785f97f905f9db953800edca58cced706592684d5f24ca9b69d80dac
在我進行這筆交易的那一刻,etherscan 將收件人地址顯示
0x6a173337f2bb7ad85c011dda499ab9cfc1016461
為一個正常(外部)地址,該地址剛剛收到我的付款並且餘額中有乙太幣。但8 分鐘(37 個區塊)後出現了一系列內部交易: https ://etherscan.io/address/0x6a173337f2bb7ad85c011dda499ab9cfc1016461/advanced#internaltx
其中包括契約創建和資金轉移到另一個地址。這是父交易: https ://etherscan.io/tx/0xc05d18302cf9363c858cea9068f1ba88827ef5b0d446553c44c5c9cab282c693
我的問題是:如何在以前用作外部地址的現有地址上創建合約?那裡到底發生了什麼?有誰明白這樣的計劃在幕後工作?任何線索都非常感謝,謝謝!
看起來你的問題的答案是
CREATE2
。這是一個 EVM 操作碼,旨在允許確定性地創建合約(其他人使用“反事實”一詞)這是一個相當複雜的話題。一個連結在這裡:https ://hackernoon.com/using-ethereums-create2-nw2137q7但您可以查看很多連結。
也許最簡單地說,這意味著您可以提前確定新合約將被部署到的地址(這在“創建”的情況下要困難得多)——這意味著資金可以提前發送到合約實際部署的契約。
您在這裡使用“外部”一詞可能會誤導您。您所做的只是將您的資金發送到一個地址。這些資金只能由知道地址私鑰或部署到該地址的合約的人使用。這裡——這是第二種情況——所發生的只是合約是在之後部署的。