contracts-bedrock: update weth98 (#10102)
* 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
Showing
Please register or sign in to comment