2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

솔리디티에서 'view'와 'pure' 함수의 차이는 무엇인가요?

_____
Q1: 솔리디티에서 'view' 함수란 무엇인가요?
A1: 'view' 함수는 상태 변수(state variables)를 읽을 수 있지만, 상태를 변경하지 않는 함수입니다. 즉, 블록체인의 상태를 변경하지 않고 읽기 작업만 수행하므로 가스 비용 없이 호출할 수 있습니다.

---

Q2: 솔리디티에서 'pure' 함수란 무엇인가요?
A2: 'pure' 함수는 상태 변수는 물론, 블록체인에 저장된 어떤 상태도 읽지 않는 함수입니다. 순수하게 입력값만을 가지고 계산을 수행하며, 외부 상태나 계약 상태에 의존하지 않습니다.

---

Q3: 'view' 함수와 'pure' 함수의 가장 큰 차이는 무엇인가요?
A3: 'view' 함수는 상태 변수를 읽을 수 있지만, 'pure' 함수는 상태 변수뿐만 아니라 블록체인 상태도 전혀 읽지 않는다는 점입니다. 즉, 'view'는 읽기만, 'pure'는 상태값에 전혀 의존하지 않는 계산만 수행합니다.

---

Q4: 함수에서 상태 변수를 읽지만 변경하지 않는 경우 어떤 키워드를 사용하나요?
A4: 이런 경우 함수는 'view'로 선언해야 합니다.
---

Q5: 함수가 입력 매개변수만을 가지고 계산 후 결과를 반환하는 경우, 어떤 키워드를 사용하는 것이 적합한가요?
A5: 상태를 읽거나 변경하지 않고 입력값만으로 계산하는 경우는 'pure' 함수를 사용해야 합니다.

---

Q6: 'view' 또는 'pure' 함수에서 상태를 변경하려 하면 어떤 일이 발생하나요?
A6: 컴파일러가 오류를 발생시키며, 상태 변경은 허용되지 않습니다.

---

Q7: 'view' 함수와 'pure' 함수는 가스 비용이 드나요?
A7: 외부 호출 시(트랜잭션이 아닌, call 호출)에는 가스가 들지 않지만, 트랜잭션으로 호출하면 가스가 소모될 수 있습니다. 다만 상태를 변경하지 않으므로 일반적인 쓰기 함수보다 비용이 적습니다.

---

Q8: 'view'와 'pure' 함수는 언제 사용하는 것이 좋은가요?
A8: 가능하면 순수한 계산은 'pure'로, 상태 읽기는 'view'로 명확히 구분해 선언하여 코드 가독성과 오류 방지, 그리고 정확한 함수 의도를 나타내는 것이 좋습니다.
Solidity는 이더리움 블록체인에서 스마트 계약을 작성하기 위한 프로그래밍 언어입니다.

Solidity에서 함수는 다양한 유형으로 정의될 수 있으며, 그 중에서도 `view`와 `pure` 함수는 상태 변화와 데이터 접근 방식에 따라 구분됩니다.

이 두 가지 함수의 차이를 이해하는 것은 스마트 계약을 작성할 때 매우 중요합니다.

1. `view` 함수 `view` 함수는 상태 변수를 읽을 수 있지만, 상태를 변경할 수는 없는 함수입니다.

즉, `view` 함수는 스마트 계약의 상태를 조회할 수 있지만, 그 상태를 수정하는 작업은 수행하지 않습니다.

이러한 특성 덕분에 `view` 함수는 블록체인에서 데이터를 읽는 데 사용되며, 호출 시 가스 비용이 발생하지 않습니다(가스 비용은 트랜잭션을 블록체인에 기록할 때 발생). 예시 ```solidity pragma solidity ^0.8.0; contract Example { uint256 public value; constructor(uint256 _value) { value = _value; } function getValue() public view returns (uint25

6) { return value; } } ``` 위의 예시에서 `getValue` 함수는 `view`로 정의되어 있으며, `value` 상태 변수를 읽어 반환합니다.

이 함수는 상태를 변경하지 않기 때문에 안전하게 호출할 수 있습니다.



2. `pure` 함수 `pure` 함수는 상태 변수를 읽거나 수정할 수 없는 함수입니다.

즉, `pure` 함수는 스마트 계약의 상태와 무관하게 작동하며, 오직 입력된 매개변수만을 사용하여 결과를 반환합니다.

이러한 특성 덕분에 `pure` 함수는 계산을 수행하거나 데이터를 처리하는 데 유용합니다.

`pure` 함수도 호출 시 가스 비용이 발생하지 않습니다.

예시 ```solidity pragma solidity ^0.8.0; contract Example { function add(uint256 a, uint256 b) public pure returns (uint25

6) { return a + b; } } ``` 위의 예시에서 `add` 함수는 `pure`로 정의되어 있으며, 두 개의 매개변수를 받아서 그 합을 반환합니다.

이 함수는 계약의 상태와는 전혀 관련이 없으며, 오직 입력값에만 의존합니다.



3. 주요 차이점 요약 - 상태 접근 : - `view`: 상태 변수를 읽을 수 있음. - `pure`: 상태 변수를 읽거나 수정할 수 없음. - 가스 비용 : - 두 함수 모두 호출 시 가스 비용이 발생하지 않지만, `view` 함수는 블록체인 상태를 조회하는 데 사용되므로, 실제로 블록체인에서 호출될 때는 가스 비용이 발생할 수 있습니다.

반면, `pure` 함수는 상태와 무관하게 작동하므로, 가스 비용이 발생하지 않습니다.

- 용도 : - `view`: 상태를 조회하는 데 사용. - `pure`: 입력값에 기반한 계산이나 처리를 수행하는 데 사용. 결론 `view`와 `pure` 함수는 Solidity에서 중요한 역할을 하며, 각각의 특성을 이해하는 것은 스마트 계약을 효율적으로 작성하는 데 필수적입니다.

`view` 함수는 상태를 읽는 데 유용하고, `pure` 함수는 상태와 무관한 계산을 수행하는 데 적합합니다.

이러한 함수들을 적절히 활용하여 스마트 계약의 성능과 안전성을 높일 수 있습니다.

작성자: 김유진 [비회원] | 작성일자: 1년 전 2024-11-22 19:32:06
조회수: 141 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.