Son zamanlarda merkeziyetsiz borsa geliştirme sürecinde bazı ilginç akıllı sözleşme geliştirme teknikleri keşfettim. Bu teknikler, tanınmış bir DEX kodunun incelenmesinden kaynaklanıyor ve akıllı sözleşme geliştirmeye yeni başlayanlar için oldukça faydalı olmalı.
Tahmin Edilebilir Sözleşme Adresi
Genellikle dağıtılan sözleşmelerin elde ettiği adresler rastgele gibi görünür ve tahmin edilmesi zordur. Ancak bazı durumlarda, işlem eşleştirme bilgilerini kullanarak sözleşme adresini çıkarmamız gerekir, bu da işlem yetkilerini değerlendirmek veya havuz adreslerini elde etmek için oldukça faydalıdır.
CREATE2 yöntemiyle sözleşme oluşturmak için salt parametresi ekleyerek, üretilen adresin tahmin edilebilir olmasını sağlayabilirsiniz. Yeni adresin hesaplama mantığı şudur: hash("0xFF", oluşturucu adres, salt, initcode).
Callback Fonksiyonlarını Etkili Kullanma
Bazı senaryolarda, Sözleşme A'nın Sözleşme B'nin yöntemini çağırması ve B'nin A'nın yöntemini geri araması oldukça yararlıdır. Örneğin, işlem sırasında, havuz sözleşmesi swapCallback'ı geri arayarak gerekli Token miktarını iletebilir ve çağrılan taraf geri aramada Token gönderebilir. Bu, tüm işlem mantığının bütünlüğünü ve güvenliğini sağlar.
Hata ile Bilgi İletimi
Tahmini işlem yaparken, swap yönteminin yürütülmesini try-catch bloğuyla sarmalayabilirsiniz. Çünkü tahmin, gerçek bir Token değişimi gerçekleştirmeyecek, bu yüzden hata verecektir. Geri çağırmada özel bir hata fırlatabilir ve sonra bu hatayı yakalayarak gerekli verileri hata mesajından çözümleyebilirsiniz. Böylece tahmin ihtiyacı için swap yöntemini özel olarak değiştirmeye gerek kalmaz, mantık daha sade olur.
Büyük Sayılar Kesir Problemini Çözer
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 2^96) ile çarpmaya eşdeğerdir ve ardından hesaplama yapılabilir. Bu şekilde taşma olmadan hassasiyet garanti edilebilir. Teorik olarak en küçük birimlerde hâlâ bir hassasiyet kaybı olsa da, pratik uygulamalarda kabul edilebilir.
Paylaşım Modu Hesaplama Geliri
LP işlem ücretlerini kaydederken, her işlemde her bir LP için kayıt tutmak mümkün değildir, bu büyük miktarda Gas tüketir. Sadece toplam işlem ücretini ve her birim likiditenin alması gereken işlem ücretini kaydedebilirsiniz, LP'ler çekim yaptıklarında sahip oldukları likiditeye göre çekilebilecek miktarı hesaplayabilirler. Bu, hisse senedi temettüsü ilkesine benzer.
Zincir Dışı Veri Depolama
Tüm bilgiler zincire alınmak veya zincirden alınmak zorunda değildir. İşlem havuzu listeleri, havuz bilgileri vb. geleneksel veritabanlarında saklanabilir ve düzenli olarak zincirden senkronize edilebilir. Bu, erişim verimliliğini artırabilir ve maliyetleri düşürebilir. Elbette kritik işlemler hala zincir üzerinde gerçekleştirilmelidir.
Sözleşme Bölme ve Yeniden Kullanma
Bir projeyi birden fazla gerçek dağıtım sözleşmesine ayırabilir veya miras alma yöntemiyle kodu birden fazla sözleşme olarak yönetebilirsiniz. Ayrıca, geliştirme verimliliğini artırmak için mevcut standart sözleşmeleri, örneğin ERC721 gibi, iyi bir şekilde kullanmalısınız.
Teori ne kadar çok okunursa okunsun, pratik yapmak her zaman daha iyidir. Basit bir DEX uygulaması geliştirme süreci, sözleşme geliştirme ile ilgili çeşitli teknikleri daha derinlemesine anlamanıza yardımcı olabilir. Umarım bu küçük ipuçları akıllı sözleşme geliştirme yolculuğunuzda faydalı olur.
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.
12 Likes
Reward
12
8
Share
Comment
0/400
CryptoGoldmine
· 12h ago
Sözleşme anahtar, istikrar ROI'yi getirir.
View OriginalReply0
DecentralizedElder
· 13h ago
Solidity öğrenmekte sürekli takılı kalıyorum
View OriginalReply0
OnchainDetective
· 13h ago
Gerçekten güzel, önce kodla sonra dalgalanma!
View OriginalReply0
HalfBuddhaMoney
· 13h ago
Bu birkaç yöntemle DEX'ten kazanç sağlamak kesinlikle garantidir.
View OriginalReply0
GasFeeVictim
· 13h ago
Yeterli bir tahmin adresi öğrenmek.
View OriginalReply0
0xSleepDeprived
· 13h ago
Geliştiricilerin okuması gerekenler!! İşte!!!
View OriginalReply0
StrawberryIce
· 13h ago
Geliştirici acemi, temel noktaları düşünün.
View OriginalReply0
LightningPacketLoss
· 13h ago
Yine yeni başlayanlar nasıl giriş yapacaklarını soruyor.
7 Sözleşme Geliştirme Becerisi ile DEX Ustası Olun
Sözleşme Geliştirme'nin İncelikleri
Son zamanlarda merkeziyetsiz borsa geliştirme sürecinde bazı ilginç akıllı sözleşme geliştirme teknikleri keşfettim. Bu teknikler, tanınmış bir DEX kodunun incelenmesinden kaynaklanıyor ve akıllı sözleşme geliştirmeye yeni başlayanlar için oldukça faydalı olmalı.
Tahmin Edilebilir Sözleşme Adresi
Genellikle dağıtılan sözleşmelerin elde ettiği adresler rastgele gibi görünür ve tahmin edilmesi zordur. Ancak bazı durumlarda, işlem eşleştirme bilgilerini kullanarak sözleşme adresini çıkarmamız gerekir, bu da işlem yetkilerini değerlendirmek veya havuz adreslerini elde etmek için oldukça faydalıdır.
CREATE2 yöntemiyle sözleşme oluşturmak için salt parametresi ekleyerek, üretilen adresin tahmin edilebilir olmasını sağlayabilirsiniz. Yeni adresin hesaplama mantığı şudur: hash("0xFF", oluşturucu adres, salt, initcode).
Callback Fonksiyonlarını Etkili Kullanma
Bazı senaryolarda, Sözleşme A'nın Sözleşme B'nin yöntemini çağırması ve B'nin A'nın yöntemini geri araması oldukça yararlıdır. Örneğin, işlem sırasında, havuz sözleşmesi swapCallback'ı geri arayarak gerekli Token miktarını iletebilir ve çağrılan taraf geri aramada Token gönderebilir. Bu, tüm işlem mantığının bütünlüğünü ve güvenliğini sağlar.
Hata ile Bilgi İletimi
Tahmini işlem yaparken, swap yönteminin yürütülmesini try-catch bloğuyla sarmalayabilirsiniz. Çünkü tahmin, gerçek bir Token değişimi gerçekleştirmeyecek, bu yüzden hata verecektir. Geri çağırmada özel bir hata fırlatabilir ve sonra bu hatayı yakalayarak gerekli verileri hata mesajından çözümleyebilirsiniz. Böylece tahmin ihtiyacı için swap yöntemini özel olarak değiştirmeye gerek kalmaz, mantık daha sade olur.
Büyük Sayılar Kesir Problemini Çözer
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 2^96) ile çarpmaya eşdeğerdir ve ardından hesaplama yapılabilir. Bu şekilde taşma olmadan hassasiyet garanti edilebilir. Teorik olarak en küçük birimlerde hâlâ bir hassasiyet kaybı olsa da, pratik uygulamalarda kabul edilebilir.
Paylaşım Modu Hesaplama Geliri
LP işlem ücretlerini kaydederken, her işlemde her bir LP için kayıt tutmak mümkün değildir, bu büyük miktarda Gas tüketir. Sadece toplam işlem ücretini ve her birim likiditenin alması gereken işlem ücretini kaydedebilirsiniz, LP'ler çekim yaptıklarında sahip oldukları likiditeye göre çekilebilecek miktarı hesaplayabilirler. Bu, hisse senedi temettüsü ilkesine benzer.
Zincir Dışı Veri Depolama
Tüm bilgiler zincire alınmak veya zincirden alınmak zorunda değildir. İşlem havuzu listeleri, havuz bilgileri vb. geleneksel veritabanlarında saklanabilir ve düzenli olarak zincirden senkronize edilebilir. Bu, erişim verimliliğini artırabilir ve maliyetleri düşürebilir. Elbette kritik işlemler hala zincir üzerinde gerçekleştirilmelidir.
Sözleşme Bölme ve Yeniden Kullanma
Bir projeyi birden fazla gerçek dağıtım sözleşmesine ayırabilir veya miras alma yöntemiyle kodu birden fazla sözleşme olarak yönetebilirsiniz. Ayrıca, geliştirme verimliliğini artırmak için mevcut standart sözleşmeleri, örneğin ERC721 gibi, iyi bir şekilde kullanmalısınız.
Teori ne kadar çok okunursa okunsun, pratik yapmak her zaman daha iyidir. Basit bir DEX uygulaması geliştirme süreci, sözleşme geliştirme ile ilgili çeşitli teknikleri daha derinlemesine anlamanıza yardımcı olabilir. Umarım bu küçük ipuçları akıllı sözleşme geliştirme yolculuğunuzda faydalı olur.