Kopya Kağıdı

Operatörlerin Öncelik Sırası

Aşağıdaki tablo, değerlendirme sırasına göre listelenen operatörler için öncelik sırasını belirtir.

Öncelik

Tanım

Operatör

1

Son ek ile tırma ve azaltma

++, --

Yeni ifade

new <typename>

Dizi elamanı görüntüleme

<array>[<index>]

Üye erişimi

<object>.<member>

Fonksiyon çağırımı

<func>(<args...>)

Parantezler

(<statement>)

2

Ön ek ile artırma ve azaltma

++, --

Tekli çıkarma

-

Tekli işlemler

delete

Mantıksal ‘DEĞİL’

!

Bitsel ‘DEĞİL’

~

3

Üs alma

**

4

Çarpma, bölme ve mod alma

*, /, %

5

Ekleme ve çıkarma

+, -

6

Bitsel değiştirme operatörleri

<<, >>

7

Bitsel ‘VE’

&

8

Bitsel ‘Özel veya’

^

9

Bitsel ‘YA DA’

|

10

Eşitsizlik operatörleri

<, >, <=, >=

11

Eşitlik operatörleri

==, !=

12

Mantıksal ‘VE’

&&

13

Mantıksal ‘YA DA’

||

14

Üçlü operatör

<conditional> ? <if-true> : <if-false>

Atama operatörleri

=, |=, ^=, &=, <<=, >>=, +=, -=, *=, /=, %=

15

Virgül operatörü

,

Global Değişkenler

  • abi.decode(bytes memory encodedData, (...)) returns (...): ABI formatında gönderilen verinin ayrıştırılması sırasında, tipler ikinci argüman olarak parantez içinde verilir. Örneğin: (uint a, uint[2] memory b, bytes memory c) = abi.decode(data, (uint, uint[2], bytes))

  • abi.encode(...) returns (bytes memory): ABI formatında verileri düzenler

  • abi.encodePacked(...) returns (bytes memory): Verilen argümanların ABI formatında paketlenmiş veri işlemini gerçekleştirir. Paketli ABI formatındaki verinin belirsiz olabileceğine dikkat edin!

  • abi.encodeWithSelector(bytes4 selector, ...) returns (bytes memory): ABI, verilen bağımsız değişkenleri ikinciden başlayarak ABI olarak formatlar ve verilen dört baytlık seçicinin önüne ekler.

  • abi.encodeWithSignature(string memory signature, ...) returns (bytes memory): Şuna eşdeğerdir abi.encodeWithSelector(bytes4(keccak256(bytes(signature))), ...)

  • abi.encodeCall(function functionPointer, (...)) returns (bytes memory): ABI, functionPointer çağrısını veri grupları içinde bulunan argümanlarla ABI olarak formatlar. Argümanlardaki tüm veri tipleri, fonksiyonun imzasi ile eşleşmesi kontrol edilir. Sonuç abi.encodeWithSelector(functionPointer.selector, (...)) değerine eşittir

  • bytes.concat(...) returns (bytes memory): Değişken sayıda bayt ve bytes1, …, bytes32 argümanlarını bir bayt dizisine birleştirir

  • string.concat(...) returns (string memory): Değişken sayıda string argümanını tek bir string dizisinde birleştirir

  • block.basefee (uint): mevcut bloğun baz ücreti (EIP-3198 ve EIP-1559)

  • block.chainid (uint): mevcut bloğun zincir kimliği

  • block.coinbase (address payable): mevcut blok madencisinin adresi

  • block.difficulty (uint): mevcut blok zorluğu

  • block.gaslimit (uint): mevcut blok gas sınırı

  • block.number (uint): mevcut blok numarası

  • block.timestamp (uint): unix bazlı epoch (1/1/1970) gününden bu yana saniye biçiminde formatlanmış mevcut bloğun yaratılış zaman bilgisi

  • gasleft() returns (uint256): kalan gas

  • msg.data (bytes calldata): bütün calldata

  • msg.sender (address): mesajın göndericisi (mevcut çağırma için)

  • msg.sig (bytes4): calldata’nın ilk 4 byte değeri (yani fonksiyon tanımlayıcısı)

  • msg.value (uint): mesaj ile birlikte gönderilen wei miktarı

  • tx.gasprice (uint): işlemin gas fiyatı

  • tx.origin (address): işlemin göndericisi (tam çağrı zinciri)

  • assert(bool condition): koşul “yanlış” ise yürütmeyi iptal edilir ve durum değişikliklerini geri alır (dahili hata için kullanın)

  • require(bool condition): koşul “yanlış” ise yürütmeyi durdurur ve durum değişikliklerini geri alır (harici bileşende hatalı biçimlendirilmiş giriş veya hata için kullanın)

  • require(bool condition, string memory message): koşul “yanlış” ise yürütmeyi iptal eder ve durum değişikliklerini geri alır (harici bileşende hatalı biçimlendirilmiş giriş veya hata için kullanın). Ayrıca hata mesajıda verir.

  • revert(): yürütmeyi iptal eder ve durum değişikliklerini geri alır

  • revert(string memory message): açıklayıcı bir string geri döndürerek yürütmeyi iptal eder ve durum değişikliklerini geri alır

  • blockhash(uint blockNumber) returns (bytes32): verilen bloğun hash’i - yalnızca en son 256 blok için çalışır

  • keccak256(bytes memory) returns (bytes32): girdinin Keccak-256 hash’ini hesaplar

  • sha256(bytes memory) returns (bytes32): cgirdinin SHA-256 hash’ini hesaplar

  • ripemd160(bytes memory) returns (bytes20): girdinin RIPEMD-160 hash’ini hesaplar

  • ecrecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) returns (address): eliptik eğri imzasından açık anahtarla ilişkili adresi kurtarır veya hata durumunda sıfır döndürür.

  • addmod(uint x, uint y, uint k) returns (uint): toplama işleminin isteğe bağlı kesinlikte gerçekleştirildiği ve 2**256``da kapsamadığı ``(x + y) % k değerini hesaplar. Sürüm 0.5.0’den başlayarak “k!= 0” olduğunu iddia eder.

  • mulmod(uint x, uint y, uint k) returns (uint): çarpmanın isteğe bağlı kesinlikte gerçekleştirildiği ve 2**256 değerinde kapsamadığı (x * y) % k değerini hesaplar. Sürüm 0.5.0’dan başlayarak k != 0 olduğunu iddia eder.

  • this (mevcut sözleşme tipi): mevcut sözleşme, açıkça “adres” veya “ödenecek adres”e dönüştürülebilir

  • super: kalıtım(miras) hiyerarşisinde bir seviye daha yüksek sözleşme

  • selfdestruct(address payable recipient): mevcut sözleşmeyi imha edin, fonlarını verilen adrese gönderin

  • <address>.balance (uint256): Wei biçimindeki Adresler bakiyesi

  • <address>.code (bytes memory): ref:address adresindeki kod (boş olabilir)

  • <address>.codehash (bytes32): ref:address kod hash’i

  • <address payable>.send(uint256 amount) returns (bool): verilen Wei miktarını Adresler ‘ine gönderir, başarısız olması durumunda false döndürür

  • <address payable>.transfer(uint256 amount): verilen Wei miktarını Adresler ‘ine gönderir, başarısız olması durumunda geri döner

  • type(C).name (string): sözleşmenin ismi

  • type(C).creationCode (bytes memory): verilen sözleşmenin bayt kodu oluşturma, bkz. Type Information.

  • type(C).runtimeCode (bytes memory): verilen sözleşmenin çalışma zamanı bayt kodu, bkz. Type Information.

  • type(I).interfaceId (bytes4): verilen arayüzün EIP-165 arayüz tanımlayıcısını içeren değer, bkz. Type Information.

  • type(T).min (T): T tipi tarafından temsil edilebilen en küçük değer, bkz. Type Information.

  • type(T).max (T): T tipi tarafından temsil edilebilen en büyük değer, bkz. Type Information.

