jason-rpc

CosmoNumb·2024년 6월 23일

블록체인

목록 보기
3/7

JSON-RPC 개요

JSON-RPC는 원격 프로시저 호출(Remote Procedure Call, RPC) 프로토콜 중 하나로, 클라이언트와 서버 간의 통신을 JSON 형식으로 주고받는 방식입니다. 이는 경량화된 프로토콜로, HTTP나 WebSocket과 같은 다양한 전송 프로토콜 위에서 사용할 수 있습니다.

JSON-RPC의 주요 특징

  1. 경량화된 프로토콜:

    • JSON-RPC는 간단하고 가벼운 프로토콜입니다. JSON 형식을 사용하여 메시지를 주고받기 때문에 이해하고 구현하기 쉽습니다.
  2. 언어 독립성:

    • JSON은 대부분의 프로그래밍 언어에서 지원되므로, JSON-RPC는 다양한 언어와 플랫폼에서 쉽게 사용할 수 있습니다.
  3. 전송 프로토콜 독립성:

    • JSON-RPC는 HTTP, WebSocket 등 여러 전송 프로토콜 위에서 동작할 수 있습니다.

JSON-RPC 메시지 형식

JSON-RPC 메시지는 요청(request)과 응답(response) 형식으로 나뉩니다.

  1. 요청 형식:

    • 요청 메시지는 클라이언트가 서버에 보내는 메시지로, 호출하려는 메서드와 그 메서드에 전달할 파라미터를 포함합니다.
    {
      "jsonrpc": "2.0",
      "method": "subtract",
      "params": [42, 23],
      "id": 1
    }
    • jsonrpc: 사용된 JSON-RPC의 버전 (일반적으로 "2.0" 사용)
    • method: 호출하려는 메서드의 이름
    • params: 메서드에 전달할 파라미터 (배열 또는 객체)
    • id: 요청의 고유 식별자 (응답을 매칭하기 위해 사용)
  2. 응답 형식:

    • 응답 메시지는 서버가 클라이언트에 보내는 메시지로, 요청에 대한 결과를 포함합니다.
    {
      "jsonrpc": "2.0",
      "result": 19,
      "id": 1
    }
    • jsonrpc: 사용된 JSON-RPC의 버전
    • result: 요청한 메서드 호출의 결과 값
    • id: 요청 메시지의 식별자
  3. 오류 응답 형식:

    • 오류가 발생한 경우, 서버는 오류 메시지를 반환합니다.
    {
      "jsonrpc": "2.0",
      "error": {
        "code": -32600,
        "message": "Invalid Request"
      },
      "id": null
    }
    • error: 오류 객체로, codemessage를 포함
      • code: 오류 코드
      • message: 오류 메시지
    • id: 요청 메시지의 식별자 (요청이 유효하지 않을 경우 null)

JSON-RPC의 사용 예

다음은 JSON-RPC를 사용하여 블록체인 노드와 상호작용하는 예입니다. 이 예는 이더리움 블록체인에서 JSON-RPC를 사용하여 현재 블록 번호를 가져오는 것입니다.

  1. HTTP 요청 예시:
POST / HTTP/1.1
Host: localhost:8545
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "method": "eth_blockNumber",
  "params": [],
  "id": 1
}
  1. HTTP 응답 예시:
HTTP/1.1 200 OK
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "result": "0x5bad55",
  "id": 1
}

여기서 eth_blockNumber 메서드는 현재 블록 번호를 반환하며, 결과는 16진수 문자열 "0x5bad55"로 표시됩니다.

JSON-RPC와 블록체인

블록체인에서 JSON-RPC는 클라이언트가 블록체인 노드와 상호작용하기 위해 자주 사용됩니다. 이더리움, 비트코인 등 대부분의 블록체인 노드는 JSON-RPC 인터페이스를 제공하여 다양한 작업(예: 트랜잭션 전송, 블록 조회, 계정 상태 확인 등)을 수행할 수 있습니다.

이더리움 JSON-RPC 예시

  1. eth_blockNumber: 현재 블록 번호를 조회하는 메서드
  2. eth_getBalance: 특정 주소의 잔액을 조회하는 메서드
  3. eth_sendTransaction: 트랜잭션을 전송하는 메서드
eth_getBalance 예시
  • 요청:

    {
      "jsonrpc": "2.0",
      "method": "eth_getBalance",
      "params": ["0x742d35Cc6634C0532925a3b844Bc454e4438f44e", "latest"],
      "id": 1
    }
  • 응답:

    {
      "jsonrpc": "2.0",
      "result": "0x0234c8a3397aab58",
      "id": 1
    }

여기서 eth_getBalance 메서드는 주어진 주소의 잔액을 반환합니다. 결과는 16진수 문자열로 표시됩니다.

요약

JSON-RPC는 원격 프로시저 호출 프로토콜로, 클라이언트와 서버 간의 통신을 JSON 형식으로 주고받는 방식입니다. 블록체인에서는 노드와 상호작용하기 위해 자주 사용되며, 다양한 작업을 수행할 수 있는 인터페이스를 제공합니다. JSON-RPC는 경량화된 프로토콜로, 언어와 전송 프로토콜에 독립적으로 동작하여 다양한 환경에서 쉽게 사용할 수 있습니다.

1개의 댓글

comment-user-thumbnail
2024년 9월 25일

프로토콜이다. 블록체인에서는 노드와 상호작용할 때 사용한다.

답글 달기