Son zamanlarda merkeziyetsiz borsa geliştirme kılavuzu yazarken, bazı tanınmış projelerin kod uygulamalarını inceledim ve birçok ilginç sözleşme geliştirme tekniği öğrendim. Defi sözleşmesi geliştirmeyi ilk kez deneyen bir acemi olarak, bu teknikler benim için çok ilham verici oldu, diğer sözleşme geliştirmeyi öğrenmek isteyen arkadaşlara da yardımcı olacağına inanıyorum.
Tahmin Edilebilir Sözleşme Adresi
Genellikle dağıtılan sözleşmelerden elde edilen adresler rastgele görünüyor, çünkü nonce ile ilgilidir. Ancak bazı senaryolarda, işlem eşdeğer bilgileri aracılığıyla sözleşme adresini çıkarmamız gerekiyor, bu da işlem yetkilerini belirlemek veya havuz adresini almak için faydalıdır.
Bir yöntem, CREATE2 yöntemi kullanarak sözleşme oluşturmaktır; oluşturulan adresin tahmin edilebilir olması için salt parametresi eklenir. Yeni adresin oluşturulma mantığı şudur: hash("0xFF", oluşturucu adresi, salt, initcode).
Geri Çağırma Fonksiyonlarının Akıllıca Kullanımı
Bazı senaryolarda, sözleşme A'nın sözleşme B'nin yöntemini çağırması ve B'nin ardından A'nın yöntemini geri araması yararlıdır.
Örneğin, işlem sırasında, havuz sözleşmesinin takas yöntemi swapCallback'ı geri çağıracak ve gereken Token miktarını iletecektir. Çağrıcı, geri çağırma sırasında Token'ı havuza aktarır; bu, takas yönteminin güvenliğini ve bütünlüğünü sağlar, karmaşık değişken kayıtlarına gerek kalmadan.
Hata ile Bilgi İletimi
Simülasyon ticareti yaparken gerekli Token'ı tahmin etmek için, geri çağırma fonksiyonunda özel bir hata fırlatabilir ve ardından bu hatayı yakalayarak gerekli bilgileri çıkarabilirsiniz. Bu sayede tahmin ihtiyacı için swap yöntemini özel olarak modifiye etmenize gerek kalmaz, mantık daha basit olur.
Büyük sayıların hassasiyet sorununu çözme
Hesaplama gerektiren durumlarda, bölme işleminin hassasiyetini kaybetmemesi için önce 96 bit sola kaydırmak, ('in 2^96) ile çarpılmasına eşdeğer olup, ardından bölme işlemi yapılabilir. Böylece taşma olmadan hassasiyet sağlanabilir.
Paylaşım Yöntemi ile Kazancı Hesaplama
LP işlem ücretlerinin kaydedilmesi gereken durumlar için, her işlemde her bir LP'ye kayıt yapmak mümkün değildir, bu büyük miktarda Gas tüketir. Hisse senedi temettüsü benzeri bir yöntem kullanılabilir; yalnızca toplam işlem ücreti ve her birim likiditeye tahsis edilecek işlem ücretini kaydedin, LP çekildiğinde sahip oldukları likiditeye göre hesaplayın.
Zincir Dışı Depolama Yardımcı Bilgileri
Tüm bilgilerin zincire eklenmesi veya zincirden alınması gerekmez. İşlem havuzu listesi, havuz bilgileri gibi bazı kritik olmayan veriler, normal bir veritabanında saklanabilir ve düzenli olarak zincirden senkronize edilebilir. Bu, performansı ve verimliliği artırabilir.
Sözleşme Bölme ve Standart Sözleşme Yeniden Kullanımı
Büyük projeler, sözleşmeleri birden fazla parçaya ayırabilir veya miras alma yöntemi ile bölüp bakımını yapabilir. Aynı zamanda, ERC721 gibi standart sözleşmeleri yeniden kullanarak geliştirme verimliliğini artırabilir.
Kendi başınıza basit bir merkeziyetsiz borsa geliştirmek, bu tekniklerin uygulamasını daha derinlemesine anlamanızı sağlayabilir. Umuyorum ki bu paylaşımlar herkes için faydalı olur.
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.
19 Likes
Reward
19
7
Share
Comment
0/400
HappyMinerUncle
· 08-04 03:00
Bu kadar karmaşık mı? Herkes madenciler, iyi dikkat edin.
View OriginalReply0
SadMoneyMeow
· 08-03 20:33
Bu sözleşme oyunu çok lüks değil mi..
View OriginalReply0
SandwichTrader
· 08-01 04:28
Kötü bir piyasa yapıp ama rug atmayan yeni nesil
View OriginalReply0
LayerZeroHero
· 08-01 03:29
dapptools ile test yapmayı öneririm, gas ile test yapmak daha güvenilir.
View OriginalReply0
hodl_therapist
· 08-01 03:21
Bunların en son teknoloji olduğundan emin misin... biraz eski görünüyor.
Defi projeleri için 7 pratik akıllı sözleşme geliştirme ipucu
Sözleşme Geliştirme Küçük İpuçları Paylaşımı
Son zamanlarda merkeziyetsiz borsa geliştirme kılavuzu yazarken, bazı tanınmış projelerin kod uygulamalarını inceledim ve birçok ilginç sözleşme geliştirme tekniği öğrendim. Defi sözleşmesi geliştirmeyi ilk kez deneyen bir acemi olarak, bu teknikler benim için çok ilham verici oldu, diğer sözleşme geliştirmeyi öğrenmek isteyen arkadaşlara da yardımcı olacağına inanıyorum.
Tahmin Edilebilir Sözleşme Adresi
Genellikle dağıtılan sözleşmelerden elde edilen adresler rastgele görünüyor, çünkü nonce ile ilgilidir. Ancak bazı senaryolarda, işlem eşdeğer bilgileri aracılığıyla sözleşme adresini çıkarmamız gerekiyor, bu da işlem yetkilerini belirlemek veya havuz adresini almak için faydalıdır.
Bir yöntem, CREATE2 yöntemi kullanarak sözleşme oluşturmaktır; oluşturulan adresin tahmin edilebilir olması için salt parametresi eklenir. Yeni adresin oluşturulma mantığı şudur: hash("0xFF", oluşturucu adresi, salt, initcode).
Geri Çağırma Fonksiyonlarının Akıllıca Kullanımı
Bazı senaryolarda, sözleşme A'nın sözleşme B'nin yöntemini çağırması ve B'nin ardından A'nın yöntemini geri araması yararlıdır.
Örneğin, işlem sırasında, havuz sözleşmesinin takas yöntemi swapCallback'ı geri çağıracak ve gereken Token miktarını iletecektir. Çağrıcı, geri çağırma sırasında Token'ı havuza aktarır; bu, takas yönteminin güvenliğini ve bütünlüğünü sağlar, karmaşık değişken kayıtlarına gerek kalmadan.
Hata ile Bilgi İletimi
Simülasyon ticareti yaparken gerekli Token'ı tahmin etmek için, geri çağırma fonksiyonunda özel bir hata fırlatabilir ve ardından bu hatayı yakalayarak gerekli bilgileri çıkarabilirsiniz. Bu sayede tahmin ihtiyacı için swap yöntemini özel olarak modifiye etmenize gerek kalmaz, mantık daha basit olur.
Büyük sayıların hassasiyet sorununu çözme
Hesaplama gerektiren durumlarda, bölme işleminin hassasiyetini kaybetmemesi için önce 96 bit sola kaydırmak, ('in 2^96) ile çarpılmasına eşdeğer olup, ardından bölme işlemi yapılabilir. Böylece taşma olmadan hassasiyet sağlanabilir.
Paylaşım Yöntemi ile Kazancı Hesaplama
LP işlem ücretlerinin kaydedilmesi gereken durumlar için, her işlemde her bir LP'ye kayıt yapmak mümkün değildir, bu büyük miktarda Gas tüketir. Hisse senedi temettüsü benzeri bir yöntem kullanılabilir; yalnızca toplam işlem ücreti ve her birim likiditeye tahsis edilecek işlem ücretini kaydedin, LP çekildiğinde sahip oldukları likiditeye göre hesaplayın.
Zincir Dışı Depolama Yardımcı Bilgileri
Tüm bilgilerin zincire eklenmesi veya zincirden alınması gerekmez. İşlem havuzu listesi, havuz bilgileri gibi bazı kritik olmayan veriler, normal bir veritabanında saklanabilir ve düzenli olarak zincirden senkronize edilebilir. Bu, performansı ve verimliliği artırabilir.
Sözleşme Bölme ve Standart Sözleşme Yeniden Kullanımı
Büyük projeler, sözleşmeleri birden fazla parçaya ayırabilir veya miras alma yöntemi ile bölüp bakımını yapabilir. Aynı zamanda, ERC721 gibi standart sözleşmeleri yeniden kullanarak geliştirme verimliliğini artırabilir.
Kendi başınıza basit bir merkeziyetsiz borsa geliştirmek, bu tekniklerin uygulamasını daha derinlemesine anlamanızı sağlayabilir. Umuyorum ki bu paylaşımlar herkes için faydalı olur.