AVATAR (AVA) Whitepaper

v1.0.0

Transparent Token Economy with On-Chain Vesting

TokenAVATAR
SymbolAVA
Supply10,000,000,000
StandardERC-20
NetworkSepolia

9. Security

9.1 보안 접근 방식

AVA 토큰 컨트랙트는 OpenZeppelin의 검증된 라이브러리를 기반으로 구축되며, 다층 보안 아키텍처를 적용합니다.

9.2 리스크 요인

리스크등급대응
MultiSig 키 분실High다중 서명자 구성, 키 백업 절차
스마트 컨트랙트 취약점High외부 보안 감사, 테스트넷 검증
업그레이드 오류LowTimelockController 적용 완료 (24h delay, OWNER_UPGRADER_ROLE 전용)
가스비 급등Low배치 처리, 가스 최적화

9.3 CertiK 보안 감사 기준

AVA 토큰 컨트랙트는 CertiK의 스마트 컨트랙트 보안 감사 기준에 따라 설계되었습니다. 아래는 CertiK이 Upgrade / Governance / Vesting 중심 프로젝트에 적용하는 핵심 감사 프레임워크입니다.

Audit Categories
6
검수 카테고리
Check Items
13
세부 검수 항목
Severity Levels
5
Critical ~ Informational

감사 카테고리 개요

#카테고리항목 수핵심 검증 포인트
1중앙화 리스크 (Centralization Risk)3업그레이드 권한, Role 설계, Timelock 거버넌스
2업그레이드 안전성 (Upgradeable Safety)2Storage Layout, 마이그레이션 완결성
3베스팅 & 락업 무결성 (Vesting Integrity)2잔고 처리, Transfer 제한 로직
4로직 정확성 (Logical Soundness)2계산 순서 오류, Defensive Logic 부작용
5이벤트 & 오프체인 신뢰성 (Events)2민감 함수 Event, Event 의미 명확성
6Formal Verification2AccessControl 불변성, 상태 불변 조건
Severity 분류 기준
등급기준
Critical즉시 자금 손실 또는 컨트롤 탈취 가능
Major특정 조건에서 자금 영구 Lock 또는 시스템 마비
Medium설계상 결함, 운영 리스크
Minor업그레이드, 가독성, 효율성 개선 사항
InformationalBest Practice 권고

1. 중앙화 리스크 (Centralization Risk)

CertiK이 가장 민감하게 보는 1순위 영역

항목검증 내용판단 기준
1.1 업그레이드 권한 집중 Proxy/UUPS 업그레이드 권한이 단일 EOA에 귀속되는지, 즉시 실행 가능한 구조인지 단일 키 → High Risk / Multisig+Timelock → Mitigated / DAO+Timelock → Preferred
1.2 Privileged Role 설계 DEFAULT_ADMIN_ROLE 존재, grantRole/revokeRole 남용 가능성, Role Admin 구조 오류 Role Admin 미지정 → Governance Deadlock / Role 간 권한 위임 명확성
1.3 Timelock 거버넌스 PROPOSER/EXECUTOR/CANCELLER 분리, 임의 실행·취소 가능성, Timelock delay (48h 이상 권장) Proposer ≠ Executor ≠ Canceller / Multisig+Timelock 조합 / 주소 공개 문서화

2. 업그레이드 안전성 (Upgradeable Contract Safety)

항목검증 내용판단 기준
2.1 Storage Layout 안전성 Storage slot 충돌 가능성, __gap 또는 Namespaced Storage(ERC-7201) 사용 여부 무갭 → 위험 / Child gap 사용 → 혼동 유발 / Namespaced Storage → Best Practice
2.2 마이그레이션 완결성 Lazy Migration 조건, 마이그레이션 스킵 케이스, 업그레이드 전·후 상태 불일치 "업그레이드 이전 상태가 100% 보존·반영되는가?"

3. 베스팅 & 락업 무결성 (Vesting Integrity)

사용자 자산 영구 Lock 가능성은 Major 이상으로 분류

항목검증 내용
3.1 잔고 처리 방식 비-베스팅 토큰 유입 시 처리, unlockedAmount 계산과 실제 잔고 괴리, 업그레이드 후 기존 잔고 영구 Lock 여부
3.2 Transfer 제한 로직 일관성 View 함수(getAvailableBalance)와 실제 enforce 로직 일치 여부, 계산 순서 오류

4. 로직 정확성 (Logical Soundness)

항목검증 내용
4.1 계산 순서 오류 Reset → 계산 vs 계산 → Reset 순서, 방어 코드가 권한 우회를 만드는지
4.2 Defensive Logic 부작용 Abnormal state에서 반복적 storage rewrite, Lazy init + reset 충돌 여부

5. 이벤트 & 오프체인 신뢰성 (Events & Off-chain Reliability)

CertiK은 "Off-chain consumer 혼란"을 명확한 리스크로 간주

항목검증 내용
5.1 민감 함수 Event 중앙화 권한 함수(pause, upgrade, reset)에 Event 미존재 여부
5.2 Event 의미 명확성 Event 필드의 from/to 기준 불명확 여부, emit 값과 실제 storage 값 불일치 여부

6. Formal Verification 대상 기준

CertiK의 차별화 포인트 — 수학적 검증

항목검증 내용
6.1 AccessControl 불변성 DEFAULT_ADMIN_ROLE == 0x00 불변, hasRole/getRoleAdmin 상태 변경 여부, Role revoke/grant 정확성
6.2 상태 불변 조건 (Invariant) 특정 함수 호출 전·후 반드시 유지되어야 할 조건, 전체 상태 공간에서 항상 성립해야 하는 논리

