Defi projeleri için 7 pratik akıllı sözleşme geliştirme ipucu

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

Son zamanlarda merkeziyetsiz borsa geliştirme kılavuzu yazarken, bazı tanınmış projelerin kod uygulamalarını inceledim ve birçok ilginç sözleşme geliştirme tekniği öğrendim. Defi sözleşmesi geliştirmeyi ilk kez deneyen bir acemi olarak, bu teknikler benim için çok ilham verici oldu, diğer sözleşme geliştirmeyi öğrenmek isteyen arkadaşlara da yardımcı olacağına inanıyorum.

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

Tahmin Edilebilir Sözleşme Adresi

Genellikle dağıtılan sözleşmelerden elde edilen adresler rastgele görünüyor, çünkü nonce ile ilgilidir. Ancak bazı senaryolarda, işlem eşdeğer bilgileri aracılığıyla sözleşme adresini çıkarmamız gerekiyor, bu da işlem yetkilerini belirlemek veya havuz adresini almak için faydalıdır.

Bir yöntem, CREATE2 yöntemi kullanarak sözleşme oluşturmaktır; oluşturulan adresin tahmin edilebilir olması için salt parametresi eklenir. 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ı

Geri Çağırma Fonksiyonlarının Akıllıca Kullanımı

Bazı senaryolarda, sözleşme A'nın sözleşme B'nin yöntemini çağırması ve B'nin ardından A'nın yöntemini geri araması yararlıdır.

Örneğin, işlem sırasında, havuz sözleşmesinin takas yöntemi swapCallback'ı geri çağıracak ve gereken Token miktarını iletecektir. Çağrıcı, geri çağırma sırasında Token'ı havuza aktarır; bu, takas yönteminin güvenliğini ve bütünlüğünü sağlar, karmaşık değişken kayıtlarına gerek kalmadan.

Hata ile Bilgi İletimi

Simülasyon ticareti yaparken gerekli Token'ı tahmin etmek için, geri çağırma fonksiyonunda özel bir hata fırlatabilir ve ardından bu hatayı yakalayarak gerekli bilgileri çıkarabilirsiniz. Bu sayede tahmin ihtiyacı için swap yöntemini özel olarak modifiye etmenize 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ın hassasiyet sorununu çözme

Hesaplama gerektiren durumlarda, bölme işleminin hassasiyetini kaybetmemesi için önce 96 bit sola kaydırmak, ('in 2^96) ile çarpılmasına eşdeğer olup, ardından bölme işlemi yapılabilir. Böylece taşma olmadan hassasiyet sağlanabilir.

Paylaşım Yöntemi ile Kazancı Hesaplama

LP işlem ücretlerinin kaydedilmesi gereken durumlar için, her işlemde her bir LP'ye kayıt yapmak mümkün değildir, bu büyük miktarda Gas tüketir. Hisse senedi temettüsü benzeri bir yöntem kullanılabilir; yalnızca toplam işlem ücreti ve her birim likiditeye tahsis edilecek işlem ücretini kaydedin, LP çekildiğinde sahip oldukları likiditeye göre hesaplayın.

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

Zincir Dışı Depolama Yardımcı Bilgileri

Tüm bilgilerin zincire eklenmesi veya zincirden alınması gerekmez. İşlem havuzu listesi, havuz bilgileri gibi bazı kritik olmayan veriler, normal bir veritabanında saklanabilir ve düzenli olarak zincirden senkronize edilebilir. Bu, performansı ve verimliliği artırabilir.

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

Büyük projeler, sözleşmeleri birden fazla parçaya ayırabilir veya miras alma yöntemi ile bölüp bakımını yapabilir. Aynı zamanda, ERC721 gibi standart sözleşmeleri yeniden kullanarak geliştirme verimliliğini artırabilir.

Kendi başınıza basit bir merkeziyetsiz borsa geliştirmek, bu tekniklerin uygulamasını daha derinlemesine anlamanızı sağlayabilir. Umuyorum ki bu paylaşımlar herkes için faydalı olur.

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

DEFI3.95%
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
  • 7
  • Share
Comment
0/400
HappyMinerUnclevip
· 08-04 03:00
Bu kadar karmaşık mı? Herkes madenciler, iyi dikkat edin.
View OriginalReply0
SadMoneyMeowvip
· 08-03 20:33
Bu sözleşme oyunu çok lüks değil mi..
View OriginalReply0
SandwichTradervip
· 08-01 04:28
Kötü bir piyasa yapıp ama rug atmayan yeni nesil
View OriginalReply0
LayerZeroHerovip
· 08-01 03:29
dapptools ile test yapmayı öneririm, gas ile test yapmak daha güvenilir.
View OriginalReply0
hodl_therapistvip
· 08-01 03:21
Bunların en son teknoloji olduğundan emin misin... biraz eski görünüyor.
View OriginalReply0
NewPumpamentalsvip
· 08-01 03:11
salt seviyesi henüz gelmedi sanırım abi
View OriginalReply0
DiamondHandsvip
· 08-01 03:10
Hem acemi hem de öğrenmeyi seviyor yyds
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)