สิ่งที่ไม่คิดค่าบริการ: รหัสข้อผิดพลาดและกฎการเรียกเก็บเงิน

รายละเอียดกฎการเรียกเก็บเงินตามรหัสสถานะ HTTP, ข้อผิดพลาด JSON-RPC และ Data API พร้อมการดำเนินการที่แนะนำสำหรับนักพัฒนา

BlockVectra วัดปริมาณคำขอในหน่วย Compute Units (CU) โดยการเรียก JSON-RPC และ Data API จะถูกคิดค่าบริการหลังจากได้รับคำตอบกลับแล้วเท่านั้น คู่มือนี้สรุปกฎการพิจารณาการเรียกเก็บเงินตามรหัสสถานะ HTTP, การเรียก JSON-RPC และ Data API พร้อมการดำเนินการที่แนะนำสำหรับนักพัฒนา

รหัสสถานะ HTTP และกฎการเรียกเก็บเงิน

กฎการพิจารณาการเรียกเก็บเงินและการจัดการสำหรับการตอบกลับในระดับ HTTP มีดังนี้:

สถานะ HTTPบอดีการตอบกลับสถานการณ์คิดค่าบริการหรือไม่?การดำเนินการที่แนะนำ
200การตอบกลับ JSON-RPC (เดี่ยวหรือแบบชุด)การตอบกลับปกติ; ข้อผิดพลาดในระดับชั้น JSON-RPC ทั้งหมด (ข้อผิดพลาดการแจงส่วน, การปฏิเสธเมธอด, อัปสตรีมล้มเหลว, ข้อผิดพลาดของโหนด) ก็เป็น 200 เช่นกันประเมินแยกตามการเรียกตรวจสอบ result หรือ error ในแต่ละการเรียก; หากส่งคืนข้อผิดพลาด โปรดดูการจัดการข้อผิดพลาด JSON-RPC ด้านล่าง
204ว่างเปล่าทุกการเรียกในคำขอเป็นการแจ้งเตือน (notifications)การแจ้งเตือนจะถูกคิดค่าบริการตามปกติไม่ต้องดำเนินการเพิ่มเติม
400ว่างเปล่าข้อความ HTTP มีรูปแบบไม่ถูกต้อง (ไม่สามารถแจงส่วนบรรทัดคำขอหรือส่วนหัวได้, การเข้ารหัส chunked ไม่ถูกต้อง) หรือระยะเวลาระหว่างการอ่านบอดีคำขอสองครั้งเกิน 10 วินาทีไม่ตรวจสอบไวยากรณ์คำขอ HTTP, ส่วนหัว และความต่อเนื่องของการส่งข้อมูล
402JSON, -32020ยอดคงเหลือไม่เพียงพอ, โควตาหมดลง; เมื่อทราบยอดคงเหลือ error.data จะรวม balance_units และ balance_cuไม่ตรวจสอบยอดคงเหลือของคุณใน หน้า Billing ของคอนโซล หรือผ่าน GET /v1/topup/deposit-address (MCP get_deposit_address); เติมเงินบนเชนไปยังที่อยู่เฉพาะของบัญชีคุณ (ดู คู่มือการเติมเงินของ Agent)
403ว่างเปล่าเมธอดอื่นนอกเหนือจาก POST หรือ OPTIONS บน /v1/{chain} หรือ /v1/{chain}/{api_key} (ไม่ว่าชื่อเชนจะเป็นที่รู้จักหรือไม่ก็ตาม)ไม่เปลี่ยนเมธอดคำขอ HTTP เป็น POST (หรือ cross-origin OPTIONS preflight)
401JSON, -32024 (missing_api_key หรือ invalid_api_key)ไม่มีคีย์บนเชนที่รู้จัก, คีย์ไม่รู้จัก หรือถูกปิดใช้งานไม่ส่ง API key ที่ใช้งานได้ในส่วนหัว x-api-key (คีย์ที่สร้างใหม่หรือเพิ่งหมุนเวียนต้องใช้เวลาสองสามวินาทีจึงจะมีผล; ให้รอสักครู่แล้วลองใหม่)
404JSON, -32600 (reason = unknown_chain)POST ไปยัง {chain} ที่ไม่รู้จักไม่ตรวจสอบชื่อเชนใน URL เทียบกับ เชนที่รองรับ (ต้องเป็นสลักตัวพิมพ์เล็กตรงกันทุกประการ)
404บอดีว่างเปล่า (empty body)พาธไม่ตรงกัน (เช่น POST /v1, /v1/, POST /v1/{chain}/)ไม่ใส่เชนใน URL (/v1/{chain})
408ว่างเปล่าใช้เวลาเกิน 35 วินาทีจากการอ่านส่วนหัวคำขอจนถึงการส่งคืนการตอบกลับเป็นไปได้: การเรียกที่ส่งต่อไปยังโหนดแล้วจะถูกคิดค่าบริการตามปกติเมื่อโหนดตอบกลับอย่าลองใหม่สำหรับการเรียกที่เปลี่ยนสถานะ (เช่น eth_sendRawTransaction) โดยไม่มีเงื่อนไข; การตัดการเชื่อมต่อของไคลเอนต์ไม่ได้ยกเลิกการเรียกที่ส่งต่อไปแล้ว
413ว่างเปล่าบอดีคำขอ > 2 MiB (2,097,152 ไบต์)ไม่ควบคุมบอดีคำขอให้ต่ำกว่า 2 MiB; แยกชุดคำขอออกเป็นคำขอย่อยๆ
414 / 431ว่างเปล่าURI ยาวเกินไป (414) หรือส่วนหัวคำขอมีขนาดใหญ่เกินไป (431)ไม่ย่อ URI คำขอให้สั้นลง หรือตัดส่วนหัวคำขอ HTTP
429JSON, -32005 หรือ -32022; มี Retry-After สำหรับการจำกัดอัตรา (-32005); ขีดจำกัด burst/ขนาดชุด (-32022) จะไม่มีส่วนหัวนี้ยอดคงเหลือในบักเก็ตหมด → -32005; CU คำขอเดี่ยวเกินความจุ burst → -32022; ขีดจำกัดอัตราการเรียกของบัญชีหมด → -32005; จำนวนการเรียกในคำขอเดี่ยวเกินขีดจำกัด → -32022ไม่สำหรับ -32005 ที่มี Retry-After ให้รอตามจำนวนวินาทีที่ระบุก่อนลองใหม่; สำหรับ -32022 ให้แยกคำขอหรือลดขนาดชุด (การลองใหม่โดยไม่แก้ไขจะไม่มีทางสำเร็จ)
503JSON, -32021 พร้อม Retry-Afterข้อมูลการเรียกเก็บเงินไม่พร้อมใช้งานชั่วคราว; เซิร์ฟเวอร์ปฏิเสธคำขอชั่วคราว (ไม่ใช่ปัญหายอดคงเหลือ ไม่จำเป็นต้องเติมเงิน); คีย์ที่สร้างใหม่จะส่งคืนค่านี้จนกว่าข้อมูลการเรียกเก็บเงินจะซิงค์ (โดยปกติใช้เวลาสองสามวินาที)ไม่ไม่ใช่ปัญหายอดคงเหลือ ไม่จำเป็นต้องเติมเงิน; รอตามจำนวนวินาทีที่ระบุใน Retry-After แล้วลองใหม่

