Web3 Çaylak Serisi: Sıfırdan Bir NFT DEX Gerçekleştirmek

Önceki birkaç makaleyi okuyan kullanıcılar, ERC-20 protokollerine ait Token'ların, Uniswap gibi DEX'ler aracılığıyla merkeziyetsizlik ile işlem görebileceğini bilmelidir. Peki, ERC-721 protokolü, yani NFT'ler için merkeziyetsiz işlem nasıl yapılabilir?

Şu anda ana akım bazı NFT borsaları, ticaret yapmak için sipariş verme yöntemini kullanıyor; bu, birer birer ürünlerin süpermarket raflarına yerleştirilmesi gibidir, alıcılar fiyatın uygun olduğunu düşündüklerinde, ürünleri evlerine götürebilirler.

Bu makale, akıllı sözleşmeler yazma ve basit bir ön yüz sayfası oluşturma yoluyla NFT'nin merkeziyetsiz ticaretini gerçekleştirecektir. Bu makalenin yalnızca öğrenme amacıyla kullanıldığını ve gerçek bir üretim ortamında kullanılamayacağını unutmayın.

NFT (Değiştirilemez Token)

NFT, yani eşsiz token, her bir Token'ın eşsiz olduğu ve farklı olduğu anlamına gelir. Bu, ERC-721 protokolünü takip eder. Genel olarak her bir NFT cüzdan içinde farklı bir resim gösterir ve her NFT grubu, ayırt etmek için benzersiz bir ID'ye sahip olacaktır.

Web3 Yeni Başlayanlar Serisi: Sıfırdan Bir NFT DEX Gerçekleştirmek

NFT'nin özelliklerinden dolayı, fiyat eğrisiyle fiyat belirlemek için ERC-20 gibi bir yöntem kullanılamaz - çünkü her bir Token farklıdır. Bu yüzden şu anda en yaygın işlem şekli, emir defteri biçiminde işlem yapmaktır.

Sipariş Defteri İşlemleri

Sipariş defteri modeli, basitçe, ürün fiyatının insan tarafından belirlendiği, Uniswap gibi fiyatı fiyat eğrisiyle hesaplayan yöntemlerden farklıdır. Sipariş defteri genellikle iki tür işlem moduna ayrılır; biri fiyatlandırma emri, yani satıcının kendi belirlediği satış fiyatıdır, eğer alıcı bu fiyatı uygun bulursa, alıcı satın alma işlemini gerçekleştirebilir. Diğeri ise satın alma emri, yani alıcı kendi ihtiyacına göre bir satın alma emri verir, satıcı bu fiyatı uygun bulursa, satıcı satış işlemini gerçekleştirebilir.

Genel olarak, alım siparişlerinin fiyatı, fiyatlandırma siparişlerinin fiyatından düşük olacaktır. Bu yazıda yalnızca birinci fiyatlandırma yöntemi tanıtılacaktır.

NFT DEX'in fonksiyonları

Bir NFT DEX'in temel işlevleri aşağıdaki temel işlevleri içermelidir:

  1. Ürün listeleme: Bir NFT'yi fiyatlandırmaya göre listelemek
  2. Ürün satın alma: NFT'nin fiyatlandırmasına göre satın alma
  3. DEX işlem ücreti: İşlem fiyatına göre orantılı olarak işlem ücreti alınır.

Ürün ekleme

Ürünleri listelemek için aşağıdaki birkaç şeyi yapmanız gerekiyor:

  1. Ön yüz: Kullanıcı kendi NFT'sini seçer ve bir fiyat belirleyerek listelemeye tıklar.
  2. Protokol: Kullanıcı, protokole yetki ayarlamak zorundadır; bu, kullanıcının NFT'sini kontrol etmesine olanak tanır.

Bu şekilde ürün raflarda yer almış olur. Sözleşmede, kullanıcıların raflara koyduğu ürün fiyatlarının bir Haritasını tutmak gerekmektedir, bu verinin genellikle merkezi bir hizmette tutulması, sözleşmenin yükünü azaltmak için mümkündür, ancak bu makalede bu Harita verisi sözleşme içinde tutulacaktır.

ürün satın al

Ürün satın alırken aşağıdaki birkaç şey meydana gelir:

  1. Ön yüz: Kullanıcı satın almak istediği bir NFT'yi seçer ve satın al butonuna tıklar.
  2. Sözleşme: Sözleşmeyi çağırarak, kullanıcının parasını NFT'nin satıcısına aktarın ve NFT'yi alıcıya aktarın.

Bir NFT DEX'in Gerçekleştirilmesi

Bu bölümde, sıfırdan bir NFT DEX'i gerçekleştireceğiz, bu yazar tarafından zaten dağıtılmış DEX adresi nft-dex-frontend.vercel.app.

