Son zamanlarda bir merkeziyetsiz borsa projesi geliştirirken, bazı tanınmış DEX'lerin kod uygulamalarını inceledim ve birçok ilginç sözleşme geliştirme tekniği öğrendim. DeFi geliştirmeye yeni başlayan biri olarak, bu teknikler bana birçok ilham verdi ve akıllı sözleşme geliştirmek isteyen diğer arkadaşlara da yardımcı olacağına inanıyorum.
Tahmin Sözleşmesi Adresi
Genellikle dağıtılan sözleşme adresleri nonce ile ilgili olduğu için rastgele gibi görünür. Ancak belirli senaryolar altında, sözleşme adresini işlem eş bilgilerini kullanarak çıkarmamız gerekir. Bu, sözleşmeyi CREATE2 yöntemiyle oluştururken salt parametresini ekleyerek gerçekleştirilebilir. Bu şekilde oluşturulan adres tahmin edilebilir olup, "yeni adres = hash('0xFF', oluşturucu adresi, salt, initcode)" mantığını takip eder.
Geri Çağırma Fonksiyonlarını Kullanma
Bazı senaryolarda, Kontrat A'nın Kontrat B'nin metodunu çağırması ve B'nin çağrılan metodunda A'ya geri dönmesi çok faydalıdır. Örneğin, DEX'te, ticaret havuzu kontratının swap metodunu çağırdığınızda, swapCallback'i geri çağırır ve gerekli Token miktarını iletir. Çağrıcı, geri çağırmada gerekli Token'ı ticaret havuzuna aktarmalıdır, bu da swap metodunun eksiksiz bir şekilde yürütülmesini ve güvenliğini sağlar.
Hata ile bilgi iletme
Tahmini işlem yaparken, swap yönteminin çalıştırılmasını try-catch ile sarmalayabilirsiniz. Çünkü tahmin sırasında Token'lar gerçekten değişim yapılmayacak, bu yüzden hata verecektir. Geri çağırma fonksiyonunda özel bir hata fırlatılabilir ve ardından gerekli bilgiler yakalanıp ayrıştırılabilir. Bu yöntem, tahmin ihtiyacı için swap yöntemini özel olarak değiştirmekten kaçınarak mantığı daha sade hale getirir.
Büyük sayı işleme hassasiyeti sorunu
Fiyat ve likidite hesaplamalarıyla ilgili olarak, bölme işleminin neden olduğu hassasiyet kaybını önlemek için, sayıları önce 96 bit sola kaydırmak mümkündür. (, 2^96) ile çarpmakla eşdeğerdir ve ardından hesaplama yapılabilir. Teorik olarak hala küçük bir hassasiyet kaybı olsa da, kabul edilebilir bir aralık içindedir.
Paylaşım Yöntemi ile Kazanç Hesaplama
Likidite sağlayıcılarının işlem ücretlerinden elde ettiği kazançlar için her işlemde kayıt tutulması gerekmez. Toplam işlem ücretinin ve her birim likiditenin alması gereken işlem ücretinin kaydedilmesi yeterlidir, LP çekim sırasında sahip olduğu likiditeye göre çekilebilir miktar hesaplanır. Bu, hisse senedi temettüleri prensibine benzerdir.
Zincir Üstü ve Zincir Altı Veri Birleşimi
Tüm bilgilerin zincire alınması veya zincirden alınması gerekmez. Örneğin, işlem havuzu listesi, bilgiler gibi veriler geleneksel veritabanlarında saklanabilir ve düzenli olarak zincirden senkronize edilebilir. Bu, verimliliği artırabilir ve maliyetleri düşürebilir. Elbette kritik işlemler hala zincirde yapılmalıdır.
Sözleşme Bölme ve Standart Sözleşme Kullanımı
Büyük projeler, birden fazla gerçek dağıtım sözleşmesine ayrılabilir veya kodu miras alarak bölünebilir. Aynı zamanda ERC721 gibi mevcut standart sözleşmeleri kullanarak geliştirme verimliliğini artırabilirsiniz. Örneğin, NFT kullanarak likidite pozisyonlarını yönetmek.
Bu becerileri derinlemesine anlamanın en iyi yolu, basit bir DEX geliştirmek için kendinize el atmanızdır. Uygulamada, çeşitli tasarım fikirlerini daha derinlemesine anlayacak ve daha fazla pratik bilgi edineceksiniz. Umarım bu paylaşımlar size ilham ve yardımcı olur.
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.
10 Likes
Reward
10
2
Share
Comment
0/400
AirdropHustler
· 07-19 11:31
Bu geliştirme becerileri, Broş için az kazanç ama çok satış demek.
DEX projelerine yardımcı olacak 7 pratik akıllı sözleşmeler geliştirme ipucu
Sözleşme Geliştirme Küçük İpuçları Paylaşımı
Son zamanlarda bir merkeziyetsiz borsa projesi geliştirirken, bazı tanınmış DEX'lerin kod uygulamalarını inceledim ve birçok ilginç sözleşme geliştirme tekniği öğrendim. DeFi geliştirmeye yeni başlayan biri olarak, bu teknikler bana birçok ilham verdi ve akıllı sözleşme geliştirmek isteyen diğer arkadaşlara da yardımcı olacağına inanıyorum.
Tahmin Sözleşmesi Adresi
Genellikle dağıtılan sözleşme adresleri nonce ile ilgili olduğu için rastgele gibi görünür. Ancak belirli senaryolar altında, sözleşme adresini işlem eş bilgilerini kullanarak çıkarmamız gerekir. Bu, sözleşmeyi CREATE2 yöntemiyle oluştururken salt parametresini ekleyerek gerçekleştirilebilir. Bu şekilde oluşturulan adres tahmin edilebilir olup, "yeni adres = hash('0xFF', oluşturucu adresi, salt, initcode)" mantığını takip eder.
Geri Çağırma Fonksiyonlarını Kullanma
Bazı senaryolarda, Kontrat A'nın Kontrat B'nin metodunu çağırması ve B'nin çağrılan metodunda A'ya geri dönmesi çok faydalıdır. Örneğin, DEX'te, ticaret havuzu kontratının swap metodunu çağırdığınızda, swapCallback'i geri çağırır ve gerekli Token miktarını iletir. Çağrıcı, geri çağırmada gerekli Token'ı ticaret havuzuna aktarmalıdır, bu da swap metodunun eksiksiz bir şekilde yürütülmesini ve güvenliğini sağlar.
Hata ile bilgi iletme
Tahmini işlem yaparken, swap yönteminin çalıştırılmasını try-catch ile sarmalayabilirsiniz. Çünkü tahmin sırasında Token'lar gerçekten değişim yapılmayacak, bu yüzden hata verecektir. Geri çağırma fonksiyonunda özel bir hata fırlatılabilir ve ardından gerekli bilgiler yakalanıp ayrıştırılabilir. Bu yöntem, tahmin ihtiyacı için swap yöntemini özel olarak değiştirmekten kaçınarak mantığı daha sade hale getirir.
Büyük sayı işleme hassasiyeti sorunu
Fiyat ve likidite hesaplamalarıyla ilgili olarak, bölme işleminin neden olduğu hassasiyet kaybını önlemek için, sayıları önce 96 bit sola kaydırmak mümkündür. (, 2^96) ile çarpmakla eşdeğerdir ve ardından hesaplama yapılabilir. Teorik olarak hala küçük bir hassasiyet kaybı olsa da, kabul edilebilir bir aralık içindedir.
Paylaşım Yöntemi ile Kazanç Hesaplama
Likidite sağlayıcılarının işlem ücretlerinden elde ettiği kazançlar için her işlemde kayıt tutulması gerekmez. Toplam işlem ücretinin ve her birim likiditenin alması gereken işlem ücretinin kaydedilmesi yeterlidir, LP çekim sırasında sahip olduğu likiditeye göre çekilebilir miktar hesaplanır. Bu, hisse senedi temettüleri prensibine benzerdir.
Zincir Üstü ve Zincir Altı Veri Birleşimi
Tüm bilgilerin zincire alınması veya zincirden alınması gerekmez. Örneğin, işlem havuzu listesi, bilgiler gibi veriler geleneksel veritabanlarında saklanabilir ve düzenli olarak zincirden senkronize edilebilir. Bu, verimliliği artırabilir ve maliyetleri düşürebilir. Elbette kritik işlemler hala zincirde yapılmalıdır.
Sözleşme Bölme ve Standart Sözleşme Kullanımı
Büyük projeler, birden fazla gerçek dağıtım sözleşmesine ayrılabilir veya kodu miras alarak bölünebilir. Aynı zamanda ERC721 gibi mevcut standart sözleşmeleri kullanarak geliştirme verimliliğini artırabilirsiniz. Örneğin, NFT kullanarak likidite pozisyonlarını yönetmek.
Bu becerileri derinlemesine anlamanın en iyi yolu, basit bir DEX geliştirmek için kendinize el atmanızdır. Uygulamada, çeşitli tasarım fikirlerini daha derinlemesine anlayacak ve daha fazla pratik bilgi edineceksiniz. Umarım bu paylaşımlar size ilham ve yardımcı olur.