หมายเหตุ: เมื่อเข้าถึงผ่าน Cloudflare ทาง Cloudflare อาจส่งคืนหน้าข้อผิดพลาด 52x หรือ 1015 ซึ่งไม่ได้สร้างขึ้นโดยบริการ

ส่วนหัวการตอบกลับสำหรับการคิดค่าบริการและยอดคงเหลือ: เมื่อส่ง x-bv-meter: 1 ในคำขอ HTTP (ใช้ได้ทั้ง JSON-RPC และ Data API) การตอบกลับที่มีการคิดค่าบริการอย่างน้อยหนึ่งการเรียกจะส่งคืน x-bv-cu-charged (Compute Units ที่คิดค่าบริการสำหรับคำขอนี้ หรือผลรวมของการเรียกที่คิดค่าบริการในชุด) และ x-bv-balance-units (หน่วยยอดคงเหลือที่เหลืออยู่ในบัญชีทันทีหลังจากการคิดค่าบริการนี้ ซึ่งอาจติดลบได้หากใช้เกิน; จะละเว้นหากไม่ทราบยอดคงเหลือ) คำขอที่ไม่มี x-bv-meter: 1, การตอบกลับที่ไม่มีการคิดค่าบริการใดๆ และการตอบกลับข้อผิดพลาด 402, 403, 429 หรือ 503 จะละเว้นส่วนหัวทั้งสองนี้ ส่วนหัวการตอบกลับเหล่านี้สามารถเข้าถึงได้โดยสคริปต์เบราว์เซอร์ผ่าน CORS ในขณะที่ WebSocket จะไม่ใช้ส่วนหัวเหล่านี้ ยอดคงเหลือจะหักการใช้งานที่ยังไม่ได้ชำระทั้งหมดโดยปัดเศษขึ้นเป็นหน่วยเต็มหนึ่งครั้ง; การสรุปยอดรายชั่วโมงจะปัดเศษลง ดังนั้นยอดคงเหลือที่รายงานอาจเพิ่มขึ้นสูงสุดหนึ่งหน่วยหลังจากการสรุปยอด

