솔리디티에서 'view'와 'pure' 함수의 차이는 무엇인가요?
_____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에서 함수는 다양한 유형으로 정의될 수 있으며, 그 중에서도 `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
조회수: 141 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.