# Faucet testnet của Robinhood Chain

> Source: https://docs.blockvectra.com/vi/guides/robinhood-testnet-faucet/

Sử dụng faucet để nhận test ETH cho các giao dịch trên testnet của Robinhood Chain (`robinhood_testnet`, Chain ID `46630`). Việc nhận faucet là miễn phí và không tiêu tốn CU; các lệnh gọi RPC testnet tiếp theo sẽ tính phí CU như bình thường.

## Trước khi nhận faucet

Đăng ký tài khoản BlockVectra và sử dụng một trong các API key của riêng bạn. Tạo key trong [console](https://console.blockvectra.com/login/?next=%2Fkeys%2F) hoặc làm theo [hướng dẫn đăng ký theo chương trình](https://docs.blockvectra.com/en/guides/programmatic-signup/).

Sử dụng `0x` theo sau bởi 40 ký tự thập lục phân, viết thường hoặc chữ hoa chữ thường kết hợp với checksum EIP-55 hợp lệ. Phản hồi sử dụng địa chỉ chữ thường; các cách viết khác nhau của cùng một địa chỉ chia sẻ cùng một giới hạn nhận.

## Gửi yêu cầu nhận

Gọi `POST https://api.blockvectra.com/v1/faucet/robinhood_testnet` với `Content-Type: application/json` và key của bạn trong `x-api-key`. Endpoint này không đọc key từ đường dẫn URL hoặc `Authorization`.

Thay thế `{api_key}` bằng key của bạn và địa chỉ ví dụ bằng địa chỉ người nhận của bạn:

```bash
curl -i "https://api.blockvectra.com/v1/faucet/robinhood_testnet" \
  -H "Content-Type: application/json" \
  -H "x-api-key: {api_key}" \
  -d '{"address":"0x1111111111111111111111111111111111111111"}'
```

Nội dung JSON chỉ chứa `address` và phải vừa trong giới hạn 64 KiB. Các trường không xác định hoặc JSON không hợp lệ sẽ trả về `400 invalid_request`. Sử dụng chính xác endpoint mà không có tham số truy vấn.

## Cửa sổ và giới hạn nhận

* Mỗi yêu cầu được chấp nhận sẽ gửi **0.001 test ETH** (`1000000000000000` wei).
* Mỗi tài khoản và mỗi địa chỉ người nhận có thể có **một lần nhận mới trong mỗi khoảng thời gian 24 giờ cuốn chiếu**. Sử dụng một key khác trên cùng một tài khoản sẽ không làm tăng giới hạn.
* Faucet chấp nhận tối đa **1,000 lần nhận mới mỗi ngày UTC** trên tất cả người dùng.
* Các yêu cầu chia sẻ giới hạn **5 yêu cầu mỗi giây trên mỗi key** với `/v1/account`.

`next_eligible_at` là thời điểm chấp nhận cộng thêm 24 giờ, được biểu thị dưới dạng timestamp UTC RFC 3339. Khoảng thời gian của tài khoản và địa chỉ không đặt lại vào nửa đêm UTC. Lỗi `429` do giới hạn nhận bao gồm `error.data.scope` (`account`, `address`, hoặc `global`) và `error.data.next_eligible_at`; đối với `global`, timestamp là thời điểm bắt đầu của ngày UTC tiếp theo. Lỗi `429` do tần suất yêu cầu không có `scope`.

## Được chấp nhận không đồng nghĩa với đã xác nhận

HTTP **202 có nghĩa là đã được chấp nhận, không phải là đã được đưa lên chuỗi thành công**. Phản hồi JSON chứa:

| Trường               | Ý nghĩa                                                    |
| -------------------- | ---------------------------------------------------------- |
| `chain` / `chain_id` | `robinhood_testnet` / `46630`                              |
| `address`            | Địa chỉ người nhận dạng chữ thường                         |
| `amount_wei`         | Số tiền nhận dưới dạng chuỗi số nguyên thập phân           |
| `tx_hash`            | Hash ổn định của giao dịch được chấp nhận                  |
| `next_eligible_at`   | Thời điểm hợp lệ tiếp theo cho khoảng thời gian cuốn chiếu |

Việc thử lại cùng một địa chỉ đã chuẩn hóa từ cùng một tài khoản trong vòng 24 giờ sẽ trả về phản hồi `202` ban đầu và cùng một `tx_hash`, bao gồm cả khi sử dụng một key hợp lệ khác từ tài khoản đó. Nó không gửi một khoản thanh toán khác. Nếu một phản hồi bị mất, hãy thử lại cùng địa chỉ đó với cùng tài khoản đó.

Kiểm tra giao dịch bằng endpoint RPC testnet hiện có. Thay thế `{tx_hash}` bằng hash từ phản hồi được chấp nhận; truy vấn RPC này sử dụng cách tính phí CU thông thường:

```bash
curl -s "https://api.blockvectra.com/v1/robinhood_testnet" \
  -H "Content-Type: application/json" \
  -H "x-api-key: {api_key}" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_getTransactionReceipt","params":["{tx_hash}"]}'
```

## Lỗi và thử lại

Khung phản hồi lỗi chứa `error.code`, `error.message`, và `error.data`. `error.data.reason` bằng với `error.code`; `docs_url`, `retryable`, và `request_id` cung cấp tài liệu tham khảo lỗi, chính sách thử lại và mã định danh yêu cầu. Đối với mỗi lỗi `429` hoặc `503`, hãy chờ số giây trong header phản hồi **`Retry-After`** trước khi thử lại. Khi chưa có phản hồi được chấp nhận, đừng cho rằng test ETH đã được gửi.

| HTTP | Mã lỗi                                      | Cách xử lý                                                                                                               |
| ---- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| 400  | `invalid_address`                           | Sửa định dạng địa chỉ hoặc checksum EIP-55; `error.data.field` là `/address`.                                            |
| 400  | `invalid_request`                           | Gửi JSON hợp lệ chỉ chứa `address`.                                                                                      |
| 401  | `missing_api_key` / `invalid_api_key`       | Cung cấp key hợp lệ trong `x-api-key`.                                                                                   |
| 403  | `key_expired`                               | Tạo một API key mới.                                                                                                     |
| 404  | `not_found`                                 | Kiểm tra đường dẫn, chuỗi, phương thức POST, và đảm bảo không có tham số truy vấn; faucet có thể không khả dụng.         |
| 413  | `request_too_large`                         | Giảm kích thước thân yêu cầu để nằm trong giới hạn 64 KiB.                                                               |
| 429  | `rate_limited`                              | Chờ theo `Retry-After`; kiểm tra `scope` và `next_eligible_at` khi có mặt.                                               |
| 503  | `faucet_empty`                              | Faucet không đủ tiền để thực hiện yêu cầu nhận và trả phí gas. Chờ theo `Retry-After`.                                   |
| 503  | `service_unavailable`                       | Việc xử lý nhận faucet tạm thời không khả dụng, hoặc một yêu cầu nhận trước đó chưa có biên lai. Chờ theo `Retry-After`. |
| 503  | `auth_unavailable` / `upstream_unavailable` | Chờ theo `Retry-After`, sau đó thử lại.                                                                                  |

Xem [tài liệu tham khảo lỗi](https://docs.blockvectra.com/en/errors/) hoặc [/errors.json](https://docs.blockvectra.com/errors.json) để biết hướng dẫn mà máy đọc được, và [hướng dẫn Robinhood Chain](https://docs.blockvectra.com/en/guides/robinhood-chain/) để truy cập RPC.

Tiếp tục với [Robinhood Chain Testnet RPC starter](https://docs.blockvectra.com/en/guides/robinhood-testnet-starter/) cho các truy vấn đọc không cần key và log WebSocket. Tìm URL RPC công khai và các phương thức được hỗ trợ trên [trang chuỗi testnet](https://blockvectra.com/en/chains/robinhood_testnet/).
