Sözleşme Geliştirme İpuçları: Uniswap Kodundan Elde Edilen Değerli Deneyimler
Son zamanlarda merkeziyetsiz bir borsa öğreticisi geliştirirken, tanınmış bir DEX'in kod uygulamasını referans aldım ve birçok ilginç bilgi edindim. Daha önce sadece basit NFT sözleşmeleri geliştiren bir acemi olarak, Defi sözleşmeleri geliştirmeye ilk defa deniyorum ve bu teknikler, giriş yapmak isteyen geliştiriciler için oldukça faydalı olmalı.
Bundan sonra, bu pratik ipuçlarına birlikte bakalım, bazıları gerçekten de ustalık gerektiren hileler olarak adlandırılabilir.
Tahmin Edilebilir Sözleşme Dağıtım Adresi
Genellikle dağıtılan sözleşme adresleri rastgele görünür, çünkü nonce ile ilgilidir. Ancak belirli durumlarda, işlem eşdeğer bilgileri aracılığıyla sözleşme adresini çıkarmamız gerekir; bu, işlem yetkilerini belirlemede veya havuz adresini elde etmede oldukça yararlıdır.
CREATE2 yöntemiyle sözleşme oluşturmak için salt parametresi ekleyerek kullanılabilir, bu şekilde oluşturulan adres tahmin edilebilir. Adres oluşturma mantığı: yeni adres = hash("0xFF", oluşturucu adresi, salt, initcode).
Geri Çağırma Fonksiyonlarını Etkili Kullanma
Solidity'de, sözleşmeler birbirlerini çağırabilir. Bazen A metodu B'yi çağırır, B çağrılan metotta A'yı geri arar, bu bazı senaryolar için çok kullanışlıdır.
Örneğin, işlem sırasında pool sözleşmesinin swap yöntemi swapCallback'ı çağıracak ve gereken Token miktarını iletecektir. Çağıran taraf, geri çağırmada Token göndermelidir ve swap'i iki adımda çağırmamalıdır. Bu, swap yönteminin tam olarak yürütülmesini ve güvenliğini sağlar.
Hata ile bilgi iletimi, işlem tahmini için try-catch kullanma
Tahmini işlem yaparken, swap'ı simüle etmemiz gerekiyor ama Token'ı gerçekten değiştirmeden. Özel bir hata fırlatabiliriz ve bunu geri çağırmada yakalayarak hata mesajından gerekli verileri çıkarabiliriz. Bu şekilde tahmin gereksinimi için swap yöntemini değiştirmeye gerek kalmaz, mantık daha basit olur.
Büyük sayılar kullanarak hassasiyet sorununu çözme
Karmaşık hesaplamalarda, bölme işlemi sırasında hassasiyet kaybını önlemek için, önce 96 bit sola kaydırmak mümkündür. (, 2^96) ile çarpmaya eşittir, hesaplamadan sonra sağa kaydırılır. Böylece taşma olmaksızın hassasiyet garanti edilir. En küçük birimlerin hassasiyet kaybı genellikle kabul edilebilir.
Share Yöntemi ile Kazanç Hesaplama
LP getirilerinin hesaplanması için her işlemde kaydetmek mümkün değildir. Toplam işlem ücretini ve her likiditenin alacağı payı kaydedebilirsiniz, LP çekimi sırasında tutulan likiditeye göre hesaplanır. Hisse senedi temettüsüne benzer, sadece hisse başına kazanç geçmişini ve son çekim zamanını bilmek yeterlidir.
Zincir Dışı Depolama Kısmı Bilgileri
Blok zincirinde depolama görece pahalıdır, bu yüzden tüm bilgiler blok zincirine kaydedilmemelidir. İşlem havuzu listesi, bilgiler gibi veriler normal veritabanlarında saklanabilir ve düzenli olarak blok zincirinden senkronize edilebilir. Bazı gelişmiş RPC arayüzleri de daha hızlı ve ucuz veri alma yöntemleri sunar.
Makul Sözleşme Bölme, Mevcut Standartlardan Yararlanma
Bir proje birden fazla fiilen dağıtılmış sözleşme içerebilir. Tek bir sözleşme dağıtılmış olsa bile, miras alma yoluyla birden fazla sözleşmeye ayrılabilir. Ayrıca, ERC721 gibi mevcut standart sözleşmeleri kullanarak geliştirme verimliliği artırılabilir.
Özet
Kendiniz basit bir DEX uygulaması gerçekleştirin, böylece kodun uygulanmasını daha derinlemesine anlayabilir ve gerçek projelerde daha fazla bilgi edinebilirsiniz. İlgilenen arkadaşların ilgili eğitimleri takip ederek adım adım tamamlamalarını öneririm, büyük kazançlar elde edeceklerine inanıyorum.
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.
11 Likes
Reward
11
5
Share
Comment
0/400
SelfSovereignSteve
· 15h ago
Çaylaklar kaynak koduna zorlamasın.
View OriginalReply0
TooScaredToSell
· 15h ago
Bunları öğrenmenin ne faydası var, yine para kaybediyoruz.
Uniswap Kaynak Kodu Analizi: DEX'e Girişte Yardımcı Olacak 7 Sözleşme Geliştirme İpucu
Sözleşme Geliştirme İpuçları: Uniswap Kodundan Elde Edilen Değerli Deneyimler
Son zamanlarda merkeziyetsiz bir borsa öğreticisi geliştirirken, tanınmış bir DEX'in kod uygulamasını referans aldım ve birçok ilginç bilgi edindim. Daha önce sadece basit NFT sözleşmeleri geliştiren bir acemi olarak, Defi sözleşmeleri geliştirmeye ilk defa deniyorum ve bu teknikler, giriş yapmak isteyen geliştiriciler için oldukça faydalı olmalı.
Bundan sonra, bu pratik ipuçlarına birlikte bakalım, bazıları gerçekten de ustalık gerektiren hileler olarak adlandırılabilir.
Tahmin Edilebilir Sözleşme Dağıtım Adresi
Genellikle dağıtılan sözleşme adresleri rastgele görünür, çünkü nonce ile ilgilidir. Ancak belirli durumlarda, işlem eşdeğer bilgileri aracılığıyla sözleşme adresini çıkarmamız gerekir; bu, işlem yetkilerini belirlemede veya havuz adresini elde etmede oldukça yararlıdır.
CREATE2 yöntemiyle sözleşme oluşturmak için salt parametresi ekleyerek kullanılabilir, bu şekilde oluşturulan adres tahmin edilebilir. Adres oluşturma mantığı: yeni adres = hash("0xFF", oluşturucu adresi, salt, initcode).
Geri Çağırma Fonksiyonlarını Etkili Kullanma
Solidity'de, sözleşmeler birbirlerini çağırabilir. Bazen A metodu B'yi çağırır, B çağrılan metotta A'yı geri arar, bu bazı senaryolar için çok kullanışlıdır.
Örneğin, işlem sırasında pool sözleşmesinin swap yöntemi swapCallback'ı çağıracak ve gereken Token miktarını iletecektir. Çağıran taraf, geri çağırmada Token göndermelidir ve swap'i iki adımda çağırmamalıdır. Bu, swap yönteminin tam olarak yürütülmesini ve güvenliğini sağlar.
Hata ile bilgi iletimi, işlem tahmini için try-catch kullanma
Tahmini işlem yaparken, swap'ı simüle etmemiz gerekiyor ama Token'ı gerçekten değiştirmeden. Özel bir hata fırlatabiliriz ve bunu geri çağırmada yakalayarak hata mesajından gerekli verileri çıkarabiliriz. Bu şekilde tahmin gereksinimi için swap yöntemini değiştirmeye gerek kalmaz, mantık daha basit olur.
Büyük sayılar kullanarak hassasiyet sorununu çözme
Karmaşık hesaplamalarda, bölme işlemi sırasında hassasiyet kaybını önlemek için, önce 96 bit sola kaydırmak mümkündür. (, 2^96) ile çarpmaya eşittir, hesaplamadan sonra sağa kaydırılır. Böylece taşma olmaksızın hassasiyet garanti edilir. En küçük birimlerin hassasiyet kaybı genellikle kabul edilebilir.
Share Yöntemi ile Kazanç Hesaplama
LP getirilerinin hesaplanması için her işlemde kaydetmek mümkün değildir. Toplam işlem ücretini ve her likiditenin alacağı payı kaydedebilirsiniz, LP çekimi sırasında tutulan likiditeye göre hesaplanır. Hisse senedi temettüsüne benzer, sadece hisse başına kazanç geçmişini ve son çekim zamanını bilmek yeterlidir.
Zincir Dışı Depolama Kısmı Bilgileri
Blok zincirinde depolama görece pahalıdır, bu yüzden tüm bilgiler blok zincirine kaydedilmemelidir. İşlem havuzu listesi, bilgiler gibi veriler normal veritabanlarında saklanabilir ve düzenli olarak blok zincirinden senkronize edilebilir. Bazı gelişmiş RPC arayüzleri de daha hızlı ve ucuz veri alma yöntemleri sunar.
Makul Sözleşme Bölme, Mevcut Standartlardan Yararlanma
Bir proje birden fazla fiilen dağıtılmış sözleşme içerebilir. Tek bir sözleşme dağıtılmış olsa bile, miras alma yoluyla birden fazla sözleşmeye ayrılabilir. Ayrıca, ERC721 gibi mevcut standart sözleşmeleri kullanarak geliştirme verimliliği artırılabilir.
Özet
Kendiniz basit bir DEX uygulaması gerçekleştirin, böylece kodun uygulanmasını daha derinlemesine anlayabilir ve gerçek projelerde daha fazla bilgi edinebilirsiniz. İlgilenen arkadaşların ilgili eğitimleri takip ederek adım adım tamamlamalarını öneririm, büyük kazançlar elde edeceklerine inanıyorum.