From 2e6ef74593157333a7135405f5b47bbf8ebd2e88 Mon Sep 17 00:00:00 2001 From: Francisco Giordano Date: Mon, 19 Apr 2021 19:35:18 -0300 Subject: [PATCH] Improve code comments in ERC1967._upgradeToAndCallSecure --- contracts/proxy/ERC1967/ERC1967Upgrade.sol | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/contracts/proxy/ERC1967/ERC1967Upgrade.sol b/contracts/proxy/ERC1967/ERC1967Upgrade.sol index c17fdabb1..37c5d63e5 100644 --- a/contracts/proxy/ERC1967/ERC1967Upgrade.sol +++ b/contracts/proxy/ERC1967/ERC1967Upgrade.sol @@ -61,16 +61,17 @@ abstract contract ERC1967Upgrade is ERC1967Storage { */ function _upgradeToAndCallSecure(address newImplementation, bytes memory data, bool forceCall) internal { address oldImplementation = _getImplementation(); - // do inital upgrade + + // Initial upgrade and setup call _setImplementation(newImplementation); - // do setup call if (data.length > 0 || forceCall) { Address.functionDelegateCall(newImplementation, data); } - // check if nested in an upgrade check + + // Perform rollback test if not already in progress StorageSlot.BooleanSlot storage rollbackTesting = StorageSlot.getBooleanSlot(_ROLLBACK_SLOT); if (!rollbackTesting.value) { - // trigger upgrade check with flag set to true + // Trigger rollback using upgradeTo from the new implementation rollbackTesting.value = true; Address.functionDelegateCall( newImplementation, @@ -80,11 +81,10 @@ abstract contract ERC1967Upgrade is ERC1967Storage { ) ); rollbackTesting.value = false; - // check upgrade was effective + // Check rollback was effective require(oldImplementation == _getImplementation(), "ERC1967Upgrade: upgrade breaks further upgrades"); - // reset upgrade + // Finally reset to the new implementation and log the upgrade _setImplementation(newImplementation); - // emit event emit Upgraded(newImplementation); } }