• Mark Tyneway's avatar
    contracts-bedrock: update weth98 (#10102) · c8277f3b
    Mark Tyneway authored
    * contracts-bedrock: update weth98
    
    The custom gas token project is moving away from using
    the original weth9 code as a predeploy to using the
    weth98 code as a predeploy. As part of this, the ability
    to override the name and symbol are required for chains
    that use a custom gas token. There is no way to
    mark an inline declaration as `virtual`, it requires
    moving to a `function` syntax. Definitely less clean
    looking but necessary to support the override ability.
    
    The implementation of the new WETH predeploy is as follows:
    
    ```solidity
    contract WETH is WETH98 {
        /// @notice Returns the name of the token from the L1Block contract
        function name() external view override returns (string memory) {
            return string.concat("Wrapped ", L1Block(Predeploys.L1_BLOCK_ATTRIBUTES).gasPayingTokenName());
        }
    
        /// @notice Returns the symbol of the token from the L1Block contract
        function symbol() external view override returns (string memory) {
            return string.concat("W", L1Block(Predeploys.L1_BLOCK_ATTRIBUTES).gasPayingTokenSymbol());
        }
    }
    ```
    
    Where when not in custom gas token mode, it with return `Wrapped Ether`
    and `WETH`, so it is backwards compatible.
    
    This commit also adds a fallback function since the original weth9 has
    a fallback function but this one does not. While the receive function
    can work, adding the fallback function ensures that the same behavior
    as weth9 is achieved when making a call that includes calldata + value.
    
    * contracts-bedrock: fix compile
    
    * snapshots: update
    
    * op-bindings: regenerate
    
    * contracts-bedrock: cleanup weth98
    
    * contracts-bedrock: semver lock
    
    * contracts-bedrock: weth98 tests
    
    * lint: fix
    c8277f3b
Name
Last commit
Last update
..
chain-mon Loading commit data...
common-ts Loading commit data...
contracts-bedrock Loading commit data...
contracts-ts Loading commit data...
core-utils Loading commit data...
fee-estimation Loading commit data...
sdk Loading commit data...
web3js-plugin Loading commit data...