รหัสข้อผิดพลาด JSON-RPC และกฎการเรียกเก็บเงิน

รหัสข้อผิดพลาดเดียวกันอาจมาจากแพลตฟอร์มหรือโหนด และการเรียกเก็บเงินจะแตกต่างกัน:

  • ข้อผิดพลาดที่สร้างขึ้นโดยตัวแพลตฟอร์มเอง: จะไม่คิดค่าบริการเสมอ
  • ข้อผิดพลาดที่ส่งคืนโดยโหนด: จะถูกส่งต่อตามที่เป็นและคิดค่าบริการตามน้ำหนักของเมธอด โดยมีข้อยกเว้นเฉพาะรหัสข้อผิดพลาดของโหนดที่ระบุด้านล่างเท่านั้น

รายละเอียดกฎ

  • ข้อผิดพลาดของโหนดที่ไม่คิดค่าบริการ: -32002 (batch timeout), -32003 (batch response too large) และ -32600 (batch rejected as a whole) ของโหนด บ่งชี้ว่าโหนดละทิ้งการเรียกก่อนกำหนด; ข้อผิดพลาดเหล่านี้รวมถึงการแจ้งเตือน (notifications) ใดๆ ในชุดเดียวกันจะไม่ถูกคิดค่าบริการ ส่วน -32601 (exposed method not implemented) และ -32603 (node internal failure) ของโหนด จะไม่คิดค่าบริการผ่าน HTTP หรือ WebSocket และไม่ส่งผลกระทบต่อการเรียกหรือการแจ้งเตือนอื่นๆ ในชุด นอกจากนี้ 4444 (pruned block) และ -32000 (สถานะย้อนหลังอยู่นอกหน้าต่างประวัติสถานะของโหนด ซึ่งกำหนดโดย state_window_blocks ใน GET /v1/chains) จะไม่คิดค่าบริการและไม่ส่งผลต่อการเรียกอื่นๆ ในชุด
  • ข้อผิดพลาดของโหนดที่คิดค่าบริการ: ข้อผิดพลาดอื่นๆ ที่ส่งคืนโดยโหนดจะถูกคิดค่าบริการตามน้ำหนักของเมธอดเมื่อเป็นการรายงานผลลัพธ์ของเชน เช่น execution reverted (-32000 หรือ 3 พร้อม data), -32602 invalid argument ของตัวโหนดเอง
  • การยอมรับยอดคงเหลือและการซิงค์: -32020 ระบุว่ายอดคงเหลือในบัญชีไม่เพียงพอและจำเป็นต้องเติมเงิน; เมื่อทราบยอดคงเหลือ error.data.balance_units และ error.data.balance_cu จะระบุจำนวนที่เหลืออยู่ (อาจติดลบได้) คีย์ที่สร้างใหม่อาจส่งคืน -32021 (503) เป็นเวลาสองสามวินาที; ให้รอตาม Retry-After แล้วลองใหม่
  • ความล้มเหลวของอัปสตรีม: -32603 ที่สร้างโดยแพลตฟอร์มเนื่องจากการสื่อสารกับอัปสตรีมล้มเหลวหรือการตอบกลับมีรูปแบบไม่ถูกต้อง (upstream unavailable, no response from upstream, malformed upstream response) จะมี data.reason: upstream_unavailable
  • การคิดค่าบริการการแจ้งเตือน: การแจ้งเตือน (Notifications 204) จะถูกคิดค่าบริการตามน้ำหนักของเมธอด

ตารางรหัสข้อผิดพลาด JSON-RPC

