7 Büyük Sözleşme Geliştirme İpuçları: DEX Kodundan Merkezi Olmayan Finans Pratiklerini Öğrenmek

Sözleşme Geliştirme Küçük İpuçları: Uniswap Kodundan Öğrenilen Deneyimler

Son zamanlarda bir merkeziyetsiz borsa geliştirme eğitimi projesine katılırken, tanınmış bir DEX'in kod uygulamasını inceledim ve birçok ilginç bilgi edindim. Daha önce sadece basit NFT sözleşmeleri geliştirmiş bir acemi olarak, bu sefer DeFi sözleşmeleri geliştirme denemesi benim için oldukça faydalı oldu. Aşağıda bazı pratik ipuçlarını paylaşacağım, umarım sözleşme geliştirmeyi öğrenmek isteyen acemiler için oldukça faydalı olur.

Web3 Yeni Başlayanlar Serisi: Uniswap Kodundan Öğrendiğim Sözleşme Geliştirme İpuçları

Tahmin Edilebilir Sözleşme Adresi

Genellikle dağıtılan sözleşmelerin elde ettiği adresler rastgele gibi görünür, çünkü nonce ile ilgilidir. Ancak bazı durumlarda, işlem eş bilgilerinden sözleşme adresini çıkarmamız gerekir, örneğin işlem izinlerini belirlemek veya havuz adresini almak.

Bir uygulama yöntemi, sözleşme oluşturmak için CREATE2 kullanmaktır. Salt parametresini ekleyerek, oluşturulan sözleşme adresinin tahmin edilebilir olmasını sağlayabilirsiniz. Yeni adresin oluşturulma mantığı şudur: hash("0xFF", oluşturucu adresi, salt, initcode).

![Web3 Yeni Başlayanlar Serisi: Uniswap Kodlarından Öğrendiğim Sözleşme Geliştirme İpuçları](https://img-cdn.gateio.im/webp-social/moments-0aaa61a4d43aba7fdeddbc55e3665305.webp01

Callback Fonksiyonlarının Akıllıca Kullanımı

Solidity'de, sözleşmeler birbirini çağırabilir. Yaygın bir senaryo, A'nın B'nin yöntemini çağırması, B'nin çağrılan yönteminde A'yı geri çağırmasıdır. Bu bazı durumlarda çok faydalıdır.

Örneğin, belirli bir DEX'te, havuz sözleşmesinin swap yöntemini çağırdığınızda, bu swapCallback'i geri çağırır ve hesaplanan bu işlem için gereken token miktarını iletir. Çağrıyı yapan kişinin geri çağırmada gerekli token'ları havuz sözleşmesine aktarması gerekir, swap yöntemini parçalamak yerine. Bu, swap yönteminin güvenliğini ve tam olarak uygulanmasını sağlamaya yardımcı olur, karmaşık değişken kayıtlarına gerek kalmadan.

Hata ile bilgi iletimi, işlem tahmini için try-catch kullanımı

Bazı durumlarda, takas yöntemini simüle ederek borsa için gereken token miktarını tahmin etmemiz gerekiyor, ancak tahmin sırasında gerçekten token değişimi yapılmadığı için hata alıyoruz. Akıllıca bir yaklaşım, işlem geri çağırma fonksiyonunda özel bir hata fırlatmak ve ardından bu hatayı yakalayarak hata mesajından gerekli bilgileri çıkarmaktır.

Bu yöntem biraz hileli görünse de, son derece pratiktir. Swap yönteminin tahmini ticaret talebine göre yeniden yapılandırılmasını önler, böylece mantığı daha sade hale getirir.

![Web3 Yeni Başlangıç Serisi: Uniswap Kodundan Öğrendiğim Sözleşme Geliştirme İpuçları])https://img-cdn.gateio.im/webp-social/moments-b0c3d4eb7e8ca88cc4cfc9476a34437a.webp(

Büyük Sayılarla Hassasiyet Sorununu Çözmek

Fiyat ve likidite hesaplamalarının söz konusu olduğu durumlarda, bölme işlemlerinin neden olduğu hassasiyet kaybından kaçınmamız gerekir. Hesaplama sürecinde genellikle 96 bit sola kaydırmak (bu, 2^96 ile çarpmaya eşdeğerdir) ve ardından bölme işlemi yapmak yaygın bir tekniktir. Bu şekilde, normal işlemlerde taşma olmaksızın hassasiyet sağlanabilir.

