按方法计价:怎么读懂 CU 和每百万次价格
了解 BlockVectra 的 CU 计量原理、权重匹配解析规则与每百万次调用价格换算公式,掌握每个用量周期的用量与成本估算方法。
BlockVectra 的服务调用采用按方法加权计量的方式。无论调用哪条支持链的 JSON-RPC 接口还是 Data API 数据集,所有用量均以统一的计算单元(Compute Unit,CU)进行统计。
本文梳理 CU 的定义、权重匹配解析规则、每百万次调用的价格换算机制,以及如何结合用量估算器测算每个用量周期的成本。
什么是 CU 与为什么按方法计价
依据官网定价页与《服务条款》的原话,CU 与计费方式的定义如下:
- 官网定价页说明:“CU(Compute Unit,计算单元)用于衡量每次调用消耗的资源:不同 JSON-RPC 方法按权重消耗不同数量的 CU,权重越高代表该方法对节点的负载越大。”同时,“计费按 CU(Compute Unit,计算单元)计量:每个 JSON-RPC 方法按其权重消耗一定数量的 CU。用量为所有链、JSON-RPC 与 Data API 的合计。”
- 《服务条款》定义:「“计算单元”(CU):指我们计量调用所用的单位。每个方法或数据接口消耗的 CU 数(“CU 权重”)见定价页面。」并且「我们按 CU 计量您的调用:每个方法或数据接口按其 CU 权重计量。CU 权重、CU 与计费单位的折算比例以及计费单位的价格,以定价页面和控制台当时公布的为准,可能因方法、产品或网络而不同。用量按结算周期汇总后从您的服务额度中扣除,具体结算方式见定价页面。」
为什么按方法计价
定价页的原话是:「权重越高代表该方法对节点的负载越大。」CU 权重因此反映各方法对节点的相对负载:权重越高,单次调用消耗的 CU 越多,每百万次调用的价格也按比例上升。
权重匹配解析规则
当客户端发起调用时,该方法究竟按多少 CU 计费?API 规范(x-rpc-methods.cu.resolution)明确定义了权重解析规则原文:
resolution: exact > longest prefix (pattern ending in *) > the '*' row
官网定价页对该顺序给出了明确解释:“按顺序解析:精确匹配方法名 → 匹配以 * 结尾的最长前缀通配规则 → 落到未列出方法的默认权重。”
具体的三层解析逻辑如下:
- 精确匹配(Exact match):
优先在权重表中查找与请求方法名完全一致的条目。例如调用
eth_call、eth_getLogs或data.block时,只要表中存在同名项,即直接采用该条目的 CU 权重。 - 最长前缀模式匹配(Longest prefix ending in *):
若无精确匹配项,系统会寻找以
*结尾的前缀通配规则,并按最长前缀优先命中。例如以debug_trace开头的所有追踪方法(如debug_traceTransaction、debug_traceCall、debug_traceBlockByNumber等),均命中debug_trace*规则对应的统一 CU 权重。 - 默认通配符匹配(The '*' row):
若既无精确匹配又无前缀命中,未在表中列出的 JSON-RPC 方法落到
*通配符行的默认权重。 注:默认*规则仅适用于 JSON-RPC 方法;Data API 方法(以data.开头)不适用默认通配符,超出支持范围的请求返回相应状态码且不计费。
换算:从每次调用 CU 到每百万次价格
在评估预算或比较不同技术方案时,开发者通常习惯以“每百万次调用需要多少美元”为单位进行测算。
换算公式
按平台的计费模型,付费充值与结算的换算关系如下:
- 用户充值时按比例兑换为计费单位:
units_per_usd(每 1 USD 兑换的计费单位数); - 每个计费单位包含固定数量的 CU:
cu_per_unit(每个计费单位对应的 CU 数); - 因此,1 USD 购买的总 CU 数量为
units_per_usd × cu_per_unit。
单次调用消耗该方法的 CU 权重,一百万次(1,000,000 次)调用的美元价格换算公式为:
每百万次价格 (USD) = 权重 × 1,000,000 ÷ (units_per_usd × cu_per_unit)结算方式以定价页公布为准。
常见方法价格表
下方表格列出具有代表性的常用方法、匹配规则以及按当前标价换算出的每百万次价格。所有数据在构建时从平台计划接口(GET /v1/plans)实时读取并计算:
当前换算基准参数
1 USD = 10,000 计费单位,1 计费单位 = 1,000 CU(即 1 USD = 1,000 万 CU)。
换算公式:单次调用 CU 权重 × 1,000,000 ÷ (10,000 × 1,000) 美元。
| 方法 | 匹配规则 | 单次调用 CU | 每百万次调用价格(USD) |
|---|---|---|---|
eth_blockNumber | 精确匹配 | 1 | $0.1 |
eth_call | 精确匹配 | 15 | $1.5 |
eth_getLogs | 精确匹配 | 30 | $3 |
debug_traceTransaction | 前缀通配 (debug_trace*) | 100 | $10 |
data.block | 精确匹配 | 5 | $0.5 |
*(其他未列出的方法) | 默认通配符 (*) | 10 | $1 |
以上 CU 权重与标价在构建时从平台计划接口(GET /v1/plans)动态读取并换算。
计费边界:哪些请求不计费
了解 CU 权重的计算方式之后,开发者同样需要明确哪些调用不会被计费。
BlockVectra 实行「应答后计费、预拦截不计费」的准则。由于计费规则包含 HTTP 状态码、JSON-RPC 错误码与 Data API 响应的多层判定,本文不在此全量重复展开。完整的判定表格与开发者操作建议,请直接参阅已上线的专门指南:
如何估算每个用量周期的成本
合理估算每个用量周期的开销可以帮助团队在免费套餐与付费升级之间做出清晰规划:
1. 梳理业务调用的方法分布与频次
首先根据应用架构分解每天的预期调用量。例如:
- 后台轮询或轻量同步调用(如
eth_blockNumber); - 用户交互触发的只读合约查询(如
eth_call); - 事件监控或批量交易检索(如
eth_getLogs或 Data API 转账端点)。
2. 使用官网定价页用量估算器
无需手动套用公式,你可以直接使用官网定价页提供的交互式估算器:
在估算器中选择所需方法并填入每日调用次数,工具将自动实时换算出:
- 每个用量周期消耗的总 CU;
- 该用量占免费套餐周期额度的百分比;
- 预估平均每秒调用次数;
- 超出免费额度部分按标价预估的费用。
3. 参考免费套餐指南
如需了解免费额度的适用范围,请参阅 免费套餐指南。