Web3 Yeni Başlayanlar Serisi: Sıfırdan Bir NFT DEX Gerçekleştirmek

1. Bir NFT oluştur

Test ihtiyaçları için, en iyisi kendi NFT'mize sahip olmaktır. Remix aracılığıyla hızlı bir şekilde ERC-721 protokolüne sahip bir NFT oluşturabiliriz; bu, ilgili şablonu sağlar.

Web3 Yeni Başlayanlar Serisi: Sıfırdan Bir NFT DEX Gerçekleştirmek

Şablona göre kolayca bir NFT dağıtabiliriz. Elbette bu adımı atlayabilir ve doğrudan hazırladığımız NFT'yi kullanabilirsiniz.

2. Sözleşme Yazımı

Sözleşme yöntemlerimiz aşağıdaki birkaç yöntemi içermelidir:

2.1. Satıcı NFT Yükler

Satıcı, satmak istediği NFT'yi ve ilgili fiyatı belirtmelidir. Listeleme sırasında, kullanıcı NFT'nin yetkilendirme yöntemini imzalamalıdır, böylece akıllı sözleşmemizin bu NFT'yi işlem yapma yetkisi olur, bu şekilde bir alıcı satın aldığında, bu işlem otomatik olarak tamamlanabilir.

Bu nedenle süreç şöyle olmalıdır: 1. Kullanıcı kendi NFT'sini seçer; 2. Fiyatı ayarlar, burada fiyatlandırma stabil coin USDT, USDC veya ETH olabilir; 3. NFT'yi sözleşmeye yetkilendirir.

Sonrasında sözleşmenin listeleme yöntemini çağırabilirsiniz, bu yöntem aşağıdaki birkaç şeyi yapması gerekmektedir:

  1. NFT'nin sahipliğini doğrulama
  2. Listeleme kaydı ekle
  3. Listeleme olayını tetikleme

Web3 yeni başlayanlar serisi: Sıfırdan bir NFT DEX oluşturmak

2.2. Alıcı NFT satın alır

Alıcı, NFT satın alırken, kullanıcı yalnızca istediği NFT'yi seçmeli ve ilgili token'i ödemelidir. Sözleşme seviyesinde aşağıdaki adımlar gerçekleştirilecektir: 1. "listings"'den ilgili NFT verileri okunur; 2. NFT'nin fiyatına göre işlem ücretleri hesaplanır ve bu miktar satış fiyatından düşülür; 3. NFT alıcının eline transfer edilir; 4. satın alma olayı tetiklenir.

Web3 Yeni Başlayanlar Serisi: Sıfırdan Bir NFT DEX Gerçekleştirmek

2.3. Listeyi İptal Et

Elbette, satıcı fiyatın uygun olmadığını düşünebilir ve listelemeyi iptal etmeyi seçebilir. Listeleme bilgilerini kaydettiğimiz yerde, ürünün geçerliliğini belirtmek için bir isActive alanını sakladık, bu nedenle listelemeyi iptal ettiğimizde bu alanı false olarak ayarlamamız yeterlidir.

Web3 yeni başlayanlar serisi: Sıfırdan bir NFT DEX gerçekleştirmek

2.4. Çekim Ücreti

DEX, her bir işlemde işlem ücreti alabilir, bu işlem ücreti ya sözleşmeye depolanabilir ya da başka bir kendi adresinize aktarılabilir, bu yazıda sözleşmeye depolama yöntemi tercih edilmektedir.

Web3 Yeni Başlayanlar Serisi: Sıfırdan Bir NFT DEX Gerçekleştirmek

Buraya kadar, sözleşmemizin temel işlevi tamamlanmış sayılır.

3. DEX ön uç geliştirme

Başlamadan önce, bazı araçlar hazırlamamız gerekiyor, aşağıdaki birkaç aracı içermektedir:

  1. Ant Design Web3: Cüzdan bağlantısı ve NFT kartlarının gösterimi için.
  2. Wagmi: Cüzdan ile etkileşim kurmak için kullanılır.
  3. Nextjs + Vercel: Projemizi dağıtmak.

Ön uç uygulamamız üç sayfa içermelidir: Mint, Buy ve Portfolio. Mint, kullanıcıların NFT'mizi Mint etmesine olanak tanımak için, yalnızca bir gösterim amacıyla. Buy, DEX pazarımızdır; kullanıcılar burada NFT'mizi satın alabilir. Portfolio'da kullanıcılar NFT'lerini listeleme ve kaldırma işlemleri yapabilir.

3.1. Cüzdanı Bağla

