Akıllı Sözleşme Yazın
Chiliz Chain üzerinde bir dApp oluşturmaya karar verdiğiniz andan itibaren, blok zincirimizin özelliklerini göz önünde bulundurmanız gerekir.
Chiliz Chain EVM uyumlu olsa da, onu tam olarak Ethereum gibi ele almak kullanılabilirlik sorunlarına yol açabilir; özellikle token ondalık basamakları ve gas mekanikleri konusunda.
Hadi keşfedelim!
Önkoşullar
Ortam
Sözleşmenizi yazmaya başlamadan önce ortamınızın hazır olduğundan emin olun.
Öncelikle, Spicy Testnet (geliştirme için) veya Chiliz Chain Mainnet (prodüksiyon için) için yapılandırılmış bir cüzdana sahip olmalısınız.
Chiliz Chain'e bağlanınİkincisi, Testnet ve Mainnet üzerinde gas dağıtımı için $CHZ'ye ihtiyacınız olacak. Mainnet $CHZ'yi herhangi bir kripto borsasından satın alabileceğiniz gibi Testnet tokenleri için kranlara (faucet) güvenebilirsiniz.
Ücretsiz Testnet Tokenleri EdininAraçlar açısından Hardhat veya Remix'e güvenebilirsiniz. Örneğin bakınız:
Remix ile dağıtınSon olarak, Chiliz Chain sözleşmeleri Solidity dili ile yazılır:
Fan Tokenleri / CAP-20
Chiliz Chain'in en belirgin yönü, Fan Tokenler için kullanılan CAP-20 standardıdır.
Teknik olarak kod bazında ERC-20 standardı ile aynı olsa da, CAP-20 tokenlerin ondalık yapılandırması farklıdır. Kısacası: 0 ondalık kullanır; normal ERC-20 tokenler 18 ondalık kullanır.
Fan Tokenler hakkındaBu nedenle, 18 ondalıklı bir Fan Token dağıtırsanız, ekosistem cüzdanlarında düzgün görüntülenmeyebilir veya gelecekteki Socios.com entegrasyonlarıyla uyumlu olmayabilir.
Akıllı sözleşme yazımında en iyi uygulamalar
Test Edilmiş Kütüphaneleri Kullanın (OpenZeppelin)
Sözleşmenizi sıfırdan yazmaya başlamayın. En etkili güvenlik uygulaması, kodunuzu toplum tarafından denetlenmiş standartlara dayandırmaktır; böylece açıklara karşı riski azaltırsınız
Chiliz Chain geliştirme için şiddetle tavsiye ediyoruz: OpenZeppelin Sözleşmeleri. Token sözleşmeleri için güvenli ve topluluk tarafından doğrulanmış uygulamalar sağlarlar.
Standart sözleşmeleri kullanarak, tokenlerinizin bilinen cüzdanlarla (MetaMask gibi) ve Chiliz ekosistemiyle (Socios.com) uyumlu olmasını sağlarsınız.
Genel EVM En İyi Uygulamaları
Zincir ne olursa olsun, bu üç desen güvenli Solidity geliştirme için vazgeçilmezdir.
"Checks-Effects-Interactions" Deseni
Bu, sizin birincil savunmanızdır Yinelenen Çağrı (Reentrancy) Saldırılarına. Fonksiyonlarınızı bu tam sırayla yapılandırın:
Kontroller: Girdileri ve koşulları doğrulayın (ör.,
requireifadeleri).Etkiler: Sözleşme durumunu güncelleyin (ör., bakiyeleri azaltın).
Etkileşimler: Diğer sözleşmelerle etkileşime geçin veya fon gönderin (ör.,
transfer).
Güçlü Erişim Kontrolü
Hassas fonksiyonları korumasız bırakmayın. Bir fonksiyon token basıyor, ücretleri değiştiriyor veya mantığı yükseltiyorsa, kısıtlanmış olmalıdır.
Basit: Tek yöneticili sözleşmeler için
Ownablekullanın.Karmaşık: Birden çok role ihtiyaç duyan sözleşmeler için
AccessControlkullanın (ör.,MINTER_ROLE,ADMIN_ROLE).
Girdi Doğrulama
Tüm girdilerin kötü niyetli olduğunu varsayın. Parametreleri doğrulamak için fonksiyonlarınızın en başında require() ifadelerini kullanın.
Örneğin:
Sıfır adresleri için kontrol edin (
address(0)).Transfer yaparken sıfır tutarları kontrol edin.
Birden fazla dizi geçiriliyorsa dizi uzunluklarının eşleştiğini doğrulayın.
vb.
Chiliz'e Özgü Uygulama Detayları
Chiliz Chain EVM uyumlu olsa da, belirli "yerel kurallar" geçerlidir; özellikle token ondalıkları ve EVM sürümleri konusunda.
CAP-20 Uyumluluğu (Fan Tokenler)
Bir sözleşme Fan Tokenlerle etkileşiyorsa (ör., $PSG veya $BAR için bir Staking Havuzu), 0 ondalıkla başa çıkmanız gerekir.
Bu şu anlama gelir:
Varsaymayın ki
1 Token = 10^18 birim. Fan Tokenler için,1 Token = 1 birim.Sözleşmeniz genel amaçlı olacaksa matematiğinizde
1e18sabitini sabit kodlamaktan kaçının. Bunun yerinetoken.decimals()fonksiyonunu dinamik olarak kullanın.
EVM Sürümü ve Derleyici
Chiliz Chain "Shanghai" EVM sürümü ile uyumludur.
Önerilen Solidity sürümü 0.8.24.
Chiliz'de Gas Optimizasyonu
Chiliz Chain üzerindeki işlemler Ethereum'a göre önemli ölçüde daha ucuzdur, ancak optimize edilmemiş kod yüksek trafikli etkinliklerde (ör., canlı maç sırasında) tıkanıklığa veya başarısız işlemlere yol açabilir.
Gas tasarrufu sağlamak için üç yol:
Özel Hatalar Kullanın: Uzun string mesajları yerine
require, gas tasarrufu içinerrortanımlarını kullanın.Durum değişkenlerinizi 32 baytlık slotlara sığacak şekilde sıralayın. Mümkün olduğunda
uint128,addressvebooldeğişkenlerini yan yana koyun.Tercih edin
externalsözleşmenin kendisi tarafından dahili olarak hiç çağrılmayan fonksiyonlar için.
Last updated
Was this helpful?