Fonksiyon Görünürlük Belirteçleri

function myFunction() <visibility specifier> returns (bool) {
    return true;
}
  • public: harici ve dahili olarak görünür (depolama/durum değişkenleri için bir alıcı fonksiyon oluşturur)

  • private: sadece mevcut sözleşmede görünür

  • external: yalnızca harici olarak görünür (yalnızca fonksiyonlar için) - yani yalnızca mesajla çağrılabilir (this.func aracılığıyla)

  • internal: sadece dahili olarak görünür

Modifiers

  • pure fonksiyonlar için: Durumun değiştirilmesine veya erişime izin vermez.

  • view fonksiyonlar için: Durum değişikliğine izin vermez.

  • payable fonksiyonlar için: Bir çağrıyla birlikte Ether almalarını sağlar.

  • constant durum değişkenleri için: Atamaya izin vermez (başlatma dışında), depolama yuvasını işgal etmez.

  • immutable durum değişkenleri için: Başlatılma sırasında bir defa atamaya izin verir ve daha sonra sabit bir şekilde kalır. Kodda saklanır.

  • anonymous event’ler için: Event imzasını başlık olarak saklamaz

  • indexed event parametreleri için: Parametreyi başlık olarak saklar

  • virtual fonksiyonlar ve modifier’lar için: Türetilmiş sözleşmelerde modifier’ların fonksiyonlarının değiştirilmesine izin verir.

  • override: Bu fonksiyon, modifier veya genel durum değişkeninin, bir temel sözleşmedeki bir fonksiyonun veya modifier’ın davranışını değiştirdiğini ifade etmektedir.