# คู่มือ Robinhood Chain testnet faucet

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

ใช้ faucet เพื่อรับ test ETH สำหรับการทำธุรกรรมบน Robinhood Chain testnet (`robinhood_testnet`, chain ID `46630`) การขอรับเหรียญนั้นฟรีและไม่ใช้ CU ใดๆ ส่วนการเรียก testnet RPC ในเวลาต่อมาจะใช้การเรียกเก็บเงินตาม CU ปกติ

* **ขั้นตอนแรก:** [ส่งคำขอรับเหรียญ](#send-a-claim) ด้วย API key ของคุณเองและที่อยู่ผู้รับโดยใช้ตัวอย่าง curl ด้านล่าง
* **เสร็จสมบูรณ์เมื่อ:** ได้รับ HTTP `202` และ `tx_hash` ยืนยันการยอมรับคำขอ; ใช้การสืบค้นใบเสร็จธุรกรรมด้านล่างเพื่อตรวจสอบการรวมเข้าสู่บล็อกเชนก่อนที่จะถือว่าการขอรับเหรียญได้รับการยืนยันแล้ว

[พารามิเตอร์ Testnet และตัวเลือกการเข้าถึง](https://blockvectra.com/en/chains/robinhood_testnet/)

## ก่อนขอรับเหรียญ

ลงทะเบียนบัญชี BlockVectra และใช้ API key อันใดอันหนึ่งของคุณเอง สร้างคีย์ใน [คอนโซล](https://console.blockvectra.com/login/?next=%2Fkeys%2F) หรือทำตาม [คู่มือการลงทะเบียนแบบเป็นโปรแกรม](https://docs.blockvectra.com/en/guides/programmatic-signup/)

ใช้ `0x` ตามด้วยอักขระเลขฐานสิบหก 40 ตัว ไม่ว่าจะเป็นตัวพิมพ์เล็กหรือตัวพิมพ์ผสมที่มี checksum ของ EIP-55 ที่ถูกต้อง การตอบกลับจะใช้ที่อยู่ตัวพิมพ์เล็ก การสะกดที่แตกต่างกันของที่อยู่เดียวกันจะใช้ขีดจำกัดการขอรับเหรียญร่วมกัน

## ส่งคำขอรับเหรียญ

เรียก `POST https://api.blockvectra.com/v1/faucet/robinhood_testnet` พร้อม `Content-Type: application/json` และคีย์ของคุณใน `x-api-key` ทั้งนี้ endpoint นี้จะไม่อ่านคีย์จากพาธ URL หรือ `Authorization`

แทนที่ `{api_key}` ด้วยคีย์ของคุณ และแทนที่ที่อยู่ตัวอย่างด้วยที่อยู่ผู้รับของคุณ:

```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"}'
```

เนื้อหา JSON จะมีเพียง `address` เท่านั้น และต้องมีขนาดไม่เกิน 64 KiB ฟิลด์ที่ไม่รู้จักหรือ JSON ที่ไม่ถูกต้องจะส่งคืน `400 invalid_request` ให้ใช้ endpoint ที่แน่นอนโดยไม่มีพารามิเตอร์ query

## กรอบเวลาและขีดจำกัดการขอรับเหรียญ

* แต่ละคำขอที่ได้รับการยอมรับจะส่ง **0.001 test ETH** (`1000000000000000` wei)
* แต่ละบัญชีและแต่ละที่อยู่ผู้รับสามารถทำการ **ขอรับใหม่ได้ 1 ครั้งต่อรอบ 24 ชั่วโมงแบบ rolling** การใช้คีย์อื่นในบัญชีเดียวกันจะไม่เพิ่มขีดจำกัดนี้
* faucet ยอมรับคำขอใหม่ได้สูงสุด **1,000 คำขอต่อวัน UTC** สำหรับผู้ใช้ทุกคนรวมกัน
* คำขอใช้ขีดจำกัด **5 คำขอต่อวินาทีต่อคีย์** ร่วมกับ `/v1/account`

`next_eligible_at` คือเวลาที่ยอมรับคำขอบวก 24 ชั่วโมง โดยแสดงเป็นการประทับเวลา RFC 3339 UTC กรอบเวลาของบัญชีและที่อยู่จะไม่รีเซ็ตตอนเที่ยงคืน UTC หากติดขีดจำกัดการขอรับ รหัส `429` จะรวม `error.data.scope` (`account`, `address` หรือ `global`) และ `error.data.next_eligible_at`; สำหรับ `global` การประทับเวลาจะเป็นจุดเริ่มต้นของวัน UTC ถัดไป ส่วน `429` จากความถี่ของคำขอจะไม่มี `scope`

## การยอมรับคำขอ (Accepted) ไม่ได้แปลว่าได้รับการยืนยัน (Confirmed) บนเชน

HTTP **202 หมายถึงยอมรับคำขอแล้ว แต่ยังไม่ได้รวมเข้าสู่บล็อกเชนสำเร็จ** การตอบกลับ JSON ประกอบด้วย:

| ฟิลด์                | ความหมาย                                           |
| -------------------- | -------------------------------------------------- |
| `chain` / `chain_id` | `robinhood_testnet` / `46630`                      |
| `address`            | ที่อยู่ผู้รับแบบตัวพิมพ์เล็ก                       |
| `amount_wei`         | จำนวนที่ขอรับเป็นสตริงจำนวนเต็มทศนิยม              |
| `tx_hash`            | แฮชที่เสถียรของธุรกรรมที่ได้รับการยอมรับ           |
| `next_eligible_at`   | เวลาที่มีสิทธิ์ครั้งถัดไปสำหรับกรอบเวลาแบบ rolling |

การลองใหม่ด้วยที่อยู่ที่ปรับมาตรฐานแล้วเดียวกันจากบัญชีเดียวกันภายใน 24 ชั่วโมง จะส่งคืนการตอบกลับ `202` เดิมและ `tx_hash` เดียวกัน รวมถึงเมื่อใช้คีย์ที่ถูกต้องอื่นจากบัญชีนั้นด้วย โดยจะไม่ส่งการชำระเงินซ้ำอีก หากการตอบกลับสูญหาย ให้ลองใหม่ด้วยที่อยู่เดิมจากบัญชีเดิม

ตรวจสอบธุรกรรมโดยใช้ endpoint ของ testnet RPC ที่มีอยู่ แทนที่ `{tx_hash}` ด้วยแฮชจากการตอบกลับที่ยอมรับแล้ว; การสืบค้น RPC นี้ใช้การเรียกเก็บเงินตาม CU ปกติ:

```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}"]}'
```

## ข้อผิดพลาดและการลองใหม่

error envelope ประกอบด้วย `error.code`, `error.message` และ `error.data` โดยที่ `error.data.reason` จะเท่ากับ `error.code`; ส่วน `docs_url`, `retryable` และ `request_id` จะให้ข้อมูลอ้างอิงข้อผิดพลาด, นโยบายการลองใหม่ และตัวระบุคำขอ สำหรับทุกรหัส `429` หรือ `503` ให้รอตามจำนวนวินาทีในส่วนหัวการตอบกลับ **`Retry-After`** ก่อนที่จะลองใหม่ หากไม่ได้รับการตอบกลับที่ยอมรับ อย่าสรุปว่า test ETH ได้ถูกส่งไปแล้ว

| HTTP | รหัสข้อผิดพลาด                              | สิ่งที่ต้องทำ                                                                                 |
| ---- | ------------------------------------------- | --------------------------------------------------------------------------------------------- |
| 400  | `invalid_address`                           | แก้ไขรูปแบบที่อยู่หรือ EIP-55 checksum; `error.data.field` คือ `/address`                     |
| 400  | `invalid_request`                           | ส่ง JSON ที่ถูกต้องซึ่งมีเฉพาะ `address` เท่านั้น                                             |
| 401  | `missing_api_key` / `invalid_api_key`       | ระบุคีย์ที่ถูกต้องใน `x-api-key`                                                              |
| 403  | `key_expired`                               | สร้าง API key ใหม่                                                                            |
| 404  | `not_found`                                 | ตรวจสอบพาธ, เชน, เมธอด POST และการไม่มีพารามิเตอร์ query; faucet อาจไม่พร้อมให้บริการ         |
| 413  | `request_too_large`                         | ลดขนาดเนื้อหาให้อยู่ภายใน 64 KiB                                                              |
| 429  | `rate_limited`                              | รอตามเวลา `Retry-After`; ตรวจสอบ `scope` และ `next_eligible_at` เมื่อมีระบุไว้                |
| 503  | `faucet_empty`                              | faucet มีเงินไม่เพียงพอสำหรับคำขอรับเหรียญและค่าธรรมเนียม รอตามเวลา `Retry-After`             |
| 503  | `service_unavailable`                       | การประมวลผลคำขอไม่พร้อมใช้งานชั่วคราว หรือคำขอก่อนหน้ายังไม่มีใบเสร็จ รอตามเวลา `Retry-After` |
| 503  | `auth_unavailable` / `upstream_unavailable` | รอตามเวลา `Retry-After` แล้วลองใหม่                                                           |

ดู [ข้อมูลอ้างอิงข้อผิดพลาด](https://docs.blockvectra.com/en/errors/) หรือ [/errors.json](https://docs.blockvectra.com/errors.json) สำหรับคำแนะนำที่เครื่องอ่านได้ และดู [คู่มือ Robinhood Chain](https://docs.blockvectra.com/en/guides/robinhood-chain/) สำหรับการเข้าถึง RPC

ดำเนินการต่อด้วย [คู่มือเริ่มต้นสำหรับ Robinhood Chain Testnet RPC](https://docs.blockvectra.com/en/guides/robinhood-testnet-starter/) สำหรับการอ่านแบบไม่ต้องใช้คีย์และ log ของ WebSocket ค้นหา public RPC URL และเมธอดที่รองรับได้ที่ [หน้าเชน testnet](https://blockvectra.com/en/chains/robinhood_testnet/)
