ERC-721 Nedir? - NFT Standartları

Featured image

ERC-721, EVM altyapısına sahip blok zincirleri kullanılarak birbirinden farklı ve tamamen eşsiz tokenlerin üretilmesi amacıyla geliştirilen akıllı sözleşme standardına verilen isimdir. ERC-721 tokenleri, fonlanabilir bir yapıda olmadıkları için ERC-20 standardına sahip tokenlerden farklıdır. Bu, her bir tokenin benzersiz bir yapıda olduğu çoklu yapıda transferinin olmadığı ve birbirinin yerine kullanılamayacağı anlamına gelir. Tüm ERC-721 tokenleri eşsiz olduğu ve aynı değere sahip olmadığı için bu tür tokenlerin alım satım (swap) işlemi alışıla gelmiş borsa faaliyetlerinin dışında bir yapıda ilerler.


erc20 vs erc721

ERC-721 Standardı Kimin Fikri?

William Entriken, Dieter Shirley, Jacob Evans ve Nastassia Sachs tarafından (eip-721) Non-Fungibles Token fikri Ocak 2018’de ortaya atıldı.

Tokenlerin transferi, bir adresin sahip olduğu tokenlerin bilgilerini almak, belirli bir tokenin sahiplik bilgisini almak gibi birtakım bilgilerin aktarımı ve Dapp mimarileri ile haberleşirken kullanacağı iletişim standardını belirler. Bunlar haricinde bir tokenin harcama yetkisinin bir başka cüzdana vermek ve verilmiş yetkileri görüntülemek gibi işlevleride vardır.

Bu standarda uymadan hazırlanmış akıllı sözleşmeler (istisnalar göz ardı edildiğinde) merkeziyetsiz web uygulamalarında ve cüzdan uygulamalarında görünür olmayacaktır.

ERC-721 Standardı Mimarisi

Ancak bir akıllı sözleşme aşağıdaki fonksiyonları ve eventleri doğru bir şekilde kullanılırsa, (ERC-721) NFT sözleşmesi olarak kabul edilebilir.

Fonksiyonlar

    function balanceOf(address _owner) external view returns (uint256);
    function ownerOf(uint256 _tokenId) external view returns (address);
    function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable;
    function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;
    function transferFrom(address _from, address _to, uint256 _tokenId) external payable;
    function approve(address _approved, uint256 _tokenId) external payable;
    function setApprovalForAll(address _operator, bool _approved) external;
    function getApproved(uint256 _tokenId) external view returns (address);
    function isApprovedForAll(address _owner, address _operator) external view returns (bool);

Eventler - Tetikleyiciler

Eventler özellikle dapp’ler için ciddi bir önem arz etmektedir. Bir ERC-721 sözleşmesi üzerinde yapılan işlemler (Transfer, yetkilendirme vb.) merkeziyetsiz uygulamalar üzerinden dinlenebilir ve buna göre aksiyon alabilir.

    event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
    event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);

ERC-721 Kullanım Alanları Günümüzde ve Gelecekte

Bugünün dünyasında ERC-721 kullanımını örnek ile açıklamak gerekirse ev tapusu, arsa-arazi tapusu araç ruhsatı gibi noter onayı gerektiren tüm sahiplik doğrulayan işlemler ERC-721 kullanılarak kolaylıkla gerçekleştirilebilir. 

ERC-721 ile oluşturulan benzersiz tokenler aşağıdakileri belgelemek amacı ile kullanılabilir:

Sık Kullanılan ERC-721 Yapıları

Ape nft

Metadata Kullanımı

Metadata, token ile ilgili çok daha fazla bilginin yer aldığı dosyadır – NFT meta verileri, bir NFT’nin adı, resim bağlantısı, telif hakları, yaratıcı kişinin bilgileri ve çok daha fazlası hakkında bilgiler içerebilir.

Merkezi veya merkeziyetsiz (ipfs.io) yapılar üzerinde barındırılabilirler. Örnek olarak;

Ape Yacht NFT metadatası (Merkeziyetsiz) :ape-nft

Remoot Game NFT metadatası (Merkezi) :remoot-nft