Reference
OpenZeppelin | Contracts
OpenZeppelin Contracts helps you minimize risk by using battle-tested libraries of smart contracts for Ethereum and other blockchains. It includes the most used implementations of ERC standards.
www.openzeppelin.com
GitHub - OpenZeppelin/openzeppelin-contracts: OpenZeppelin Contracts is a library for secure smart contract development.
OpenZeppelin Contracts is a library for secure smart contract development. - GitHub - OpenZeppelin/openzeppelin-contracts: OpenZeppelin Contracts is a library for secure smart contract development.
github.com
오픈제플린 라이브러리 지원 기능
오픈제플린은 ERC20 토큰을 구현하는 데 유용한 다양한 기능을 제공한다. 그중에서도 가장 일반적인 기능 외에 다음과 같은 기능을 포함하고 있다.
FEATURES
- Mintable (채굴 가능) : 이 기능은 새로운 토큰을 발행할 수 있는 권한을 토큰 계약의 소유자에게 부여한다. 소유자는 필요에 따라 새로운 토큰을 생성하여 토큰 공급량을 조절할 수 있다.
- Burnable (소각 가능) : 이 기능은 토큰 소유자가 자신이 보유한 토큰을 소각할 수 있는 권한을 부여한다. 이는 토큰 공급량을 조절하고 토큰 가치를 유지하는 데 도움이 된다.
- Pausable (일시 중지 가능) : 이 기능은 토큰 거래를 일시적으로 중지할 수 있는 권한을 토큰 계약의 소유자에게 부여한다. 이 기능은 계약에 버그나 취약점이 발견되었거나 비상 상황이 발생할 때 사용될 수 있습니다.
- Permit (허가) : 이 기능은 ERC20 토큰 거래를 수행하는 데 필요한 서명을 생성하는 데 사용된다. 이 기능은 ERC20 표준의 기존 기능을 확장하여 EIP-2612에 따라 구현된다.
- Votes (투표) : 이 기능은 토큰 소유자가 투표를 할 수 있도록 하는 기능이다. 예를 들어, 회사 결정에 대한 투표나 프로토콜 업그레이드에 대한 투표 등을 할 수 있다.
- Flash Minting (플래시 채굴) : 이 기능은 토큰의 일부를 대출 받지 않고도 사용할 수 있는 토큰을 발행하는 기능이다. 이 기능은 토큰 공급량을 늘리지 않고도 특정 시간 동안 토큰을 빌릴 수 있게 해 준다.
- Snapshots : 이 기능은 특정 시점에 토큰 계정의 잔액 스냅샷을 캡처하고 이전 상태로 돌아갈 수 있는 기능을 제공한다. 이를 통해 스마트 계약의 역사적 변화를 추적하고 오류를 디버깅할 수 있다.
ACCESS CONTROL
- Ownable: 스마트 컨트랙트에 소유자를 할당하고 오직 소유자만이 일부 함수를 호출할 수 있도록 하는 기능을 제공한다. 즉, Ownable을 상속받은 스마트 계약은 소유자에 의해 소유된다. Ownable을 사용하는 경우, 오직 소유자만이 특정 함수를 호출하거나 계약을 일부분 수정할 수 있으며 스마트 컨트랙트의 안전성을 보장하기 위해 사용된다.
- Roles는 스마트 계약에서 더 다양한 수준의 접근 제어를 구현하는 데 사용된다. Roles는 계약에서 미리 정의된 역할을 나타내며 각 역할에는 특정 작업을 수행할 수 있는 사용자 목록이 포함된다.
Ownable은 단순히 스마트 계약의 소유자를 정의하고 Roles는 더 복잡한 접근 제어 시스템을 구현하는 데 사용된다. 둘 다 접근 제어를 구현하는 데 유용하며 컨트랙트의 목적과 요구 사항에 따라 적절한 방식을 선택해야 한다.
UPGRADEABILITY
업그레이드 가능한 기능을 제공하기 위해 업그레이드 가능성이 내장된 ERC20 토큰 컨트랙트를 제공한다. 이 컨트랙트는 Transparent Proxy와 Upgradeable Proxy (UUPS)로 구분된다.
- Transparent Proxy는 컨트랙트 코드를 바로 업그레이드할 수 있으며 이 경우 새로운 버전의 컨트랙트를 배포하고 모든 이전 컨트랙트 주소를 참조하는 모든 코드를 변경해야 한다.
- Upgradeable Proxy(UUPS)는 새로운 버전의 컨트랙트를 배포하고 이전 컨트랙트의 주소를 참조하는 모든 코드를 변경할 필요 없이 업그레이드할 수 있다. UUPS를 사용하면 기존 컨트랙트의 데이터와 상태를 새로운 컨트랙트로 마이그레이션 할 수 있습니다.
Transparent Proxy는 새로운 컨트랙트 주소를 참조하는 모든 코드를 변경해야 하기 때문에 컨트랙트의 업그레이드가 복잡할 수 있지만 UUPS를 사용하면 기존 컨트랙트와 호환되는 새로운 컨트랙트를 배포하고 데이터와 상태를 전이시킬 수 있어서 업그레이드가 더욱 쉬워진다. 따라서 UUPS를 사용하면 컨트랙트의 유지보수성을 향상할 수 있다.
'Blockchain > Ethereum' 카테고리의 다른 글
[이더리움] 이더리움 클래식의 기술적인 장점은 뭐가 있을까? (0) | 2023.02.22 |
---|---|
[이더리움] TypeScript와 OpenZeppelin을 활용하여 나만의 ERC20 이더리움 토큰을 배포해보기 (0) | 2023.02.21 |
[이더리움] The DAO 해킹 사건으로 보는 이더리움과 이더리움 클래식의 차이 (0) | 2023.02.20 |
[이더리움] 이더리움 레이어 2 솔루션 L2 정리 (0) | 2023.02.14 |
[이더리움] 이더리움 개발자를 위한 도구 목록 (0) | 2023.02.13 |