Kullanıcı cüzdanını bağlayın, Ant Design Web3 ile gerçekleştirin

Kullanıcı cüzdanını bağlama süreci oldukça basittir, Ant Design Web3 tarafından sağlanan bağlantı bileşenini kullanarak bunu gerçekleştirebilirsiniz.

Öncelikle projeyi bir Provider ile sarmalıyoruz, böylece sonraki kodlarda Ant Design Web3'ün yeteneklerini kullanabileceğiz. Ayrıca sepolia test ağına bağlanmamız gerektiği için hız açısından bazı düğüm hizmetlerini kullanmayı öneririm, burada ZAN'ın endpoint'ini kullanıyorum, bu Asya-Pasifik ortamında kullanmak için çok uygun, hızlı ve oldukça maliyet etkin, desteklenen ağlar da oldukça zengin.

Web3 Yeni Başlayanlar Serisi: Sıfırdan Bir NFT DEX Gerçekleştirmek

Sonrasında cüzdan bağlamak gereken yere bir bağlantı butonu yerleştirin:

Web3 Yeni Başlayanlar Serisi: Sıfırdan Bir NFT DEX Oluşturma Böylece halletmiş olduk, oldukça basit.

3.2. Mint

Mint bir NFT, test Token almak için

Mint sayfasında test amaçlı NFT'ler Mint edebiliriz. Mint, bir sözleşme yazma işlemidir; burada wagmi içindeki useWriteContract yöntemini kullanacağız. Sözleşme adresini, sözleşmenin ABI'sini ve sözleşme parametrelerini belirlememiz yeterlidir.

Web3 Yeni Başlayanlar Serisi: Sıfırdan Bir NFT DEX Gerçekleştirmek

Sonrasında cüzdan içinde onaylayarak Mint işlemini başarıyla gerçekleştirebilirsiniz.

3.3. Portföy

Kullanıcıların NFT'lerini yönetmek

Burada kullanıcının tüm NFT'lerini göstermemiz gerekiyor. Bunu almak için bazı NFT API'lerini kullanabiliriz, burada sepolia test ağına destek veren NFT API'si pek fazla olmadığından opensea API'sini kullanıyoruz.

Kullanıcının NFT listesini aldıktan sonra, bunların zaten satışa sunulup sunulmadığını belirlemek gerekir. Satışa sunulmamış olanlar satışa sunulabilir, satışa sunulmuş olanlar ise geri alınabilir. Bu tespit, DEX sözleşmesi içindeki "getSellerListings" yönteminden kullanıcının satışa sunduğu NFT'leri almak ve bu NFT'lerin "isAlive" alanına bakarak satışta olup olmadığını belirlemek suretiyle yapılır.

Web3 Yeni Başlayanlar Serisi: Sıfırdan Bir NFT DEX Gerçekleştirmek

Listeleme sırasında "listNFT" sözleşme yöntemini çağırmanız gerekir, iptal ederken ise "cancelListing" yöntemini çağırmanız gerekir. Listelemeden önce, NFT'nin yetkilendirme yöntemini ek olarak çağırmanız gerekir, NFT'yi sözleşmeye yetkilendirmek için, böylece sonraki işlem tamamlandıktan sonra bu NFT otomatik olarak alıcıya aktarılabilir.

Web3 Yeni Başlangıç Serisi: Sıfırdan Bir NFT DEX Gerçekleştirmek

3.4. Satın Al

Buy içinde NFT satın alabilirsiniz.

Öncelikle, zaten listelenmiş olan NFT'leri sergilememiz gerekiyor. Kullanıcının sahip olduğu NFT'leri Portföy'deki gibi sergilemekle benzerlik gösteriyor, ancak burada iki farklılık var: biri küresel olarak sergileniyor, artık belirli bir kullanıcı değil, diğeri ise yalnızca isAlive olan NFT'leri sergilemek.

Satın alırken « purchaseNFT » yöntemini kullanın, bu yöntemi çağırırken satış fiyatını ödemek için ETH kullanmanız gerekmektedir.

Web3 yeni başlayanlar serisi: Sıfırdan bir NFT DEX gerçekleştirmek

Buradaki bu "value", alıcının ödemesi gereken ETH'dir.

Böylece tüm temel yetenekleri içeren bir DEX ön yüz sayfası tamamlandı, bunu vercel'e dağıtabiliriz.

Bu makale ZAN Team (X hesabı @zan_team) üyesi Yeezo (X hesabı @GaoYeezo 75065) tarafından yazılmıştır.

View Original
The content is for reference only, not a solicitation or offer. No investment, tax, or legal advice provided. See Disclaimer for more risks disclosure.
  • Reward
  • Comment
  • Share
Comment
0/400
No comments
  • Pin