DEX sözleşme geliştirme için gerekli yedi teknik Çaylakların okuması gerekenler

Sözleşme Geliştirme Küçük İpuçları Paylaşımı

Son zamanlarda bir merkeziyetsiz borsa geliştirme projesine katıldığımda, tanınmış bir DEX'in kod uygulamasını referans aldım ve birçok pratik akıllı sözleşme geliştirme tekniği öğrendim. Daha önce ağırlıklı olarak NFT sözleşmeleri geliştiren bir geliştirici olarak, bu benim DeFi sözleşmesi geliştirmedeki ilk deneyimim. Burada, yeni başlayan geliştiricilere yardımcı olabilecek bazı küçük ipuçlarını paylaşmak istiyorum.

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 kontratların aldığı adresler rastgele görünür, çünkü nonce ile ilgilidir. Ancak bazı senaryolarda, işlem bilgileri aracılığıyla kontrat adresini tahmin etmemiz gerekir; bu, işlem yetkisini belirlemede veya havuz adresini elde etmede oldukça faydalıdır.

Bir yöntem, oluşturulan adresin tahmin edilebilir olmasını sağlamak için salt parametresini ekleyerek CREATE2 kullanarak bir sözleşme oluşturmaktır. Yeni adresin hesaplama formülü şöyledir:

Yeni adres = hash("0xFF", oluşturucu adres, tuz, initcode)

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

Geri Çağırma Fonksiyonunu Akıllıca Kullanma

Solidity'de sözleşmeler birbirini çağırabilir. Bazı senaryolarda, A yöntemi B'yi çağırır, B çağrılan yöntemde A'yı geri arar; bu model oldukça kullanışlıdır.

Örneğin, bir DEX'te işlem yaparken, havuz sözleşmesinin swap yöntemi swapCallback'i geri çağıracak ve gereken Token miktarını iletecektir. Çağrıyı yapan taraf, geri çağırmada Token'ı aktarmalıdır, swap'i birden fazla çağrıya ayırmamalıdır. Bu, swap yönteminin bütünlüğünü ve güvenliğini sağlar.

Hata ile bilgi iletimi

Belirli bir DEX'in kodunda, pool sözleşmesinin swap yöntemini işlem simülasyonu yapmak ve gereken Token'ı tahmin etmek için try-catch ile sarmalayın. Tahmin sırasında Token gerçekten değiştirilmediğinden, hata fırlatılacaktır. Özel bir hata fırlatarak ve ardından hata bilgilerini yakalayıp çözerek, tahmin sonuçlarını elde edebilirsiniz.

Bu teknik, tahmini talep için swap yöntemini özel olarak değiştirmeyi önleyerek, mantığı sade tutar.

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

Büyük sayı işleme hassasiyeti sorunları

Fiyat ve likidite hesaplamaları yapılırken, bölme işleminin hassasiyet kaybını önlemek için önce 96 bit sola kaydırılabilir (, bu da 2^96) ile çarpmaya eşdeğerdir, ardından işlem yapılabilir. Bu şekilde, normal işlemlerde taşma olmadan hassasiyet garanti edilebilir.

Share modu kazanç hesaplama

LP işlem ücretlerinin kazancını kaydederken, her işlemde her LP'yi kaydetmek mümkün değildir, bu büyük miktarda Gas tüketir. Bir çözüm, toplam işlem ücretini ve her birim likiditeye tahsis edilmesi gereken ücreti kaydetmektir. LP çekim işlemi sırasında, sahip olunan likiditeye göre çekilebilir ücreti hesaplamak, hisse senedi temettüsüne benzer.

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

Zincir Üstü ve Zincir Dışı Veri Birleşimi

Tüm bilgilerin zincire eklenmesi veya zincirden alınması gerekmez. İşlem havuzu listesi, havuz bilgileri gibi veriler normal bir veritabanında saklanabilir ve düzenli olarak zincirden senkronize edilebilir. Bu, performansı ve verimliliği artırabilir. Tabii ki, kritik işlemler yine de zincirde gerçekleştirilmelidir.

Sözleşme Bölme ve Yeniden Kullanım

Büyük projeler, birden fazla gerçek dağıtılmış sözleşme içerebilir. Tek bir sözleşme dağıtılmış olsa bile, bakım kolaylığı için miras alarak birden fazla sözleşmeye bölünebilir. Aynı zamanda, ERC721 gibi mevcut standart sözleşmeleri kullanmayı öğrenmek, geliştirme verimliliğini artırabilir.

Uygulama, en iyi öğrenme yoludur. Basit bir DEX'i uygulayarak, bazı karmaşık projelerin kod uygulamasını daha derinlemesine anlamak ve gerçek projelerdeki daha fazla bilgi edinmek mümkündür. Bu küçük ipuçlarının, sözleşme geliştirmek isteyen yeni başlayanlar için faydalı olmasını umuyorum.

Web3 Yeni Başlayanlar Serisi: Uniswap Kodundan Öğrendiğim 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
  • 10
  • Repost
  • Share
Comment
0/400
DiamondHandsvip
· 08-08 22:41
create2 doğrudan coin
View OriginalReply0
UnluckyMinervip
· 08-07 07:50
Daha fazla kod parçacığı gönderin
View OriginalReply0
BridgeJumpervip
· 08-07 04:50
Aynı şekilde kopyalamak da bir ustalıktır.
View OriginalReply0
nft_widowvip
· 08-06 21:36
İyi bir yazıyı desteklemek gerekir.
View OriginalReply0
LiquidityWizardvip
· 08-05 23:03
Adres tahmini çok önemli.
View OriginalReply0
ImpermanentLossFanvip
· 08-05 23:01
Yazı çok az, yeterince göremiyorum.
View OriginalReply0
LightningLadyvip
· 08-05 23:01
değerli öngörüler dolu
View OriginalReply0
DeFi_Dad_Jokesvip
· 08-05 22:50
Önemli noktaları kaydedin ve izleyin
View OriginalReply0
gas_fee_therapistvip
· 08-05 22:45
gas çok değerli
View OriginalReply0
PaperHandSistervip
· 08-05 22:43
yükseliş bilgi aldık kardeşler
View OriginalReply0
View More
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)