รหัสแหล่งที่มาHTTPข้อความเหตุผลคิดค่าบริการหรือไม่?การดำเนินการที่แนะนำ
-32700BlockVectra200parse error-ไม่ (ใช้ 1 CU โทเค็นจำกัดอัตรา)แก้ไขไวยากรณ์ JSON ของคำขอ
-32600BlockVectra200invalid requestinvalid_requestไม่ (ใช้ 1 CU โทเค็นจำกัดอัตรา)แก้ไขไวยากรณ์และโครงสร้างคำขอ JSON-RPC
-32600BlockVectra200batch too large: max <N> callsbatch_too_large (+max)ไม่แยกชุดคำขอให้มีจำนวนการเรียกต่ำกว่าขีดจำกัด (ขีดจำกัดชุดมาตรฐานคือ 100)
-32600BlockVectra200invalid request: ambiguous member nameinvalid_requestไม่ลบชื่อสมาชิกที่ซ้ำกันหรือไม่ชัดเจนในออบเจกต์ JSON
-32601BlockVectra200method not available: <method>-ไม่เรียกใช้เฉพาะเมธอดที่อนุญาตสำหรับเชนนี้เท่านั้น (ดู เชนที่รองรับ)
-32600BlockVectra404unknown chainunknown_chainไม่ตรวจสอบชื่อเชนใน URL
-32602BlockVectra200eth_getLogs block range too large: max <N> blocks-ไม่ย่อช่วงบล็อกของ eth_getLogs ให้แคบลง (ขีดจำกัดกำหนดแยกตามเชน เช่น 1000 บล็อก)
-32602BlockVectra200tracer not allowed-ไม่ใช้ native tracer ที่ได้รับอนุญาต (callTracer, flatCallTracer, prestateTracer, 4byteTracer, noopTracer หรือละเว้น)
-32602BlockVectra200trace timeout not allowed-ไม่กำหนดสตริง Go duration ที่ถูกต้องโดยมี timeout ≤ 30s
-32010BlockVectra200node is syncing; calls are temporarily unavailable-ไม่โหนดกำลังซิงค์ ลองใหม่ในภายหลัง (ยกเว้น eth_chainId)
-32011BlockVectra200historical state is not available beyond the most recent <N> blocks-ไม่สืบค้นบล็อกที่เป็นปัจจุบันมากขึ้น (บล็อกเป้าหมายต้องอยู่ภายในหน้าต่างสถานะ; หลีกเลี่ยงแท็ก safe/finalized/earliest)
-32000BlockVectra200transaction not foundnot_foundไม่ตรวจสอบแฮชธุรกรรม (0x + 64 อักขระฐานสิบหก)
-32000BlockVectra200block not foundnot_foundไม่ตรวจสอบแฮชหรือหมายเลขบล็อก
-32000BlockVectra200upstream response too largeresponse_too_largeไม่จำกัดขอบเขตการสืบค้นให้แคบลงหรือแยกคำขอ
-32005BlockVectra200-overloadedไม่เซิร์ฟเวอร์ทำงานหนักเกินไปชั่วคราว ลองใหม่ในภายหลัง
-32005BlockVectra429rate limit exceededkey_rate_limit / free_plan_call_limit / concurrency_limitไม่ลดความถี่ของคำขอ; ปฏิบัติตาม Retry-After เมื่อมีระบุ
-32022BlockVectra429request cost <N> CU exceeds burst capacity <M> CUrequest_exceeds_burstไม่แยกคำขอหรือชุดคำขอเพื่อให้ CU ของคำขอเดี่ยวต่ำกว่าความจุ burst
-32022BlockVectra429request has <N> calls, exceeding the free-plan limit of <M> calls per secondfree_plan_batch_too_large (+max)ไม่แยกชุดคำขอให้อยู่ภายใต้ขีดจำกัดต่อวินาที หรืออัปเกรดเป็นแพ็กเกจชำระเงิน
-32603BlockVectra200upstream unavailableupstream_unavailableไม่การสื่อสารกับอัปสตรีมล้มเหลว ลองใหม่ในภายหลัง
-32603BlockVectra200no response from upstreamupstream_unavailableไม่อัปสตรีมไม่ตอบสนอง ลองใหม่ในภายหลัง
-32603BlockVectra200malformed upstream responseupstream_unavailableไม่การตอบกลับของอัปสตรีมมีรูปแบบไม่ถูกต้อง ลองใหม่ในภายหลัง
-32603BlockVectra200--ไม่ข้อผิดพลาดภายในที่เกิดขึ้นไม่บ่อย ลองใหม่ในภายหลัง
-32020BlockVectra402insufficient balancebalance_exhausted / free_grant_exhausted (+topup_url และ +balance_units / balance_cu เมื่อทราบยอดคงเหลือ)ไม่ตรวจสอบยอดคงเหลือของคุณใน หน้า Billing ของคอนโซล หรือผ่าน GET /v1/topup/deposit-address (MCP get_deposit_address); เติมเงินบนเชนไปยังที่อยู่เฉพาะของบัญชีคุณ (ดู คู่มือการเติมเงินของ Agent)
-32021BlockVectra503billing data temporarily unavailable-ไม่ข้อมูลการเรียกเก็บเงินกำลังซิงค์ (ไม่ใช่ปัญหายอดคงเหลือ); รอตามวินาทีของ Retry-After แล้วลองใหม่
4444Node200pruned history unavailable-ไม่บล็อกที่ร้องขอถูกตัดตอน (pruned) โดยโหนด; ไม่คิดค่าบริการ; ไม่ส่งผลต่อชุดคำขอ
-32000Node200historical state ... is not available-ไม่อยู่นอกหน้าต่างประวัติสถานะของโหนด; ไม่คิดค่าบริการ; ไม่ส่งผลต่อชุดคำขอ
-32000Node200old data not available due to pruning...-ไม่อยู่นอกหน้าต่างประวัติของโหนด (หน้าต่างกำหนดโดย state_window_blocks); ไม่คิดค่าบริการ; ไม่ส่งผลต่อชุดคำขอ
-32002Node200<node message>-ไม่โหนดหมดเวลาในชุดคำขอและละทิ้งการเรียก; ไม่คิดค่าบริการ; การแจ้งเตือนในชุดก็ไม่คิดค่าบริการเช่นกัน
-32003Node200<node message>-ไม่การตอบกลับชุดคำขอของโหนดมีขนาดใหญ่เกินไปและถูกละทิ้ง; ไม่คิดค่าบริการ; การแจ้งเตือนในชุดก็ไม่คิดค่าบริการเช่นกัน
-32601Node200<node message>-ไม่เมธอดที่เปิดเผยไม่ได้ถูกนำไปใช้งานโดยโหนด; ให้ใช้เมธอดอื่นที่รองรับ
-32603Node200<node message>-ไม่ความล้มเหลวภายในของโหนด; ให้ลองใหม่พร้อม backoff
-32600Node200<node message>-ไม่ทั้งชุดคำขอถูกปฏิเสธโดยโหนด; ไม่คิดค่าบริการ; การแจ้งเตือนในชุดก็ไม่คิดค่าบริการเช่นกัน
อื่นๆNode200<node message>-คิดค่าบริการ (ตามน้ำหนักของเมธอด)ผลลัพธ์ของเชน (เช่น execution reverted, -32602 ของโหนด); ตรวจสอบพารามิเตอร์การเรียกสัญญา

