1. Anasayfa
  2. 100 Günde Solidity

🧵 #100GündeSolidity 027 : Görünürlük (Visibility)

🧵 #100GündeSolidity 027 : Görünürlük (Visibility)
Görünürlük (Visibility)
0

Görünürlük (Visibility)

Merhaba,

Bu e-bülten Solidity programlama dilinde fonksiyon ve state variable’ların erişilebilirlik (visibility) özellikleri ile ilgilidir. Solidity dilinde, fonksiyonlar ve state variable’lar erişilebilirlik özelliklerine göre tanımlanabilirler ve bu özellikler, diğer contract’lardan ve account’lardan nasıl erişilebileceklerini belirler.

Bu bülten, Solidity dilinde fonksiyonların public, private, internal ve external olarak nasıl tanımlanabileceği, state variable’ların ise public, private ve internal olarak nasıl tanımlanabileceği konularını ele almaktadır. Ayrıca, bu özelliklerin ne zaman ve nasıl kullanılacağına dair ipuçları vermektedir.

İyi okumalar.

Fonksiyonların erişilebilirlik özellikleri nelerdir?

Solidity’de, fonksiyonların erişilebilirlik özellikleri şunlardır:

  1. public: Herhangi bir contract veya account, public fonksiyonları çağırabilir.
  2. private: Private fonksiyonlar sadece tanımlandığı contract içinde çağrılabilir. Başka bir contract veya account private fonksiyonları çağıramaz.
  3. internal: Internal fonksiyonlar sadece tanımlandığı contract veya onu miras alan contract’lar tarafından çağrılabilir. Diğer contract’lar ve account’lar internal fonksiyonları çağıramaz.
  4. external: External fonksiyonlar sadece diğer contract’lar ve account’lar tarafından çağrılabilir. Aynı contract içinde external fonksiyonlar çağrılamaz.

Bu erişilebilirlik özellikleri, Solidity’de fonksiyonların erişilebilirliğini sınırlayarak programın güvenliğini ve doğruluğunu sağlar. Public fonksiyonlar genellikle dış dünyayla etkileşim kurmak için kullanılırken, private fonksiyonlar sadece contract içinde kullanılacak fonksiyonlar için kullanılır. Internal fonksiyonlar ise contract’lar arasında etkileşim sağlamak için kullanılırken, external fonksiyonlar başka contract’lar ve account’larla etkileşim için kullanılır.

State variable’ların erişilebilirlik özellikleri nelerdir?

Solidity’de, state variable’ların erişilebilirlik özellikleri şunlardır:

  1. public: Public state variable’lar herhangi bir contract veya account tarafından okunabilir ve yazılabilir.
  2. private: Private state variable’lar sadece tanımlandığı contract içinde okunabilir ve yazılabilir. Başka bir contract veya account private state variable’lara erişemez.
  3. internal: Internal state variable’lar sadece tanımlandığı contract veya onu miras alan contract’lar tarafından okunabilir ve yazılabilir. Diğer contract’lar ve account’lar internal state variable’lara erişemez.

Erişilebilirlik özellikleri dışında, state variable’lar ayrıca constant veya immutable olabilirler. Constant state variable’lar okunabilir, ancak yazılamazlar. Immutable state variable’lar ise tanımlandıktan sonra değeri değiştirilemeyen state variable’lardır.

State variable’ların erişilebilirlik özellikleri, programlama yaparken state variable’lara erişim kontrolünü sağlar. Public state variable’lar, contract’lar arasında veri paylaşımı için kullanılırken, private state variable’lar sadece tanımlandığı contract içinde kullanılan değişkenler için kullanılır. Internal state variable’lar ise contract’lar arasında veri paylaşımı sağlamak için kullanılır.

public fonksiyonlar ve state variable’lar nasıl kullanılır?

Public fonksiyonlar ve state variable’lar Solidity’de en sık kullanılan erişilebilirlik özellikleridir. Public fonksiyonlar ve state variable’lar, diğer contract’lar ve account’lar tarafından erişilebilir ve genellikle Solidity’de dış dünyayla etkileşim için kullanılır.

Bir public fonksiyon, herhangi bir contract veya account tarafından çağrılabilir ve aşağıdaki örnek kodda olduğu gibi public anahtar kelimesi kullanılarak tanımlanabilir:

pragma solidity ^0.8.0;

contract ExampleContract {
    uint public myPublicVariable = 42;

    function myPublicFunction() public returns (string memory) {
        return "Hello, world!";
    }
}

