
아키텍처
Openzeppelin & Compound Governance Part 2
두줄요약
OpenZeppelin의 ERC20Votes와 Governor 모듈로 온체인 거버넌스를 구성하는 방식을 소개했습니다. 위임·정족수·타임락 설정과 Wizard 기반 컨트랙트 생성을 설명합니다.
구조와 흐름
- ERC20Votes의 체크포인트 기반 과거 투표권 조회와 중복 투표 방지
- delegate·delegateBySig를 통한 직접 위임 및 서명 기반 투표권 위임
- Governor에 Votes·CountingSimple·TimelockController·QuorumFraction 모듈 조합
선택 이유
- 제안 데이터를 저장하지 않고 인자 해시 기반 ID를 저장하는 가스비 절감 구조
- 기존 토큰을 거버넌스 기능 토큰으로 교환할 수 있는 ERC20Wrapper 제공
- Wizard를 통한 투표 지연·기간·정족수·타임락·업그레이드 옵션 설정
주의할 점
- ERC20Votes 토큰 보유만으로는 투표권 미집계, delegate 호출 필요
- 투표 지연과 투표 기간의 blockNumber 기준 설정
- ERC20Votes와 ERC20VotesComp 간 최대 발행량 및 내부 변수 타입 차이
적용해볼 점
- 제안 임계치와 정족수의 비율·절대값 기준 선택
- 투표 종료 후 실행 지연을 위한 TimelockController 결합
- OpenZeppelin Wizard 기반 거버넌스 컨트랙트 초기 구성



