Web3 Çaylak Rehberi: Uniswap sözleşme geliştirme ipuçları paylaşımı
Son zamanlarda merkeziyetsiz bir borsa geliştirme kılavuzu yazarken, Uniswap V3'ün kod uygulamasını inceledim ve birçok ilginç bilgi öğrendim. Defi sözleşmeleri geliştirme konusunda ilk kez deneme yapan bir geliştirici olarak, bu teknikler sözleşme geliştirmek isteyen Çaylaklar için çok yardımcı olacaktır.
Tahmin Edilebilir Sözleşme Dağıtım Adresi
Genellikle dağıtılan sözleşme adresleri rastgele görünüyor çünkü nonce ile ilgili. Ancak bazı durumlarda, işlem çiftleri ve ilgili bilgiler aracılığıyla sözleşme adresini çıkarıyoruz. Uniswap, oluşturulan adresin tahmin edilebilir olmasını sağlamak için CREATE2 yöntemini kullanarak sözleşme oluşturur ve bir salt parametresi ekler. Yeni adresin oluşturulma mantığı: hash("0xFF", oluşturucu adresi, salt, initcode).
Geri çağırma fonksiyonlarını etkili kullanma
Bazı senaryolarda, sözleşmeler arasındaki karşılıklı çağrılar çok faydalıdır. Örneğin, bir ticaret platformunun swap yöntemini çağırdığınızda, swapCallback'i geri arayarak, gerekli Token miktarını iletecektir. Çağrıyı yapan taraf, geri arama sırasında gerekli Token'ları ticaret havuzuna yatırmalıdır, böylece tüm işlem mantığının bütünlüğü ve güvenliği sağlanır.
Hata ile Bilgi İletimi
Tahmini işlemler sırasında bazı platformlar, swap yönteminin yürütülmesini try catch ile sarmalar. Tahminin gerçek bir Token değişimi yaratmayacağı için hata oluşur. Geri çağırma fonksiyonunda özel bir hata fırlatarak, ardından hatayı yakalayıp hata bilgilerini çözümleyerek gerekli verilere ulaşılabilir. Bu yöntem, tahmini işlemler için swap yöntemini değiştirme ihtiyacını ortadan kaldırır.
Büyük sayı işlemleri kesinlik garantisi
Fiyat ve likidite hesaplamalarında, bölme işleminin neden olduğu hassasiyet kaybını önlemek için, sola kaydırma işlemi (2^96 ile çarpmaya eşdeğer) kullanılabilir. Bu şekilde, normal işlemlerde taşma olmaması durumunda hassasiyet garanti altına alınır. Teorik olarak hala küçük bir hassasiyet kaybı olsa da, bu artık kabul edilebilir.
Share mekanizması kazancı hesaplama
Gas tüketimini azaltmak için, her işlemde her likidite sağlayıcısı için işlem ücretlerini kaydetmek mümkün değildir. Toplam işlem ücreti ve her likiditenin alması gereken işlem ücreti kaydedilebilir, LP çekimi sırasında sahip olunan likiditeye göre çekilebilecek işlem ücreti hesaplanır. Bu, hisse senedi temettü mekanizmasına benzer.
Zincir Dışı Verilerin Mantıklı Kullanımı
Tüm bilgiler zincir üstünden alınmak zorunda değildir. Örneğin, işlem havuzu listesi, işlem havuzu bilgileri gibi veriler geleneksel veritabanlarında saklanabilir ve düzenli olarak zincir üstünden senkronize edilebilir. Bazı blok zinciri RPC sağlayıcıları, verileri daha hızlı ve ekonomik bir şekilde almak için gelişmiş arayüzler sunar.
Sözleşme Bölme ve Standart Sözleşme Uygulamaları
Proje, birden fazla gerçek dağıtılmış sözleşme içerebilir veya tek bir sözleşmeyi miras alma yöntemiyle birden fazla parçaya bölebilir. Mevcut standart sözleşmeleri (örneğin, ERC721) kullanmak geliştirme verimliliğini artırabilir. Örneğin, bazı platformlar pozisyonları yönetmek için ERC721 sözleşmesini kullanır, bu da yönetimi kolaylaştırır ve geliştirme verimliliğini artırır.
Pratik, en iyi öğrenme yöntemidir. Basit bir merkeziyetsiz borsa uygulaması yapmayı deneyerek, yaygın DEX'in kod uygulamasını daha derinlemesine anlayabilir ve gerçek projelerde daha fazla bilgi edinebilirsiniz. İlgilenen geliştiricilerin ilgili açık kaynak kurslarına başvurması ve basit bir borsa geliştirmeyi adım adım tamamlaması önerilir.
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.
22 Likes
Reward
22
6
Share
Comment
0/400
BagHolderTillRetire
· 07-08 01:52
Sözleşme bana başımı ağrıttı.
View OriginalReply0
RugDocScientist
· 07-05 04:24
Bir şeyler var, gerçekten özetleyebilen bir abimiz.
View OriginalReply0
SeasonedInvestor
· 07-05 04:20
Hehe Çaylak dostu, öğrenemezsen öğrenme.
View OriginalReply0
SatoshiLegend
· 07-05 04:17
Teknik detaylar tam olarak tamamlanmamış, izleme aşamasında hala birçok açık var... v2 kaynak kodunu referans almanızı öneririm.
View OriginalReply0
governance_ghost
· 07-05 04:03
değerli öngörüler koleksiyonu, sonraki öğrenim için
Uniswap sözleşme geliştirme yedi büyük ipucu Çaylaklar için okunması gereken kılavuz
Web3 Çaylak Rehberi: Uniswap sözleşme geliştirme ipuçları paylaşımı
Son zamanlarda merkeziyetsiz bir borsa geliştirme kılavuzu yazarken, Uniswap V3'ün kod uygulamasını inceledim ve birçok ilginç bilgi öğrendim. Defi sözleşmeleri geliştirme konusunda ilk kez deneme yapan bir geliştirici olarak, bu teknikler sözleşme geliştirmek isteyen Çaylaklar için çok yardımcı olacaktır.
Tahmin Edilebilir Sözleşme Dağıtım Adresi
Genellikle dağıtılan sözleşme adresleri rastgele görünüyor çünkü nonce ile ilgili. Ancak bazı durumlarda, işlem çiftleri ve ilgili bilgiler aracılığıyla sözleşme adresini çıkarıyoruz. Uniswap, oluşturulan adresin tahmin edilebilir olmasını sağlamak için CREATE2 yöntemini kullanarak sözleşme oluşturur ve bir salt parametresi ekler. Yeni adresin oluşturulma mantığı: hash("0xFF", oluşturucu adresi, salt, initcode).
Geri çağırma fonksiyonlarını etkili kullanma
Bazı senaryolarda, sözleşmeler arasındaki karşılıklı çağrılar çok faydalıdır. Örneğin, bir ticaret platformunun swap yöntemini çağırdığınızda, swapCallback'i geri arayarak, gerekli Token miktarını iletecektir. Çağrıyı yapan taraf, geri arama sırasında gerekli Token'ları ticaret havuzuna yatırmalıdır, böylece tüm işlem mantığının bütünlüğü ve güvenliği sağlanır.
Hata ile Bilgi İletimi
Tahmini işlemler sırasında bazı platformlar, swap yönteminin yürütülmesini try catch ile sarmalar. Tahminin gerçek bir Token değişimi yaratmayacağı için hata oluşur. Geri çağırma fonksiyonunda özel bir hata fırlatarak, ardından hatayı yakalayıp hata bilgilerini çözümleyerek gerekli verilere ulaşılabilir. Bu yöntem, tahmini işlemler için swap yöntemini değiştirme ihtiyacını ortadan kaldırır.
Büyük sayı işlemleri kesinlik garantisi
Fiyat ve likidite hesaplamalarında, bölme işleminin neden olduğu hassasiyet kaybını önlemek için, sola kaydırma işlemi (2^96 ile çarpmaya eşdeğer) kullanılabilir. Bu şekilde, normal işlemlerde taşma olmaması durumunda hassasiyet garanti altına alınır. Teorik olarak hala küçük bir hassasiyet kaybı olsa da, bu artık kabul edilebilir.
Share mekanizması kazancı hesaplama
Gas tüketimini azaltmak için, her işlemde her likidite sağlayıcısı için işlem ücretlerini kaydetmek mümkün değildir. Toplam işlem ücreti ve her likiditenin alması gereken işlem ücreti kaydedilebilir, LP çekimi sırasında sahip olunan likiditeye göre çekilebilecek işlem ücreti hesaplanır. Bu, hisse senedi temettü mekanizmasına benzer.
Zincir Dışı Verilerin Mantıklı Kullanımı
Tüm bilgiler zincir üstünden alınmak zorunda değildir. Örneğin, işlem havuzu listesi, işlem havuzu bilgileri gibi veriler geleneksel veritabanlarında saklanabilir ve düzenli olarak zincir üstünden senkronize edilebilir. Bazı blok zinciri RPC sağlayıcıları, verileri daha hızlı ve ekonomik bir şekilde almak için gelişmiş arayüzler sunar.
Sözleşme Bölme ve Standart Sözleşme Uygulamaları
Proje, birden fazla gerçek dağıtılmış sözleşme içerebilir veya tek bir sözleşmeyi miras alma yöntemiyle birden fazla parçaya bölebilir. Mevcut standart sözleşmeleri (örneğin, ERC721) kullanmak geliştirme verimliliğini artırabilir. Örneğin, bazı platformlar pozisyonları yönetmek için ERC721 sözleşmesini kullanır, bu da yönetimi kolaylaştırır ve geliştirme verimliliğini artırır.
Pratik, en iyi öğrenme yöntemidir. Basit bir merkeziyetsiz borsa uygulaması yapmayı deneyerek, yaygın DEX'in kod uygulamasını daha derinlemesine anlayabilir ve gerçek projelerde daha fazla bilgi edinebilirsiniz. İlgilenen geliştiricilerin ilgili açık kaynak kurslarına başvurması ve basit bir borsa geliştirmeyi adım adım tamamlaması önerilir.