API는 고유한 제한과 의존성이 있는 노드나 서비스에 접근하게 합니다. Ethereum에서 상태 조회나 시뮬레이션은 거래 게시와 다릅니다. 이 예시는 모든 체인이 아닌 Ethereum을 설명합니다.
읽기와 제출은 효과가 다르다
Ethereum의 eth_call은 온체인 거래를 만들지 않고 호출을 실행하지만 RPC 제공자는 서비스 요금을 부과할 수 있습니다. eth_sendRawTransaction은 이미 서명된 거래를 제출합니다. 거래 식별자를 받았다고 포함이나 성공이 입증되지는 않습니다. 영수증, 상태, 블록 참조와 네트워크에 맞는 완결성을 확인합니다.
의존성과 실패를 관리한다
서명 전에 네트워크, 계약 주소, 인터페이스, 매개변수를 확인합니다. 상태가 바뀌면 시뮬레이션은 나중의 실행 결과를 보장하지 않습니다. 실행 후 실패한 거래도 gas를 소비할 수 있습니다. 스마트 계약은 프로그램이며 이름만으로 무결함이나 합의의 법적 유효성이 보장되지는 않습니다.
정해야 할 통제
- 서명 권한, 지출 한도, 키 관리를 정한다.
- RPC 장애와 대기, 실패, 재구성된 거래를 구분한다.
- 오라클이 외부 사실을 제공하면 출처, 거버넌스, 오류 가능성을 평가한다.
출처
- Ethereum · JSON-RPC API
- Ethereum · Transactions
- Ethereum · Gas and fees
- Ethereum · Smart contracts
- Ethereum · Oracles
편집 검토: 2026년 10월 31일.
제출된 거래, 포함된 거래, 해석된 거래를 구분합니다.
거래 식별자만으로는 의도된 효과를 확인할 수 없습니다. 네트워크, 수신, 포함, 상태 및 관련 비즈니스 이벤트를 확인합니다. 사용된 체인에 대한 확인 및 복구 정책을 정의합니다. 결과가 불확실한 동안 인터페이스에서 성공을 알리면 안 됩니다.
- 쿼리된 네트워크와 식별자를 검증합니다.
- 보류 중, 실행 실패, 확인된 효과를 구분합니다.
- 비즈니스 작업을 다시 실행하지 않고 반복 알림을 테스트합니다.
반환된 해시값이 작업 완료를 의미하나요?
아니요. 제출된 거래를 식별하는 것입니다. 추적 및 결과 해석에는 체인 및 계약에 적합한 검사가 필요합니다. 모호한 작업을 맹목적으로 재제출하지 마십시오.
1차 자료: Ethereum — JSON-RPC and transaction receipts. 관련 방법: 실무 가이드 읽기.
API 할당량과 속도 제한
제한은 용량, 재시도와 고객 간 배분에 영향을 줍니다.
- 할당량이 계정, 키 또는 자원 중 어디에 적용되는지와 클라이언트의 동시 작업 수를 기록합니다. 평균 빈도가 낮아도 무제한 대기열은 서비스를 과부하시킬 수 있습니다.
- 429에 Retry-After가 있으면 해석하고 다음 요청까지 기다립니다. 증가하는 대기 시간과 클라이언트별 시간 분산을 최대 시도 수와 전체 기한에 결합합니다.
- 쓰기 응답이 사라졌다면 재시도 전에 상태를 확인합니다. 모의 시험에서 할당량, 늦은 응답과 취소를 조합하여 중복 효과 없이 대기열이 끝나는지 확인합니다.
재현 가능한 수락 사례
가상 예시입니다. 고객이나 실제 관측 결과를 나타내지 않습니다.
사례 입력 보기
{
"http_status": 429,
"retry_after_seconds": 30,
"workers": 20,
"retry_budget": 3,
"retry_budget_scope": "per_worker_retries_excluding_initial_request",
"scheduling_example": {
"response_received_at_seconds": 0,
"illustrative_retry_seconds": [
30,
31,
32,
33,
34
],
"workers_per_second": 4,
"alternative_deadline_seconds": 25,
"total_attempts_if_all_retries_used": 80
}
}예상 판단
30초 대기를 준수하고 20개 워커의 재시도를 분산하며 횟수를 제한합니다.
클라이언트 20개의 재시도 분산과 횟수 계산
가상 예시: 워커 20개가 +0 s에 각각 429와 Retry-After: 30을 받습니다. 시간표는 가능한 분산 예시이며 서버 용량을 보장하지 않습니다. 각 워커는 최초 요청 외에 3회 재시도할 수 있습니다.
| 정책 | 계산 또는 일정 | 효과와 한계 |
|---|---|---|
| 동시 재시도 | 20 × 1 = 20 @ +30 s | 30초를 기다리면 대기 지시는 지키지만 20개 요청이 동시에 돌아오므로 부하가 다시 집중될 수 있습니다. |
| 분산 재시도 | 4 × 5 = 20 @ +30…+34 s | 초당 4개씩 5초 동안 보내면 재시도 20개가 분산되지만 총수는 줄지 않습니다. 이 예시 일정은 무작위 지연을 더하는 백오프 정책을 대신하지 않습니다. |
| 25초 후 마감 | 25 s < 30 s → 0 | 남은 시간이 요구된 30초보다 짧으면 계약에 따라 중단하거나 연기합니다. 마감에 맞추려고 대기를 줄이지 않습니다. |
| 최대 예산 | 20 × (1 + 3) = 80 | 모든 시도를 사용하면 최초 요청 20개와 재시도 60개로 총 80개입니다. 상한이 있어도 성공이나 안전한 반복은 보장되지 않습니다. |
검증 절차
- 할당 범위 및 재시도 예산을 기록합니다.
- 허가된 시험에서만 할당량을 소진합니다.
- 429, Retry-After 및 제한된 시간선을 보존합니다. 기술적 제한과 업무 결과를 구분하세요. 할당량 소진을 재고 0이라는 응답으로 바꾸면 안 됩니다.
- 외부 부하 없는 모의 환경에서 네 계층 각 세 총호출을 셉니다.
- 가상 큐 작업을 만료시켜 새 작업이 시작되지 않는지 확인합니다.
- 모의 실패 뒤 허가한 작업을 점진 복구하고 호출, 기한과 고유 결과를 보존합니다.
429가 이전 쓰기 미실행을 증명하나요?
아닙니다. 응답이 사라진 작업은 별도로 대조해야 하며 다른 시도의 응답으로 그 상태를 판단하면 안 됩니다.
1차 자료: IETF — RFC 6585, HTTP 429. 관련 방법: 실무 가이드 읽기.
API: 계층 간 재시도 증폭 방지
앱, SDK, 프록시와 서비스가 같은 호출을 재시도할 수 있습니다. 가상 네 계층에서 각 세 번의 총시도를 하면 실패한 의존성에 최대81번 호출합니다. 기존 할당 관리에 공유 예산과 유효 기한을 추가합니다.
- 앱, SDK, 프록시와 의존성의 자동 시도를 정리합니다. 책임 계층을 고르고 계약에 따라 추가 시도를 끄거나 조정합니다. 첫 시도도 총예산에 포함합니다. 작업 ID를 보존하고 비멱등 작업 재시도 전 불확실한 효과를 확인합니다.
- 클라이언트 실제 한도를 고려해 대기, 연결과 처리를 포함한 전체 기한을 정합니다. 큐 수용 전 만료 작업을 거부합니다. 로컬 취소가 서버 중단을 입증하지 않으므로 상태를 대조합니다. 모든 큐를 동시에 재시작하지 말고 점진 복구를 시험합니다.
각 계층 세 번이면 전체 세 번인가요?
아닙니다. 가상 네 계층에서 세 번씩이면 마지막 의존성에 최대3⁴ = 81번 호출합니다.
만료가 원격 효과를 취소하나요?
꼭 그렇지 않습니다. 새 무용한 작업을 막고 시작된 원격 작업은 상태 확인과 가능한 보상이 필요합니다.
1차 자료: AWS — Timeouts, retries, and backoff with jitter. 관련 방법: 실무 가이드 읽기.