กฎการเรียกเก็บเงินของ Data API

Data API ห่อหุ้มข้อมูลเชนแบบอ่านอย่างเดียวไว้ใน REST endpoint โดยการคิดค่าบริการและการจัดการข้อผิดพลาดจะเป็นไปตามกฎเหล่านี้:

รายละเอียดกฎ

  • คิดค่าบริการเฉพาะการตอบกลับที่สำเร็จระดับ 2xx เท่านั้น
  • การดำเนินการที่ไม่พร้อมใช้งานซึ่งอยู่นอกเหนือความครอบคลุม (เช่น เชนที่ไม่รองรับ หรือบล็อกที่อยู่นอกความครอบคลุมของ trace) จะส่งคืน HTTP 422 no_coverage ซึ่งไม่คิดค่าบริการแต่นับรวมในขีดจำกัดอัตรา
  • การตอบกลับ HTTP 401, 402, 404 และ 429 ไม่คิดค่าบริการ สำหรับส่วนหัวการตอบกลับ (x-bv-meter: 1) โปรดดู รหัสสถานะ HTTP และกฎการเรียกเก็บเงิน

ตารางรหัสสถานะ Data API

สถานะ HTTPรหัสข้อผิดพลาด / สถานการณ์คิดค่าบริการหรือไม่?การดำเนินการที่แนะนำ
200การตอบกลับข้อมูลสำเร็จคิดค่าบริการ (ตามน้ำหนัก CU ของการดำเนินการ Data API)แจงส่วน data, meta และ next_cursor ใน envelope ของการตอบกลับ
400พารามิเตอร์คำขอมีรูปแบบไม่ถูกต้องหรือขาดฟิลด์ที่จำเป็นไม่ตรวจสอบและแก้ไขพารามิเตอร์ query หรือ body
402ยอดคงเหลือหมด (error.code: "insufficient_balance" รวม balance_units และ balance_cu เมื่อทราบยอดคงเหลือ)ไม่ตรวจสอบยอดคงเหลือของคุณใน หน้า Billing ของคอนโซล หรือผ่าน GET /v1/topup/deposit-address (MCP get_deposit_address); เติมเงินบนเชนไปยังที่อยู่เฉพาะของบัญชีคุณ (ดู คู่มือการเติมเงินของ Agent)
401ไม่มี API key, คีย์ไม่รู้จัก หรือถูกปิดใช้งาน (error.code: "missing_api_key" หรือ "invalid_api_key")ไม่ส่ง API key ที่ใช้งานได้ในส่วนหัว x-api-key
404เชนไม่รู้จักหรือไม่ใช่สาธารณะ (error.code: "not_found") หรือออบเจกต์ที่ร้องขอไม่มีอยู่ไม่ตรวจสอบสลักเชนใน URL (ต้องเป็นตัวพิมพ์เล็กตรงกันทุกประการ) และพาธคำขอ
409บล็อกหรือหน้าต่างที่ร้องขอสูงกว่าความสูงที่จัดทำดัชนีในปัจจุบัน (error.code: "not_indexed_yet" รวม indexed_through)ไม่สืบค้นบล็อกได้สูงสุดถึง indexed_through หรือลองใหม่ในภายหลัง
422การดำเนินการเฉพาะเชนไม่พร้อมใช้งาน (เช่น เชนที่ไม่รองรับ หรืออยู่นอกความครอบคลุมของ trace, error.code: "no_coverage")ไม่ (นับรวมในขีดจำกัดอัตรา)ตรวจสอบฟีเจอร์ที่รองรับผ่าน GET /v1/status (ฟรี, data_features แบบไม่ใช้คีย์)
429เกินขีดจำกัดอัตรา (error.code: "rate_limited") หรือคำขอเดี่ยวมีค่าใช้จ่ายมากกว่าความจุ burst ของคีย์ (error.code: "cost_exceeds_burst")ไม่ลดความถี่ของคำขอ; แยกคำขอที่มีขนาดใหญ่เกินไป (คำขอที่เกินความจุ burst จะไม่มีทางสำเร็จหากส่งในรูปแบบเดิม)
503บริการข้อมูลไม่พร้อมใช้งานชั่วคราว (error.code: "unavailable") หรือเชนไม่ว่าง (error.code: "gateway_overloaded")ไม่ลองใหม่ในภายหลังและปฏิบัติตาม Retry-After เมื่อมีระบุ

