区块
Arc 大约每半秒提交一个区块,每一个都有自己的页面——可按高度或按哈希访问,一经存在即为最终。
抵达一个区块的两种方式#
一个高度和一个 32 字节的区块哈希都会解析到同一个页面,这正是 EIP-3091 对浏览器的要求。高度是规范写法:Arcscan 上的每个链接都发出高度,而哈希形式的 URL 会把它的 canonical 标签指回高度,因此这两种写法绝不会被当成两个页面。
https://arc-scan.io/en/block/14852000 https://arc-scan.io/en/block/0xb6a8c3b65b23486cb3b99ac35d60b68009f43daa768a43c16b296cf2c7466968
既不是十进制数字、也不是 0x 加 64 位十六进制字符的内容,会直接 404,不做任何查询。格式正确但从未被提交过的哈希同样是 404——但这一点只有链能判定,所以它要花掉一次请求。想用眼睛挑一个区块,请从区块列表在新标签页中打开开始。
区块页面展示什么#
三组带标签的行,随后是一个可展开区域,里面放着为兼容而保留的头部字段。下面的字段名就是页面上打印的名称,因此你可以两相对照着读。
概览#
| 字段 | 它在 Arc 上的含义 |
|---|---|
| 区块高度 | 它在链上的位置。数字旁的箭头可以跳到上一个和下一个区块,并在创世区块和我们已知的最新区块处停下。 |
| 状态 | 始终为 已最终确认。Arc 报告 "finality": "instant",因此没有需要等待的确认数,页面上也从不显示确认数。 |
| 时间戳 | 该区块被提交的时间,精确到秒——因此相隔半秒的两个区块常常带有相同的时间戳。 |
| 交易 | 该区块承载了多少笔交易,并链接到 交易 标签页。只有在内部交易数量已知时,才会把它加进同一句话里。 |
| 出块者 | 提议该区块的验证者地址。它不是矿工,页面上也没有出块奖励行,因此页面不会暗示曾经支付过奖励。 |
| 已付手续费 | 该区块内的交易手续费总额,以 USDC 计。 |
| 大小 | 该区块序列化后的大小,以字节计。 |
| 交易行为 | 每笔交易一个方格,按区块内顺序排列,颜色表示这笔交易做了什么。它由我们的索引派生,因此在没有索引的部署上,这一行是不存在的,而不是空的。 |
| 已用 Gas | 该区块内交易消耗的 Gas、它占上限的百分比,以及一个比例条。比例条在任何比例下都是同一种颜色:一个接近装满的 Arc 区块是正常现象,不是故障。 |
| Gas 上限 | 该区块被允许消耗的最大 Gas 量。 |
| 每单位 Gas 基础费 | 该区块的 Gas 价格,以 USDC 金额表示,旁边再用 gwei 重述一遍。 |
| 销毁手续费 | 已付手续费中被销毁的部分——它是上面 已付手续费 数值的一部分,绝不会大于它。 |
| 额外数据 | 它不是文本。在 Arc 上 extraData 是八字节大端序的基础费,因此页面在解码值旁边显示原始十六进制,而不是把它按 UTF-8 解读——那样只会产生乱码。 |
extraData 的解码值得看一次,因为它是最容易被为以太坊编写的工具误读的字段。在我们实测的主网链头区块上:
extra_data.raw 0x00000004a817c800 0x00000004a817c800 = 20000000000 wei base_fee_gwei 20
更多详情#
更多详情 开关后面是 Arc 为客户端兼容而携带的头部字段。它们存在,是为了让读者能把某个根复制进验证工具,而不是因为它们说明了关于 Arc 的什么事。
| 字段 | 含义 |
|---|---|
| 哈希 | 该区块头部的哈希。 |
| 父区块哈希 | 前一个区块的哈希,并链接到该区块。 |
| StateRoot | 该区块之后状态树的根。 |
| ReceiptsRoot | 该区块收据树的根。 |
| TransactionsRoot | 该区块交易树的根。 |
| Nonce | 为让以太坊工具继续可用而保留。在我们抽样的每个区块上它都是 0x0000000000000000,在这里没有任何共识含义。 |
| 原始区块头 | 以太坊形态头部的其余部分——difficulty、sha3Uncles、logsBloom、mixHash、withdrawalsRoot 以及 blob gas 各字段。每个值都是真实且可复制的;但它们在 Arc 上都没有任何含义。 |
有一个头部字段被刻意不予显示
在我们抽样过的每个 Arc 区块上,parentBeaconBlockRoot 与父哈希逐字节相同。把它作为独立一行打印出来,等于凭空造出第二个名字不同的父指针,读者还得去调和这两者,因此页面把它去掉,只显示一次父哈希。
三个标签页#
概览 就是上面那张卡片。交易 按位置顺序列出该区块的交易,并把数量写在自己的标签里——当数量未知时则完全不带数量。参与者 按提交者支付的手续费对这些地址排名。
半秒一个,而且一到即为最终#
今天从 /v1/chain 实测:主网每个区块 506 ms,测试网 536 ms。两者都是 API 报告的实测值,而不是协议常数,因此请到那里去读,而不要把任何一个写死在代码里。两条链的最终性都是 instant:已提交的区块无法被回滚,没有重组,因此区块页面一经渲染便永远正确。
空区块是正常的
无论有没有人提交内容,Arc 都按时提交区块。主网上的高度 1、14,000,000 和 14,852,000 各自都是零笔交易,而它们的区块体完全可以获取——那是一条空闲的链,而不是我们数据中的缺口,页面也会直截了当地这样说明,而不是看上去像坏了。
手续费和 Gas 都是 USDC#
Arc 上的 Gas 以 USDC 支付,因此区块页面上的手续费行本来就是美元金额——没有预言机,也没有换算。原生货币带 18 位小数,而 0x3600000000000000000000000000000000000000 处的 ERC-20 USDC 带 6 位。两种精度在本站都会出现,因此读取原始金额时切勿假定其中一种。
block 14,852,345 Fees Paid 0.0009989545 USDC
Burnt Fees 0.00092926 USDC
Base Fee 20 Gwei未知不是零#
当节点不再保存某个区块的区块体时,它的头部仍然完整——高度、时间戳、出块者、已用 Gas、大小和各个根都是真实的——但来自区块体的那些计数已经没有了。API 会在该区块上说明这一点,页面则在本该显示数字的位置打印 无法获取,其上方是一条标题为 此区块的交易与手续费是未知,而非为零 的横幅。交易 和 参与者 标签页也带同样的横幅,而不是报告这是一个空区块。
这个区分为什么是一条硬性规则
对于被裁剪的区块,API 返回 tx_count: 0,因为没有别的数字可以返回。把这个零渲染出来,就等于用五种语言宣称某个区块没有承载任何交易——而其实没有人能知道它承载了什么。测试网区块 30,000,000 是值得一看的例子:它的 gas_used 是 1,015,512——所以肯定发生过什么——而它的区块体被标记为 pruned。
Arcscan 会把这个数字和通往交易列表的链接一并去掉:一个无法列出交易的标签页,不是该把读者送过去的地方。这一行为有回归测试保障,而且它适用于所有地方,不只是这里。
区块能回溯到多远#
区块页面的头部来自链,其余一切派生内容来自我们的索引。两条链的起点不同,而只有其中一条从创世区块开始。
| 链 | 索引起始于 | 这意味着什么 |
|---|---|---|
| Arc 主网 (5042) | 区块 0 | 自创世区块起连续索引,因此每个主网区块都有页面。 |
| Arc Testnet (5042002) | 区块 53,500,000 | 低于该高度的内容完全不在我们的索引中。那里的空回答是我们缺失的历史,而不是链缺失的。 |
两条链的上界都大约每秒移动两次,因此这里不打印它的任何数值——请从 /v1/chain 或从浏览器上实时读取。阅读区块页面时有一处缺口值得知道:traces 索引数据流目前在两条链上都没有任何区块,这就是区块的内部交易数量通常不出现在 交易 行里的原因。同样是「没有出现」,而不是零。