Pausable — 스마트 컨트랙트 긴급 중단 기능

스마트 컨트랙트를 운영하다 보면 보안 사고, 버그 발생, 운영상의 문제 등으로 인해 컨트랙트를 일시적으로 중단(Pause) 해야 하는 상황이 생길 수 있습니다.

이때 OpenZeppelin에서 제공하는 Pausable 모듈을 사용하면, 특정 조건 하에 컨트랙트를 긴급 정지(Emergency Stop) 시킬 수 있는 메커니즘을 쉽게 구현할 수 있습니다.

해당 기능은 특정 역할(Pauser) 을 가진 계정만 사용할 수 있으며, 정상 운영 상태로 되돌리는 것도 가능합니다.


핵심 요약


사용 예시

pragma solidity ^0.8.0;

import "@openzeppelin/contracts/security/Pausable.sol";

contract MyContract is Pausable {
    function normalFunction() public whenNotPaused {
        // 평상시 실행 가능한 함수
    }

    function emergencyOnly() public whenPaused {
        // 중단 상태에서만 실행 가능한 함수
    }

    function triggerPause() public onlyOwner {
        _pause(); // Pauses the contract
    }

    function triggerUnpause() public onlyOwner {
        _unpause(); // Resumes the contract
    }
}

주요 구성 요소

Modifier

Modifier 설명
whenNotPaused() 컨트랙트가 정지되지 않았을 때만 실행 가능
whenPaused() 컨트랙트가 정지된 상태일 때만 실행 가능

함수 목록