오라클 피드 종료는 이름이 비슷한 새 feed ID로 바꾸는 작업으로 끝나지 않습니다. 구 피드의 마지막 유효 시점, 후속 피드의 자산·통화·단위, heartbeat와 deviation, 체인별 계약 주소, 가격 신선도 검사와 fallback을 함께 확인해야 합니다. 구 피드를 읽는 모든 계약·봇·위험 엔진을 목록화하고, 새 피드가 실제 체인에서 갱신되는 것을 검증한 뒤 전환합니다.
종료 대상은 이름이 아니라 feed ID로 식별합니다
BTC/USD라는 표시명만으로 종료 대상을 특정할 수 없습니다. 같은 자산쌍도 안정판·베타판, 실시간·지연판 또는 체인별 push feed가 다른 ID를 쓸 수 있습니다. 공지의 feed ID, 서비스 환경, 체인과 계약 주소를 현재 설정값에 대조합니다.
Pyth 문서는 가격쌍마다 고유 feed ID가 있고 환경에 따라 식별자가 다를 수 있다고 설명합니다. 구독에서 retired 또는 delisted ID가 유효하지 않으면 전체가 실패할 수도 있으므로 다른 정상 피드까지 멈추는지 확인합니다.
후속 피드의 이름이 같아도 ID·단위·갱신 조건을 검증하기 전에는 같은 입력이 아닙니다.
JOBCOIN 해설

