1. 이벤트

- 기능 : 상태변수 value를 변경하는 함수에, 이 변경 사항을 블록체인 로그에 기록하기 위해 사용됩니다.
- emit 이벤트명(값)을 사용해 트랜잭션 로그에 기록합니다.
- 이벤트는 서버 없이 데이터를 추적하기 위해 사용됩니다.
2. 접근 제어자

- modifier는 특정 조건을 검사하는 코드입니다.
- require(msg.sender == owner) → 트랜잭션을 실행한 사람이 배포자와 같아야 한다는 뜻입니다.
- _; → modifier 통과 시, 실제 함수 본문을 실행하도록 허락해 줍니다.
- require : 조건 실패 시 트랜잭션 자동 취소, 가스 소모를 최소화해 줍니다.
- modifier는 접근 권한 부여, 반복 코드 최소화, 보안 강화를 위해 반드시 사용해야 합니다.
3. 이더 송수신

(1) 이더 수신
- 컨트랙트가 직접 이더를 수신할 때 호출되는 특별한 함수입니다.
- payable : 이더를 받을 수 있도록 허용합니다.

(2) 이더 송금
- msg.value : 트랜잭션에 첨부된 이더의 양
- require(msg.value > 0) → 0 이더 전송 방지를 위해 반드시 require 검사 필요합니다.
- payable(_to). transfer(msg.value) → payable 타입으로 변환 후 해당 주소로 송금 가능합니다.
4. 컨트랙트 잔액 조회

- address(this) → 현재 컨트랙트의 주소를 뜻합니다.
- . balance → 해당 주소가 가진 이더 잔액을 불러오니다.
- view 함수 → 상태 읽기만 가능한 대신, 가스 소모 없습니다.
5. 출금 함수

- owner만 호출 가능합니다. (modifier 적용).
- address(this). balance → 컨트랙트가 가진 모든 이더를 owner에게 전송합니다.
- payable(owner). transfer(...) → 송금 실행하는 기능입니다.
6. 마무리
스마트 컨트랙트 개발은 단순히 코드를 작성하는 것을 넘어, 보안과 정확성을 함께 고려해야 합니다. 그러기에 접근 제어자를 활용하여 보안성을 꼭 신경 써야 합니다. 또한 불필요한 가스비가 생기지 않기지 않게 오류 처리와 권한설정 또한 꼼꼼히 해주어야 합니다.
'공부 내용 정리' 카테고리의 다른 글
| ERC-20이란? (0) | 2025.07.04 |
|---|---|
| Soliduty 문법 4 - Vault와 Bank 개발하기 (0) | 2025.06.30 |
| Solidity DataType 에 대해 알아보자 2 (0) | 2025.06.26 |
| Solidity DataType 에 대해 알아보자 (0) | 2025.06.26 |
| 솔리디티 문법에 대해 배워보자! (0) | 2025.06.20 |