Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
nebula
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
exchain
nebula
Commits
3380a610
Commit
3380a610
authored
Feb 21, 2023
by
Mark Tyneway
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
contracts-bedrock: lint
parent
8dc2fa99
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
22 additions
and
21 deletions
+22
-21
StandardBridge.t.sol
...ges/contracts-bedrock/contracts/test/StandardBridge.t.sol
+19
-20
StandardBridge.sol
.../contracts-bedrock/contracts/universal/StandardBridge.sol
+3
-1
No files found.
packages/contracts-bedrock/contracts/test/StandardBridge.t.sol
View file @
3380a610
...
@@ -3,7 +3,10 @@ pragma solidity 0.8.15;
...
@@ -3,7 +3,10 @@ pragma solidity 0.8.15;
import { StandardBridge } from "../universal/StandardBridge.sol";
import { StandardBridge } from "../universal/StandardBridge.sol";
import { CommonTest } from "./CommonTest.t.sol";
import { CommonTest } from "./CommonTest.t.sol";
import { OptimismMintableERC20, ILegacyMintableERC20 } from "../universal/OptimismMintableERC20.sol";
import {
OptimismMintableERC20,
ILegacyMintableERC20
} from "../universal/OptimismMintableERC20.sol";
import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
/**
/**
...
@@ -13,24 +16,29 @@ import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
...
@@ -13,24 +16,29 @@ import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
*/
*/
contract StandardBridgeTester is StandardBridge {
contract StandardBridgeTester is StandardBridge {
constructor(address payable _messenger, address payable _otherBridge)
constructor(address payable _messenger, address payable _otherBridge)
StandardBridge(_messenger, _otherBridge) {}
StandardBridge(_messenger, _otherBridge)
{}
function isOptimismMintableERC20(address _token) external view returns (bool) {
function isOptimismMintableERC20(address _token) external view returns (bool) {
return _isOptimismMintableERC20(_token);
return _isOptimismMintableERC20(_token);
}
}
function isCorrectTokenPair(address _mintableToken, address _otherToken) external view returns (bool) {
function isCorrectTokenPair(address _mintableToken, address _otherToken)
external
view
returns (bool)
{
return _isCorrectTokenPair(_mintableToken, _otherToken);
return _isCorrectTokenPair(_mintableToken, _otherToken);
}
}
receive() external
override payabl
e {}
receive() external
payable overrid
e {}
}
}
/**
/**
* @title LegacyMintable
* @title LegacyMintable
* @notice Simple implementation of the legacy OptimismMintableERC20.
* @notice Simple implementation of the legacy OptimismMintableERC20.
*/
*/
contract LegacyMintable is ERC20, ILegacyMintableERC20
{
contract LegacyMintable is ERC20, ILegacyMintableERC20 {
constructor(string memory _name, string memory _ticker) ERC20(_name, _ticker) {}
constructor(string memory _name, string memory _ticker) ERC20(_name, _ticker) {}
function l1Token() external view returns (address) {
function l1Token() external view returns (address) {
...
@@ -38,6 +46,7 @@ contract LegacyMintable is ERC20, ILegacyMintableERC20 {
...
@@ -38,6 +46,7 @@ contract LegacyMintable is ERC20, ILegacyMintableERC20 {
}
}
function mint(address _to, uint256 _amount) external pure {}
function mint(address _to, uint256 _amount) external pure {}
function burn(address _from, uint256 _amount) external pure {}
function burn(address _from, uint256 _amount) external pure {}
/**
/**
...
@@ -108,27 +117,17 @@ contract StandardBridge_Stateless_Test is CommonTest {
...
@@ -108,27 +117,17 @@ contract StandardBridge_Stateless_Test is CommonTest {
*/
*/
function test_isCorrectTokenPair_succeeds() external {
function test_isCorrectTokenPair_succeeds() external {
// Modern + known to be correct remote token
// Modern + known to be correct remote token
assertTrue(
assertTrue(bridge.isCorrectTokenPair(address(mintable), mintable.remoteToken()));
bridge.isCorrectTokenPair(address(mintable), mintable.remoteToken())
);
// Modern + known to be correct l1Token (legacy interface)
// Modern + known to be correct l1Token (legacy interface)
assertTrue(
assertTrue(bridge.isCorrectTokenPair(address(mintable), mintable.l1Token()));
bridge.isCorrectTokenPair(address(mintable), mintable.l1Token())
);
// Modern + known to be incorrect remote token
// Modern + known to be incorrect remote token
assertTrue(mintable.remoteToken() != address(0x20));
assertTrue(mintable.remoteToken() != address(0x20));
assertFalse(
assertFalse(bridge.isCorrectTokenPair(address(mintable), address(0x20)));
bridge.isCorrectTokenPair(address(mintable), address(0x20))
);
// Legacy + known to be correct l1Token
// Legacy + known to be correct l1Token
assertTrue(
assertTrue(bridge.isCorrectTokenPair(address(legacy), legacy.l1Token()));
bridge.isCorrectTokenPair(address(legacy), legacy.l1Token())
);
// Legacy + known to be incorrect l1Token
// Legacy + known to be incorrect l1Token
assertTrue(legacy.l1Token() != address(0x20));
assertTrue(legacy.l1Token() != address(0x20));
assertFalse(
assertFalse(bridge.isCorrectTokenPair(address(legacy), address(0x20)));
bridge.isCorrectTokenPair(address(legacy), address(0x20))
);
// A token that doesn't support either modern or legacy interface
// A token that doesn't support either modern or legacy interface
// will revert
// will revert
vm.expectRevert();
vm.expectRevert();
...
...
packages/contracts-bedrock/contracts/universal/StandardBridge.sol
View file @
3380a610
...
@@ -471,7 +471,9 @@ abstract contract StandardBridge {
...
@@ -471,7 +471,9 @@ abstract contract StandardBridge {
view
view
returns (bool)
returns (bool)
{
{
if (ERC165Checker.supportsInterface(_mintableToken, type(ILegacyMintableERC20).interfaceId)) {
if (
ERC165Checker.supportsInterface(_mintableToken, type(ILegacyMintableERC20).interfaceId)
) {
return _otherToken == ILegacyMintableERC20(_mintableToken).l1Token();
return _otherToken == ILegacyMintableERC20(_mintableToken).l1Token();
} else {
} else {
return _otherToken == IOptimismMintableERC20(_mintableToken).remoteToken();
return _otherToken == IOptimismMintableERC20(_mintableToken).remoteToken();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment