Sözleşme Geliştirme Küçük İpuçları: Uniswap Kodundan Öğrenilen Deneyimler
Son zamanlarda bir merkeziyetsiz borsa geliştirme eğitimi projesine katılırken, tanınmış bir DEX'in kod uygulamasını inceledim ve birçok ilginç bilgi edindim. Daha önce sadece basit NFT sözleşmeleri geliştirmiş bir acemi olarak, bu sefer DeFi sözleşmeleri geliştirme denemesi benim için oldukça faydalı oldu. Aşağıda bazı pratik ipuçlarını paylaşacağım, umarım sözleşme geliştirmeyi öğrenmek isteyen acemiler için oldukça faydalı olur.
Tahmin Edilebilir Sözleşme Adresi
Genellikle dağıtılan sözleşmelerin elde ettiği adresler rastgele gibi görünür, çünkü nonce ile ilgilidir. Ancak bazı durumlarda, işlem eş bilgilerinden sözleşme adresini çıkarmamız gerekir, örneğin işlem izinlerini belirlemek veya havuz adresini almak.
Bir uygulama yöntemi, sözleşme oluşturmak için CREATE2 kullanmaktır. Salt parametresini ekleyerek, oluşturulan sözleşme adresinin tahmin edilebilir olmasını sağlayabilirsiniz. Yeni adresin oluşturulma mantığı şudur: hash("0xFF", oluşturucu adresi, salt, initcode).
https://img-cdn.gateio.im/webp-social/moments-b0c3d4eb7e8ca88cc4cfc9476a34437a.webp(
Büyük Sayılarla Hassasiyet Sorununu Çözmek
Fiyat ve likidite hesaplamalarının söz konusu olduğu durumlarda, bölme işlemlerinin neden olduğu hassasiyet kaybından kaçınmamız gerekir. Hesaplama sürecinde genellikle 96 bit sola kaydırmak (bu, 2^96 ile çarpmaya eşdeğerdir) ve ardından bölme işlemi yapmak yaygın bir tekniktir. Bu şekilde, normal işlemlerde taşma olmaksızın hassasiyet sağlanabilir.
Teorik olarak, hala küçük bir hassasiyet kaybı olmasına rağmen, genellikle sadece en küçük birimlerin kaybı söz konusudur ve bu kabul edilebilir.
Share yöntemi ile kazanç hesaplama
Likidite sağlayıcı )LP( işlem ücreti kazançlarını kaydetmesi gereken senaryolar için, her işlemde her bir LP için işlem ücretini kaydedemeyiz, bu büyük miktarda gaz tüketir. Verimli bir yöntem, toplam işlem ücretini ve her birim likiditeye tahsis edilmesi gereken işlem ücretini kaydetmektir.
LP çekim ücreti alırken, yalnızca sahip olunan likiditeye göre çekilebilecek ücreti hesaplamanız gerekir. Bu, hisse senedi sahiplerinin şirketin geçmiş hisse başına kazancı ve son çekim zamanındaki kazancı temel alarak mevcut çekilebilir kazancı hesaplamasına benzer.
![Web3 Yeni Başlangıç Serisi: Uniswap Kodundan Öğrendiğim Sözleşme Geliştirme İpuçları])https://img-cdn.gateio.im/webp-social/moments-45e66af69435e6d4412ae506e77ab893.webp(
Zincir Dışı Verilerin Mantıklı Kullanımı
Blockchain üzerindeki depolama göreceli olarak pahalıdır ve tüm bilgilerin zincir üzerinde olması veya zincirden alınması gerekmez. Örneğin, işlem havuzu listeleri, havuz bilgileri vb. geleneksel veritabanlarında depolanabilir ve düzenli olarak zincirden senkronize edilebilir.
Birçok blockchain RPC sağlayıcısı, belirli verilere daha hızlı ve ekonomik bir şekilde erişmek için gelişmiş arayüzler de sunmaktadır. Bu arayüzler genellikle performansı ve verimliliği artırmak için önbellek kullanır.
Sözleşme Bölme ve Standart Sözleşmelerden Yararlanmayı Öğrenin
Bir proje, birden fazla gerçek dağıtılmış sözleşme içerebilir. Tek bir sözleşme dağıtılmış olsa bile, kodu birden fazla sözleşmeye ayırarak miras alma yöntemiyle bakımını yapabiliriz.
Ayrıca, mevcut standart sözleşmeleri (örneğin ERC721) kullanmak geliştirme verimliliğini artırabilir. Örneğin, likidite pozisyonlarını yönetmek için ERC721 sözleşmesi kullanılabilir, bu hem pratik hem de geliştirme verimliliğini artırır.
Özet
Pratik, en iyi öğrenme yöntemidir. Basit bir merkeziyetsiz borsa (DEX) uygulaması geliştirmek, DEX'in kodunu daha derinlemesine anlamanıza yardımcı olabilir ve gerçek projelerdeki daha fazla bilgi edinmenizi sağlayabilir. Web3 veya DeFi projeleri geliştirmekle ilgileniyor olsanız da, elinizi taşın altına koymak değerli bir öğrenme deneyimi olacaktır.
![Web3 Yeni Başlayanlar Serisi: Uniswap Kodundan Öğrendiklerim ile Sözleşme Geliştirme İpuçları])https://img-cdn.gateio.im/webp-social/moments-f95ddc9d89809cf11dbe65b9bafda157.webp(
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.
16 Likes
Reward
16
5
Repost
Share
Comment
0/400
StablecoinEnjoyer
· 08-09 08:07
Bu nedenle DEX'i anlamak çok kolay, create2 gerçekten harika~
View OriginalReply0
OnchainArchaeologist
· 08-09 07:19
Adres tahmini bu konuda create2'ye güvenmek gerekiyor.
View OriginalReply0
Layer2Observer
· 08-09 07:17
Teknik olarak CREATE2 gerçekten zarif, ancak güvenlik riskleri var.
7 Büyük Sözleşme Geliştirme İpuçları: DEX Kodundan Merkezi Olmayan Finans Pratiklerini Öğrenmek
Sözleşme Geliştirme Küçük İpuçları: Uniswap Kodundan Öğrenilen Deneyimler
Son zamanlarda bir merkeziyetsiz borsa geliştirme eğitimi projesine katılırken, tanınmış bir DEX'in kod uygulamasını inceledim ve birçok ilginç bilgi edindim. Daha önce sadece basit NFT sözleşmeleri geliştirmiş bir acemi olarak, bu sefer DeFi sözleşmeleri geliştirme denemesi benim için oldukça faydalı oldu. Aşağıda bazı pratik ipuçlarını paylaşacağım, umarım sözleşme geliştirmeyi öğrenmek isteyen acemiler için oldukça faydalı olur.
Tahmin Edilebilir Sözleşme Adresi
Genellikle dağıtılan sözleşmelerin elde ettiği adresler rastgele gibi görünür, çünkü nonce ile ilgilidir. Ancak bazı durumlarda, işlem eş bilgilerinden sözleşme adresini çıkarmamız gerekir, örneğin işlem izinlerini belirlemek veya havuz adresini almak.
Bir uygulama yöntemi, sözleşme oluşturmak için CREATE2 kullanmaktır. Salt parametresini ekleyerek, oluşturulan sözleşme adresinin tahmin edilebilir olmasını sağlayabilirsiniz. Yeni adresin oluşturulma mantığı şudur: hash("0xFF", oluşturucu adresi, salt, initcode).
https://img-cdn.gateio.im/webp-social/moments-b0c3d4eb7e8ca88cc4cfc9476a34437a.webp(
Büyük Sayılarla Hassasiyet Sorununu Çözmek
Fiyat ve likidite hesaplamalarının söz konusu olduğu durumlarda, bölme işlemlerinin neden olduğu hassasiyet kaybından kaçınmamız gerekir. Hesaplama sürecinde genellikle 96 bit sola kaydırmak (bu, 2^96 ile çarpmaya eşdeğerdir) ve ardından bölme işlemi yapmak yaygın bir tekniktir. Bu şekilde, normal işlemlerde taşma olmaksızın hassasiyet sağlanabilir.
Teorik olarak, hala küçük bir hassasiyet kaybı olmasına rağmen, genellikle sadece en küçük birimlerin kaybı söz konusudur ve bu kabul edilebilir.
Share yöntemi ile kazanç hesaplama
Likidite sağlayıcı )LP( işlem ücreti kazançlarını kaydetmesi gereken senaryolar için, her işlemde her bir LP için işlem ücretini kaydedemeyiz, bu büyük miktarda gaz tüketir. Verimli bir yöntem, toplam işlem ücretini ve her birim likiditeye tahsis edilmesi gereken işlem ücretini kaydetmektir.
LP çekim ücreti alırken, yalnızca sahip olunan likiditeye göre çekilebilecek ücreti hesaplamanız gerekir. Bu, hisse senedi sahiplerinin şirketin geçmiş hisse başına kazancı ve son çekim zamanındaki kazancı temel alarak mevcut çekilebilir kazancı hesaplamasına benzer.
![Web3 Yeni Başlangıç Serisi: Uniswap Kodundan Öğrendiğim Sözleşme Geliştirme İpuçları])https://img-cdn.gateio.im/webp-social/moments-45e66af69435e6d4412ae506e77ab893.webp(
Zincir Dışı Verilerin Mantıklı Kullanımı
Blockchain üzerindeki depolama göreceli olarak pahalıdır ve tüm bilgilerin zincir üzerinde olması veya zincirden alınması gerekmez. Örneğin, işlem havuzu listeleri, havuz bilgileri vb. geleneksel veritabanlarında depolanabilir ve düzenli olarak zincirden senkronize edilebilir.
Birçok blockchain RPC sağlayıcısı, belirli verilere daha hızlı ve ekonomik bir şekilde erişmek için gelişmiş arayüzler de sunmaktadır. Bu arayüzler genellikle performansı ve verimliliği artırmak için önbellek kullanır.
Sözleşme Bölme ve Standart Sözleşmelerden Yararlanmayı Öğrenin
Bir proje, birden fazla gerçek dağıtılmış sözleşme içerebilir. Tek bir sözleşme dağıtılmış olsa bile, kodu birden fazla sözleşmeye ayırarak miras alma yöntemiyle bakımını yapabiliriz.
Ayrıca, mevcut standart sözleşmeleri (örneğin ERC721) kullanmak geliştirme verimliliğini artırabilir. Örneğin, likidite pozisyonlarını yönetmek için ERC721 sözleşmesi kullanılabilir, bu hem pratik hem de geliştirme verimliliğini artırır.
Özet
Pratik, en iyi öğrenme yöntemidir. Basit bir merkeziyetsiz borsa (DEX) uygulaması geliştirmek, DEX'in kodunu daha derinlemesine anlamanıza yardımcı olabilir ve gerçek projelerdeki daha fazla bilgi edinmenizi sağlayabilir. Web3 veya DeFi projeleri geliştirmekle ilgileniyor olsanız da, elinizi taşın altına koymak değerli bir öğrenme deneyimi olacaktır.
![Web3 Yeni Başlayanlar Serisi: Uniswap Kodundan Öğrendiklerim ile Sözleşme Geliştirme İpuçları])https://img-cdn.gateio.im/webp-social/moments-f95ddc9d89809cf11dbe65b9bafda157.webp(
Kişiliğine göre yorum yap:
Rol yapmayı bırak, ince bela Uni kopyalayıcısı.