Son zamanlarda bir merkeziyetsiz borsa geliştirme projesine katılırken, bazı ilginç akıllı sözleşme geliştirme ipuçları öğrendim. Bu ipuçları, akıllı sözleşme geliştirmeye yeni başlayanlar için ilham verici olabilir.
Tahmin Edilebilir Sözleşme Adresi
CREATE2 opcode'unu kullanarak, tahmin edilebilir adreslere sahip sözleşmeler dağıtabiliriz. Bu, sözleşme oluşturulurken bir salt parametresi ekleyerek yapılır:
katılık
pool = address(new UniswapV3Pool{salt: keccak256(abi.encode(token0, token1, fee))}());
Bu şekilde oluşturulan sözleşme adresi ilgili parametreler kullanılarak hesaplanabilir, birçok senaryoda oldukça faydalıdır.
Geri Çağırma Fonksiyonlarının Akıllı Kullanımı
Bazı durumlarda, Sözleşme A'nın Sözleşme B'nin bir yöntemini çağırması ve B'nin A'nın belirli bir yöntemini geri araması çok faydalı bir modeldir. Örneğin, DEX'te, swap yöntemini çağırırken swapCallback geri çağrılacak, geri çağrıda token transferi tamamlanacak ve bu da tüm işlem sürecinin bütünlüğünü ve güvenliğini sağlamaktadır.
Hata ile bilgi iletimi
Bazen belirli istisnaları yakalamak için try-catch kullanarak bilgileri akıllıca elde edebilirsiniz. Örneğin, simülasyon ticareti yaparken, swap yönteminin fırlattığı belirli istisnaları yakalayarak tahmini verilere ulaşabilirsiniz, bu sayede swap yöntemini özel olarak değiştirmeye gerek kalmaz.
Büyük sayı hesaplamaları doğruluğu garanti eder
Finansal hesaplamalar söz konusu olduğunda, bölme işleminin neden olabileceği hassasiyet kaybını önlemek için, sayıları önce sola kaydırma işlemi yapabiliriz. (, 2^96) ile çarpmaya eşdeğerdir; hesaplama tamamlandıktan sonra sağa kaydırarak, taşma olmadan hassasiyeti garanti edebiliriz.
Share modunda kazanç hesaplama
Kazançların dağıtılması gereken senaryolar için, hisse senedi temettüleri benzeri bir model kullanılabilir. Toplam kazancı ve her birim için alınması gereken kazancı kaydetmek yeterlidir, kullanıcılar çekim yaptıklarında kendi paylarına göre alacakları kısmı hesaplayabilirler, bu da her bir kullanıcının kazanç kayıtlarını sık sık güncelleme ihtiyacını ortadan kaldırır.
Zincir Dışı Verilerin Akıllıca Kullanımı
Tüm verilerin blok zincirinde saklanması gerekmez. Önemli işlem mantığını içermeyen bazı bilgiler, geleneksel veritabanlarında saklanabilir ve Web2 API'leri aracılığıyla alınabilir, böylece maliyetleri düşürüp verimliliği artırır.
Sözleşme Bölme ve Yeniden Kullanım
Büyük projeler genellikle sözleşmeleri birden fazla modüle ayırarak, kalıtım yoluyla bir araya getirirler. Aynı zamanda mevcut standart sözleşmeleri, örneğin ERC721 gibi, etkili bir şekilde kullanmak, geliştirme verimliliğini ve kod kalitesini artırabilir.
Bu küçük ipuçları oldukça kullanışlıdır, umarım herkesin akıllı sözleşme geliştirmesine ilham verir. Bu ipuçlarını gerçekten kavramanın en iyi yolu, bunları bizzat uygulamak ve gerçek projelerde kullanarak deneyimlemektir.
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.
24 Likes
Reward
24
7
Share
Comment
0/400
ProbablyNothing
· 14h ago
Çok tembelim, direkt kütüphaneyi çağırayım.
View OriginalReply0
TeaTimeTrader
· 07-11 02:06
Temel Sözleşme Gerekli Beceriler Eğitimi
View OriginalReply0
FudVaccinator
· 07-11 02:04
Anlayanlar anlar, tahmin edilen dağıtım adresi gerçekten hoş.
View OriginalReply0
HackerWhoCares
· 07-11 02:03
Gidiyorum gidiyorum, acemi programcı yine bilgi almaya geldi.
Yedi pratik akıllı sözleşmeler geliştirme ipucu paylaşımı
Sözleşme Geliştirme Küçük İpuçları Paylaşımı
Son zamanlarda bir merkeziyetsiz borsa geliştirme projesine katılırken, bazı ilginç akıllı sözleşme geliştirme ipuçları öğrendim. Bu ipuçları, akıllı sözleşme geliştirmeye yeni başlayanlar için ilham verici olabilir.
Tahmin Edilebilir Sözleşme Adresi
CREATE2 opcode'unu kullanarak, tahmin edilebilir adreslere sahip sözleşmeler dağıtabiliriz. Bu, sözleşme oluşturulurken bir salt parametresi ekleyerek yapılır:
katılık pool = address(new UniswapV3Pool{salt: keccak256(abi.encode(token0, token1, fee))}());
Bu şekilde oluşturulan sözleşme adresi ilgili parametreler kullanılarak hesaplanabilir, birçok senaryoda oldukça faydalıdır.
Geri Çağırma Fonksiyonlarının Akıllı Kullanımı
Bazı durumlarda, Sözleşme A'nın Sözleşme B'nin bir yöntemini çağırması ve B'nin A'nın belirli bir yöntemini geri araması çok faydalı bir modeldir. Örneğin, DEX'te, swap yöntemini çağırırken swapCallback geri çağrılacak, geri çağrıda token transferi tamamlanacak ve bu da tüm işlem sürecinin bütünlüğünü ve güvenliğini sağlamaktadır.
Hata ile bilgi iletimi
Bazen belirli istisnaları yakalamak için try-catch kullanarak bilgileri akıllıca elde edebilirsiniz. Örneğin, simülasyon ticareti yaparken, swap yönteminin fırlattığı belirli istisnaları yakalayarak tahmini verilere ulaşabilirsiniz, bu sayede swap yöntemini özel olarak değiştirmeye gerek kalmaz.
Büyük sayı hesaplamaları doğruluğu garanti eder
Finansal hesaplamalar söz konusu olduğunda, bölme işleminin neden olabileceği hassasiyet kaybını önlemek için, sayıları önce sola kaydırma işlemi yapabiliriz. (, 2^96) ile çarpmaya eşdeğerdir; hesaplama tamamlandıktan sonra sağa kaydırarak, taşma olmadan hassasiyeti garanti edebiliriz.
Share modunda kazanç hesaplama
Kazançların dağıtılması gereken senaryolar için, hisse senedi temettüleri benzeri bir model kullanılabilir. Toplam kazancı ve her birim için alınması gereken kazancı kaydetmek yeterlidir, kullanıcılar çekim yaptıklarında kendi paylarına göre alacakları kısmı hesaplayabilirler, bu da her bir kullanıcının kazanç kayıtlarını sık sık güncelleme ihtiyacını ortadan kaldırır.
Zincir Dışı Verilerin Akıllıca Kullanımı
Tüm verilerin blok zincirinde saklanması gerekmez. Önemli işlem mantığını içermeyen bazı bilgiler, geleneksel veritabanlarında saklanabilir ve Web2 API'leri aracılığıyla alınabilir, böylece maliyetleri düşürüp verimliliği artırır.
Sözleşme Bölme ve Yeniden Kullanım
Büyük projeler genellikle sözleşmeleri birden fazla modüle ayırarak, kalıtım yoluyla bir araya getirirler. Aynı zamanda mevcut standart sözleşmeleri, örneğin ERC721 gibi, etkili bir şekilde kullanmak, geliştirme verimliliğini ve kod kalitesini artırabilir.
Bu küçük ipuçları oldukça kullanışlıdır, umarım herkesin akıllı sözleşme geliştirmesine ilham verir. Bu ipuçlarını gerçekten kavramanın en iyi yolu, bunları bizzat uygulamak ve gerçek projelerde kullanarak deneyimlemektir.