ตรวจสอบยอดคงเหลือ (GET /v1/account)

ผู้ถือ API key สามารถตรวจสอบยอดคงเหลือและรายละเอียดโควตาของคีย์ได้โดยตรง โดยไม่มีค่าใช้จ่ายหรือหัก Compute Units (CU) ใดๆ:

curl -H "x-api-key: $BLOCKVECTRA_API_KEY" https://api.blockvectra.com/v1/account
  • ฟรีและไม่คิดค่าบริการ: GET /v1/account เป็นบริการฟรี จะไม่ถูกคิดค่าบริการ ไม่หัก CU และส่งคืน HTTP 200 พร้อมยอดคงเหลือปัจจุบันแม้ว่าจะเป็นศูนย์หรือติดลบก็ตาม (ไม่มีทางส่งคืน 402)
  • การยืนยันตัวตน: การยืนยันตัวตนด้วยคีย์จะใช้ส่วนหัว x-api-key เท่านั้น (ไม่รับคีย์ในพาธและ Bearer token) หากไม่มีส่วนหัวจะส่งคืน 401 missing_api_key; คีย์ที่ไม่ถูกต้องหรือถูกเพิกถอนจะส่งคืน 401 invalid_api_key (คีย์ที่หมดอายุจะส่งคืน 403 key_expired; บริการที่ไม่พร้อมใช้งานชั่วคราวจะส่งคืน 503 auth_unavailable หรือ billing_unavailable พร้อม Retry-After)
  • การจำกัดอัตรา: มีขีดจำกัดอิสระที่ 5 คำขอต่อวินาทีต่อ key ID โดยไม่ขึ้นกับการวัดปริมาณและการเรียกเก็บเงินของ CU การส่งคำขอเกินขีดจำกัดจะส่งคืน HTTP 429 rate_limited พร้อมส่วนหัว Retry-After

ฟิลด์การตอบกลับ:

  • key_id: สตริงตัวระบุของ API key
  • plan: ประเภทแพ็กเกจของบัญชี (free เมื่อบัญชีมีโควตาอัตราการเรียกของแพ็กเกจฟรี; นอกนั้นเป็น paid)
  • balance_units: ยอดคงเหลือในบัญชีที่เหลืออยู่ในหน่วย units (อาจเป็นศูนย์หรือติดลบได้)
  • balance_cu: ยอดคงเหลือที่แปลงเป็น Compute Units (CU)
  • balance_as_of_age_ms: มิลลิวินาทีที่ผ่านไปนับตั้งแต่การอ่านยอดคงเหลือจากแหล่งข้อมูล
  • key: ขีดจำกัดเฉพาะของคีย์และรายละเอียดโควตา:
    • cu_per_sec: อัตราการเติม token-bucket ในหน่วย CU ต่อวินาที
    • burst_cu: ความจุ burst ของ token-bucket ในหน่วย CU
    • cu_cap: เพดาน CU ตลอดอายุการใช้งานสำหรับคีย์นี้ หรือ null หากไม่ได้จำกัดเพดาน
    • cu_cap_remaining: CU ที่เหลืออยู่ภายใต้ cu_cap หรือ null หากไม่ได้จำกัดเพดาน (อาจเป็นศูนย์หรือติดลบได้)
    • expires_at: การประทับเวลาหมดอายุตาม RFC 3339 หรือ null หากคีย์ไม่มีวันหมดอายุ