9.4 자체 보안 감사 보고서

위 CertiK 보안 감사 기준에 따라 AVA 토큰 컨트랙트(AVAToken + AVAVesting)를 자체 검증한 결과입니다. 모든 항목은 실제 구현된 소스코드를 기반으로 평가되었습니다.

Critical
0
발견 없음
Major
0
발견 없음
Medium
0
발견 없음
Acknowledged
1
의도적 설계

1. 중앙화 리스크 — Pass

항목AVA 구현판정
1.1 업그레이드 권한 UUPS + OWNER_UPGRADER_ROLE → TimelockController (24h delay). 단일 EOA가 아닌 MultiSig → Timelock 경로로만 업그레이드 가능 Pass
1.2 Privileged Role 5개 Role 분리 — Owner(DEFAULT_ADMIN, OWNER_PAUSER, OWNER_UPGRADER) + Admin(ADMIN_VESTING_MANAGER, ADMIN_BURNER). Owner/Admin 역할 명시적 구분. Role Admin 구조 유지 Pass
1.3 Timelock 거버넌스 TimelockController (minDelay=24h), Proposer=Deployer, Executor=Deployer. Owner/Admin Role 모두 Timelock으로 이관 (OWNER_PAUSER_ROLE만 Deployer EOA 유지, 긴급 대응용) Acknowledged
Acknowledged 사유

OWNER_PAUSER_ROLE은 긴급 정지용으로 Timelock 지연 없이 즉시 실행되어야 하므로 Deployer EOA에 유지합니다. 나머지 모든 Role(DEFAULT_ADMIN, OWNER_UPGRADER, ADMIN_VESTING_MANAGER, ADMIN_BURNER)은 TimelockController로 이관됩니다.

2. 업그레이드 안전성 — Pass

항목AVA 구현판정
2.1 Storage Layout ERC-7201 Namespaced Storage 적용. AVAToken: 0xb19f...e100, AVAVesting: 0x704f...ab00. Storage slot 충돌 원천 차단 Pass
2.2 마이그레이션 V1 초기 배포 — 기존 상태 마이그레이션 불필요. 향후 업그레이드 시 reinitializer 패턴 사용 대비. initializer에서 _disableInitializers() 호출 Pass

3. 베스팅 & 락업 무결성 — Pass

항목AVA 구현판정
3.1 잔고 처리 Lazy Evaluation: getAvailableBalance = balance - totalLocked. 방어 로직 if (balance <= totalLocked) return 0 적용. 비-베스팅 토큰 유입 시 자유잔액으로 자연 처리되어 영구 Lock 없음 Pass
3.2 Transfer 제한 _update() override에서 IAVAVesting.getAvailableBalance()로 자유잔액 검증. vestingTransferByAdmin은 EIP-1153 Transient Storage flag로 bypass. 그룹 지갑은 일반전송 차단 (groupWalletTransferByAdmin 전용). View 함수와 enforce 로직 동일 함수 사용 Pass

4. 로직 정확성 — Pass

항목AVA 구현판정
4.1 계산 순서 일단위 UTC 0시 경계 계산 (SECONDS_PER_DAY = 86,400). _computeUnlockedForWallet는 순수 읽기 연산으로 상태 변경 없음. 정수 나눗셈 일관성 유지 Pass
4.2 Defensive Logic 25종 커스텀 에러로 모든 입력 검증 (ZeroAmount, ZeroAddress 등). distributeToGroupByAdmin 1회 제한 (GroupAlreadyDistributed). 자기전송 방지 (SelfTransferNotAllowed). MAX_SCHEDULES_PER_WALLET = 50 상한. 그룹 지갑 일반전송 차단 (GroupWalletTransferRestricted) Pass

5. 이벤트 & 오프체인 신뢰성 — Pass

항목AVA 구현판정
5.1 민감 함수 Event 7개 커스텀 이벤트 정의: VestingContractSet, TokensBurned, GroupConfigSet, TGETimestampSet, VestingTransferExecuted, GroupDistributed, VestingAdjustedForBurn. pause/unpause는 OZ PausableUpgradeable 이벤트 자동 emit Pass
5.2 Event 의미 모든 이벤트에 indexed 파라미터 적용 (group, from, to, wallet). emit 값은 실제 storage 변경 후 발생. from/to 기준 명확 Pass

6. Formal Verification — Pass

항목AVA 구현판정
6.1 AccessControl OZ AccessControlUpgradeable 사용. DEFAULT_ADMIN_ROLE == 0x00 불변. grantRole/revokeRole/renounceRole 표준 동작 보존. Role Admin 구조 안정 Pass
6.2 상태 불변 조건 totalSupply == TOTAL_SUPPLY (mint 1회, initialize에서만 실행). distributed <= totalAllocation per group. lockedBalance <= balance (방어 로직 적용). ReentrancyGuardTransient로 재진입 방지 Pass
자체 감사 요약

CertiK 보안 감사 기준 6개 카테고리, 13개 세부 항목에 대한 자체 검증 결과: Critical 0건 / Major 0건 / Medium 0건. 1건의 Acknowledged 항목(Timelock 거버넌스 범위)은 운영 효율성을 고려한 의도적 설계로, 논리적 근거가 명확합니다. 최종 보안 검증은 CertiK 외부 감사를 통해 확정되며, 감사 결과는 공개적으로 공유됩니다.

© 2026 AVA Labs