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.

ParametreAçıklama
tokenERC721 NFT sözleşmesinin L1’deki adresi.
toAlıcı hesabının L2’deki adresi.
tokenIdYatırılacak NFT’nin ID’si.
gasLimitL2’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.

ParametreAçıklama
_l1TokenERC721 tokeninin L1’deki adresi.
_l2TokenERC721 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.

ParametreAçıklama
tokenERC721 NFT token sözleşmesinin L2’deki adresi.
toAlıcı hesabının L1’deki adresi.
tokenIdGönderilecek NFT ID’si.
gasLimitKullanı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.

ParametreAçıklama
_l2TokenERC721 tokeninin L2’deki adresi.
_l1TokenERC721 tokeninin L1’deki karşılık gelen adresi.

Sırada ne var?

Scroll Geliştirici haberlerini yakından takip edin
Güncellemeler, online ve yüz yüze etkinlikler, ekosistemdeki fırsatlar ve daha fazlası
Takip ettiğiniz için teşekkür ederiz!

Kaynaklar

Bizi Takip Edin