• Mark Tyneway's avatar
    contracts-bedrock: bump oz to latest release (#3308) · cdf2163e
    Mark Tyneway authored
    This bumps the open zeppelin contracts used in bedrock to the
    latest release. This bump is happening because `Ownable` becomes
    more flexible, allowing you to overwrite the logic for `onlyOwner`.
    This would enable writing a `CrossDomainOwnable` contract like so:
    
    ```solidity
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.15;
    
    import { AddressAliasHelper } from "../vendor/AddressAliasHelper.sol";
    import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";
    
    abstract contract CrossDomainOwnable is Ownable {
        /**
         * @dev Throws if the sender is not the owner.
         */
        function _checkOwner() internal view {
            address sender = AddressAliasHelper.undoL1ToL2Alias(msg.sender);
            require(owner() == sender, "Ownable: caller is not the owner");
        }
    }
    ```
    
    The main diff to the `Ownable` contract is that is now looks like this:
    
    ```solidity
        /**
         * @dev Throws if called by any account other than the owner.
         */
        modifier onlyOwner() {
            _checkOwner();
            _;
        }
    
        /**
         * @dev Returns the address of the current owner.
         */
        function owner() public view virtual returns (address) {
            return _owner;
        }
    
        /**
         * @dev Throws if the sender is not the owner.
         */
        function _checkOwner() internal view virtual {
            require(owner() == _msgSender(), "Ownable: caller is not the owner");
        }
    ```
    
    The older version of the contracts doesn't have the `virtual`
    `_checkOwner` function. This does add some additional gas overhead
    as seen in the `.gas-snapshot`.
    cdf2163e
Name
Last commit
Last update
..
contracts Loading commit data...
deploy Loading commit data...
deploy-config Loading commit data...
deployments/goerli Loading commit data...
scripts Loading commit data...
src Loading commit data...
tasks Loading commit data...
.eslintignore Loading commit data...
.eslintrc.js Loading commit data...
.gas-snapshot Loading commit data...
.gitignore Loading commit data...
.npmignore Loading commit data...
.prettierignore Loading commit data...
.prettierrc.js Loading commit data...
.solhint.json Loading commit data...
.solhintignore Loading commit data...
.storage-layout Loading commit data...
CHANGELOG.md Loading commit data...
LICENSE Loading commit data...
README.md Loading commit data...
foundry.toml Loading commit data...
hardhat.config.ts Loading commit data...
package.json Loading commit data...
slither.config.json Loading commit data...
slither.db.json Loading commit data...
tsconfig.json Loading commit data...