스크리닝 루프 처음부터 끝까지
계약과 루프
- 레슨 4/5
- 12분
- 고급
- 개발자
이번 레슨에서는
레슨을 마치면 다음을 할 수 있습니다.
- 설명서 §5의 루프를 단계별로 실행하기
- 허브 규모 주소에서 time_budget 중단을 읽고, 그것이 무엇이 아닌지 알기
- 전송이 이 영역에서 인덱싱되었는지 확인하고, ‘아직 인덱싱 안 됨’을 ‘일어나지 않음’과 구분해 읽기
설명서 §5의 루프
설명서에 적힌 그대로의 호출 여섯 개입니다. 설명서의 긴 주석 두 개(트레저리에 관한 것과 다른 호스트의 결제 확인에 관한 것)는 여기서 생략했으며, 트레저리에 관한 내용은 아래에서 읽습니다.
# Payloads are complete JSON-RPC 2.0 — the envelope is required, the server
# rejects a bare {"method":…} with -32600.
# 1. vet the counterparty before you accept or send funds
POST /a2a {"jsonrpc":"2.0","id":1,"method":"get-address-risk",
"params":{"chain":1,"address":"0x5754284f345afc66a98fbb0a0afe71e0f007b949"}}
POST /a2a {"jsonrpc":"2.0","id":2,"method":"get-address-compliance",
"params":{"chain":1,"address":"0x5754284f345afc66a98fbb0a0afe71e0f007b949"}}
# 2. if risk warrants, look deeper (pass token explicitly — see §2)
POST /a2a {"jsonrpc":"2.0","id":3,"method":"get-address-exposure",
"params":{"chain":1,"address":"0x…"}}
POST /a2a {"jsonrpc":"2.0","id":4,"method":"get-wallet-graph-walk",
"params":{"chain":1,"token":"USDT","address":"0x…","hops":2}}
# 3. after the transfer, confirm it indexed on THIS surface
POST /a2a {"jsonrpc":"2.0","id":5,"method":"get-recent-transactions",
"params":{"chain":8453,"recipient":"0x…"}}
POST /a2a {"jsonrpc":"2.0","id":6,"method":"get-sync-status","params":{"chain":8453}}허브에서의 1단계
설명서는 1단계에 일부러 테더(Tether)의 트레저리를 골랐습니다. 허브 규모의 주소이므로, 답이 고정된 등급이 아니라 §4가 작동하는 모습을 보여 줍니다. 이 주소의 노출 탐색은 시간 예산을 다 쓸 수 있습니다. 그러면 등급은 incomplete_reasons에 time_budget이 있고 signal: "coverage"인 evidence 행이 있는 unknown이 될 수 있으며, 노출 읽기에는 탐색의 truncation_reason과 hops_completed가 담깁니다. 그 옆의 서비스 플래그는 맥락 정보이며 등급을 결코 움직이지 않습니다. 이런 중단 뒤에는 판정이 computed_at을 포함해 약 10초 동안 재사용되고, 그렇지 않으면 60초 동안 재사용됩니다. 이것이 아닌 것: 트레저리에 대한 판단 결과가 아니며, 반복할 이유도 아닙니다. 반복 사이에는 간격을 두십시오.
필요할 때만 2단계
설명서의 2단계는 노출, 그다음 탐색입니다. 스크리닝 스킬은 자체 4단계(노출과 승인)를 등급이나 사실이 필요로 할 때로 제한합니다. 탐색에는 token을 지정해야 합니다(REST에서 token이 없으면 네트워크의 기본 스테이블코인으로 대체되며, token_source: "default"로 그렇다고 밝힙니다). 깊이에 관한 그래프 탐색 스킬의 규칙: 2홉에서 시작하십시오. 질문이 필요로 할 때만 더 깊이 가십시오. 컴플라이언스 응답의 chains_with_data는 다른 어느 네트워크에 물어야 하는지 알려 주며, issuer_acts와 함께 나열된 것부터 물어야 합니다.
3단계: 도착했습니까?
수취인에 대해 get-recent-transactions, 그다음 같은 체인에 대해 get-sync-status를 호출합니다. 정산 스킬의 규칙: items가 비어 있고 freshness_seconds가 크면 “아직 인덱싱 안 됨”이지, “일어나지 않음”이 아닙니다. pending 행은 아직 재구성(reorg)될 수 있습니다. 행의 금액은 최소 단위로 된 amount.amount이고, amount.decimals가 자릿수를 알려 줍니다(피드 행에는 *_usd6가 없음, 2026-10-20). 달러 금액은 가격이 매겨진 경우 usd_amount이고, 그렇지 않으면 없거나 null입니다. 그리고 설명서의 마지막 말: 하려던 일을 마쳤으면 멈추십시오.
핵심 정리
- 호출 여섯 개, 단계 세 개. 모든 호출에 봉투가 필수입니다
- 허브에서의 time_budget 중단은 계약이 작동하는 모습입니다. 10초 동안 재사용되며, 결코 판단 결과가 아니고, 반복할 이유도 아닙니다
- 등급이나 사실이 필요로 할 때만 더 깊이 보며, 탐색에는 token을 지정합니다
- 수취인의 피드와 체인의 최신성으로 전송을 확인하고, ‘아직 인덱싱 안 됨’을 올바르게 읽습니다
- 그다음 멈추십시오. 이 영역에는 접속 상태라는 개념이 없습니다
Stablecoin scanner ACHIVX에서 직접 해 보기
- 루프의 호출 1을 적힌 그대로 POST하고
tier,incomplete_reasons,evidence행을 읽습니다.time_budget이 있다면computed_at을 읽고 10초 동안 반복하지 마십시오. - 호출 2를 POST하고 트레저리의
freeze[],not_freezable[],chains_with_data를 읽습니다. - 같은 두 읽기를 REST로 실행하고(위험, 컴플라이언스), 위험 읽기의
Cache-Control을 설명서가 중단에 대해 말하는 내용과 비교합니다(60 대신max-age=10— 설명서는 이에 대해/risk와/exposure를 명시합니다. 컴플라이언스 읽기는 2026-10-20에max-age=60으로 응답했습니다). - 베이스 피드에서 아무
recipient나 가져와 호출 5를 POST하고, 그다음 호출 6을 POST해freshness_seconds를 읽습니다.
레슨 돌아보기
- time_budget 중단 뒤의 10초 규칙을 파이프라인의 어디에 두겠습니까?
- 호출 5가 빈 items로, 호출 6이 작은 freshness_seconds로 응답하면 통합 시스템은 무엇을 기록합니까?
다음 내용
가장 깊은 읽기는 탐색입니다. 마지막으로 그래프 탐색과 그 범위, 그리고 한도 안에서 모든 읽기의 속도를 조절하는 방법을 다룹니다.
함께 보기
- 레슨: 노출 카드를 한 줄씩 · 주소 읽기
- 가이드: 용어집
더 알아보기
레슨 4/5 · 에이전트를 위한 Stablecoin scanner ACHIVX · 위에 링크된 사용자 가이드를 바탕으로 합니다.
이 페이지는 ACHIVX Academy 영어 원문을 한국어로 옮긴 것입니다. 번역과 원문이 다르면 영어 원문이 기준입니다.