블록체인 (Block Chain)/이더리움

[솔리디티 입문] 4. 상태 변수

gsroot 2023. 6. 16. 15:34
728x90
반응형
SMALL

솔리디티 스마트 컨트랙트에서 상태 변수는 컨트랙트의 영구적인 저장소인 스토리지(Storage)에 저장되는 변수입니다. 이러한 상태 변수들은 컨트랙트의 상태를 관리하며, 블록체인에 기록되어 외부에서 조회하거나 변경할 수 있습니다. 이 글에서는 상태 변수의 특징 및 사용 방법에 대해 알아봅시다.

상태 변수 선언 및 초기화

상태 변수는 컨트랙트 내부에서 선언되며, 컨트랙트가 배포될 때 초기화됩니다. 상태 변수는 다양한 타입으로 선언할 수 있으며, 초깃값을 명시적으로 지정할 수 있습니다.

pragma solidity ^0.8.0;

contract StateVariablesExample {
    uint public counter; // 초깃값을 지정하지 않으면 0으로 초기화됩니다.
    string public message = "Hello, World!";
    address public owner;

    constructor() {
        owner = msg.sender;
    }
}

상태 변수의 가시성

상태 변수는 가시성을 지정하여 외부에서의 접근을 제한할 수 있습니다. 가시성은 public, internal, private 중 하나를 선택할 수 있습니다.

  • public: 외부에서 상태 변수를 읽을 수 있으며, 컴파일러는 자동으로 getter 함수를 생성합니다.
  • internal: 상태변수가 선언된 컨트랙트 및 상속된 컨트랙트에서만 접근할 수 있습니다.
  • private: 상태변수가 선언된 컨트랙트에서만 접근할 수 있습니다.
pragma solidity ^0.8.0;

contract VisibilityExample {
    uint public publicVar = 1;
    uint internal internalVar = 2;
    uint private privateVar = 3;

    function getPrivateVar() public view returns (uint) {
        return privateVar;
    }
}

상태 변수의 수정

상태 변수는 컨트랙트 내의 함수에서 변경할 수 있습니다. 상태 변수가 변경되면 변경된 값이 블록체인에 기록되며, 이전의 상태는 영구적으로 덮어쓰여집니다.

pragma solidity ^0.8.0;

contract Counter {
    uint public count;

    function increment() public {
        count += 1;
    }

    function decrement() public {
        count -= 1;
    }
}
728x90
반응형
LIST