市值: $2.203T 0.70%
體積(24小時): $36.1009B -32.41%
恐懼與貪婪指數:

39 - 害怕

  • 市值: $2.203T 0.70%
  • 體積(24小時): $36.1009B -32.41%
  • 恐懼與貪婪指數:
  • 市值: $2.203T 0.70%
加密
主題
加密植物
資訊
加密術
影片
頂級加密植物

選擇語言

選擇語言

選擇貨幣

加密
主題
加密植物
資訊
加密術
影片

Solidity 中的 call、delegatecall 和 staticcall 有什麼區別?

Understanding `call`, `delegatecall`, and `staticcall` is crucial for secure Solidity development, as each alters execution context, state access, and security risks differently.

2025/11/14 18:59

了解 call、delegatecall 和 staticcall 之間的區別對於 Solidity 中安全高效的智能合約開發至關重要。這些低級函數允許與其他合約或外部帳戶交互,但在上下文、狀態修改和執行環境方面表現不同。

稱呼

1.調用函數調用另一個合約的函數,同時轉髮指定數量的以太幣並在被調用合約的上下文中執行代碼。

  1. 它使用被調用者的存儲、代碼和余額,這意味著任何狀態更改都發生在目標合約的範圍內。
  2. 當與編譯時可能不知道其 ABI 的外部合約交互時,通常會使用此方法。
  3. 開發人員必須仔細處理返回數據,因為調用會返回一個指示成功或失敗的布爾值以及可選的返回字節。
  4. 如果不遵循正確的檢查-效果-交互模式,濫用可能會導致重入漏洞。

委託調用

1. delegatecall執行來自不同合約的代碼,但保留調用者的存儲、上下文和余額。

  1. 它通常用於邏輯與數據分離的代理模式,從而實現可升級的合約。
  2. 由於狀態修改會影響調用合約的存儲,因此在代理和實現之間對齊存儲佈局時需要格外小心。
  3. call不同,除非通過其他機制顯式發送,否則在delegatecall期間不會傳輸 Ether。
  4. 安全風險包括惡意實施合約改變關鍵變量,例如代理中的所有權或餘額。

靜態調用

1. staticcall旨在調用不修改區塊鏈狀態的函數。

  1. 任何寫入存儲、發出事件或執行更改狀態的操作的嘗試都將導致調用恢復。
  2. 此功能對於安全地從外部合約讀取數據非常有用,而不會帶來意外副作用的風險。
  3. call一樣,它在目標合約的代碼中運行,但在執行時強制執行只讀模式。
  4. 其主要用例包括查詢代幣餘額、檢查配額或從第三方合約檢索不可變值。

常見問題

如果委託調用針對存儲佈局不匹配的合約,會發生什麼情況?如果調用合約中的存儲槽與被調用合約中的邏輯所期望的存儲槽不一致,則變量可能會被錯誤地覆蓋。例如,存儲在一個槽中的地址可能會被解釋為 uint256,從而導致數據損壞或未經授權的訪問。

staticcall可以用來與payable函數交互嗎?是的, staticcall可以針對應付函數,只要它們實際上不修改狀態。然而,通過staticcall發送 Ether 是多餘的,因為值傳輸本質上涉及狀態更改,並且會導致調用失敗。

為什麼在某些情況下 call 被認為比 staticcall 風險更大?由於調用允許狀態更改和以太傳輸,因此它打開了重入攻擊等攻擊向量。如果沒有嚴格的輸入驗證和控制流管理,外部合約可能會在回調期間遞歸地耗盡資金。

delegatecall 是否兼容所有類型的合約升級?雖然delegatecall可以實現可升級性,但它需要仔細的設計。存儲衝突、函數選擇器衝突和初始化問題可能會破壞功能。透明代理和 UUPS 模式有助於減輕這些風險,但需要嚴格的測試和審核。

免責聲明:info@kdj.com

所提供的資訊並非交易建議。 kDJ.com對任何基於本文提供的資訊進行的投資不承擔任何責任。加密貨幣波動性較大,建議您充分研究後謹慎投資!

如果您認為本網站使用的內容侵犯了您的版權,請立即聯絡我們(info@kdj.com),我們將及時刪除。

相關知識

AVAX 期貨保證金要求是如何計算的?

AVAX 期貨保證金要求是如何計算的?

2026-07-23 15:40:03

AVAX 期貨保證金結構1. AVAX期貨保證金由兩個不同的部分組成:初始保證金和維持保證金。這些是根據當前市場價格、波動性、未平倉合約和合約規模即時計算的。 2. 初始保證金作為履約保證金,以彌補短期(通常是一個交易時段)內潛在的不利價格變動。它以頭寸名義價值的百分比表示。 3. 維持保證金設定為...

ADA合約保證金率為何會觸發警告?

ADA合約保證金率為何會觸發警告?

2026-07-22 09:00:26

ADA 合約保證金比率機制1. 各大交易所的ADA永續合約採用根據持倉規模、槓桿水平和當前標記價格即時計算的動態保證金比例。 2. 保證金比率等於(錢包餘額+未實現損益)除以維持保證金要求,以百分比表示。 3. 當該比率低於交易所定義的維持門檻(通常為 5% 至 10%,取決於槓桿率)時,系統將啟動...

