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