Uniswap sözleşmesi geliştirme 7 büyük ipucu analizi Merkezi Olmayan Finans projelerinin verimliliğini artırma

robot
Abstract generation in progress

Uniswap kodundan öğrenilen akıllı sözleşmeler geliştirme ipuçları

Son zamanlarda merkeziyetsiz borsa geliştirme kılavuzu yazarken, Uniswap V3'ün kod uygulamasını referans aldım ve çok sayıda ilginç akıllı sözleşmeler geliştirme tekniği öğrendim. DeFi sözleşmeleri geliştirmeyi deneyen bir geliştirici olarak, bu teknikler sözleşme geliştirmeyi öğrenmek isteyen yeni başlayanlar için çok faydalı olacaktır.

Web3 Yeni Başlayanlar Serisi: Uniswap Kodundan Öğrendiğim Akıllı Sözleşmeler Geliştirme İpuçları

Tahmin Edilebilir Sözleşme Adresi

Genellikle dağıtılan sözleşmelerin aldığı adres rastgele gibi görünür, çünkü nonce ile ilgilidir. Ancak bazı durumlarda, işlem eş değer bilgileri ile sözleşme adresini çıkarmamız gerekir, örneğin işlem yetkisini belirlemek veya havuz adresini almak.

Uniswap, CREATE2 yöntemini kullanarak akıllı sözleşmeler oluşturur ve adresin tahmin edilebilir olmasını sağlamak için salt parametresini ekler. Yeni adres oluşturma mantığı şu şekildedir: hash("0xFF", oluşturucu adresi, salt, initcode). Bu yöntem, sözleşme adresinin önceden hesaplanmasını sağlar.

![Web3 Yeni Başlayanlar Serisi: Uniswap Kodundan Öğrendiğim Akıllı Sözleşme Geliştirme İpuçları](https://img-cdn.gateio.im/webp-social/moments-0aaa61a4d43aba7fdeddbc55e3665305.webp01

Geri Çağırma Fonksiyonlarının Akıllıca Kullanımı

Solidity'de sözleşmeler birbiriyle çağrılabilir. Bazı senaryolarda, A yöntemi B'yi çağırır, B çağrılan yöntemde A'yı geri arar, bu model oldukça kullanışlıdır.

Örneğin, Uniswap'ın swap metodunu kullanarak işlem yaparken, swapCallback geri çağrılır ve gerçek ihtiyaç duyulan Token miktarı iletilir. Çağıran tarafın geri çağırma içinde Token göndermesi gerekir, swap'ı iki aşamalı bir çağrı olarak ayırmamalıdır. Bu, swap metodunun tam olarak yürütülmesini sağlar ve güvenliği sağlamak için karmaşık değişken kayıtlarına gerek kalmaz.

Hata ile bilgi iletimi, try-catch ile işlemi tahmin etme

Uniswap'ın Quoter akıllı sözleşmesinde, UniswapV3Pool'un swap metodunu çalıştırmak için try-catch ile sarılmıştır. Bu, swap'ı simüle ederek gereken Token miktarını tahmin etmek içindir, ancak tahmin yaparken gerçek Token takası yapılmadığı için hata verecektir.

Uniswap, işlem geri çağrısında özel bir hata fırlatır, ardından bu hatayı yakalar ve gereken bilgileri buradan çözümler. Bu yöntem, swap yöntemini tahmini talepler için değiştirmekten kaçınarak mantığı daha sade hale getirir.

![Web3 Yeni Başlayanlar Serisi: Uniswap Kodundan Öğrendiğim Akıllı Sözleşme Geliştirme İpuçları])https://img-cdn.gateio.im/webp-social/moments-b0c3d4eb7e8ca88cc4cfc9476a34437a.webp(

Büyük Sayı Hesaplamaları Hassasiyet Sorununu Çözer

Uniswap'ta fiyat ve likiditeye göre Token miktarını hesaplamak gibi birçok hesaplama yapılmaktadır. Bölme işleminin hassasiyetini kaybetmemesi için hesaplama sürecinde genellikle << FixedPoint96.RESOLUTION işlemi kullanılır, bu da 96 bit sola kaydırmak anlamına gelir ve 2^96 ile çarpmaya eşdeğerdir.

