This version of Hardhat changes the default evmVersion
to paris
for solc versions newer than or equal to 0.8.20.
Starting from version 0.8.20, solc changed the default target EVM version to Shanghai. Among other things, this meant that the generated bytecode could (and most likely would) contain the new PUSH0
opcode.
Up until this point, Hardhat always delegated to solc the decision of which EVM version to target. But there are two things that are different today: many users develop for non-mainnet chains, and not every chain has adopted the Shanghai hardfork yet. This means it's possible that you develop a contract which works locally (Hardhat's default hardfork is still Shanghai, because we follow the current mainnet hardfork) but that then doesn't work after deploying it.
If you are sure you are going to deploy in a network that supports the Shanghai hardfork, you can change the target EVM like this:
module.exports = {
solidity: {
version: "0.8.20",
settings: {
evmVersion: "shanghai",
},
},
};