Solidity(view, pure)

2024. 11. 24. 20:18BlockChain

반응형

Solidity에서 viewpure 함수는 상태를 변경하지 않는 함수로, 스마트 컨트랙트에서 데이터 조회나 계산에 사용됩니다. 두 가지 키워드는 함수가 상태를 다루는 방식에 따라 사용됩니다.


1. view 함수

  • 상태를 읽을 수 있지만, 변경하지는 않는 함수에 사용합니다.
  • 블록체인의 상태(예: 컨트랙트 내 변수)를 조회할 때 적합합니다.
  • 예를 들어, 저장된 값을 반환하거나 블록체인 상태를 읽기만 할 경우 사용합니다.

예제

pragma solidity ^0.8.0;

contract Example {
    uint256 public storedValue = 10;

    // view 함수: 상태 변수 storedValue를 읽기만 합니다.
    function getValue() public view returns (uint256) {
        return storedValue;
    }
}
  • 여기서 getValue 함수상태 변수 storedValue를 읽기만 하기 때문에 view를 사용합니다.
  • 상태를 읽기만 하므로 가스 비용이 발생하지 않습니다.(트랜잭션으로 호출하지 않는 경우).

2. pure 함수

  • 상태를 읽거나 변경하지 않는 함수에 사용합니다.
  • 블록체인의 상태를 전혀 참조하지 않고, 입력값을 기반으로 계산만 수행할 때 적합합니다.

예제

pragma solidity ^0.8.0;

contract Example {
    // pure 함수: 상태를 읽거나 변경하지 않고, 입력값으로만 계산합니다.
    function addNumbers(uint256 a, uint256 b) public pure returns (uint256) {
        return a + b;
    }
}
  • addNumbers 함수는 상태 변수에 접근하지 않고 입력값(a, b)으로만 계산을 수행하기 때문에 pure를 사용합니다.
  • 블록체인의 상태와는 완전히 독립적입니다.

view와 pure의 차이

특징 view pure
상태 읽기 가능 불가능
상태 변경 불가능 불가능
사용 목적 상태 변수나 블록체인 데이터를 조회 입력값 기반 계산 수행

view와 pure 선택 기준

  1. 상태 변수를 읽어야 한다면?
    view 사용 (예: 저장된 데이터를 반환할 때.)
  2. 상태 변수에 접근하지 않고, 입력값으로만 계산해야 한다면?
    pure 사용 (예: 수학적 계산(덧셈, 곱셈 등)만 수행할 때.)

이처럼 함수의 역할에 따라 적절한 키워드를 사용해 효율적인 스마트 컨트랙트를 작성할 수 있습니다.

반응형

'BlockChain' 카테고리의 다른 글

메이커다오(MakerDAO)와 다이(DAI)  (0) 2024.11.26
Solidity(memory)  (0) 2024.11.25
Web3 지갑의 개념과 분류  (0) 2024.11.23
자산 토큰화란  (4) 2024.11.22
Web3.0  (1) 2024.11.21