이 글의 내용
토큰 베스팅 일정을 읽을 때는 ‘클리프가 있다’는 설명만으로 특정 날짜에 받을 토큰 수를 결정할 수 없습니다. 처음 할당한 수량, 일정의 시작점, 클리프 경계와 그 이후의 계산 방식까지 함께 확인해야 합니다. 경계에 도달하면 남은 수량 전부가 청구 가능해지는 예도 있고, 이미 지난 기간에 해당하는 수량을 반영한 뒤 원래 일정대로 이어지는 예도 있습니다.
또한 일정상 누적 베스팅 수량, 특정 구간에 늘어난 수량, 실제로 청구하거나 받은 수량은 서로 다릅니다. 이 글은 토큰 일정의 문서와 가상 예시를 읽는 방법을 설명합니다. 한국의 임직원 주식 보상이나 스톡옵션에 적용되는 법적 권리를 설명하는 글은 아닙니다.
클리프라는 이름보다 구체적인 계산 규칙을 보세요
토큰 베스팅 일정은 할당한 토큰이 정해진 조건과 시간에 따라 어떻게 베스팅되는지 규정합니다. Kaia의 한국어 Team Finance 안내도 토큰 베스팅과 사용자별 일정 설정을 다룹니다. 다만 한 서비스의 안내만으로 모든 토큰의 클리프가 같은 방식으로 작동한다고 볼 수는 없습니다.
이 글에서 비교하는 두 문서의 클리프는 초기 경계 전에는 해당 규칙에 따른 수량을 열지 않는 장치입니다. 그 경계에서 얼마가 계산되는지, 이후 어떤 간격으로 늘어나는지는 각 문서의 규칙을 따로 읽어야 합니다.
Sui의 Token Vesting Strategies 문서는 단독 클리프 예시를 제시합니다. 예시에 포함된 계산에서는 경계 전 청구 가능량이 0이고, 경계에 도달하면 남은 할당량 전체가 청구 가능해집니다. 청구 가능하다는 것과 청구가 실행되어 지갑에 도착했다는 것은 다릅니다.
OpenZeppelin의 contracts-sui 금융 모듈 README는 계단식 일정에 선택적으로 붙이는 클리프를 설명합니다. 이 경우 클리프 전 누적 베스팅 수량은 0입니다. 경계에서는 이미 지난 단계에 해당하는 수량을 한꺼번에 반영하고, 그 뒤에는 원래 간격대로 이어집니다. 클리프가 기존 일정의 시작점을 뒤로 옮기는 방식이 아닙니다.
| 이름을 명시한 문서 예시 | 경계 전 | 경계와 그 이후 | 구분할 점 |
|---|---|---|---|
| Sui의 단독 클리프 | 이 예시의 청구 가능량은 0 | 경계에 도달하면 남은 할당량 전체가 청구 가능 | 청구 가능량은 실제 수령량과 다름 |
| OpenZeppelin의 계단식 일정에 붙인 클리프 | 누적 베스팅 수량은 0 | 이미 지난 단계를 반영한 뒤 원래 간격대로 증가 | 경계가 기존 일정의 시작점을 옮기지 않음 |
이는 이름을 명시한 두 문서의 사례입니다. Sui 페이지의 발행일은 확인되지 않았고, OpenZeppelin README는 발행일이 없는 main 브랜치의 설명으로, 특정 릴리스나 커밋을 고정해 읽은 자료가 아닙니다. README의 통합 예시에는 감사를 받지 않은 설명용 코드라는 주의도 있습니다. 문서를 읽은 것만으로 특정 배포 계약의 동작이나 안전성을 검증한 것은 아닙니다.
가상 예시의 할당량·시작점·경계를 먼저 정하겠습니다
이제 가상의 토큰 1,200단위를 고정해 보겠습니다. 시작점은 0이고, 길이가 같은 12개 기간을 둡니다. 기본 일정은 기간 1부터 12까지 각 경계에서 100단위씩 늘어납니다. 여기에 시점 3의 클리프를 붙여, 그 전에는 누적 수량을 0으로 유지한다고 정합니다.
이 예시에서는 시점 3에 이미 지난 세 단계를 반영해 300단위가 됩니다. 이후 단계의 시점은 바꾸지 않으므로 시점 4에는 400단위, 시점 12에는 1,200단위가 됩니다. 앞서 본 OpenZeppelin의 설명과 같은 모양을 택한 직접 정한 가상 계산이지, 해당 코드를 실행한 결과는 아닙니다.
t는 시작점부터 지난 설명용 기간 수입니다. 달력상의 개월 수나 블록체인 타임스탬프가 아닙니다. V(t)는 이 규칙으로 계산한 누적 베스팅 수량이며, 각 시점의 값은 그 경계가 반영된 직후에 읽습니다.
- 시점 3 전에는 V(t)=0입니다.
- 시점 3부터 12 전까지는 V(t)=100 × 이미 완전히 지난 기간 수입니다. 식으로는 100 × floor(t)입니다.
- 시점 12와 그 이후에는 V(t)=1,200입니다.
할당량은 계속 1,200단위로 고정합니다. 추가 입금이나 할당 변경, 취소, 청구, 지급, 전송, 수수료와 지갑 거래는 모형에 넣지 않았습니다. 숫자는 실제 프로젝트나 두 문서의 수치를 가져온 것이 아니며, 가격이나 현금 가치도 부여하지 않습니다.
누적 수량과 구간 증가량은 서로 다른 숫자입니다
표의 두 번째 열은 해당 시점까지 누적된 수량입니다. 마지막 열은 앞 행의 시점 이후에 늘어난 수량입니다. (a,b]는 a 이후부터 b까지이며, b를 포함하는 구간을 뜻합니다.
| 기준 시점 t | 누적 V(t), 단위 | 앞 행 이후 구간 | 구간 길이 | 구간 증가량 V(b) − V(a), 단위 |
|---|---|---|---|---|
| 0 | 0 | 시작점 | — | — |
| 2 | 0 | (0,2] | 2개 기간 | 0 |
| 3 | 300 | (2,3] | 1개 기간 | 300 |
| 4 | 400 | (3,4] | 1개 기간 | 100 |
| 12 | 1,200 | (4,12] | 8개 기간 | 800 |
시점 3에는 경계가 열리면서 V(3)=3 × 100=300이 됩니다. 시점 4의 누적 수량은 V(4)=4 × 100=400이므로, 두 시점 사이에 늘어난 수량은 400 − 300=100단위입니다.
시점 4 이후부터 12까지의 증가량은 V(12) − V(4)=1,200 − 400=800단위입니다. 이 구간은 8개 기간에 걸쳐 있습니다. 800을 한 기간의 증가량처럼 읽으면 안 됩니다. 시점 12의 누적 수량은 여전히 1,200단위이며, 800단위가 아닙니다.
구간 증가량을 합하면 0+300+100+800=1,200으로 전체 할당량과 맞습니다. 반대로 누적 수량 열을 전부 더하면 이미 계산한 수량을 반복해서 세게 됩니다. 어느 열도 청구 거래, 지갑 입금이나 매도를 기록한 것은 아닙니다.
일정상 수량만으로 청구·수령·유통량을 알 수는 없습니다
두 문서의 예시는 일정 계산 외의 상태도 따로 다룹니다. Sui의 선형 베스팅 예시는 그 시점의 계산량에서 이미 청구한 수량을 반영해 청구 가능량을 구합니다. OpenZeppelin의 설명도 누적 베스팅 수량, 이미 지급된 수량과 아직 지급하지 않은 부분을 구분합니다. 이 상태들은 같은 숫자로 바꿔 읽을 수 없습니다.
우리의 가상 표는 V(t)와 구간 차이만 계산합니다. 실제로 청구하거나 지급할 수 있는 수량, 이미 청구·지급한 수량, 지갑에 도착한 수량은 계산하지 않았습니다. 전송 가능 여부, 법적 권리나 유통량 분류도 확인하지 않았습니다. 실제 계약의 조건과 기록을 보지 않은 채 표의 300을 ‘내 지갑에 들어온 300개’로 바꾸어 읽어서는 안 됩니다.
할당량과 유통량도 구분해야 합니다. 일정에 따라 베스팅되었다고 해서 특정 정보 제공자의 유통량에 자동으로 포함되거나, 그 수량이 실제로 매도되었다고 볼 수는 없습니다. 얼마에 매도할 수 있는지는 주문이나 풀의 상태 등 다른 정보가 필요한 질문입니다.
클리프나 베스팅이라는 이름만으로 가격 하락·덤핑·러그풀을 막는다고 보장할 수도 없습니다. 이 글은 매도량이나 시장가격을 예측하지 않으며, 계약 보안이나 개인의 청구 권리·이용 자격을 확인한 자료도 아닙니다.
자주 묻는 질문
클리프가 끝나면 모든 토큰을 바로 받나요?
이름만으로는 알 수 없습니다. Sui의 단독 클리프 예시는 경계에 도달하면 남은 수량 전체가 청구 가능해집니다. OpenZeppelin의 계단식 예시는 지난 단계를 반영한 뒤 원래 일정대로 이어집니다. 두 경우 모두 일정의 계산과 실제 청구·수령을 구분해야 합니다.
클리프는 베스팅 시작일을 항상 뒤로 미루나요?
그렇지 않습니다. 여기서 인용한 OpenZeppelin의 계단식 설명에서는 시작점을 옮기지 않고 클리프로 계산을 막아 두었다가 지난 단계를 반영합니다. 가상 예시도 이 모양으로 정했기 때문에 시점 3에 300단위가 됩니다. 이를 모든 클리프의 공통 규칙으로 적용하면 안 됩니다.
시점 12의 누적 수량은 1,200인데, 왜 구간 (4,12]의 증가량은 800인가요?
시점 4에 이미 누적된 400단위를 빼기 때문입니다. 1,200 − 400=800이며, 이는 8개 기간에 걸친 증가량입니다. 1,200은 시점 12까지의 누적 수량이고, 800은 지정 구간의 차이입니다. 어느 쪽도 실제 받은 수량을 뜻하지 않습니다.
베스팅된 수량은 이미 청구했거나 지갑에 들어온 수량인가요?
이 표만으로 그렇게 볼 수는 없습니다. 문서의 예시도 누적 베스팅과 청구 또는 지급 상태를 나눕니다. 가상 일정에는 해당 거래를 넣지 않았으므로 실제 청구 가능 잔액, 전송, 지갑 수령이나 법적 권리를 확인할 수 없습니다.
베스팅 일정이 있으면 매도나 가격 하락을 막을 수 있나요?
그런 보장은 이 설명에서 나오지 않습니다. 토큰 일정만으로 누가 얼마를 팔지, 그때 체결 가격이 얼마일지 알 수 없습니다. 베스팅이라는 표시는 가격 보호나 보안 검증을 대신하지 않으며, 특정 토큰의 안전성이나 수익을 보장하지도 않습니다.
HypaForecast 마켓 살펴보기
시장 목록과 BTC 5분·15분 페이지로 연결되는 일반 사이트 안내입니다. 본문의 가상 토큰 일정과 별개이며, 특정 토큰의 발행·청구 기능이나 독자의 거래 자격을 확인하는 링크가 아닙니다.
출처와 설명 범위
2026년 10월 21일 Sui의 클리프·선형 청구 예시와 OpenZeppelin README의 계단식 일정·지급 상태 설명을 확인했습니다. 두 문서의 발행일은 확인되지 않았으며, README는 특정 릴리스나 커밋을 고정하지 않은 main 브랜치의 설명입니다. 포함된 코드 문구만 읽었고, 빌드·배포·계약 감사나 실제 지갑 거래를 검증하지 않았습니다. 같은 날 확인한 Kaia 한국어 자료는 토큰 베스팅 용어와 일정 설정의 맥락에만 사용했으며, 연결된 화면 이미지는 확인하지 않았습니다. 1,200단위와 시점 0·2·3·4·12는 직접 정한 가상 계산으로, 달력상의 개월 수·실제 프로젝트 물량·청구·시장가격을 나타내지 않습니다.
HypaForecast는 교육 가이드를 발행하고 예측 시장을 운영합니다. 이 글은 HypaForecast가 토큰을 발행하거나 베스팅·토큰 청구 기능을 제공한다는 뜻이 아니며, 특정 토큰의 안전성·수익 또는 독자의 이용 자격을 확인하지 않습니다.
이 가이드 공유