Sözleşme Geliştirme İleri Düzey: Defi Projelerine Yardımcı Olacak 7 Pratik İpucu

robot
Abstract generation in progress

Sözleşme Geliştirme İpuçları ve Deneyim Paylaşımı

Son zamanlarda merkeziyetsiz bir borsa geliştirme sürecinde Uniswap V3'ün kod uygulamasını referans alarak birçok pratik akıllı sözleşme geliştirme tekniği öğrendim. Daha önce basit NFT sözleşmeleri geliştiren bir geliştirici olarak, bu Defi sözleşme geliştirme denemesi benim için oldukça verimli geçti. Bu teknikler, akıllı sözleşme geliştirmeyi öğrenmek isteyen yeni başlayanlar için oldukça faydalı olmalı.

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

Tahmin Edilebilir Kontrat Adresi

Genellikle, bir sözleşme dağıtıldığında, nonce ile ilgili olduğu için görünüşte rastgele bir adres elde edilir. Ancak bazı senaryolarda, işlem eşleşme bilgilerini kullanarak sözleşme adresini çıkarmamız gerekebilir, örneğin işlem yetkilerini belirlemek veya havuz adresini almak için.

Pratik bir yöntem, sözleşme oluşturmak için CREATE2 kullanmaktır. Salt parametresini ekleyerek, oluşturulan sözleşme adresinin tahmin edilebilir olmasını sağlarız. Yeni adresin oluşturulma mantığı şudur: hash("0xFF", oluşturucu adresi, salt, initcode). Bu yöntem, sözleşmeyi oluşturmadan önce adresini bilmemizi sağlar.

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

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

Solidity'de sözleşmeler birbirini çağırabilir. Bazı senaryolarda, A B'nin yöntemini çağırır ve B çağrılan yöntemde A'yı geri arar, bu model oldukça faydalıdır.

Örneğin, işlem sırasında, havuz sözleşmesi swapCallback'ı geri çağırır ve bu çağrıda bu işlem için gereken Token miktarını iletir. Çağrıyı yapan kişi, geri çağırma sırasında Token'ları havuz sözleşmesine aktarmalıdır. Bu yöntem, swap yönteminin güvenliğini ve bütünlüğünü sağlar, karmaşık değişken kayıtlarına gerek kalmaz.

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

Tahmini işlem yaparken, gerçekten Token değiştirmeden swap yöntemini simüle etmemiz gerekiyor. Zeki bir yaklaşım, işlem geri çağrısında özel bir hata fırlatmak ve ardından bu hatayı yakalayıp gerekli bilgileri çıkarmaktır. Bu yöntem, tahmini işlem için swap yöntemini özel olarak değiştirmekten kaçınarak mantığı daha sade hale getirir.

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

Büyük Sayılar Kesir Problemlerini Çözer

Fiyat ve likidite hesaplamalarıyla ilgili olduğunda, bölme işleminin hassasiyet kaybını önlemek için, sola kaydırma işlemi kullanılabilir. (, 2^96) ile çarpmaya eşittir. Bu şekilde, normal işlemlerde taşma olmadan hassasiyet garanti altına alınabilir. Teorik olarak hala küçük bir hassasiyet kaybı olsa da, bu kabul edilebilir bir seviyededir.

Paylaşım Yöntemi ile Kazanç Hesaplama

LP'nin işlem ücreti kazançlarının hesaplanması için, her işlemde her LP için kayıt tutmak mümkün değildir, bu büyük miktarda Gas tüketir. İyi bir yöntem, toplam işlem ücretini ve her birim likiditeye düşen işlem ücretini kaydetmektir. LP'ler çekim yaptıklarında, sahip oldukları likiditeye dayanarak çekilebilecek işlem ücretini hesaplarlar, bu da hisse senedi temettüleri prensibine benzer.

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

Zincir üstü ve zincir altı verilerin birleştirilmesi

Tüm bilgilerin zincire eklenmesi veya zincirden alınması gerekmez. İşlem havuzları listesi, havuz bilgileri gibi veriler, düzenli olarak zincirden senkronize edilerek normal bir veritabanında saklanabilir. Bu, performansı ve verimliliği artırabilir, maliyetleri düşürebilir. Elbette, kritik işlemler hala zincir üzerinde gerçekleştirilmelidir.

Sözleşme Bölünmesi ve Standart Sözleşme Yeniden Kullanımı

Bir proje, birden fazla gerçek dağıtılmış sözleşme içerebilir. Tek bir sözleşme dağıtılsa bile, kod miras alarak birden fazla sözleşmeye bölünebilir ve bakım yapılabilir.

Aynı zamanda, mevcut standart sözleşmeler ( gibi ERC721 ) kullanmak geliştirme verimliliğini artırabilir. Örneğin, pozisyonları yönetmek için ERC721 kullanmak, hem kolay hem de olgun kodun yeniden kullanımını sağlar.

Özet

Gerçek uygulama geliştirmek, öğrenmenin en iyi yoludur. Basit bir merkeziyetsiz borsa uygulaması geliştirmeyi denemek, Uniswap'ın kodunun uygulanışını daha derinlemesine anlamanıza ve gerçek projelerdeki daha fazla bilgi edinmenize yardımcı olabilir. Umarım bu deneyim paylaşımları size faydalı olur.

Web3 Yeni Başlayanlar Serisi: Uniswap Kodundan Öğrendiğim Sözleşme Geliştirme Küçük İ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
  • 3
  • Share
Comment
0/400
gas_fee_traumavip
· 5h ago
Sözleşme zor, kardeşim.
View OriginalReply0
SchrodingerAirdropvip
· 5h ago
Rönesans'ta anormal ticarette yeniden doğdum.
View OriginalReply0
degenwhisperervip
· 5h ago
v3 en nihayetinde hala yeterince esnek değil
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)