그림은 이 주제의 공통 개념을 단순화한 설명입니다. 아래 항목에서 이 글의 구체적인 조건과 예외를 함께 읽어보세요.
- 종료 대상은 이름이 아니라 feed ID로 식별합니다
BTC/USD라는 표시명만으로 종료 대상을 특정할 수 없습니다.
- 종료 시각과 마지막 유효 가격을 분리합니다
공지 시각, 신규 업데이트 중단 시각, API가 ID를 거부하는 시각과 온체인에 남은 마지막 가격은 서로 다를 수 있습니다.
- 후속 피드가 같은 경제적 값을 뜻하는지 계산합니다
새 피드의 base·quote, 가격 지수 exponent, confidence 필드와 반올림 규칙을 읽습니다.
AI로 제작한 개념도 · 실제 가격·거래 내역·통계가 아닙니다.
종료 시각과 마지막 유효 가격을 분리합니다
공지 시각, 신규 업데이트 중단 시각, API가 ID를 거부하는 시각과 온체인에 남은 마지막 가격은 서로 다를 수 있습니다. 온체인 getter가 값을 반환한다는 사실만으로 현재 가격이라고 판단하면 stale 값으로 청산·대출·정산을 계속할 위험이 있습니다.
가격 응답의 publish time을 현재 블록 시각과 비교해 age를 계산합니다. 정책상 최대 허용 age가 60초인데 마지막 업데이트가 180초 전이면 getter 성공과 무관하게 사용을 중단해야 합니다. heartbeat가 30초인 피드와 60분인 피드에 같은 임계값을 적용하지 않습니다.
| 검증 지점 | 증거 | 실패 시 동작 |
|---|---|---|
| 대상 식별 | old feed ID·chain | 잘못된 피드 교체 중단 |
| 후속 동등성 | pair·단위·confidence | 병행 비교 유지 |
| 신선도 | publish time·heartbeat | stale 차단 |
| 온체인 가용성 | contract·update tx | 기능 일시정지 |
| API 구독 | invalid ID 처리 | 피드별 격리·재구독 |
후속 피드가 같은 경제적 값을 뜻하는지 계산합니다
새 피드의 base·quote, 가격 지수 exponent, confidence 필드와 반올림 규칙을 읽습니다. 구 피드가 USD, 새 피드가 USDT 기준이면 숫자가 비슷해도 동일한 기준가가 아닙니다. 역수 관계인 USD/BTC를 BTC/USD처럼 읽으면 가격 방향이 뒤집힙니다.
가령 price=6,250,000이고 exponent=-2라면 해석값은 62,500입니다. 새 SDK가 정수 price를 그대로 반환하거나 exponent 적용 위치가 다르면 100배 오류가 납니다. 전환 샘플은 원시 price·exponent·publish time·confidence와 해석값을 함께 저장합니다.
- 구·신 feed ID와 자산쌍·통화 방향을 기록합니다.
- 정수 가격에 exponent를 적용한 해석값을 대조합니다.
- confidence/price 비율과 이상치 차단 기준을 확인합니다.
- heartbeat와 허용 stale age를 서비스별로 정합니다.
- 전환 전 병행 관측에서 가격 차이 분포를 계산합니다.
체인별 배포와 업데이트 공급자를 확인합니다
같은 feed ID라도 모든 체인에 push feed가 배포돼 있다는 보장은 없습니다. Pyth의 EVM push feed 안내는 체인별 이용 가능성과 heartbeat·deviation 설정을 확인하도록 합니다. 소비 계약이 읽는 가격 계약 주소와 업데이트를 제출하는 경로를 함께 점검합니다.
지원 목록만 보지 말고 최근 update transaction, publish time 증가와 getter 결과를 실제 대상 체인에서 확인합니다. 테스트넷 성공을 메인넷 준비 완료로 바꾸지 않습니다. 저활동 체인은 갱신 간격이 다를 수 있습니다.
소비자 목록을 코드와 운영 설정에서 함께 찾습니다
feed ID를 직접 저장한 스마트계약만 대상이 아닙니다. 가격 어댑터, 청산 봇, 위험 한도, 담보 평가, 프런트엔드 표시, 알림과 데이터 웨어하우스가 같은 피드를 소비할 수 있습니다. 저장소 검색과 배포 설정, 비밀 제외 환경변수, 온체인 storage를 교차 확인합니다.
프록시 어댑터 하나를 바꾸면 모든 소비자가 전환되는 구조인지, 각 시장이 ID를 따로 저장하는 구조인지 확인합니다. 관리 함수 호출이 필요한 경우 호출 권한, timelock, 제안·실행 간 지연과 되돌림 경로를 실행 계획에 포함합니다.
fallback은 오래된 값을 조용히 통과시키지 않게 설계합니다
구 피드 실패 때 마지막 값을 무기한 사용하는 fallback은 종료를 장애가 아닌 정상 가격처럼 숨깁니다. 대체 피드를 쓴다면 기준자산·단위·신선도와 독립성을 검증하고, 둘의 차이가 허용 범위를 넘으면 신규 대출·주문 같은 위험 증가 행동을 중단합니다.
fallback 우선순위를 primary→secondary→pause로 명확히 하고 상태를 관측 가능하게 남깁니다. secondary 가격으로 전환된 사실, 원인과 적용 시각을 로그·알림에 포함합니다. 자동 복귀는 primary가 연속 N회 정상이고 가격 차이가 임계 안에 들어온 뒤로 제한합니다.
API와 SDK 변경도 피드 전환 범위에 넣습니다
서비스 업그레이드는 feed ID뿐 아니라 endpoint, 인증과 응답 형식을 바꿀 수 있습니다. Pyth Core 업그레이드 준비 문서는 Hermes API 키, endpoint·contract 변경과 체인별 차이를 안내합니다. deprecated 경로를 계속 호출하는 모니터가 새 피드의 정상 여부를 잘못 보고할 수 있습니다.
구·신 경로를 같은 시각에 호출해 HTTP 상태, 응답 스키마, 가격 시간값과 누락 피드를 비교합니다. invalid feed 하나가 전체 요청을 실패시키는 옵션을 쓴다면 종료 ID를 요청 목록에서 제거한 뒤 기대한 개수와 실제 반환 ID 집합을 검증합니다.
완료 조건을 가격 반환보다 엄격하게 둡니다
전환 완료는 새 getter가 한 번 값을 반환한 상태가 아닙니다. 모든 소비자에서 old ID 참조 0건, 새 피드 연속 갱신, stale·confidence·가격차 경보 정상, 위험 증가·감소 경로의 테스트와 운영 대시보드 반영이 필요합니다.
종료 뒤에는 구 피드가 예상대로 stale 또는 invalid가 되는지도 확인합니다. 예상과 다르게 계속 갱신되더라도 공지된 종료가 취소됐다고 추정하지 말고 공식 상태를 다시 확인합니다. 전환 manifest에 공지와 설정 diff, 트랜잭션, 관측 기간과 롤백 조건을 남깁니다.
자주 묻는 질문
구 피드가 아직 가격을 반환하면 계속 써도 되나요?
아닙니다. publish time과 종료 정책을 확인해야 합니다. 저장된 마지막 값은 getter가 성공해도 stale일 수 있습니다.
successor feed가 없으면 무엇을 해야 하나요?
임의의 유사 자산 피드로 바꾸지 마세요. 위험 증가 기능을 일시정지하고 공식 대안이나 검증된 독립 공급자를 운영 정책에 따라 선택해야 합니다.
feed ID만 바꾸면 스마트계약 업그레이드는 끝나나요?
단위·신선도·confidence 처리와 체인별 계약 주소가 같아야 합니다. 관리 권한과 timelock, 소비자별 설정 반영도 확인하세요.
API 요청 하나에 종료 ID가 섞이면 어떻게 되나요?
공급자 옵션에 따라 전체 구독이 실패할 수 있습니다. invalid 처리 설정을 확인하고 반환 ID 집합을 기대 목록과 비교하세요.
더 깊이 읽기
본문에서 다룬 개념과 확인 절차를 다음 글에서 이어서 살펴보세요.



