1. Anasayfa
  2. 100 Günde Solidity

🧵 #100GündeSolidity 007 : Durum Değişkenini Okuma ve Yazma

Ethereum'da Durum Değişkenlerinin Okuma ve Yazma: Solidity Örnekleri

🧵 #100GündeSolidity 007 : Durum Değişkenini Okuma ve Yazma
Durum Değişkenini Okuma
0

#100GündeSolidity Durum Değişkenini Okuma ve Yazma

Bir durum değişkeni yazmak veya güncellemek için bir işlem göndermeniz gerekir. Öte yandan, durum değişkenlerini herhangi bir işlem ücreti ödemeden ücretsiz olarak okuyabilirsiniz.

Durum değişkenleri, Ethereum blok zincirinde depolanan verilerdir. Bu verileri okuma ve yazma işlemleri için bir işlem göndermeniz gerekmektedir. Okuma işlemleri ücretsizdir, ancak yazma işlemleri bir işlem ücreti gerektirir.

İşlem ücreti, bir işlemin Ethereum ağında gerçekleştirilmesi için ödenen bir miktardır. İşlem ücreti, işlemin gerçekleştirileceği blok zincirinin işlem hacmi, rekabet gibi faktörlere göre değişebilir.

Durum değişkenleri, bir smart contract’ın (akıllı sözleşme) veri depolama yapısıdır. Akıllı sözleşmeler, Ethereum blok zincirinde çalışan kod parçacıklarıdır ve birçok farklı işlevi yerine getirebilirler. Örneğin, bir akıllı sözleşme, bir para transferi işlemini gerçekleştirebilir veya bir oyun oynatabilir. Durum değişkenleri, bu akıllı sözleşmelerin çalışma sırasında depoladıkları verilerdir.

Durum değişkenlerini okumak için, öncelikle o durum değişkeninin tanımlanmış olduğu smart contract’ta bir fonksiyon oluşturmalısınız. Bu fonksiyon, durum değişkeninin okunmasını sağlar. Örneğin:

pragma solidity ^0.6.0;

contract MyContract {
    uint public myVariable;

    function readMyVariable() public view returns (uint) {
        return myVariable;
    }
}

Bu kod parçacığında, myVariable adında bir durum değişkeni tanımlanmış ve readMyVariable adında bir fonksiyon oluşturulmuştur. readMyVariable fonksiyonu, myVariable durum değişkenini okumak için kullanılır ve okunan değeri döndürür. view anahtar kelimesi, bu fonksiyonun bir işlem ücreti ödemeye gerek duymadan çalıştırılabileceğini belirtir.

Durum değişkenlerini yazmak için, aynı şekilde bir fonksiyon oluşturmalısınız. Bu fonksiyon, durum değişkenine yeni bir değer atamak için kullanılır. Örneğin:

pragma solidity ^0.6.0;

contract MyContract {
    uint public myVariable;

    function writeMyVariable(uint newValue) public {
        myVariable = newValue;
    }
}

Bu kod parçacığında, writeMyVariable adında bir fonksiyon oluşturulmuştur. Bu fonksiyon, myVariable durum değişkenine yeni bir değer atamak için kullanılır. Bu fonksiyon bir işlem ücreti gerektirir, çünkü durum değişkenlerini yazmak bir işlemdir.

Bu örneklerde, myVariable durum değişkeni public olarak tanımlanmıştır. Bu, bu değişkenin herhangi bir işlem ücreti ödemeden okunabileceğini belirtir. Eğer private olarak tanımlanmış olsaydı, bu değişken sadece smart contract içerisinde kullanılabilecek ve okunamayacaktı.

Akıllı Sözleşme Örneği İnceleme

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

contract SimpleStorage {
    // State variable to store a number
    uint public num;

    // You need to send a transaction to write to a state variable.
    function set(uint _num) public {
        num = _num;
    }

    // You can read from a state variable without sending a transaction.
    function get() public view returns (uint) {
        return num;
    }
}

Bu Solidity kod parçacığında, bir smart contract oluşturulmuştur. Bu smart contract, num adında bir durum değişkeni içerir ve bu değişkeni okuma ve yazma işlemlerini yapabilen iki fonksiyon içerir.

set fonksiyonu, bir işlem ücreti gerektirir ve num durum değişkenine bir değer atamak için kullanılır. Bu fonksiyon, _num adında bir girdi parametresi alır ve bu parametre değerini num değişkenine atar.

get fonksiyonu ise, bir işlem ücreti gerektirmez ve num değişkeninin değerini okumak için kullanılır. Bu fonksiyon, view anahtar kelimesi ile işaretlenmiştir ve bu anahtar kelime, fonksiyonun bir işlem ücreti gerektirmeyeceğini belirtir. Bu fonksiyon, num değişkeninin değerini döndürür.

Bu smart contract, num değişkeninin değerini okumak ve yazmak için kullanılabilir. Örneğin, bir işlem gönderilerek set fonksiyonu çağrılarak num değişkenine yeni bir değer atanabilir ve get fonksiyonu çağrılarak num değişkeninin değeri okunabilir.

Akıllı Sözleşme Güvenliği Değerlendirmesi

Bu smart contract’ın güvenlik açısından bakıldığında, birkaç nokta dikkate alınabilir:

  1. set fonksiyonu ile num değişkenine yeni bir değer atanabilir. Bu fonksiyonun işlem ücreti gerektirdiği dikkate alındığında, saldırganların bu fonksiyonu çok fazla çağırıp ağı yavaşlatma riski vardır. Bu riski azaltmak için, fonksiyonun içerisine bir Gas sınırlaması eklenebilir.
  2. num değişkeni public olarak tanımlanmıştır. Bu, bu değişkenin herhangi bir işlem ücreti ödemeden okunabileceğini belirtir. Bu, saldırganların bu değişkenin değerini takip ederek smart contract’ın nasıl çalıştığını anlamaya çalışmalarını kolaylaştırabilir. Bu riski azaltmak için, num değişkeninin private olarak tanımlanması düşünülebilir.
  3. Smart contract’ın kaynak kodu açıkça paylaşılmıştır. Bu, saldırganların smart contract’ı inceleme ve güvenlik açıklarını keşfetme riskini artırabilir. Bu riski azaltmak için, smart contract’ın kaynak kodunu gizleyerek sadece binler (derlenmiş kod) paylaşılması düşünülebilir.

Bu öneriler sadece genel olarak düşünülebilecek güvenlik önlemleridir ve smart contract’ın güvenliği için daha fazla önlem alınması gerekebilir. Örneğin, smart contract’ın içerisinde kullanılan diğer değişkenler ve fonksiyonlar da güvenlik açısından incelenmelidir.

Sonuç Bağlamı : Durum Değişkenini Okuma ve Yazma

Durum değişkenleri, Ethereum blok zincirinde depolanan verilerdir ve bu verileri okuma ve yazma işlemleri için bir işlem göndermeniz gerekmektedir. Okuma işlemleri ücretsizdir, ancak yazma işlemleri bir işlem ücreti gerektirir. Solidity dilinde, durum değişkenlerini okuma ve yazma işlemlerini yapabilmek için fonksiyonlar oluşturulur ve bu fonksiyonların içerisine ilgili kodlar yazılır. Smart contract’ların güvenlik açısından incelenmesi gerekir ve güvenlik açıklarını azaltmak için önlemler alınabilir.

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