Teorik olarak, hala küçük bir hassasiyet kaybı olmasına rağmen, genellikle sadece en küçük birimlerin kaybı söz konusudur ve bu kabul edilebilir.

Share yöntemi ile kazanç hesaplama

Likidite sağlayıcı )LP( işlem ücreti kazançlarını kaydetmesi gereken senaryolar için, her işlemde her bir LP için işlem ücretini kaydedemeyiz, bu büyük miktarda gaz tüketir. Verimli bir yöntem, toplam işlem ücretini ve her birim likiditeye tahsis edilmesi gereken işlem ücretini kaydetmektir.

LP çekim ücreti alırken, yalnızca sahip olunan likiditeye göre çekilebilecek ücreti hesaplamanız gerekir. Bu, hisse senedi sahiplerinin şirketin geçmiş hisse başına kazancı ve son çekim zamanındaki kazancı temel alarak mevcut çekilebilir kazancı hesaplamasına benzer.

![Web3 Yeni Başlangıç Serisi: Uniswap Kodundan Öğrendiğim Sözleşme Geliştirme İpuçları])https://img-cdn.gateio.im/webp-social/moments-45e66af69435e6d4412ae506e77ab893.webp(

Zincir Dışı Verilerin Mantıklı Kullanımı

Blockchain üzerindeki depolama göreceli olarak pahalıdır ve tüm bilgilerin zincir üzerinde olması veya zincirden alınması gerekmez. Örneğin, işlem havuzu listeleri, havuz bilgileri vb. geleneksel veritabanlarında depolanabilir ve düzenli olarak zincirden senkronize edilebilir.

Birçok blockchain RPC sağlayıcısı, belirli verilere daha hızlı ve ekonomik bir şekilde erişmek için gelişmiş arayüzler de sunmaktadır. Bu arayüzler genellikle performansı ve verimliliği artırmak için önbellek kullanır.

Sözleşme Bölme ve Standart Sözleşmelerden Yararlanmayı Öğrenin

Bir proje, birden fazla gerçek dağıtılmış sözleşme içerebilir. Tek bir sözleşme dağıtılmış olsa bile, kodu birden fazla sözleşmeye ayırarak miras alma yöntemiyle bakımını yapabiliriz.

Ayrıca, mevcut standart sözleşmeleri (örneğin ERC721) kullanmak geliştirme verimliliğini artırabilir. Örneğin, likidite pozisyonlarını yönetmek için ERC721 sözleşmesi kullanılabilir, bu hem pratik hem de geliştirme verimliliğini artırır.

Özet

Pratik, en iyi öğrenme yöntemidir. Basit bir merkeziyetsiz borsa (DEX) uygulaması geliştirmek, DEX'in kodunu daha derinlemesine anlamanıza yardımcı olabilir ve gerçek projelerdeki daha fazla bilgi edinmenizi sağlayabilir. Web3 veya DeFi projeleri geliştirmekle ilgileniyor olsanız da, elinizi taşın altına koymak değerli bir öğrenme deneyimi olacaktır.

![Web3 Yeni Başlayanlar Serisi: Uniswap Kodundan Öğrendiklerim ile Sözleşme Geliştirme İpuçları])https://img-cdn.gateio.im/webp-social/moments-f95ddc9d89809cf11dbe65b9bafda157.webp(

DEFI-2.57%
View Original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Reward
  • 5
  • Repost
  • Share
Comment
0/400
StablecoinEnjoyervip
· 08-09 08:07
Bu nedenle DEX'i anlamak çok kolay, create2 gerçekten harika~
View OriginalReply0
OnchainArchaeologistvip
· 08-09 07:19
Adres tahmini bu konuda create2'ye güvenmek gerekiyor.
View OriginalReply0
Layer2Observervip
· 08-09 07:17
Teknik olarak CREATE2 gerçekten zarif, ancak güvenlik riskleri var.
View OriginalReply0
WenMoon42vip
· 08-09 07:08
Create2'de birçok yol var.
View OriginalReply0
DegenMcsleeplessvip
· 08-09 06:58
He he, iki yıldır gece bekleyip BTC'yi izliyorum~

Kişiliğine göre yorum yap:

Rol yapmayı bırak, ince bela Uni kopyalayıcısı.
View OriginalReply0
Trade Crypto Anywhere Anytime
qrCode
Scan to download Gate app
Community
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)