Solidity(view, pure)
2024. 11. 24. 20:18ㆍBlockChain
반응형
Solidity에서 view와 pure 함수는 상태를 변경하지 않는 함수로, 스마트 컨트랙트에서 데이터 조회나 계산에 사용됩니다. 두 가지 키워드는 함수가 상태를 다루는 방식에 따라 사용됩니다.
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 선택 기준
- 상태 변수를 읽어야 한다면?
→ view 사용 (예: 저장된 데이터를 반환할 때.) - 상태 변수에 접근하지 않고, 입력값으로만 계산해야 한다면?
→ 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 |