-
bitcoin $99097.524802 USD
-3.18% -
ethereum $3190.458287 USD
-7.51% -
tether $0.999648 USD
-0.03% -
xrp $2.309178 USD
-4.17% -
bnb $921.186688 USD
-3.96% -
solana $144.106489 USD
-6.12% -
usd-coin $0.999837 USD
-0.02% -
tron $0.291415 USD
-1.32% -
dogecoin $0.163935 USD
-4.54% -
cardano $0.526269 USD
-4.77% -
hyperliquid $37.814277 USD
-2.92% -
bitcoin-cash $509.826264 USD
-1.40% -
chainlink $14.448349 USD
-5.83% -
stellar $0.267630 USD
-4.87% -
unus-sed-leo $9.178879 USD
0.52%
什麼是 CREATE2 操作碼以及它如何啟用確定性合約地址?
CREATE2 enables predictable contract addresses in Ethereum, allowing off-chain systems to reference contracts before deployment.
2025/11/13 23:40
了解以太坊中的 CREATE2 操作碼
1. CREATE2操作碼是在君士坦丁堡升級期間通過EIP-1014引入以太坊的。它可以作為傳統 CREATE 操作碼的替代方案,傳統 CREATE 操作碼使用發送者的隨機數來部署智能合約,以確定生成的合約地址。與 CREATE 不同,CREATE2 允許開發人員在部署之前通過考慮除隨機數之外的特定輸入來計算合約的地址。
2. 在需要合約地址可預測性的場景中,該功能至關重要。例如,鏈下系統或第 2 層解決方案可能需要引用尚未部署的合約。通過啟用地址預計算,CREATE2 支持無需信任的交互並改善去中心化組件之間的協調。
3. CREATE2 生成的地址結構依賴於涉及四個元素的加密哈希:部署者的地址、用戶定義的鹽(32 字節值)、合約的字節碼(也稱為 init_code)以及該字節碼的 keccak256 哈希。由於這些輸入都不依賴於發送者的交易計數,因此相同的組合將始終產生相同的地址。
4. 該機制的一個顯著優點是能夠有條件地部署合約。僅當滿足某些條件時才能部署合約,但其未來地址仍然是提前已知的。這使得諸如反事實實例化之類的用例成為可能,其中應用程序甚至在合約上線之前就假設合約存在於已知位置。
確定性地址生成解釋
1. 確定性合約地址意味著給定相同的輸入集,輸出地址將始終相同。對於 CREATE2,使用的公式為keccak256(0xff + 地址 + salt + keccak256(init_code))[12:] 。前綴 0xff 確保名稱空間與通過 CREATE 創建的地址分離,從而降低衝突風險。
2. 鹽參數起著至關重要的作用。它由開發人員選擇,可以對有意義的數據進行編碼,例如用戶標識符、時間戳或特定於應用程序的密鑰。只要鹽和其他組件保持不變,從同一創建者地址重新部署相同的字節碼就會產生完全相同的目的地。
3. 由於地址取決於初始化代碼而不是運行時代碼的哈希值,因此構造函數參數或編譯字節碼的任何更改都會改變最終地址。這使得部署對編譯細節高度敏感,需要仔細的版本控制和可重現的構建。
4. 開發人員經常利用錢包工廠的確定性尋址,每個用戶都會獲得一個唯一派生的智能合約錢包。這些錢包可以預期在鏈外,甚至在部署發生之前就可以正確路由交易。
去中心化金融和二層系統中的應用
1. 在去中心化交易所和自動化做市商中,CREATE2 有助於創建具有可預測地址的礦池。這簡化了前端和機器人的集成,前端和機器人可以查詢池數據,而無需等待事件日誌或依賴註冊表。
2. 狀態通道和匯總等第 2 層擴展解決方案利用 CREATE2 進行反事實合約部署。通道中的參與者可以與虛擬合約實例進行交互,準確地知道它在鏈上實現後將駐留在哪裡。這減少了鏈上足跡,同時保留了安全保證。
3. 智能合約錢包,例如符合 ERC-4337(賬戶抽象)的錢包,依賴確定性地址來實現無縫的用戶體驗。用戶可以在未來的錢包地址存在之前將資金接收到該地址,因為資金交易的目標是預先計算的位置。
4. 另一個用例涉及可升級的代理模式,其中確定性地部署實施契約。儘管代理通常使用 CREATE,但將它們與基於 CREATE2 的工廠相結合可以增強跨部署的模塊化和可審核性。
常見問題解答
問:可以使用CREATE2在同一地址多次部署同一個合約嗎?答:不可以。如果計算出的 CREATE2 地址已存在合約,則嘗試在那裡部署另一個合約將會失敗。 EVM 可以防止覆蓋現有代碼,確保地址被佔用後的不變性。
問:salt 值如何影響 CREATE2 部署中的安全性?
答:鹽一定要慎重選擇。可預測的鹽可能允許攻擊者在預期地址預先部署惡意合約。使用安全隨機性或唯一標識符可以減輕這種風險,特別是在未經許可的環境中。
問:就 Gas 而言,CREATE2 比 CREATE 貴嗎?
答:是的。由於計算確定性地址需要額外的哈希操作,CREATE2 通常會消耗更多的 Gas。確切的成本取決於 init_code 的大小和部署時的網絡狀況。
免責聲明:info@kdj.com
所提供的資訊並非交易建議。 kDJ.com對任何基於本文提供的資訊進行的投資不承擔任何責任。加密貨幣波動性較大,建議您充分研究後謹慎投資!
如果您認為本網站使用的內容侵犯了您的版權,請立即聯絡我們(info@kdj.com),我們將及時刪除。
- 加密貨幣大屠殺:在狂野的市場中應對拋售和清算
- 2025-11-14 16:50:01
- 穆罕默德·西拉傑 (Mohammed Siraj) 的第一個法術困境:一位印度隊友的批評
- 2025-11-14 14:40:02
- BTC、ETH 和山寨幣精選:探索加密貨幣格局
- 2025-11-14 14:50:01
- 拋硬幣故事:Temba Bavuma 的賭注以及印度與南非的對決
- 2025-11-14 12:50:01
- 舒布曼·吉爾 (Shubman Gill)、WTC 決賽和拋硬幣:紐約人的看法
- 2025-11-14 15:05:01
- Aerodrome 起飛:統一跨鏈以太坊 DeFi 流動性
- 2025-11-14 15:10:02
相關知識
什麼是智能合約中的拒絕服務 (DoS) 攻擊?其常見形式有哪些?
2025-11-10 05:20:08
了解智能合約中的拒絕服務1. 智能合約中的拒絕服務(DoS)攻擊是指惡意行為者阻止合法用戶訪問或使用合約功能的情況。這通常是通過利用允許攻擊者阻止關鍵操作的設計缺陷來實現的。與針對 Web 服務器的傳統 DoS 攻擊不同,基於區塊鏈的 DoS 攻擊利用了智能合約的不可變和透明特性。 2. 這些攻擊的...
交易簽名中使用的加密隨機數是什麼?
2025-11-11 05:59:39
了解區塊鏈交易中的加密隨機數1. 加密隨機數是在區塊鍊網絡中的交易簽名上下文中僅使用一次的隨機數或偽隨機數。其主要功能是確保每筆交易都是唯一的並且不會被惡意行為者重播。如果沒有隨機數,相同的交易可能會被多次提交,從而導致意外的轉賬或餘額差異。 2. 在以太坊等系統中,隨機數直接與發送者的帳戶綁定,並...
Solidity 智能合約中的繼承是如何工作的?
2025-11-11 22:40:12
Solidity 的繼承:構建模塊化智能合約1. Solidity 中的繼承允許一個合約採用另一個合約的屬性和功能,從而實現代碼重用和結構化設計。派生合約可以從基礎合約繼承,獲得對其狀態變量、函數和修飾符的訪問權限,前提是它們沒有標記為私有。該機制支持邏輯的分層組織,減少多個合約之間的冗餘。 2. ...
外部擁有賬戶 (EOA) 和合約賬戶有什麼區別?
2025-11-13 04:00:32
了解外部擁有賬戶 (EOA) 1. 外部擁有的賬戶由私鑰直接控制,這意味著只有該密鑰的持有者才能從該賬戶發起交易。 EOA 沒有任何關聯代碼;它們是用於在區塊鏈上發送和接收交易的簡單地址。這些帳戶通常是在用戶使用 MetaMask 或 Ledger 等工俱生成錢包時創建的,從而產生公共地址和相應的私...
什麼是 ERC-2981 NFT 版稅標準以及它如何運作?
2025-11-13 05:39:54
了解 ERC-2981 NFT 版稅標準1. ERC-2981 標準是一項擬議的以太坊徵求意見稿,它引入了非同質代幣 (NFT) 的版稅機制。與 ERC-721 和 ERC-1155 等早期 NFT 標準缺乏對版稅的內置支持不同,ERC-2981 使創作者每次 NFT 在二級市場轉售時都能獲得補償。...
什麼是最小代理合約 (EIP-1167) 以及它如何在部署時節省 Gas?
2025-11-12 11:39:42
什麼是最小代理合同 (EIP-1167)? 1. 最小代理合約,根據以太坊改進提案 (EIP) 1167 進行標準化,是一種輕量級合約,旨在將調用委託給現有的實施合約。它充當代理,將所有函數調用和交易轉發到主合約,而無需在其內部存儲邏輯。 2. 核心機制依賴於低級SUCCESS、RETURNDATA...
什麼是智能合約中的拒絕服務 (DoS) 攻擊?其常見形式有哪些?
2025-11-10 05:20:08
了解智能合約中的拒絕服務1. 智能合約中的拒絕服務(DoS)攻擊是指惡意行為者阻止合法用戶訪問或使用合約功能的情況。這通常是通過利用允許攻擊者阻止關鍵操作的設計缺陷來實現的。與針對 Web 服務器的傳統 DoS 攻擊不同,基於區塊鏈的 DoS 攻擊利用了智能合約的不可變和透明特性。 2. 這些攻擊的...
交易簽名中使用的加密隨機數是什麼?
2025-11-11 05:59:39
了解區塊鏈交易中的加密隨機數1. 加密隨機數是在區塊鍊網絡中的交易簽名上下文中僅使用一次的隨機數或偽隨機數。其主要功能是確保每筆交易都是唯一的並且不會被惡意行為者重播。如果沒有隨機數,相同的交易可能會被多次提交,從而導致意外的轉賬或餘額差異。 2. 在以太坊等系統中,隨機數直接與發送者的帳戶綁定,並...
Solidity 智能合約中的繼承是如何工作的?
2025-11-11 22:40:12
Solidity 的繼承:構建模塊化智能合約1. Solidity 中的繼承允許一個合約採用另一個合約的屬性和功能,從而實現代碼重用和結構化設計。派生合約可以從基礎合約繼承,獲得對其狀態變量、函數和修飾符的訪問權限,前提是它們沒有標記為私有。該機制支持邏輯的分層組織,減少多個合約之間的冗餘。 2. ...
外部擁有賬戶 (EOA) 和合約賬戶有什麼區別?
2025-11-13 04:00:32
了解外部擁有賬戶 (EOA) 1. 外部擁有的賬戶由私鑰直接控制,這意味著只有該密鑰的持有者才能從該賬戶發起交易。 EOA 沒有任何關聯代碼;它們是用於在區塊鏈上發送和接收交易的簡單地址。這些帳戶通常是在用戶使用 MetaMask 或 Ledger 等工俱生成錢包時創建的,從而產生公共地址和相應的私...
什麼是 ERC-2981 NFT 版稅標準以及它如何運作?
2025-11-13 05:39:54
了解 ERC-2981 NFT 版稅標準1. ERC-2981 標準是一項擬議的以太坊徵求意見稿,它引入了非同質代幣 (NFT) 的版稅機制。與 ERC-721 和 ERC-1155 等早期 NFT 標準缺乏對版稅的內置支持不同,ERC-2981 使創作者每次 NFT 在二級市場轉售時都能獲得補償。...
什麼是最小代理合約 (EIP-1167) 以及它如何在部署時節省 Gas?
2025-11-12 11:39:42
什麼是最小代理合同 (EIP-1167)? 1. 最小代理合約,根據以太坊改進提案 (EIP) 1167 進行標準化,是一種輕量級合約,旨在將調用委託給現有的實施合約。它充當代理,將所有函數調用和交易轉發到主合約,而無需在其內部存儲邏輯。 2. 核心機制依賴於低級SUCCESS、RETURNDATA...
看所有文章














