1. Anasayfa
  2. 100 Günde Solidity

🧵 #100GündeSolidity 004 : Değişkenler

100 Günde Solidity serisinin 4.içeriği Değişkenler hakkında, Akıllı Sözleşmelerde Saklanan Veriler: Solidity Dilinde Değişkenler

🧵 #100GündeSolidity 004 : Değişkenler
Değişkenler
0

Akıllı Sözleşmelerde Saklanan Veriler: Solidity Dilinde Değişkenler

Merhaba!

Solidity dilinde değişkenler, bir programda saklanan ve değiştirilebilen verilere denir. Değişkenlerin türleri, onların saklanabileceği veri türlerine göre belirlenir. Solidity dilinde kullanabileceğiniz değişken türleri şunlardır:

  • bool: true veya false değerlerini saklar.
  • int: tam sayıları saklar.
  • uint: pozitif tam sayıları saklar.
  • address: Ethereum adreslerini saklar.
  • string: dizgi verilerini saklar.
  • byte: bir dizi byte’ı saklar.

Değişkenler, tanımlanırken türlerine göre belirtilir ve daha sonra değer atanır. Örneğin, bir “int” türünde değişken tanımlayabilir ve daha sonra bu değişkene bir tam sayı atayabilirsiniz.

int x;
x = 10;

Değişkenler ayrıca “constant” ve “storage” anahtar kelimeleriyle de tanımlanabilir. “constant” değişkenler, değerleri tanımlanırken atanır ve daha sonra değiştirilemez. “storage” değişkenleri ise, smart contract’ın bellek alanında saklanır ve daha sonra değiştirilebilir.

constant int y = 20;
storage bool z;

Solidity dilinde değişkenler hakkında kısa bir giriş yaptık. Bu makalede değişkenlerin daha detaylı kullanımı hakkında daha fazla bilgi edineceğiz.

Solidity Dilinde Değişken Türleri

Solidity dilinde 3 tip değişken bulunur: local, state ve global değişkenler.

  • Local değişkenler: Local değişkenler, yalnızca işlevler içinde kullanılabilir ve sadece o işlevin çalışma süresince geçerlidir. Local değişkenler, tanımlanırken türlerine göre belirtilir ve daha sonra değer atanır. Örneğin:
function myFunction() public {
    uint x;
    x = 10;
}

State değişkenler: State değişkenleri, smart contract’ın bellek alanında saklanır ve daha sonra değiştirilebilir. Bu değişkenler, contract örneğinin oluştuğu andan itibaren geçerlidir ve contract’ın çalışma süresince mevcuttur. State değişkenleri, tanımlanırken türlerine göre belirtilir ve daha sonra değer atanır. Örneğin:

pragma solidity ^0.5.0;

contract MyContract {
    uint x;
    
    function setX(uint _x) public {
        x = _x;
    }
}

Global değişkenler: Global değişkenler, blok zincirinin tüm örnekleri tarafından paylaşılan ve erişilebilir verilerdir. Bu değişkenler, blok zincirinin oluştuğu andan itibaren geçerlidir ve blok zincirinin çalışma süresince mevcuttur. Global değişkenler, tanımlanırken türlerine göre belirtilir ve daha sonra değer atanır. Örneğin:

pragma solidity ^0.5.0;

contract MyContract {
    uint public globalX;
    
    function setGlobalX(uint _x) public {
        globalX = _x;
    }
}

Solidity Örnek Kod İncelemesi

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

contract Variables {
    // State variables are stored on the blockchain.
    string public text = "Hello";
    uint public num = 123;

    function doSomething() public {
        // Local variables are not saved to the blockchain.
        uint i = 456;

        // Here are some global variables
        uint timestamp = block.timestamp; // Current block timestamp
        address sender = msg.sender; // address of the caller
    }
}

Bu kod, “Variables” adlı bir smart contract örneği oluşturur. Bu contract, “text” ve “num” adlı iki state değişkeni içerir. “text” değişkeni “Hello” dizgisini, “num” değişkeni ise 123 sayısını saklar.

“doSomething” adlı bir işlev de contract içerisinde tanımlanmıştır. Bu işlev içerisinde, “i” adlı bir local değişken tanımlanır ve 456 sayısı atanır. “timestamp” ve “sender” adlı iki global değişken de tanımlanır. “timestamp” değişkeni, çağrının yapıldığı blok zaman damgasını, “sender” değişkeni ise çağrıyı yapan adresi saklar.

Gelin satır satır yorumlayalım!

// SPDX-License-Identifier: MIT

Bu satır, smart contract’ın lisans bilgisini belirtir. MIT lisansı, smart contract’ın özgür yazılım lisansıdır ve kullanımının çok geniş olduğu anlamına gelir.

pragma solidity ^0.8.17;

Bu satır, contract’ın Solidity sürümünü belirtir. Bu satır, contract’ın 0.8.17 veya daha yeni bir sürümü ile derlenmesini gerektirir.

