Solidität - Variablen

Solidity unterstützt drei Arten von Variablen.

  • State Variables - Variablen, deren Werte dauerhaft in einem Vertragsspeicher gespeichert sind.

  • Local Variables - Variablen, deren Werte vorhanden sind, bis die Funktion ausgeführt wird.

  • Global Variables - Im globalen Namespace sind spezielle Variablen vorhanden, mit denen Informationen zur Blockchain abgerufen werden.

Solidity ist eine statisch typisierte Sprache. Dies bedeutet, dass der Status oder der lokale Variablentyp während der Deklaration angegeben werden muss. Jede deklarierte Variable hat immer einen Standardwert, der auf ihrem Typ basiert. Es gibt kein Konzept von "undefiniert" oder "null".

Zustandsvariable

Variablen, deren Werte dauerhaft in einem Vertragsspeicher gespeichert sind.

pragma solidity ^0.5.0;
contract SolidityTest {
   uint storedData;      // State variable
   constructor() public {
      storedData = 10;   // Using State variable
   }
}

Lokale Variable

Variablen, deren Werte nur innerhalb einer Funktion verfügbar sind, in der sie definiert sind. Funktionsparameter sind für diese Funktion immer lokal.

pragma solidity ^0.5.0;
contract SolidityTest {
   uint storedData; // State variable
   constructor() public {
      storedData = 10;   
   }
   function getResult() public view returns(uint){
      uint a = 1; // local variable
      uint b = 2;
      uint result = a + b;
      return result; //access the local variable
   }
}

Beispiel

pragma solidity ^0.5.0;
contract SolidityTest {
   uint storedData; // State variable
   constructor() public {
      storedData = 10;   
   }
   function getResult() public view returns(uint){
      uint a = 1; // local variable
      uint b = 2;
      uint result = a + b;
      return storedData; //access the state variable
   }
}

Führen Sie das obige Programm mit den im Kapitel Solidity First Application beschriebenen Schritten aus .

Ausgabe

0: uint256: 10

Globale Variablen

Hierbei handelt es sich um spezielle Variablen, die im globalen Arbeitsbereich vorhanden sind und Informationen zu den Blockchain- und Transaktionseigenschaften enthalten.

Name Kehrt zurück
blockhash (uint blockNumber) gibt (bytes32) zurück Hash des angegebenen Blocks - funktioniert nur für 256 neueste, ausgenommen aktuelle Blöcke
block.coinbase (Adresse zahlbar) Aktuelle Block Miner-Adresse
block.difficulty (uint) Aktuelle Blockschwierigkeit
block.gaslimit (uint) Aktuelle Blockgasbegrenzung
block.number (uint) Aktuelle Blocknummer
block.timestamp (uint) Aktueller Blockzeitstempel als Sekunden seit der Unix-Epoche
gasleft () gibt zurück (uint256) Restgas
msg.data (Bytes calldata) Komplette Anrufdaten
msg.sender (Adresse zahlbar) Absender der Nachricht (aktueller Anrufer)
msg.sig (bytes4) Die ersten vier Bytes der Aufrufdaten (Funktionskennung)
msg.value (uint) Anzahl der mit der Nachricht gesendeten Wei
jetzt (uint) Aktueller Blockzeitstempel
tx.gasprice (uint) Gaspreis der Transaktion
tx.origin (Adresse zahlbar) Absender der Transaktion

Namen von Solidity-Variablen

Beachten Sie beim Benennen Ihrer Variablen in Solidity die folgenden Regeln.

  • Sie sollten keines der reservierten Solidity-Schlüsselwörter als Variablennamen verwenden. Diese Schlüsselwörter werden im nächsten Abschnitt erwähnt. Beispielsweise sind break- oder boolesche Variablennamen ungültig.

  • Namen von Soliditätsvariablen sollten nicht mit einer Ziffer (0-9) beginnen. Sie müssen mit einem Buchstaben oder einem Unterstrich beginnen. Beispielsweise ist 123test ein ungültiger Variablenname, _123test jedoch ein gültiger.

  • Bei Namen von Soliditätsvariablen wird zwischen Groß- und Kleinschreibung unterschieden. Zum Beispiel sind Name und Name zwei verschiedene Variablen.