适用于以下方面:
pragma solidity >=0.5.0;
contract Include {
uint z = 1;
}
contract CreationCode {
uint k = 1;
function get() external returns (bytes32) {
return keccak256(type(Include).creationCode);
}
}为什么creationCode for Include.sol在更改k时会发生变化,D2不是Include.sol中的一个变量?
发布于 2020-09-19 20:05:23
默认情况下,solc将在生成的字节码中嵌入编译元数据的散列。有关详细信息,请参阅坚实性文件。源代码的散列包含在已编译的元数据中,因此源代码中的更改将影响生成的元数据和字节码。
一种解决方案是将CreationCode包含在一个独立的文件中,并在需要时导入它,这样对CreationCode的任何更改都不会影响Include的字节码。
https://ethereum.stackexchange.com/questions/87599
复制相似问题