Contract-Design
什麼時候想要使用連結庫?
我的理解是,如果智能合約消費了一個只有內部函式的庫,那麼編譯器會將這個庫嵌入到合約字節碼中。在最低級別,沒有使用 DELEGATECALL - 呼叫庫的內部函式是一個簡單的 JUMP 語句。
相反,如果庫確實具有公共/外部功能,則必須單獨部署該庫。
乍一看,似乎大多數庫只包含內部函式:
連結庫的最佳案例是什麼?
可重用性,請參見此處的第一句。
庫類似於合約,但它們的目的是它們只在特定地址部署一次,並且它們的程式碼使用
DELEGATECALL
.雖然老實說,可重用庫的使用並沒有真正起飛,但至少有一個項目旨在提供這些:https ://github.com/modular-network/ethereum-libraries 。
否則,外部庫也可以幫助保持低於契約大小限制。