ตัวอย่างการตอบกลับ:

{
  "key_id": "<key_id>",
  "plan": "<plan>",
  "balance_units": <integer>,
  "balance_cu": <integer>,
  "balance_as_of_age_ms": <integer>,
  "key": {
    "cu_per_sec": <integer>,
    "burst_cu": <integer>,
    "cu_cap": <integer_or_null>,
    "cu_cap_remaining": <integer_or_null>,
    "expires_at": "<expires_at_or_null>"
  }
}

การกำหนดราคาและการอัปเกรด

ค่าใช้จ่ายเฉพาะสำหรับการเรียกที่คิดค่าบริการทั้งหมดจะพิจารณาจากน้ำหนัก CU ที่ประกาศไว้:

  • หากต้องการตรวจสอบน้ำหนักของเมธอดและการดำเนินการทั้งหมด โปรดดู ตารางน้ำหนักเมธอด และ กฎการวัดปริมาณ CU ของ JSON-RPC
  • สำหรับรายละเอียดราคาของแพ็กเกจและการสรุปยอด โปรดดู หน้าราคา
  • การอัปเกรดเป็นแพ็กเกจชำระเงิน: การเติมเงินแบบชำระเงินจะยกเลิกขีดจำกัดการเรียกต่อวินาทีของแพ็กเกจฟรี โดยแต่ละคีย์ยังคงอยู่ภายใต้อัตรา CU และขีดจำกัด burst

กระบวนการเติมเงินบนเชน

เมื่อยอดคงเหลือในบัญชีของคุณไม่เพียงพอหรือคุณต้องการ throughput ที่สูงขึ้น ให้เติมเงินบนเชนในคอนโซลตามขั้นตอนเหล่านี้:

  1. เข้าสู่ระบบคอนโซล: ลงชื่อเข้าใช้ BlockVectra Console
  2. ไปที่หน้า Billing: นำทางไปยัง หน้า Billing
  3. รับที่อยู่เฉพาะของคุณ: ในการ์ดการเติมเงินบนเชน ให้คัดลอกที่อยู่การเติมเงินเฉพาะของบัญชีคุณหรือสแกนคิวอาร์โค้ด
  4. โอนเงิน: โอนเงินโดยใช้เครือข่ายและ USDC / USDT / USDG ที่รองรับตามที่ระบุไว้ในหน้าดังกล่าวเท่านั้น เครือข่ายที่รองรับและจำนวนเงินเติมขั้นต่ำจะแสดงอยู่ในคอนโซล
  5. บันทึกเครดิตอัตโนมัติ: เมื่อตรวจพบบนเชนแล้ว ธุรกรรมจะแสดงสถานะเป็น "Processing"; และเมื่อบันทึกเครดิตแล้ว เครดิตจะถูกเพิ่มเข้าสู่ยอดคงเหลือของคุณโดยอัตโนมัติ

ข้อควรระวังสำคัญ:

  • ใช้เฉพาะเครือข่ายและโทเค็นที่ระบุไว้อย่างชัดเจนในคอนโซลเท่านั้น การโอนบนเชนที่ไม่รองรับหรือใช้โทเค็นที่ไม่ถูกต้องจะไม่สามารถบันทึกเครดิตโดยอัตโนมัติได้
  • ตรวจสอบให้แน่ใจว่าการโอนแต่ละครั้งมียอดถึงจำนวนเติมเงินขั้นต่ำที่ระบุไว้ในคอนโซล
  • เมื่อการเติมเงินแบบชำระเงินครั้งแรกได้รับการบันทึกเครดิตแล้ว บัญชีของคุณจะได้รับการอัปเกรดเป็นบัญชีชำระเงิน ซึ่งจะยกเลิกขีดจำกัดการเรียกต่อวินาทีของแพ็กเกจฟรี

โปรแกรม Agent หรือเซิร์ฟเวอร์สามารถเรียก endpoint การเติมเงินได้โดยตรงโดยใช้ API key; ดูที่ คู่มือการเติมเงินแบบเป็นโปรแกรมของ Agent

การคิดค่าบริการ Webhook Push

