fullstack

[Solidity] view, pure 함수

Web3/Solidity

contract를 만들때 중요하게 생각해야 하는 것 중 하나가 가스비용 최적화입니다

블록체인에 데이터를 쓸 때 마다 가스비용이 들기 때문에 이를 최소화 하는게 중요합니다

 

이 때 필요한 것이 view 함수입니다

view 함수는 function 밖의 변수를 읽기만 할 뿐, 변경할 수 없습니다

따라서 view 함수를 쓰는 것은 블록체인에 어떤 트랜젝션도 만들지 않는다는 것을 의미 합니다

 

view 함수는 사용자에 의해 외부에서 호출되었을 경우 가스를 전혀 소모하지 않습니다

(내부에서 다른 함수에 의해 호출되었을 경우 가스를 소모할 수 있음)

그래서 여기에 접근제어자 중 외부에서만 호출할 수 있게하는 exturnal을 같이 사용한다면

이 함수는 가스비용을 절대 소모하지 않는 함수가 됩니다

 

사용방법은 다음 예시와 같습니다

 

function func() exturnal view {
	...
}

 

pure 함수는 view 함수보다 조금 더 빡센(?) 함수입니다

view 함수가 읽기만 가능하다면, pure 함수는 읽기 조차도 불가능 합니다