ADAUSDT永續合約資金費率是多少?

ADAUSDT永續合約資金費率是多少?

2026-07-24 20:19:46

ADAUSDT永續合約資金費率定義及目的1. ADAUSDT永續合約資金費率是卡爾達諾(ADA)與主要加密貨幣交易所Tether(USDT)衍生性商品部位之間採用的定期費用兌換機制。 2. 作為價格錨定工具,確保ADAUSDT永續合約價格與基礎ADA/USDT現貨指數價格保持緊密一致。 3.與傳統期...

TON 期貨強平價格公式是?

TON 期貨強平價格公式是?

2026-07-23 09:19:45

TON 期貨強平機制1. 當交易者的保證金餘額低於交易所設定的維持保證金要求時,TON 期貨就會被清算。 2.保證金比例低於或等於100%時,系統自動觸發強制平倉,計算公式為(可用保證金/所需保證金)×100%。 3. 強平價格不是固定的,它會隨著市場趨勢、部位規模、槓桿水準和資金費率的調整而動態變...

TONUSDT永續合約資金費率是多少?

TONUSDT永續合約資金費率是多少?

2026-07-27 02:39:50

定義和核心機制1. TONUSDT永續合約資金費率是專門適用於各大交易所交易的TON/USDT永續合約的定期費用兌換機制。 2. 作為價格錨定工具,防止TONUSDT永續市場價格與基礎TON/USDT現貨指數價格持續背離。 3. 費率每 8 小時計算一次,採用綜合平均保費指數和利息成分的公式計算,通...

SUI期貨槓桿如何影響強平?

SUI期貨槓桿如何影響強平?

2026-07-22 09:59:59

SUI 期貨保證金機制1.主要衍生性商品交易所的SUI期貨合約依據持倉規模及市場波動情況實施分級初始保證金要求。對於名目價值低於 50,000 美元的頭寸,標準初始保證金設定為 8%,而較大頭寸則可逐步調整至 15%。 2. 所有合約規模的維持保證金固定為初始保證金水準的 65%,這意味著當淨值相對...

AVAX 期貨保證金要求是如何計算的?

AVAX 期貨保證金要求是如何計算的?

2026-07-23 15:40:03

AVAX 期貨保證金結構1. AVAX期貨保證金由兩個不同的部分組成:初始保證金和維持保證金。這些是根據當前市場價格、波動性、未平倉合約和合約規模即時計算的。 2. 初始保證金作為履約保證金,以彌補短期(通常是一個交易時段)內潛在的不利價格變動。它以頭寸名義價值的百分比表示。 3. 維持保證金設定為...

ADA合約保證金率為何會觸發警告?

ADA合約保證金率為何會觸發警告?

2026-07-22 09:00:26

ADA 合約保證金比率機制1. 各大交易所的ADA永續合約採用根據持倉規模、槓桿水平和當前標記價格即時計算的動態保證金比例。 2. 保證金比率等於(錢包餘額+未實現損益)除以維持保證金要求,以百分比表示。 3. 當該比率低於交易所定義的維持門檻(通常為 5% 至 10%,取決於槓桿率)時,系統將啟動...

ADAUSDT永續合約資金費率是多少?

ADAUSDT永續合約資金費率是多少?

2026-07-24 20:19:46

ADAUSDT永續合約資金費率定義及目的1. ADAUSDT永續合約資金費率是卡爾達諾(ADA)與主要加密貨幣交易所Tether(USDT)衍生性商品部位之間採用的定期費用兌換機制。 2. 作為價格錨定工具,確保ADAUSDT永續合約價格與基礎ADA/USDT現貨指數價格保持緊密一致。 3.與傳統期...

TON 期貨強平價格公式是?

TON 期貨強平價格公式是?

2026-07-23 09:19:45

TON 期貨強平機制1. 當交易者的保證金餘額低於交易所設定的維持保證金要求時,TON 期貨就會被清算。 2.保證金比例低於或等於100%時,系統自動觸發強制平倉,計算公式為(可用保證金/所需保證金)×100%。 3. 強平價格不是固定的,它會隨著市場趨勢、部位規模、槓桿水準和資金費率的調整而動態變...

TONUSDT永續合約資金費率是多少?

TONUSDT永續合約資金費率是多少?

2026-07-27 02:39:50

定義和核心機制1. TONUSDT永續合約資金費率是專門適用於各大交易所交易的TON/USDT永續合約的定期費用兌換機制。 2. 作為價格錨定工具,防止TONUSDT永續市場價格與基礎TON/USDT現貨指數價格持續背離。 3. 費率每 8 小時計算一次,採用綜合平均保費指數和利息成分的公式計算,通...

SUI期貨槓桿如何影響強平?

SUI期貨槓桿如何影響強平?

2026-07-22 09:59:59

SUI 期貨保證金機制1.主要衍生性商品交易所的SUI期貨合約依據持倉規模及市場波動情況實施分級初始保證金要求。對於名目價值低於 50,000 美元的頭寸,標準初始保證金設定為 8%,而較大頭寸則可逐步調整至 15%。 2. 所有合約規模的維持保證金固定為初始保證金水準的 65%,這意味著當淨值相對...

看所有文章

User not found or password invalid

Your input is correct