Open2
ScrollでNFTをブリッジしてみる
これをやる
- L1ERC721GatewayとL2ERC721Gatewayなるものを使ってブリッジできる
- 前提条件
- NFTコントラクトがL1/L2の両方にデプロイされており、結びついていること
- IScrollERC721:counterpart()の戻り値として設定
- NFTコントラクトとGatewayが結びついていること
- NFT側では、IScrollERC721:gateway()の戻り値として設定
- Gateway側では、
function updateTokenMapping(address _l1Token, address _l2Token) external;
に設定- 有名NFTであれば既存Gatewayにすでに登録されている場合があるが、登録されていない場合は自前でGateway(Proxy)をdeployして登録する必要がある
- NFTコントラクトには以下の実装がされていること
- NFTコントラクトがL1/L2の両方にデプロイされており、結びついていること
interface IScrollERC721 {
/// @notice Return the address of Gateway the token belongs to.
function gateway() external view returns (address);
/// @notice Return the address of counterpart token.
function counterpart() external view returns (address);
/// @notice Mint some token to recipient's account.
/// @dev Gateway Utilities, only gateway contract can call
/// @param _to The address of recipient.
/// @param _tokenId The token id to mint.
function mint(address _to, uint256 _tokenId) external;
/// @notice Burn some token from account.
/// @dev Gateway Utilities, only gateway contract can call
/// @param _tokenId The token id to burn.
function burn(uint256 _tokenId) external;
}
Scroll SepoliaにETHが届かないので一旦待ち
なんとかできた
コツコツ頑張ったリポジトリ
scrollの色々なコントラクト
L1のトランザクション:https://sepolia.etherscan.io/tx/0xcabc5bb6ec044ee5db41e709d1f1e95028411790c6d7e9772cdcade3c2f1470f
L2のトランザクション:https://sepolia.scrollscan.com/tx/0x45c3a1245b8bcb29328119cb2241769f8c97f52f77956d262fcb17b8d334a54b
- L1でdepositしてから15分くらい待った気がする
- mainnetだとどのくらいガス代かかるのか分からないので試せていない
Q&A
既存のNFTもブリッジできる?
IScrollERC721の実装がないとできないはず
GatewayだけでなくNFTにもL1/L2の設定が必要なのはなぜ?
Gatewayは誰でもdeployできるため、不正な紐付けもできてしまうため