Bu örnekte, myPublicVariable adında bir public state variable ve myPublicFunction adında bir public fonksiyon tanımlanmıştır. myPublicVariable‘a herhangi bir contract veya account tarafından erişilebilir ve okunabilir veya yazılabilir. myPublicFunction herhangi bir contract veya account tarafından çağrılabilir ve “Hello, world!” döndürür.

Public fonksiyonlar ve state variable’lar, Solidity’de dış dünyayla etkileşim için kullanılır. Örneğin, bir token contract’ında, token’ın dışarı aktarılabilmesi için public bir fonksiyon kullanılabilir. Bu public fonksiyon, token’ın dış dünyada alınıp satılmasına olanak tanır. Benzer şekilde, bir smart contract’ın durumunun dış dünyada okunabilmesi için public bir state variable kullanılabilir. Bu public state variable, contract’ın durumunu dışarıdan görüntüleyebilir ve izleyebilir.

private fonksiyonlar ve state variable’lar nasıl kullanılır?

Private fonksiyonlar ve state variable’lar Solidity’de kullanılan erişilebilirlik özellikleridir ve sadece tanımlandıkları contract içinde kullanılabilirler. Diğer contract’lar ve account’lar private fonksiyonlar ve state variable’lar ile etkileşime geçemezler.

Private fonksiyonlar, bir contract içinde kullanılan yardımcı fonksiyonlar gibi belirli bir amaç için kullanılırlar. Private fonksiyonlar, aşağıdaki örnek kodda olduğu gibi private anahtar kelimesi kullanılarak tanımlanabilir:

pragma solidity ^0.8.0;

contract ExampleContract {
    uint private myPrivateVariable = 42;

    function myPublicFunction() public returns (uint) {
        return _myPrivateFunction();
    }

    function _myPrivateFunction() private returns (uint) {
        return myPrivateVariable;
    }
}

Bu örnekte, myPrivateVariable adında bir private state variable ve _myPrivateFunction adında bir private fonksiyon tanımlanmıştır. myPrivateVariable, sadece tanımlandığı contract içinde okunabilir ve yazılabilir. _myPrivateFunction, sadece ExampleContract içindeki public fonksiyonlar tarafından çağrılabilir ve myPrivateVariable’ın değerini döndürür.

Private state variable’lar, belirli bir contract içindeki değişkenler gibi sadece contract içinde kullanılmak için tanımlanır. Örneğin, bir token contract’ında, belirli bir fonksiyon için kullanılan değişkenler private olarak tanımlanabilir. Bu private değişkenler, sadece belirli fonksiyonlar içinde kullanılabileceğinden, contract’ın güvenliği için önemlidir.

Private fonksiyonlar ve state variable’lar, Solidity’de, belirli bir contract içinde kullanılmak üzere tanımlandıkları için, contract’ın durumunu, iç mantığını ve fonksiyonlarını güvende tutmak için kullanılırlar.

Internal fonksiyonlar ve state variable’lar nasıl kullanılır?

Internal fonksiyonlar ve state variable’lar, Solidity’de kullanılan erişilebilirlik özellikleridir ve sadece tanımlandıkları contract ve bu contract’ı miras alan contract’lar tarafından erişilebilirler.

Internal fonksiyonlar, bir contract’ta miras aldığı contract’lar tarafından kullanılması amaçlanan yardımcı fonksiyonlar olarak kullanılırlar. Aşağıdaki örnek kodda, ExampleContract adında bir contract içinde _myInternalFunction adında bir internal fonksiyon tanımlanmıştır:

pragma solidity ^0.8.0;

contract BaseContract {
    uint internal myInternalVariable = 42;

    function _myInternalFunction() internal returns (uint) {
        return myInternalVariable;
    }
}

contract ExampleContract is BaseContract {
    function myPublicFunction() public returns (uint) {
        return _myInternalFunction();
    }
}

Bu örnekte, BaseContract adında bir contract içinde myInternalVariable adında bir internal state variable ve _myInternalFunction adında bir internal fonksiyon tanımlanmıştır. ExampleContract adında bir contract, BaseContract‘ı miras aldığı için, _myInternalFunction, ExampleContract içinde kullanılabilir hale gelir. ExampleContract içindeki public fonksiyonlar, _myInternalFunction fonksiyonunu çağırarak myInternalVariable‘ın değerini döndürebilir.

Internal state variable’lar da bir contract ve bu contract’ı miras alan contract’lar tarafından kullanılabilirler. Bir contract içindeki internal state variable’lar, sadece o contract ve miras alan contract’lar tarafından kullanılabilir. Internal state variable’lar, private state variable’lara benzer şekilde, contract’ın durumunu ve iç mantığını güvende tutmak için kullanılırlar.

