CREATE2 操作碼讓我們能夠在智能合約部署前預測合約的地址。Uniswap 創建 Pair 合約時使用的是 CREATE2 而不是 CREATE。
CREATE2 確保,如果創建者使用 CREATE2,並提供相同的 salt 和合約 bytecode,那麼合約將被部署在相同的地址上。
使用 CREATE2 的方式與之前介紹的 CREATE 類似,只需實例化一個新合約對象,並傳入新合約構造函數所需的參數,同時還需要傳入 salt 參數。
創建者的地址
通常是部署合約的錢包地址或其他合約地址。
nonce
該地址發送的交易總數,對於合約帳戶來說是創建的合約總數,每創建一個合約 nonce + 1。
新地址 = hash(創建者地址, nonce)
0xFF
一個常數,用於避免與 CREATE 衝突。
創建者地址
通常是部署合約的錢包地址或其他合約地址。
salt
由創建者提供的數值。
bytecode
待部署合約的字節碼。
新地址 = hash("0xFF", 創建者地址, salt, bytecode)