---
title: "ERPC CLI로 RPC 메서드를 호출하고 사용자의 URL로 이벤트 보내기"
description: "erpc rpc call은 Solana 또는 Ethereum 메인넷에 JSON-RPC 요청 하나를 보내고, x402는 계정 없이 호출마다 결제하며, erpc webhook은 RPC 이벤트를 사용자의 URL로 POST합니다."
canonical: "https://erpc.global/ko/doc/erpc-cli/rpc-call-and-webhooks/"
locale: "ko"
---

# ERPC CLI로 RPC 메서드를 호출하고 사용자의 URL로 이벤트 보내기

`erpc rpc call`은 로그인한 ERPC 계정으로 터미널에서 JSON-RPC 요청 하나를 보내거나, x402로 호출마다 결제합니다. `erpc webhook`은 RPC 이벤트를 사용자의 URL로 POST합니다.

이 페이지는 프리릴리스인 ERPC CLI `v0.1.0-rc.4`를 설명합니다.

## RPC 메서드 호출하기

로그인한 ERPC 계정으로 Solana 또는 Ethereum 메인넷을 호출하세요. CLI가 메서드에 따라 공유 엔드포인트를 선택하며, 네트워크를 직접 선택할 수도 있습니다.

```sh
erpc login
erpc rpc call getSlot
erpc --json rpc call eth_getBlockByNumber '["latest", false]' --network ethereum-mainnet
erpc rpc call eth_call --params-file params.json
printf '%s' '["finalized", false]' | erpc rpc call eth_getBlockByNumber -
erpc rpc call getHealth --endpoint-url http://127.0.0.1:8899
```

- **매개변수**는 JSON 배열 또는 객체, `--params-file`로 지정한 파일, 또는 표준 입력을 뜻하는 `-`입니다. 매개변수가 없으면 호출은 `[]`를 보냅니다.
- **네트워크**는 `solana-mainnet`과 `ethereum-mainnet`(`eth-mainnet`도 가능)입니다. `erpc rpc list-networks`는 ERPC 공유 RPC와 x402 RPC가 있는 네트워크를 나열합니다.
- **자체 엔드포인트:** `--endpoint-url`은 해당 URL에 들어 있는 자격 증명만 사용합니다. 이 URL은 보안 URL이거나 loopback이어야 하며, 사용자 정보를 포함해서는 안 됩니다.

### 호출에 사용되는 계정의 키

계정에는 RPC 키가 여러 개 있을 수 있습니다. `erpc rpc call`과 `erpc webhook run`은 기본 키부터 순서대로 키를 시도하며, 자체 호출 전에 키마다 `getHealth` 호출을 한 번씩 보냅니다. 키는 이후 어떤 체인을 호출하든 공유 Solana RPC에서 판정됩니다.

RPC가 어느 키도 받아들이지 않았고 그중 일부 키에 대해서는 확인하지 못한 경우, 명령은 확인하지 못한 첫 번째 키로 계속 진행하며, 결과는 명령 자체의 호출에서 드러납니다. 모든 키가 거부되면 명령은 `the shared RPC takes none of the account's API keys from this machine (<n> tried)`로 실패합니다. [실패했을 때](https://erpc.global/ko/doc/erpc-cli/worker-troubleshooting/)를 참고하세요.

## x402로 호출마다 결제하기

계정 없이 호출마다 결제하여 이용하려면 x402 견적을 요청하세요. `--quote`는 지갑을 읽거나 결제하지 않고 견적을 출력합니다.

결제하려면 터미널에서 `--quote` 없이 명령을 실행하세요. CLI가 금액을 보여 주고 확인을 요청한 뒤, `erpc wallet create`로 설정한 지갑으로 견적에 나온 Base EURC 결제에 서명합니다. 그 지갑에 Base의 EURC를 보관해 두세요([지갑에서 결제](https://erpc.global/ko/doc/erpc-cli/ai/#지갑에서-결제)).

```sh
erpc rpc call getSlot --network solana-mainnet --x402 --quote
erpc rpc call eth_blockNumber --x402
```

## 사용자의 URL로 이벤트 보내기

로컬 웹훅은 RPC WebSocket을 구독하고 이벤트를 사용자의 URL로 POST합니다. 수신기를 시작하고 구독을 생성한 다음, `create`가 반환한 ID를 터미널이나 프로세스 관리자에서 실행하세요.

```sh
erpc webhook create --name slots --network solana-mainnet \
  --url http://127.0.0.1:8080/events --method slotSubscribe
erpc webhook create --name heads --network ethereum-mainnet \
  --url http://127.0.0.1:8080/events --method eth_subscribe --params '["newHeads"]'
erpc webhook list
erpc webhook run 1
```

Solana의 지갑 활동에는 `--method` 대신 `--template solana-wallet --wallet ADDRESS`를 사용하세요. Ethereum 컨트랙트 로그에는 `--template evm-contract-events --address CONTRACT`를 사용하세요. 콜백 URL은 HTTPS 또는 loopback HTTP이며, 네트워크는 `erpc rpc call`의 네트워크와 같습니다.

### 수신기가 받는 내용

- 각 POST에는 `webhook_id`, `network`, 원래의 JSON-RPC `notification`이 들어 있습니다. 수락하려면 HTTP 2xx를 반환하세요.
- 전달은 현재의 실시간 구독 시점부터 시작됩니다. 러너를 재시작하면 새 이벤트를 구독합니다.
- 연결이 끊기거나 콜백이 실패하면 러너가 0이 아닌 종료 상태로 끝납니다.
- `erpc webhook run`은 한 번의 전달을 테스트하는 `--once`와, 자체 WebSocket RPC를 사용하는 `--endpoint-url`을 받습니다.

## 웹훅 관리하기

| 명령 | 하는 일 |
| --- | --- |
| `erpc webhook list` | 저장된 구독을 나열합니다 |
| `erpc webhook show ID` | 구독을 보여 줍니다. 콜백 자격 증명은 생략됩니다 |
| `erpc webhook enabled-count` | 이 머신에서 활성화된 구독의 수를 셉니다 |
| `erpc webhook pause ID` | 전달을 비활성화합니다. 실행 중인 러너는 종료됩니다 |
| `erpc webhook activate ID` | 이후의 `run`을 실행할 수 있게 합니다 |
| `erpc webhook delete ID` | 정의를 삭제합니다 |

이 명령들은 로컬 설정만 조회하고 변경합니다. 스크립트에서는 `pause`, `activate`, `delete`에 `--yes`를 전달하세요.
