ERC721 NFT Köprüsü
L1’den ERC721 tokenlarını yatırın
L1’den L2’ye NFT köprüleme, yönlendirici kullanmak yerine “L1ERC721Gateway” sözleşmesi aracılığıyla yapılır. ERC20 tokenlarını köprülemeye benzer şekilde, tokenları L2’ye göndermek için “depositERC721” fonksiyonunu kullanırız ve daha sonra L2’de konuşlandırılan “L2ERC721Gateway” sözleşmesindeki “withdrawERC721”i kullanarak bunları L1’e geri alabiliriz.
Köprülemeyi mümkün kılmak için hem L1 hem de L2’deki NFT sözleşmeleri başlatılmalı ve Ağ Geçitleri aracılığıyla bağlanmalıdır. Bu, L1 veya L2’deki bir sözleşmenin eksik olması veya ‘updateTokenMapping’ fonksiyonu aracılığıyla eşlenmemesi durumunda para yatırma ve çekme işlemlerinin geri alınacağı anlamına gelir.
L2’de ScrollERC721 tokenı oluşturma
Bir ERC721 tokenını L2’ye yatırmak için, “IScrollERC721” standardıyla uyumlu bir token sözleşmesinin oluşturulması ve hem L1 hem de L2’de sırasıyla “L1ERC721Gateway” ve “L2ERC721Gateway” üzerinde eşlenmesi gerekir. Bu sözleşme, L2’deki Ağ Geçidine, bir token yatırıldığında basılması ve token geri çekildiğinde yakılması için izin vermelidir.
Aşağıdaki arayüz, L2’de “L2ERC721Gateway” ile uyumlu ERC721 tokenlarını ağa dağıtmak için gereken “IScrollERC721”dir.
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 Köprüsüne ERC721 NFT’leri Ekleme
Tüm varlıklar, dağıtılan Ağ Geçidi sözleşmeleri aracılığıyla herhangi bir geliştirici tarafından güvenli ve izinsiz olarak köprülenebilir. Ancak Scroll aynı zamanda topluluk tarafından oluşturulan tüm NFT’lerin kabul edildiği bir ERC721 Ağ Geçidi sözleşmesini de yönetmektedir. Scroll tarafından yönetilen Ağ Geçidinin bir parçası olmak, Ağ Geçidi sözleşmelerini dağıtmanıza gerek kalmayacağı ve tokenınızın Scroll kullanıcı arayüzünde görüneceği anlamına gelir. Scroll Ağ Geçidi’nin bir parçası olmak için hem L1 hem de L2 Ağ Geçidi sözleşmelerine NFT eklemek üzere Scroll ekibiyle iletişime geçmelisiniz. Bunu yapmak için, Scroll resmi kullanıcı arayüzünde yeni bir token eklemek için token listeleri deposundaki talimatları izleyin.
ERC721 tokenları Scroll’dan çekin
L2’den L1’e token göndermek için L2ERC721Gateway sözleşmesi kullanılır. Köprülemeden önce ‘L2ERC721Gateway’ sözleşmesinin NFT sözleşmesi tarafından onaylanması gerekir. Bu yapıldıktan sonra varlık köprüsünü gerçekleştirmek için “drawERC721” çağrılabilir.
L1ERC721Gateway API
Scroll sözleşmesi API dokümanlarının tamamı için lütfen npm kitaplığını ziyaret edin.
depositERC721
function depositERC721(address _token, address _to, uint256 _tokenId, uint256 _gasLimit) external payable;
L1’den, alıcının L2’deki hesabına ERC721 NFT yatırır.
Parametre | Açıklama |
---|---|
token | ERC721 NFT sözleşmesinin L1’deki adresi. |
to | Alıcı hesabının L2’deki adresi. |
tokenId | Yatırılacak NFT’nin ID’si. |
gasLimit | L2’deki yatırma işlemini tamamlamak için gereken gaz limiti. Ücretin kullanılmayan kısmı iade edilecektir. |
updateTokenMapping
function updateTokenMapping(address _l1Token, address _l2Token) external;
Bir NFT sözleşmesini L1’den L2’ye bağlayan eşlemeyi günceller.
Parametre | Açıklama |
---|---|
_l1Token | ERC721 tokeninin L1’deki adresi. |
_l2Token | ERC721 tokeninin L2’deki karşılık gelen adresi. |
L2ERC721Gateway API
withdrawERC721
function withdrawERC721(address _token, address _to, uint256 _tokenId, uint256 _gasLimit) external payable;
L2’den alıcının L1’deki hesabına bir ERC721 NFT gönderir.
Parametre | Açıklama |
---|---|
token | ERC721 NFT token sözleşmesinin L2’deki adresi. |
to | Alıcı hesabının L1’deki adresi. |
tokenId | Gönderilecek NFT ID’si. |
gasLimit | Kullanılmıyor ancak potansiyel ileriye dönük uyumluluk hususları nedeniyle dahil edildi. |
updateTokenMapping
function updateTokenMapping(address _l1Token, address _l2Token) external;
Bir NFT sözleşmesini L2’den L1’e bağlayan eşlemeyi günceller.
Parametre | Açıklama |
---|---|
_l2Token | ERC721 tokeninin L2’deki adresi. |
_l1Token | ERC721 tokeninin L1’deki karşılık gelen adresi. |