contract Variables {

Bu satır, “Variables” adlı bir smart contract’ın tanımını açar.

    string public text = "Hello";
    uint public num = 123;

Bu iki satır, “Variables” contract’ının iki state değişkeni oluşturur. “text” değişkeni “Hello” dizgisini, “num” değişkeni ise 123 sayısını saklar. Bu değişkenler, contract’ın çalışma süresince mevcut ve değiştirilebilir.

    function doSomething() public {

Bu satır, “doSomething” adlı bir işlevin tanımını açar. Bu işlev, contract örneği tarafından çağrılabilir ve contract’ın bellek alanında saklanan verilere erişebilir.

        uint i = 456;

Bu satır, “i” adlı bir local değişken oluşturur ve 456 sayısını atar. Bu değişken, sadece “doSomething” işlevinin çalışma süresince geçerlidir ve contract’ın bellek alanında saklanmaz.

        uint timestamp = block.timestamp;
        address sender = msg.sender;

Bu iki satır, “timestamp” ve “sender” adlı iki global değişken oluşturur. “timestamp” değişkeni, çağrının yapıldığı blok zaman damgasını saklar. “sender” değişkeni ise, çağrıyı yapan adresi saklar.

    }
}

Bu satır, “doSomething” işlevinin tanımını kapatır ve “Variables” contract’ının tanımını da kapatır.

Akıllı Sözleşmenin Güvenliği

İşte bu smart contract’ın güvenlik açısından değerlendirilmesine dair bazı konular:

  • Lisans: Smart contract, MIT lisansı ile lisanslanmıştır ve bu lisans, özgür yazılım lisansıdır. Bu, smart contract’ın özgürce kullanılmasına ve çoğaltılmasına izin verir.
  • Solidity sürümü: Smart contract, Solidity 0.8.17 sürümü ile yazılmıştır. Bu sürüm, smart contract geliştiricilerinin en yaygın olarak kullandıkları sürümlerden biridir ve güncel bir sürümdür.
  • Değişken türleri: Smart contract, “text” ve “num” adlı iki state değişkeni, “i” adlı bir local değişken ve “timestamp” ve “sender” adlı iki global değişken içerir. Bu değişkenlerin türleri doğru olarak belirtilmiştir ve gereken veri türlerini saklayabilirler.
  • İşlevler: Smart contract, “doSomething” adlı bir işlev içerir. Bu işlev, doğru şekilde tanımlanmıştır ve contract örneği tarafından çağrılabilir.

Genel olarak, bu smart contract güvenlik açısından iyi yazılmış gibi görünüyor. Ancak, her smart contract’ın özel bir amacı ve kullanım alanı vardır ve bu nedenle her smart contract’ın güvenlik açısından ayrı ayrı değerlendirilmesi gerekir.

Akıllı Sözleşmenin Alternatifi

pragma solidity ^0.8.17;

import "./Variables.sol";

contract Client {
    Variables variables = new Variables();

    function setText(string _text) public {
        variables.text = _text;
    }

    function setNum(uint _num) public {
        variables.num = _num;
    }

    function getText() public view returns (string memory) {
        return variables.text;
    }

    function getNum() public view returns (uint) {
        return variables.num;
    }

    function doSomething() public {
        variables.doSomething();
    }
}

Bu kod, “Variables” smart contract’ını içeren “Client” contract’ı oluşturur. “Client” contract’ı, “Variables” contract’ının “text” ve “num” adlı değişkenlerine erişebilir ve değerlerini değiştirebilir. Ayrıca, “Client” contract’ı, “Variables” contract’ının “doSomething” işlevini çağırabilir.

Bu şekilde, “Variables” smart contract’ı, başka contract’lar tarafından kullanılabilir ve görevlerini yerine getirebilir.

Sonuç Bağlamı : Solidity Dilinde Değişkenler

Solidity dilinde değişkenler, bir programda saklanan ve değiştirilebilen verilere denir. Değişkenler, tanımlanırken türlerine göre belirtilir ve daha sonra değer atanır. Solidity dilinde, bool, int, uint, address, string ve byte gibi farklı değişken türleri kullanılabilir. Değişkenler ayrıca “constant” ve “storage” anahtar kelimeleriyle de tanımlanabilir. “constant” değişkenler, değerleri tanımlanırken atanır ve daha sonra değiştirilemez. “storage” değişkenleri ise, smart contract’ın bellek alanında saklanır ve daha sonra değiştirilebilir.

Solidity Programlama Dili Öğrenme yolculuğunuz hakkında daha iyi rehberlik almak için Solidity nedir? Ethereum Akıllı Sözleşmelerinin Dili Rehberi içeriğimize göz atın. Dilerseniz Yeni Başlayanlar için Solidity – Akıllı Sözleşme Geliştirme Hızlandırılmış Kursuna katılın.

Çalışmaya nereden başlayacağım diyenler için Blockchain ​​Developer Olmak İçin Yol Haritası içeriğine de muhakkak bakın.

Gelin aklınızdaki soruları SUPERPEER sohbetinde cevaplayalım.

Bu makaleyi okuduğunuz için teşekkürler! Bana destek olmak isterseniz;

Beni TwitterLinkedin ve YouTube‘da takip edin.

Kısa bir yorum bırakmayı UNUTMAYIN!

solidity101 - Solidity, 2015 yılında Christian Reitwiessner liderliğinde piyasaya sürülen, büyük harf kullanımına göre ikinci en büyük kripto para piyasası olan Ethereum tarafından oluşturulan yepyeni bir programlama dilidir.

Yazarın Profili
İlginizi Çekebilir

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir