3. 계약 구조, 상태 변수 및 모디파이어
효율적이고 안전한 계약은 명확한 데이터 관리 구조와 엄격한 접근 제어에 달려 있습니다. 특히 Modifier는 중복 코드를 줄이고 보안을 강화합니다.
3.1. Mapping과 Struct
복잡한 데이터를 구조화하고 관리하기 위해 Mapping과 Struct를 사용합니다.
struct User {
uint256 id;
address userAddress;
}
mapping(address => User) public users; // 주소를 User 구조체에 매핑
3.2. 함수 모디파이어 (Modifiers)
모디파이어는 함수 실행 전후에 코드를 실행하여 특정 조건을 검사하는 데 사용됩니다. 가장 일반적인 예는 onlyOwner입니다.
address public owner;
constructor() {
owner = msg.sender;
}
modifier onlyOwner() {
require(msg.sender == owner, "Only the owner can call this function.");
_; // 이 위치에 원래 함수 코드가 삽입됩니다.
}
function withdrawFunds() public onlyOwner {
// 자금 인출 로직
}
3.3. View 및 Pure 함수
상태 변수를 읽기만 하고 수정하지 않는 함수는 view, 상태 변수를 읽지도 쓰지도 않는 함수는 pure로 선언하여 가스 비용을 절약합니다.