Solidity

多個合約如何存在於一個文件中?

  • January 3, 2022

考慮以下文件

contract A {
}
contract B{
}
contract C{
}

這樣的文件有效嗎?一個 .sol 文件可以包含多個契約嗎?如果是,部署地址將指向哪個合約?

現在考慮以下文件

contract A{
}
contract B{
}
contract C is A, B {
}
contract D is A, B, C {
}

Solidity 文件說,

When a contract inherits from other contracts, only a single contract is created on the blockchain, and the code from all the base contracts is compiled into the created contract.

那麼 Solidity 如何辨識為哪個合約編譯字節碼,它是最衍生的合約嗎?如果有人與部署的地址進行互動,哪個合約將為他們提供服務?

您必須選擇編譯和部署哪一個。或者,您當然可以編譯所有內容,然後只選擇要部署的那個。或者,如果需要,您可以部署所有這些。

使用的工具也會影響這一點。例如,Hardhat 和 Truffle 等命令行實用程序總是編譯所有內容(除非另有說明)。但出於顯而易見的原因,您總是選擇部署哪個合約。

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