From 6623b62ad3a9bb3b7f07ff3056b03a75d5f61b34 Mon Sep 17 00:00:00 2001 From: Vaibhav Khanna Date: Thu, 14 Apr 2022 18:32:25 +0530 Subject: [PATCH] code refactor --- proxy.sol | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/proxy.sol b/proxy.sol index ef5fa64..869eac1 100644 --- a/proxy.sol +++ b/proxy.sol @@ -31,7 +31,10 @@ contract Internals is Events { */ bytes32 internal constant _DUMMY_IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; - + + /** + * @dev Returns the storage slot which stores the sigs array set for the implementation. + */ function _getSlotImplSigsSlot(address implementation_) internal pure @@ -43,6 +46,9 @@ contract Internals is Events { ); } + /** + * @dev Returns the storage slot which stores the implementation address for the function sig. + */ function _getSlotSigsImplSlot(bytes4 sig_) internal pure returns (bytes32) { return keccak256(abi.encode("eip1967.proxy.implementation", sig_)); } @@ -97,7 +103,7 @@ contract Internals is Events { } /** - * @dev removes implementation and the mappings corresponding to it. + * @dev Removes implementation and the mappings corresponding to it. */ function _removeImplementationSigs(address implementation_) internal { bytes32 slot_ = _getSlotImplSigsSlot(implementation_); @@ -111,6 +117,9 @@ contract Internals is Events { emit removeImplementationLog(implementation_); } + /** + * @dev Returns bytes4[] sigs from implementation address. If implemenatation is not registered then returns empty array. + */ function _getImplementationSigs(address implementation_) internal view @@ -120,6 +129,9 @@ contract Internals is Events { return getSigsSlot(slot_).value; } + /** + * @dev Returns implementation address from bytes4 sig. If sig is not registered then returns address(0). + */ function _getSigImplementation(bytes4 sig_) internal view @@ -223,20 +235,24 @@ contract Internals is Events { } contract AdminStuff is Internals { + + /** + * @dev Only admin gaurd. + */ modifier onlyAdmin() { require(msg.sender == _getAdmin(), "not-the-admin"); _; } /** - * @dev sets new admin. + * @dev Sets new admin. */ function setAdmin(address newAdmin_) external onlyAdmin { _setAdmin(newAdmin_); } /** - * @dev sets new dummy-implementation. + * @dev Sets new dummy-implementation. */ function setDummyImplementation(address newDummyImplementation_) external @@ -246,7 +262,7 @@ contract AdminStuff is Internals { } /** - * @dev adds new implementation address. + * @dev Adds new implementation address. */ function addImplementation(address implementation_, bytes4[] calldata sigs_) external @@ -256,7 +272,7 @@ contract AdminStuff is Internals { } /** - * @dev removes an existing implementation address. + * @dev Removes an existing implementation address. */ function removeImplementation(address implementation_) external onlyAdmin { _removeImplementationSigs(implementation_); @@ -274,21 +290,21 @@ abstract contract Proxy is AdminStuff { {} /** - * @dev returns admin's address. + * @dev Returns admin's address. */ function getAdmin() external view returns (address) { return _getAdmin(); } /** - * @dev returns dummy-implementations's address. + * @dev Returns dummy-implementations's address. */ function getDummyImplementation() external view returns (address) { return _getDummyImplementation(); } /** - * @dev returns bytes4[] sigs from implementation address If not registered then returns empty array. + * @dev Returns bytes4[] sigs from implementation address If not registered then returns empty array. */ function getImplementationSigs(address impl_) external @@ -299,7 +315,7 @@ abstract contract Proxy is AdminStuff { } /** - * @dev returns implementation address from bytes4 sig. If sig is not registered then returns address(0). + * @dev Returns implementation address from bytes4 sig. If sig is not registered then returns address(0). */ function getSigsImplementation(bytes4 sig_) external @@ -324,4 +340,4 @@ abstract contract Proxy is AdminStuff { _fallback(msg.sig); } } -} +} \ No newline at end of file