본문으로 건너뛰기

JSON-RPC API

엔드포인트 노드는 JSON-RPC API를 노출합니다. API는 다음과 같이 활성화/비활성화할 수 있습니다. 자세한 API 사양은 JSON-RPC APIs를 참조하세요.

참고: HTTP(rpc) 또는 웹소켓(ws) 인터페이스를 통해 API를 제공하면 모든 사용자가 이 인터페이스에 액세스할 수 있는 API(디앱, 브라우저 탭 등)에 액세스할 수 있습니다. 어떤 API를 활성화할지 활성화할 때 주의하세요. 기본적으로 카이아는 ipc 인터페이스를 통해 모든 API를 활성화하지만, rpcws의 경우 필수 모듈을 명시적으로 활성화해야 합니다.

API 활성화하기

명령줄에서

카이아 RPC 엔드포인트를 통해 API를 제공하려면 --${interface}api 명령줄 인자로 지정하세요.

ipc는 플래그 없이 유닉스 소켓(Unix) 또는 네임드 파이프(Windows) 엔드포인트를 통해 모든 API를 제공합니다.

아래 예시와 같이 추가하려는 특정 API를 사용하여 Kaia 노드를 시작할 수 있습니다. 단, 노드를 실행한 후에는 API를 변경할 수 없다는 점에 유의하세요.

예) klaynet 모듈을 활성화한 상태에서 카이아 노드 실행하기:


$ ken --rpcapi klay,net --rpc --{other options}

HTTP RPC 인터페이스는 --rpc 플래그를 사용하여 명시적으로 활성화해야 합니다.

구성 파일 사용

구성 파일에서 RPC_ENABLE, RPC_API, WS_ENABLEWS_API 속성을 업데이트하세요.

사용 가능한 API 쿼리하기

인터페이스가 어떤 API를 제공하는지 확인하려면 modules JSON-RPC 메서드를 호출할 수 있습니다. rpc 인터페이스를 예로 들자면,

IPC


$ ken attach --datadir <DATA_DIR>
Welcome to the Kaia JavaScript console!
instance: Kaia/vX.X.X/XXXX-XXXX/goX.X.X
datadir: /var/kend/data
modules: admin:1.0 debug:1.0 governance:1.0 istanbul:1.0 klay:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0
>

will list all enabled modules in the console output.


modules: admin:1.0 debug:1.0 governance:1.0 istanbul:1.0 klay:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0

HTTP


$ curl -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"rpc_modules","params":[],"id":1}' https://public-en-kairos.node.kaia.io

이로써 버전 번호를 포함하여 활성화된 모든 모듈을 반환합니다:


{
"jsonrpc":"2.0",
"id":1,
"result":{
"admin":"1.0",
"debug":"1.0",
"klay":"1.0",
"miner":"1.0",
"net":"1.0",
"personal":"1.0",
"rpc":"1.0",
"txpool":"1.0",
"web3":"1.0"
}
}

안전하지 않은 디버그 API 비활성화

일부 디버그 네임스페이스 API는 안전하지 않거나 공개하기에 부적절합니다. 디버그 네임스페이스 API는 권한이 있는 사용자에게만 제공하는 것이 좋습니다. 그러나 공개 EN을 유지하면서 디버그 네임스페이스 API를 일반에 제공하려는 경우 안전하지 않거나 부적절한 API를 비활성화하는 rpc.unsafe-debug.disable 플래그를 설정하고 디버그 네임스페이스 API의 하위 집합만 활성화하도록 설정하도록 강력히 권장합니다.

활성화된 API는 다음과 같습니다:

  • VM Tracing API를 사용할 수 있지만 기능이 제한되어 있습니다(사전 정의된 tracer만 허용됩니다. params/tracingOptions을 참고하세요.)
  • debug_dumpBlock, debug_dumpStateTrie, debug_getBlockRlp, debug_getModifiedAccountsByHash, debug_getModifiedAccountsByNumber, debug_getBadBlocks, debug_getModifiedStorageNodesByNumber
  • debug_metrics

rpc.unsafe-debug.disable 플래그를 설정하려면 kend.conf 파일에 다음 줄을 추가합니다.


ADDITIONAL="$ADDITIONAL --rpc.unsafe-debug.disable"

페이지를 개선해 주세요