Contract-Design

合約間呼叫的成本是多少?

  • July 13, 2020

我與創建項目並將它們添加到類別的方法簽訂了契約。

我想創建一個包裝契約,將多個呼叫合併為一個:創建一個項目並將其添加到一個呼叫中的多個類別中。

呼叫包裝器而不是直接呼叫基礎合約的大概價格是多少?

如果要將創建的項目添加到的類別數為零,請幫助我確定是否值得直接呼叫基本契約而不是包裝契約。

案例 1:創建項目並將其添加到類別 11 和 17。

案例 2:創建項目而不是將其添加到類別中。

簡短的回答:

它大約是執行所有呼叫函式的成本加上執行包裝器的成本的總和,其中包括打包和解包函式參數的少量氣體支出。

更好的答案:

成本差異並不嚴重。該決定可能應該基於您的預期流量和其他因素。例如,如果您需要多個操作作為原子事務來完成,那麼包裝器與目標函式的訪問控制(例如 onlyWrapper)相結合,以確保各個函式不被任何其他程序呼叫。

當然,您可以使用它來觀察成本並確認您的發現與預期相符。給定兩個目標 A & B 和一個 Wrapper,成本應該是:

cost A + cost B + cost Wrapper

合約的作用主要是維護系統的內部完整性和執行規則。

  • 外部實體可以單獨呼叫A 或 B*嗎?*這是使用契約的有效方式嗎?
  • A 和 B 應該總是一起叫嗎?
  • 有時一起呼叫 A 和 B 是否有用,但不是嚴格要求?

在執行時成本大致相同的相應實現:

  • 讓使用者呼叫 A 或 B
  • 強制使用者呼叫 Wrapper
  • 讓使用者呼叫 A、B 或 Wrapper

希望能幫助到你。

引用自:https://ethereum.stackexchange.com/questions/84994