A "New storage layout is incompatible" error occurs at Initializable.sol:62 "Bad upgrade from bool to uint8" when moving from openzeppelin/contracts-upgradeable v4.4.0 to v4.6.0.
A comment above Initializable.sol:62 mentions the change:
* custom:oz-retyped-from bool
Is there a work around or should I stay on contracts-upgradeable v4.4.0?
Code to reproduce
Install with NPM openzeppelin/contracts-upgradeable 4.6.0 and make any change to CreatorToken and then attempt to deploy an upgrade.
10_upgrade_creator_contract.js
==============================
Error: New storage layout is incompatible
..\@openzeppelin\contracts-upgradeable\proxy\utils\Initializable.sol:62: Upgraded `_initialized` to an incompatible type
- Bad upgrade from bool to uint8
at Object.assertStorageUpgradeSafe (C:\Users\slawl\Source\ImmutableEcosystem\node_modules\@openzeppelin\upgrades-core\src\storage\index.ts:54:11)
at Object.deployImpl (C:\Users\slawl\Source\ImmutableEcosystem\node_modules\@openzeppelin\truffle-upgrades\src\utils\deploy-impl.ts:39:5)
at upgradeProxy (C:\Users\slawl\Source\ImmutableEcosystem\node_modules\@openzeppelin\truffle-upgrades\src\upgrade-proxy.ts:30:20)
at module.exports (C:\Users\slawl\Source\ImmutableEcosystem\migrations\10_upgrade_creator_contract.js:31:27)
at Migration._deploy (C:\Users\slawl\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\migrate\Migration.js:75:1)
at Migration._load (C:\Users\slawl\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\migrate\Migration.js:56:1)
at Migration.run (C:\Users\slawl\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\migrate\Migration.js:217:1)
at Object.runMigrations (C:\Users\slawl\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\migrate\index.js:150:1)
at Object.runFrom (C:\Users\slawl\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\migrate\index.js:110:1)
at runMigrations (C:\Users\slawl\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\core\lib\commands\migrate.js:253:1)
at Object.run (C:\Users\slawl\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\core\lib\commands\migrate.js:223:1)
at Command.run (C:\Users\slawl\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\core\lib\command.js:183:1)
Truffle v5.4.21 (core: 5.4.21)
Node v14.17.1
Environment
Truffle v5.4.21 (core: 5.4.21)
Node v14.17.1
"devDependencies": {
"@openzeppelin/contracts": "^4.6.0",
"@openzeppelin/contracts-upgradeable": "^4.6.0",
"@openzeppelin/test-helpers": "^0.5.11",
"@openzeppelin/truffle-upgrades": "^1.7.1",
"truffle-plugin-verify": "^0.5.25"
},
"dependencies": {
"@truffle/hdwallet-provider": "^1.7.0",
"big-integer": "^1.6.51",
"express": "^4.17.3",
"mem": "^8.1.1",
"truffle-assertions": "^0.9.2",
"truffle-contract-size": "^2.0.1"
}