Sözleşme Geliştirme Teknikleri ve Deneyim Paylaşımı
Son zamanlarda bir merkeziyetsiz borsa geliştirme eğitimi projesine katıldığımda, Uniswap V3'ün kodunu inceleyerek oldukça değerli sözleşme geliştirme teknikleri öğrendim. Defi sözleşme geliştirmeye yeni başlayan biri olarak, bu teknikler bana birçok ilham verdi; diğer sözleşme geliştirmeyi öğrenmek isteyen yeni başlayanlar için de faydalı olacağına inanıyorum.
Tahmin edilebilir sözleşme adresi
Genellikle dağıtılan sözleşmeler rastgele adresler alır, ancak bazı senaryolarda sözleşme adreslerini tahmin edebilmemiz gerekir. Uniswap, CREATE2 yöntemini kullanarak sözleşme oluşturur, salt parametresini ekleyerek oluşturulan sözleşme adresinin tahmin edilebilir olmasını sağlar. Bu, işlem izinlerini belirleme veya havuz adreslerini alma gibi senaryolarda oldukça faydalıdır.
Geri Çağırma Fonksiyonlarının Akıllıca Kullanımı
Bazı senaryolarında, sözleşmeler arasında karşılıklı çağrılar çok faydalıdır. Örneğin, Uniswap'ta, UniswapV3Pool sözleşmesinin swap yöntemini çağırdığınızda, swapCallback geri çağrılır ve hesaplanan gerçek gereken Token miktarını iletir. Çağrıyı yapan taraf, geri çağırmada Token'ı UniswapV3Pool'a aktarmalıdır; bu, swap yönteminin tam olarak yürütülmesini ve güvenliğini sağlar.
Hata ile Bilgi İletimi
Uniswap'ın Quoter sözleşmesinde, UniswapV3Pool'un swap yöntemini çalıştırmak için try-catch kullanılır. Bu, takas simülasyonu yaparak gerekli Token'ları tahmin etmek içindir; belirli hataları yakalayarak ve hata mesajlarını çözümleyerek gereken veriyi elde eder. Bu yöntem, tahmini işlem için swap yöntemini özel olarak değiştirmekten kaçınarak mantığı daha sade hale getirir.
Büyük sayı hesaplaması doğruluğu garanti eder
Uniswap'ta büyük miktarda hesaplama yapılmaktadır. Bölme işlemi sırasında hassasiyet kaybını önlemek için genellikle 96 bit sola kaydırma işlemi kullanılır; (, 2^96) ile çarpma işlemine karşılık gelir. Bu şekilde normal işlemler sırasında taşma olmadan hesaplama hassasiyeti sağlanabilir. Teorik olarak hala çok küçük bir hassasiyet kaybı olsa da, kabul edilebilir düzeydedir.
Paylaşım Yöntemi ile Kazanç Hesaplama
Her işlemde her bir LP için işlem ücretlerini kaydetmek için büyük miktarda Gaz harcamamak adına, Uniswap hisse senedi temettüsü benzeri bir yöntem kullanmaktadır. Sadece toplam işlem ücretini ve her birim likiditenin alacağı işlem ücretini kaydetmek yeterlidir, LP'ler çekim yaptıklarında sahip oldukları likiditeye göre alacakları işlem ücreti hesaplanabilir.
Zincir Üstü ve Zincir Altı Verilerin Birleştirilmesi
Tüm bilgilerin zincir üzerinden alınması gerekmez. Örneğin, işlem havuzu listesi, havuz bilgileri gibi veriler, düzenli olarak zincirden senkronize edilmek üzere normal bir veritabanında saklanabilir. Anahtar işlemler zincir üzerinde gerçekleştirilirken, anahtar bilgiler daha verimli yollarla elde edilebilir, bu da performansı ve verimliliği artırır.
Sözleşme Bölme ve Standart Sözleşme Yeniden Kullanımı
Büyük projeler genellikle birden fazla gerçek dağıtım sözleşmesi içerir. Tek bir sözleşme dağıtılsa bile, miras alma yoluyla birden fazla sözleşmeye bölünerek bakım yapılabilir. Aynı zamanda, var olan standart sözleşmeler ( gibi ERC721) kullanmak geliştirme verimliliğini artırabilir ve yönetimi basitleştirebilir.
Uygulama, en iyi öğrenme yoludur. Basit bir merkeziyetsiz borsa oluşturmak için pratik yaparak, Uniswap'ın kod uygulamasını daha derinlemesine anlayabilir ve gerçek projelerdeki daha fazla bilgiyi öğrenebilirsiniz. Bu deneyim paylaşımının, sözleşme geliştirme yolculuğunuzda yardımcı olmasını umuyorum.
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.
14 Likes
Reward
14
7
Share
Comment
0/400
LiquidityOracle
· 08-02 23:11
Bir başka giriş niteliğinde soğuk pilav pişirme makalesi.
View OriginalReply0
WhaleWatcher
· 08-02 19:29
Biraz zor anlaşılıyor, create2 hakkında bana bilgi verebilir misiniz?
View OriginalReply0
RetailTherapist
· 07-31 02:40
Bunu göndermektense bir dex yazıp insanların enayi yerine koymasını sağlamak daha iyi.
View OriginalReply0
gas_guzzler
· 07-31 02:40
Tahmin adresi bu hamleyle güldürdü, Meryem Uniswap.
View OriginalReply0
DeFiGrayling
· 07-31 02:35
Ağzım açık, yine bu tür çaylakları kandıran bir eğitim mi...
View OriginalReply0
DEXRobinHood
· 07-31 02:35
DOGE babası haklı! Hapis yatmak bir hayal değil!
View OriginalReply0
NightAirdropper
· 07-31 02:34
Konuşmak yerine geri dönen Flaş Krediler daha cazip.~
Akıllı sözleşmeler geliştirmeyi öğrenmenize yardımcı olacak yedi büyük ipucu
Sözleşme Geliştirme Teknikleri ve Deneyim Paylaşımı
Son zamanlarda bir merkeziyetsiz borsa geliştirme eğitimi projesine katıldığımda, Uniswap V3'ün kodunu inceleyerek oldukça değerli sözleşme geliştirme teknikleri öğrendim. Defi sözleşme geliştirmeye yeni başlayan biri olarak, bu teknikler bana birçok ilham verdi; diğer sözleşme geliştirmeyi öğrenmek isteyen yeni başlayanlar için de faydalı olacağına inanıyorum.
Tahmin edilebilir sözleşme adresi
Genellikle dağıtılan sözleşmeler rastgele adresler alır, ancak bazı senaryolarda sözleşme adreslerini tahmin edebilmemiz gerekir. Uniswap, CREATE2 yöntemini kullanarak sözleşme oluşturur, salt parametresini ekleyerek oluşturulan sözleşme adresinin tahmin edilebilir olmasını sağlar. Bu, işlem izinlerini belirleme veya havuz adreslerini alma gibi senaryolarda oldukça faydalıdır.
Geri Çağırma Fonksiyonlarının Akıllıca Kullanımı
Bazı senaryolarında, sözleşmeler arasında karşılıklı çağrılar çok faydalıdır. Örneğin, Uniswap'ta, UniswapV3Pool sözleşmesinin swap yöntemini çağırdığınızda, swapCallback geri çağrılır ve hesaplanan gerçek gereken Token miktarını iletir. Çağrıyı yapan taraf, geri çağırmada Token'ı UniswapV3Pool'a aktarmalıdır; bu, swap yönteminin tam olarak yürütülmesini ve güvenliğini sağlar.
Hata ile Bilgi İletimi
Uniswap'ın Quoter sözleşmesinde, UniswapV3Pool'un swap yöntemini çalıştırmak için try-catch kullanılır. Bu, takas simülasyonu yaparak gerekli Token'ları tahmin etmek içindir; belirli hataları yakalayarak ve hata mesajlarını çözümleyerek gereken veriyi elde eder. Bu yöntem, tahmini işlem için swap yöntemini özel olarak değiştirmekten kaçınarak mantığı daha sade hale getirir.
Büyük sayı hesaplaması doğruluğu garanti eder
Uniswap'ta büyük miktarda hesaplama yapılmaktadır. Bölme işlemi sırasında hassasiyet kaybını önlemek için genellikle 96 bit sola kaydırma işlemi kullanılır; (, 2^96) ile çarpma işlemine karşılık gelir. Bu şekilde normal işlemler sırasında taşma olmadan hesaplama hassasiyeti sağlanabilir. Teorik olarak hala çok küçük bir hassasiyet kaybı olsa da, kabul edilebilir düzeydedir.
Paylaşım Yöntemi ile Kazanç Hesaplama
Her işlemde her bir LP için işlem ücretlerini kaydetmek için büyük miktarda Gaz harcamamak adına, Uniswap hisse senedi temettüsü benzeri bir yöntem kullanmaktadır. Sadece toplam işlem ücretini ve her birim likiditenin alacağı işlem ücretini kaydetmek yeterlidir, LP'ler çekim yaptıklarında sahip oldukları likiditeye göre alacakları işlem ücreti hesaplanabilir.
Zincir Üstü ve Zincir Altı Verilerin Birleştirilmesi
Tüm bilgilerin zincir üzerinden alınması gerekmez. Örneğin, işlem havuzu listesi, havuz bilgileri gibi veriler, düzenli olarak zincirden senkronize edilmek üzere normal bir veritabanında saklanabilir. Anahtar işlemler zincir üzerinde gerçekleştirilirken, anahtar bilgiler daha verimli yollarla elde edilebilir, bu da performansı ve verimliliği artırır.
Sözleşme Bölme ve Standart Sözleşme Yeniden Kullanımı
Büyük projeler genellikle birden fazla gerçek dağıtım sözleşmesi içerir. Tek bir sözleşme dağıtılsa bile, miras alma yoluyla birden fazla sözleşmeye bölünerek bakım yapılabilir. Aynı zamanda, var olan standart sözleşmeler ( gibi ERC721) kullanmak geliştirme verimliliğini artırabilir ve yönetimi basitleştirebilir.
Uygulama, en iyi öğrenme yoludur. Basit bir merkeziyetsiz borsa oluşturmak için pratik yaparak, Uniswap'ın kod uygulamasını daha derinlemesine anlayabilir ve gerçek projelerdeki daha fazla bilgiyi öğrenebilirsiniz. Bu deneyim paylaşımının, sözleşme geliştirme yolculuğunuzda yardımcı olmasını umuyorum.