Değişkenlerin Temizlenmesi
Bir değer 256 bitten daha kısa olduğunda, bazı durumlarda kalan bitlerin temizlenmesi gerekir. Solidity derleyicisi, kalan bitlerdeki potansiyel çöplerden olumsuz etkilenebilecek herhangi bir işlemden önce bu tür kalan bitleri temizlemek üzere tasarlanmıştır. Örnek vermek gerekirse, belleğe bir değer yazmadan öncede kalan bitlerin temizlenmesi gerekir çünkü bellek içeriği hash değerlerinin hesaplanması için kullanılabilir veya bir mesaj çağrısının verisi olarak gönderilebilir. Benzer şekilde, bir değeri depolamadan öncede aynı durum geçerlidir çünkü aksi takdirde bozuk değer gözlemlenebilir.
Satır içi(inline) assembly yoluyla erişimin böyle bir işlem olarak kabul edilmediğini unutmayın: Eğer 256 bitten kısa Solidity değişkenlerine erişmek için satır içi (inline) assembly kullanırsanız, derleyici değerin düzgün bir şekilde temizlendiğini garanti etmez.
Dahası, hemen ardından gelen işlem tarafından etkilenmiyorsa bitleri temizlemeyiz. Örneğin, sıfır
olmayan herhangi bir değer JUMPI
komutu tarafından true
olarak kabul edildiğinden, boolean
değerlerini JUMPI
için koşul olarak kullanılmadan önce temizlemiyoruz.
Yukarıdaki tasarım prensibine ek olarak, Solidity derleyicisi girdi verilerini yığına(stack) yüklendiğinde temizler.
Farklı türlerin geçersiz değerleri temizlemek için farklı kuralları vardır:
Tür |
Geçerli Değerler |
Geçersiz Değerlerin Anlamları |
---|---|---|
n üyeli bir enum |
0’dan n - 1’e kadar |
istisna |
bool |
0 ya da 1 |
1 |
işaretli tam sayılar |
işareti uzatılmış kelime |
sessizce doğru formata getirir; gelecekte istisnala r atılacaktır |
işaretsiz tam sayılar |
daha yüksek bit değerleri sıfırlandı |
sessizce doğru formata getirir; gelecekte istisnala r atılacaktır |