블록체인 학습
0 XP

pure 함수

pure 함수는 상태 변수를 읽지도 쓰지도 않는 함수입니다. 오직 매개변수와 함수 내부의 지역 변수만으로 계산해 결과를 돌려줍니다.

블록체인의 상태와 완전히 분리된 "순수한 계산기"라고 생각하면 됩니다. 수학 계산, 단위 변환, 문자열 가공 같은 로직에 적합합니다.

pure 의 규칙

pure 는 view 보다 더 엄격합니다. 상태 변수를 쓰는 것은 물론, 읽는 것조차 금지됩니다. block.timestamp, msg.sender, address(this).balance 같은 전역·체인 정보를 읽어도 안 됩니다. 사용할 수 있는 것은 매개변수와 지역 변수, 그리고 다른 pure 함수뿐입니다.

function multiply(uint256 a, uint256 b) public pure returns (uint256) {
    return a * b;
}

view 와 pure 비교

세 가지 상태변경성을 표로 정리하면 한눈에 들어옵니다.

키워드상태 읽기상태 쓰기호출 시 가스
(없음)가능가능트랜잭션 필요
view가능불가단독 조회는 무료
pure불가불가단독 조회는 무료

실전 예시

pure 함수는 입력이 같으면 출력도 항상 같습니다. 이런 예측 가능성 덕분에 테스트하기 쉽고, 라이브러리의 유틸리티 함수로 자주 쓰입니다.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
 
contract MathLib {
    // 상태와 무관하게 입력값만으로 계산하므로 pure 입니다.
    function multiply(uint256 a, uint256 b) public pure returns (uint256) {
        return a * b;
    }
 
    // 백분율 계산: 외부 상태를 전혀 건드리지 않습니다.
    function percentOf(uint256 value, uint256 percent) public pure returns (uint256) {
        return (value * percent) / 100;
    }
}

헷갈릴 때는 "이 함수가 컨트랙트 밖의 데이터를 읽거나 쓰는가?"를 스스로 물어보세요. 둘 다 아니라면 pure, 읽기만 하면 view, 쓰면 키워드 없음입니다.

Code Editor
에디터를 불러오는 중...
실행 결과

Run 버튼을 눌러 코드를 실행하세요.