흡수와 소각
매도가 ETH를 배치한 구간에 도달하면 CUBIT을 해당 ETH로 바꿀 수 있습니다. 매수벽이 취득한 토큰은 거래 유동성에서 제거하고 오직 소각에만 사용해야 합니다.
매수벽 ETH 깊이 감소와 토큰 소각은 이 작업의 서로 다른 두 결과입니다.
초기 고정 공급 후 디플레이션
초기에 2,100만 CUBIT을 발행하며 이후 추가 발행은 없습니다. hook이 매수벽 매입 토큰을 소각하면 totalSupply()가 줄고 totalBurned()가 늘어납니다. 디플레이션은 실제 소각에 따른 것으로 시간만으로 발생하지 않습니다.
매도가 매수벽에 도달
→ 해당 포지션의 ETH로 CUBIT 매입
→ CUBIT 분리 후 소각
→ 총공급량 감소
매수벽이 매입한 CUBIT은 가격이 다시 올라도 거래 가능한 LP로 절대 돌아가지 않습니다. 소각 대기열도 이미 유동성에서 제외된 상태입니다.
가격이 박스권에서 변동할 때
변동이 매수벽에 도달하면 연속 매도가 ETH를 소모하고 CUBIT을 점차 시장에서 제거합니다. 일부 구간은 실행 가능 유동성이 없어질 수 있지만 자금 소진 후에도 tick 식별은 유지됩니다.
가격 반등으로 매입 CUBIT이 매수벽을 자동 보충하지 않습니다. 이미 소각용으로 분리되었기 때문입니다. 새 자금으로 같은 tick 포지션을 보강할 수는 있습니다.
| 변동 영역 | 가능한 영향 |
|---|---|
| 매수벽 위에 머무는 범위 | 스왑이 해당 포지션에 닿지 않아 매수벽 소각 없음 |
| 하나 이상의 매수벽 통과 | CUBIT 흡수·소각, 해당 구간 ETH의 점진적 소모 |
| 가격이 래더 통과 | 재고 변화, 자체 토큰은 리밸런싱 때 재사용·재배치 가능 |
소진되는 것은 유동성 구간이며 가격 단위인 tick 자체가 사라지는 것은 아닙니다. 모든 박스권이 모든 tick을 자동 소진시키지는 않습니다. 래더 역할 보기.
구분할 세 상태
| 상태 | 의미 |
|---|---|
| 매수벽 포지션의 ETH | 가격과 범위에 따라 그 포지션이 쓸 수 있는 자금 |
| 흡수·분리된 CUBIT | 시장에서 제거되어 소각 대기 가능 상태인 재고 |
| 소각된 CUBIT | CubitToken.burn()으로 실제 총공급량 감소 |
토큰은 hook만 소각할 수 있게 합니다. 공개 함수 burnAbsorbed()는 호출자가 수신자를 정해 분리 재고를 회수하도록 허용하지 않습니다.
CUBIT 라우터 경로
제공된 라우터는 매도 시 풀 거래를 정산하고 환불에 필요한 임의 전송을 마친 뒤 대기열이 있으면 소각합니다. 소각 실패 시 매도 전체를 되돌립니다.
이는 해당 실행 경로의 동작입니다. 모든 타사 라우터 매도가 같은 트랜잭션에서 항상 모든 토큰을 소각한다고 볼 수 없습니다.
타사 통합
호환 라우터는 분리 토큰 대기열을 남길 수 있습니다. 토큰은 계속 소각 전용이며 매수벽 유동성에서 다시 매수할 수 없어야 합니다. 이후 burnAbsorbed() 호출로 소각을 완료합니다.
guardian 유지보수 정지 중에도 호출 가능하며 보상은 없습니다. 양의 수익 기준을 둔 keeper는 호출을 미룰 수 있습니다.
소각이 보장하지 않는 것
소각은 공급량을 줄일 뿐 ETH를 만들지 않습니다. 매수벽이 매도 흡수로 자금을 썼다면 과거 가격대가 깊이를 자동 회복시키지 않습니다.
여러 고정 매수벽에서는 분리 재고와 잔여분을 각 포지션에 정확히 귀속해야 합니다. 기존 단일 매수벽 테스트만으로 새 구현의 이 속성을 증명할 수 없습니다.
증거 확인
hook의 TokensBurned, 토큰의 Burned 이벤트, totalBurned(), totalSupply()로 실제 소각을 추적합니다. pendingBurnTokens 대기열은 별도 상태입니다.
네트워크나 정식 fork 환경의 실제 흡수와 strict-burn 독립 검토는 여전히 검증 조건입니다. 알려진 한계.
출처: CubitRouter._finishSwap, CubitHook._isolateAbsorbedTokens, _burnAbsorbed, CubitToken.burn 및 contracts/docs/STRICT_BURN.md 에서 설계 이력을 확인합니다.