Internal fonksiyonlar ve state variable’lar, Solidity’de, contract’ların farklı parçaları arasındaki etkileşimleri güvenli bir şekilde gerçekleştirmek için kullanılırlar. Miras alınan contract’lar arasında, internal fonksiyonlar ve state variable’lar, etkileşimi daha güvenli hale getirir.

external fonksiyonlar nasıl kullanılır?

External fonksiyonlar, Solidity’de kullanılan erişilebilirlik özelliklerinden biridir ve sadece diğer contract’lar ve dış hesaplar tarafından çağrılabilirler. Bu, external fonksiyonların sadece başka contract’lar ve dış hesaplarla etkileşime girmek için kullanılabileceği anlamına gelir.

External fonksiyonlar, Solidity’de genellikle contract’lar arasında etkileşim kurmak için kullanılırlar. Ayrıca, smart contract’ların dış dünya ile etkileşim kurmasına izin veren fonksiyonlar da external fonksiyonlar kullanarak yazılabilir.

External fonksiyonlar, function kelimesinden sonra external anahtar kelimesi ile tanımlanırlar. Aşağıdaki örnekte, sendEther adında bir external fonksiyon tanımlanmıştır:

pragma solidity ^0.8.0;

contract ExampleContract {
    function sendEther(address payable _to) external payable {
        _to.transfer(msg.value);
    }
}

Bu örnekte, ExampleContract adında bir contract içinde sendEther adında bir external fonksiyon tanımlanmıştır. sendEther, contract’ın içindeki state variable’lara erişemez, ancak dış hesaplar ve diğer contract’lar tarafından çağrılabilir. sendEther, bir address payable tipinde _to parametresi ve payable kelimesi ile işaretlenmiş msg.value değişkenine sahiptir. payable kelimesi, external fonksiyonun ether alabileceğini belirtir. Bu fonksiyon, çağrıldığında, msg.value kadar ether gönderir.

External fonksiyonların, state variable’lara erişemez olmaları, güvenliğin sağlanması açısından önemlidir. Bu nedenle, bir external fonksiyonun etkileşim kurabileceği state variable’lar, fonksiyonun parametreleri veya döndürdüğü değerler aracılığıyla belirtilir.

Fonksiyonların erişilebilirlik özellikleri ne zaman kullanılır?

Solidity’de fonksiyonların erişilebilirlik özellikleri, fonksiyonların kimler tarafından çağrılabileceğini belirler ve smart contract’ların güvenliği açısından önemlidir. Fonksiyonlar genellikle public, private, internal ve external olarak tanımlanır.

Public fonksiyonlar, herkes tarafından çağrılabilir ve smart contract’ın dışarıya açık olan fonksiyonları için kullanılır. Bu fonksiyonlar genellikle contract’ın temel işlevlerini içerir ve diğer contract’lar veya dış hesaplar ile etkileşime girmek için kullanılır.

Private fonksiyonlar, sadece tanımlandığı contract içinde çağrılabilirler. Bu fonksiyonlar genellikle smart contract’ın iç işleyişi için kullanılır ve contract’ın dışarıya açık olan fonksiyonları tarafından çağrılır.

Internal fonksiyonlar, yalnızca tanımlandığı contract ve bunu miras alan contract’lar tarafından çağrılabilirler. Bu fonksiyonlar, aynı contract içindeki farklı fonksiyonlar arasındaki işlevleri paylaşmak için kullanılır.

External fonksiyonlar, yalnızca diğer contract’lar ve dış hesaplar tarafından çağrılabilirler. Bu fonksiyonlar, smart contract’ların dış dünya ile etkileşim kurmasına izin verir.

Fonksiyonların erişilebilirlik özellikleri, smart contract’ların güvenliği açısından önemlidir. Public fonksiyonlar, dış dünya ile etkileşim kurmak için kullanıldığından, fonksiyonun parametrelerinin ve geri dönüş değerlerinin doğru şekilde doğrulanması önemlidir. Private fonksiyonlar, sadece smart contract’ın iç işleyişi için kullanıldığından, bu fonksiyonların iç işleyişi diğer contract’lar tarafından görülemez. Internal fonksiyonlar, contract’ın içinde farklı fonksiyonlar arasında paylaşılabilir işlevler için kullanıldığından, contract’ın iç işleyişine katkıda bulunur. External fonksiyonlar, diğer contract’lar ve dış hesaplar tarafından kullanıldığından, bu fonksiyonların state variable’lara erişim yetkileri ve parametreleri doğru şekilde doğrulanmalıdır.