บริการ Push มีน้ำหนักแยกต่างหากสำหรับอีเวนต์ข้อมูลที่ส่งมอบสำเร็จ, การสืบค้นประวัติที่สำเร็จ และ address-days ที่คิดค่าบริการได้ การเรียกการจัดการนอกเหนือจากประวัติอีเวนต์, ความพยายามส่งมอบที่ล้มเหลว, การลองใหม่อัตโนมัติ และอีเวนต์ควบคุมจะไม่มีค่าบริการ อีเวนต์ที่ส่งมอบแต่ละรายการจะถูกคิดค่าบริการครั้งเดียว; การเล่นซ้ำของลูกค้าและอีเวนต์ตามสายหลัก (canonical events) ที่ส่งมอบซ้ำหลังจากการ reorg ถือเป็นการส่งมอบที่คิดค่าบริการใหม่ ค่าบริการที่อยู่จะใช้จำนวนที่อยู่สูงสุดของการสมัครรับข้อมูลแต่ละรายการขณะออนไลน์ระหว่างวันตามเวลา UTC; โควตาที่อยู่ฟรีของบัญชีจะถูกแชร์ร่วมกันในทุกการสมัครรับข้อมูล โดยการสมัครรับข้อมูลที่เก่ากว่าจะได้รับสิทธิ์ก่อน ที่อยู่หนึ่งที่อยู่ในสองการสมัครรับข้อมูลจะถูกนับสองครั้ง; การเพิ่มเชนจะเปลี่ยนค่าธรรมเนียมอีเวนต์ ไม่ใช่ค่าธรรมเนียมที่อยู่

ดู คู่มือ Blockchain Webhook API สำหรับการตั้งค่า, การตรวจสอบลายเซ็น และ การกู้คืนการส่งมอบ คู่มือการชำระเงินด้วยสเตเบิลคอยน์ ครอบคลุมการตรวจสอบใบเสร็จและการโพลข้อมูลย้อนหลัง; การสมัครรับข้อมูล WebSocket ใช้การวัดปริมาณการเชื่อมต่อและการแจ้งเตือนของตนเอง ข้อผิดพลาดของคำขอแสดงอยู่ใน ข้อมูลอ้างอิงข้อผิดพลาด น้ำหนักด้านล่างนำมาจาก GET /v1/plans

การใช้งานหน่วยการเรียกเก็บเงินCU
push.address_dayที่อยู่-วันที่คิดค่าบริการ33
push.historyคำขอประวัติที่สำเร็จ25
push.logเหตุการณ์ข้อมูลที่ส่งมอบแล้ว150
push.native_transferเหตุการณ์ข้อมูลที่ส่งมอบแล้ว150
push.token_transferเหตุการณ์ข้อมูลที่ส่งมอบแล้ว150

ที่อยู่ฟรีต่อบัญชีต่อวัน UTC: 1000

โควตาที่อยู่ฟรีต่อบัญชีต่อวัน UTC ซึ่งแชร์ร่วมกันในทุกกลุ่มการสมัครรับข้อมูลโดยไม่คำนึงถึงแพ็กเกจ สำหรับแต่ละกลุ่ม จะนับจำนวนที่อยู่สูงสุดในขณะออนไลน์ระหว่างวันนั้น โดยจัดสรรโควตาตามลำดับ ID กลุ่มจากน้อยไปมาก หากที่อยู่เดียวกันอยู่ในสองกลุ่มจะนับสองครั้ง จำนวนเชนในกลุ่มจะไม่ทวีคูณจำนวนที่อยู่ กลุ่มที่ออฟไลน์หรือถูกลบตลอดทั้งวันจะไม่ถูกนำมาคำนวณ สำหรับแต่ละกลุ่ม จำนวนที่เหลือหลังจากหักส่วนแบ่งโควตาแล้ว จะถูกคูณด้วยน้ำหนัก CU ของ `push.address_day` ใน `method_weights` โควตาที่กำหนดค่าไว้ในปัจจุบันมาจากนโยบายราคาเดียวกันกับที่ใช้สำหรับค่าบริการที่อยู่-วัน ซึ่งไม่ใช่ขีดจำกัดความจุของบัญชีหรือโควตาแยกต่างหากต่อกลุ่ม

ตัวอย่าง: เหตุการณ์ native.transfer ที่ส่งมอบแล้ว 10 เหตุการณ์, คำขอประวัติที่สำเร็จ 2 คำขอ และที่อยู่-วันที่คิดค่าบริการ 10 ที่อยู่-วัน มีค่าใช้จ่าย 10 × 150 + 2 × 25 + 10 × 33 = 1880 CU ที่อยู่-วันที่คิดค่าบริการจะถูกนับหลังจากหักโควตาที่อยู่ฟรีของบัญชีแล้ว

ขั้นตอนถัดไป

อัปเดตล่าสุด:

ในหน้านี้