Solidity
多個合約如何存在於一個文件中?
考慮以下文件
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 等命令行實用程序總是編譯所有內容(除非另有說明)。但出於顯而易見的原因,您總是選擇部署哪個合約。