XRP Ledger (rippled) RPC 테스트 가이드
rippled 노드가 정상 작동하는지 HTTP/JSON-RPC로 확인하는 방법입니다.
기본 포트는 80이며, .env에서 WS_PORT로 변경한 경우 해당 포트를 사용하세요.
1. 기본 연결 테스트
1.1 서버 정보 (server_info)
curl -s -H "Content-Type: application/json" \
-X POST \
-d '{"method":"server_info","params":[{}]}' \
http://localhost:80
예상 응답 (요약):
{
"result": {
"info": {
"build_version": "2.6.2",
"server_state": "full",
"complete_ledgers": "32570-82521701",
"peers": 22,
"validated_ledger": {
"seq": 82521701,
"hash": "...",
"base_fee_xrp": 0.00001
}
},
"status": "success"
}
}
server_state: full 또는 proposing 이면 메인넷과 동기화된 상태입니다.syncing,connected,disconnected등이면 아직 동기화 중입니다.complete_ledgers: 보유한 원장 범위.empty면 동기화 초기 단계입니다.
1.2 서버 상태만 간단히 확인
curl -s -H "Content-Type: application/json" \
-X POST \
-d '{"method":"server_info","params":[{}]}' \
http://localhost:80 | jq '.result.info.server_state'
2. 원장(Ledger) 조회
2.1 현재 작업 중인 원장 (ledger_current)
curl -s -H "Content-Type: application/json" \
-X POST \
-d '{"method":"ledger_current","params":[]}' \
http://localhost:80
2.2 마지막으로 닫힌 원장 (ledger_closed)
curl -s -H "Content-Type: application/json" \
-X POST \
-d '{"method":"ledger_closed","params":[]}' \
http://localhost:80
2.3 특정 원장 정보 (ledger)
# 최신 검증된 원장 (ledger_index: "validated")
curl -s -H "Content-Type: application/json" \
-X POST \
-d '{"method":"ledger","params":[{"ledger_index":"validated","transactions":false}]}' \
http://localhost:80
3. 계정 조회 (account_info)
검증된 원장 기준으로 조회하려면 ledger_index: "validated"를 넣습니다.
3.1 Genesis 계정 (예시)
curl -s -H "Content-Type: application/json" \
-X POST \
-d '{
"method": "account_info",
"params": [{
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"ledger_index": "validated"
}]
}' \
http://localhost:80
예상 응답 (요약):
{
"result": {
"account_data": {
"Account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"Balance": "100000000000000000",
"Sequence": 1
},
"ledger_index": 82521701,
"validated": true,
"status": "success"
}
}
Balance: 드롭(drop) 단위. 1 XRP = 1,000,000 drops →100000000000000000= 100B XRP.
3.2 특정 주소 잔액만 보기
curl -s -H "Content-Type: application/json" \
-X POST \
-d '{
"method": "account_info",
"params": [{"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh", "ledger_index": "validated"}]
}' \
http://localhost:80 | jq '.result.account_data.Balance'
4. 수수료 조회 (fee)
curl -s -H "Content-Type: application/json" \
-X POST \
-d '{"method":"fee","params":[{}]}' \
http://localhost:80
5. 트랜잭션 조회 (tx)
트랜잭션 해시로 조회합니다.
# YOUR_TX_HASH 를 실제 해시로 교체
curl -s -H "Content-Type: application/json" \
-X POST \
-d '{"method":"tx","params":[{"transaction":"YOUR_TX_HASH"}]}' \
http://localhost:80
6. 배치 요청 (여러 메서드 한 번에)
curl -s -H "Content-Type: application/json" \
-X POST \
-d '[
{"method":"server_info","params":[{}],"id":1},
{"method":"ledger_current","params":[],"id":2},
{"method":"fee","params":[{}],"id":3}
]' \
http://localhost:80
7. Docker 컨테이너 안에서 CLI로 테스트
Admin RPC(5005)는 컨테이너 내부에서만 사용할 수 있으므로, docker exec로 rippled CLI를 호출합니다.
# 서버 정보
docker exec ripple-node rippled server_info
# 원장 현재
docker exec ripple-node rippled ledger_current
# 계정 정보 (검증된 원장 기준)
docker exec ripple-node rippled account_info rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh validated
# 수수료
docker exec ripple-node rippled fee
8. WebSocket 테스트 (선택)
지속 연결이 필요하면 WebSocket을 사용합니다. 포트 80이 WS도 제공하는 경우:
# wscat 설치 (Node.js 필요)
npm install -g wscat
# 연결 (포트 80이 WS인 경우)
wscat -c ws://localhost:80
# 연결 후 서버 정보 요청 (WebSocket은 "command" 사용)
> {"id":1,"command":"server_info"}
9. jq로 결과 보기 좋게 보기
# jq 설치: Ubuntu sudo apt install jq / Mac brew install jq
# server_state, 원장 seq, 피어 수만 출력
curl -s -H "Content-Type: application/json" \
-X POST \
-d '{"method":"server_info","params":[{}]}' \
http://localhost:80 | jq '{
state: .result.info.server_state,
ledger_seq: .result.info.validated_ledger.seq,
peers: .result.info.peers
}'
10. 외부에서 접근 (호스트 포트 노출 시)
RPC 포트를 0.0.0.0으로 열어두었다면:
curl -s -H "Content-Type: application/json" \
-X POST \
-d '{"method":"server_info","params":[{}]}' \
http://YOUR_SERVER_IP:80
11. 문제 해결
RPC 연결 실패
증상: curl: (7) Failed to connect to localhost port 80
확인:
docker ps | grep ripple
docker compose logs --tail 50
# 포트 확인 (호스트)
netstat -tuln | grep 80
# 또는
lsof -i :80
status가 success가 아님
증상: "status": "error" 또는 "error": "noNetwork" 등
- 노드가 아직 동기화 중일 수 있습니다.
server_info의server_state,complete_ledgers를 확인하세요. - rippled Server Doesn't Sync 참고.
account_info에서 ledger not found
ledger_index: "validated"를 넣었는지 확인하세요.- 노드가 아직 검증된 원장을 갖고 있지 않으면 실패할 수 있습니다. 동기화 완료 후 다시 시도하세요.
12. 참고
- API 문서: XRPL HTTP/WebSocket APIs
- Public 메서드 목록: Public API Methods
- 클라이언트: xrpl.js