Sağa kaydırdıktan sonra bölme işlemi yaparak, normal ticarette taşma olmadan hassasiyeti garanti edebilirsiniz. Teorik olarak hala küçük bir hassasiyet kaybı olsa da, kabul edilebilir.

Paylaşım Yöntemi ile Kazanç Hesaplama

Uniswap, LP) likidite sağlayıcısı ('in işlem ücretlerini kaydetmelidir. Açıkça her işlemde her bir LP için işlem ücreti kaydetmek mümkün değildir, bu büyük miktarda Gas harcar.

Çözüm, toplam işlem ücretini ve her birim likiditenin alması gereken işlem ücretini kaydetmektir. LP, sahip olduğu likiditeye göre çekilebilecek işlem ücretini hesaplar, hisse senedi temettüsüne benzer.

![Web3 Yeni Başlangıç Serisi: Uniswap Kodundan Öğrendiğim Akıllı Sözleşme Geliştirme İpuçları])https://img-cdn.gateio.im/webp-social/moments-45e66af69435e6d4412ae506e77ab893.webp(

Zincir üstü ve zincir altı bilgilerini ayırma

Zincir üzerindeki depolama görece pahalıdır, tüm bilgilerin zincir üzerine yazılması veya zincirden alınması gerekmez. Örneğin, Uniswap'in ön yüzü tarafından çağrılan birçok arayüz geleneksel Web2 arayüzleridir.

İşlem havuzu listesi, bilgileri vb. sıradan bir veritabanında saklanabilir ve periyodik olarak zincirden senkronize edilebilir. İlgili verileri almak için RPC arayüzünü gerçek zamanlı olarak çağırmaya gerek yoktur. Elbette, kritik işlemler hala zincirde gerçekleştirilmektedir.

Sözleşme Ayırma ve Standart Sözleşme Yeniden Kullanımı

Bir proje, birden fazla gerçek deploy edilmiş sözleşme içerebilir. Tek bir sözleşme deploy edilse bile, kod miras alınarak birden fazla sözleşmeye ayrılabilir.

Uniswap'ın NonfungiblePositionManager akıllı sözleşmesi birden fazla akıllı sözleşmeyi miras alır. ERC721Permit, OpenZeppelin'in ERC721 akıllı sözleşmesini doğrudan kullanır, bu da NFT ile pozisyon yönetimini kolaylaştırır ve geliştirme verimliliğini artırır.

Özet

Kendiniz geliştirerek öğrenmek, yalnızca makale okumaktan daha etkilidir. Basit bir merkeziyetsiz borsa uygulaması oluşturmaya çalışmak, Uniswap'ın kod uygulamasını daha derinlemesine anlamanızı sağlar ve gerçek projelerdeki bilgi noktalarını öğrenmenizi sağlar.

![Web3 Yeni Başlayanlar Serisi: Uniswap Kodundan Öğrendiğim Akıllı Sözleşmeler Geliştirme İpuçları])https://img-cdn.gateio.im/webp-social/moments-f95ddc9d89809cf11dbe65b9bafda157.webp(

UNI5.26%
DEFI16.73%
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.
  • Reward
  • 7
  • Share
Comment
0/400
PoolJumpervip
· 07-28 02:11
Sıfır altyapı yapalım.
View OriginalReply0
OldLeekConfessionvip
· 07-27 04:18
Beni anlamamı sağlarsan bu harika olur...
View OriginalReply0
OnchainGossipervip
· 07-27 03:51
Uygulamalı pratik yapmayı öneririm~
View OriginalReply0
BagHolderTillRetirevip
· 07-25 17:02
Sonunda hapsolmuş durumumun bir çıkış yolunu buldum.
View OriginalReply0
PanicSeller69vip
· 07-25 17:00
V3 gerçekten bir şeyler var, yap!
View OriginalReply0
degenonymousvip
· 07-25 16:58
Kod geliştiricileri için bir müjde oldu
View OriginalReply0
AirdropDreamBreakervip
· 07-25 16:56
Geliştirmek yerine doğrudan kod çalmak daha iyidir.
View OriginalReply0
Trade Crypto Anywhere Anytime
qrCode
Scan to download Gate app
Community
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)