Contract-Design

什麼時候想要使用連結庫?

  • July 8, 2020

我的理解是,如果智能合約消費了一個只有內部函式的庫,那麼編譯器會將這個庫嵌入到合約字節碼中。在最低級別,沒有使用 DELEGATECALL - 呼叫庫的內部函式是一個簡單的 JUMP 語句。

相反,如果庫確實具有公共/外部功能,則必須單獨部署該庫。

乍一看,似乎大多數庫只包含內部函式:

連結庫的最佳案例是什麼?

可重用性,請參見此處的第一句。

庫類似於合約,但它們的目的是它們只在特定地址部署一次,並且它們的程式碼使用DELEGATECALL.

雖然老實說,可重用庫的使用並沒有真正起飛,但至少有一個項目旨在提供這些:https ://github.com/modular-network/ethereum-libraries 。

否則,外部庫也可以幫助保持低於契約大小限制。

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