Uniswap Kaynak Kodu Analizi: DEX'e Girişte Yardımcı Olacak 7 Sözleşme Geliştirme İpucu

robot
Abstract generation in progress

Sözleşme Geliştirme İpuçları: Uniswap Kodundan Elde Edilen Değerli Deneyimler

Son zamanlarda merkeziyetsiz bir borsa öğreticisi geliştirirken, tanınmış bir DEX'in kod uygulamasını referans aldım ve birçok ilginç bilgi edindim. Daha önce sadece basit NFT sözleşmeleri geliştiren bir acemi olarak, Defi sözleşmeleri geliştirmeye ilk defa deniyorum ve bu teknikler, giriş yapmak isteyen geliştiriciler için oldukça faydalı olmalı.

Bundan sonra, bu pratik ipuçlarına birlikte bakalım, bazıları gerçekten de ustalık gerektiren hileler olarak adlandırılabilir.

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

Tahmin Edilebilir Sözleşme Dağıtım Adresi

Genellikle dağıtılan sözleşme adresleri rastgele görünür, çünkü nonce ile ilgilidir. Ancak belirli durumlarda, işlem eşdeğer bilgileri aracılığıyla sözleşme adresini çıkarmamız gerekir; bu, işlem yetkilerini belirlemede veya havuz adresini elde etmede oldukça yararlıdır.

CREATE2 yöntemiyle sözleşme oluşturmak için salt parametresi ekleyerek kullanılabilir, bu şekilde oluşturulan adres tahmin edilebilir. Adres oluşturma mantığı: yeni adres = hash("0xFF", oluşturucu adresi, salt, initcode).

Web3 Yeni başlayanlar serisi: Uniswap kodundan öğrendiğim sözleşme geliştirme ipuçları

Geri Çağırma Fonksiyonlarını Etkili Kullanma

Solidity'de, sözleşmeler birbirlerini çağırabilir. Bazen A metodu B'yi çağırır, B çağrılan metotta A'yı geri arar, bu bazı senaryolar için çok kullanışlıdır.

Örneğin, işlem sırasında pool sözleşmesinin swap yöntemi swapCallback'ı çağıracak ve gereken Token miktarını iletecektir. Çağıran taraf, geri çağırmada Token göndermelidir ve swap'i iki adımda çağırmamalıdır. Bu, swap yönteminin tam olarak yürütülmesini ve güvenliğini sağlar.

Hata ile bilgi iletimi, işlem tahmini için try-catch kullanma

Tahmini işlem yaparken, swap'ı simüle etmemiz gerekiyor ama Token'ı gerçekten değiştirmeden. Özel bir hata fırlatabiliriz ve bunu geri çağırmada yakalayarak hata mesajından gerekli verileri çıkarabiliriz. Bu şekilde tahmin gereksinimi için swap yöntemini değiştirmeye gerek kalmaz, mantık daha basit olur.

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

Büyük sayılar kullanarak hassasiyet sorununu çözme

Karmaşık hesaplamalarda, bölme işlemi sırasında hassasiyet kaybını önlemek için, önce 96 bit sola kaydırmak mümkündür. (, 2^96) ile çarpmaya eşittir, hesaplamadan sonra sağa kaydırılır. Böylece taşma olmaksızın hassasiyet garanti edilir. En küçük birimlerin hassasiyet kaybı genellikle kabul edilebilir.

Share Yöntemi ile Kazanç Hesaplama

LP getirilerinin hesaplanması için her işlemde kaydetmek mümkün değildir. Toplam işlem ücretini ve her likiditenin alacağı payı kaydedebilirsiniz, LP çekimi sırasında tutulan likiditeye göre hesaplanır. Hisse senedi temettüsüne benzer, sadece hisse başına kazanç geçmişini ve son çekim zamanını bilmek yeterlidir.

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

Zincir Dışı Depolama Kısmı Bilgileri

Blok zincirinde depolama görece pahalıdır, bu yüzden tüm bilgiler blok zincirine kaydedilmemelidir. İşlem havuzu listesi, bilgiler gibi veriler normal veritabanlarında saklanabilir ve düzenli olarak blok zincirinden senkronize edilebilir. Bazı gelişmiş RPC arayüzleri de daha hızlı ve ucuz veri alma yöntemleri sunar.

Makul Sözleşme Bölme, Mevcut Standartlardan Yararlanma

Bir proje birden fazla fiilen dağıtılmış sözleşme içerebilir. Tek bir sözleşme dağıtılmış olsa bile, miras alma yoluyla birden fazla sözleşmeye ayrılabilir. Ayrıca, ERC721 gibi mevcut standart sözleşmeleri kullanarak geliştirme verimliliği artırılabilir.

Özet

Kendiniz basit bir DEX uygulaması gerçekleştirin, böylece kodun uygulanmasını daha derinlemesine anlayabilir ve gerçek projelerde daha fazla bilgi edinebilirsiniz. İlgilenen arkadaşların ilgili eğitimleri takip ederek adım adım tamamlamalarını öneririm, büyük kazançlar elde edeceklerine inanıyorum.

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

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
  • Share
Comment
0/400
SelfSovereignStevevip
· 15h ago
Çaylaklar kaynak koduna zorlamasın.
View OriginalReply0
TooScaredToSellvip
· 15h ago
Bunları öğrenmenin ne faydası var, yine para kaybediyoruz.
View OriginalReply0
ChainMaskedRidervip
· 15h ago
DEX aceminin fırtınası geldi
View OriginalReply0
OnchainUndercovervip
· 15h ago
Öğrenmek U ile ödev kopyalamak kadar keyifli.
View OriginalReply0
PretendingSeriousvip
· 16h ago
Hmm, değerli öngörülerle dolu.
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)