State variable’ların erişilebilirlik özellikleri ne zaman kullanılır?

Solidity’de state variable’lar, smart contract’ların durumunu ve verilerini saklamak için kullanılır. State variable’ların erişilebilirlik özellikleri, smart contract’ların güvenliği açısından önemlidir. State variable’lar genellikle public, private ve internal olarak tanımlanabilirler.

Public state variable’lar, smart contract’ın dışarıya açık olan state variable’larıdır ve diğer contract’lar veya dış hesaplar tarafından okunabilir veya yazılabilirler.

Private state variable’lar, sadece tanımlandığı contract içinde kullanılabilirler ve diğer contract’lar veya dış hesaplar tarafından okunamaz veya yazılamaz.

Internal state variable’lar, yalnızca tanımlandığı contract ve miras alan contract’lar tarafından kullanılabilirler.

State variable’ların erişilebilirlik özellikleri, smart contract’ların güvenliği açısından önemlidir. Public state variable’lar, smart contract’ın dışarıya açık olan state variable’larıdır, bu nedenle, bu state variable’ların değiştirilmesi, doğru şekilde doğrulanmalıdır. Private state variable’lar, sadece smart contract’ın iç işleyişi için kullanıldığından, bu state variable’ların güvenliği diğer contract’lar tarafından daha iyi korunur. Internal state variable’lar, contract’ın içinde farklı fonksiyonlar arasında paylaşılan değişkenler için kullanılır ve bu değişkenlerin güvenliği, contract’ın içinde kullanıldıkları fonksiyonlar tarafından doğru şekilde kontrol edilmelidir.

Genel olarak, state variable’ların erişilebilirlik özellikleri, smart contract’ların güvenliği için önemlidir ve doğru şekilde belirlenmeli ve kullanılmalıdır. Public state variable’lar, dış dünya ile etkileşim kurmak için kullanılırken, private state variable’lar sadece smart contract’ın iç işleyişi için kullanılır. Internal state variable’lar, contract’ın içindeki farklı fonksiyonlar arasında paylaşılan değişkenler için kullanılır ve state variable’ların güvenliği, kullanıldıkları fonksiyonlar tarafından doğru şekilde kontrol edilmelidir.

Sonuç Bağlamı

Solidity’de erişilebilirlik (visibility), smart contract’lar için oldukça önemli bir konudur. Fonksiyonlar ve state variable’lar, farklı erişim düzeyleriyle tanımlanabilir. Bu düzeyler, smart contract’ların diğer contract’lar ve hesaplarla nasıl etkileşime girdiğini kontrol etmelerine olanak tanır.

Fonksiyonlar için public, private, internal ve external gibi erişim düzeyleri bulunurken, state variable’lar için public, private ve internal erişim düzeyleri tanımlanabilir. Public fonksiyonlar ve state variable’lar, smart contract’ların dışarıya açık olan bileşenleridir ve diğer contract’lar veya dış hesaplar tarafından erişilebilirler. Private fonksiyonlar ve state variable’lar, sadece tanımlandığı smart contract içinde kullanılabilirler ve dış dünyaya kapalıdırlar. Internal fonksiyonlar ve state variable’lar, yalnızca tanımlandığı contract ve miras alan contract’lar tarafından kullanılabilirler. External fonksiyonlar, yalnızca diğer contract’lar ve hesaplar tarafından kullanılabilirler.

State variable’ların erişilebilirlik özellikleri, smart contract’ların güvenliği açısından son derece önemlidir. Public state variable’lar, smart contract’ın dışarıya açık olan bileşenleridir ve bu nedenle doğru şekilde doğrulanmalıdırlar. Private state variable’lar, sadece smart contract’ın iç işleyişi için kullanılır ve diğer contract’lar veya dış hesaplar tarafından erişilemezler. Internal state variable’lar, yalnızca smart contract’ın içindeki farklı fonksiyonlar arasında paylaşılan değişkenler için kullanılır ve güvenlikleri doğru şekilde kontrol edilmelidir.

Sonuç olarak, Solidity’de erişilebilirlik özelliklerinin doğru şekilde kullanılması, smart contract’ların güvenliğini sağlamak için önemlidir. Fonksiyonlar ve state variable’lar, farklı erişim düzeyleriyle tanımlanarak, smart contract’ların diğer contract’lar ve hesaplarla nasıl etkileşime girdiği kontrol edilir. Smart contract’ların güvenliği, fonksiyonlar ve state variable’ların erişim düzeylerinin doğru şekilde belirlenmesi ve kullanılması ile sağlanır.

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