흔자
article thumbnail
반응형

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를 사용하면 컨트랙트의 유지보수성을 향상할 수 있다.

반응형
profile

흔자

@heun_n

즐겁게 개발하고 싶은 사람입니다.