Repository navigation
Expand file tree
/
Copy pathchainplot.yaml
More file actions
321 lines (314 loc) · 11.9 KB
/
Copy pathchainplot.yaml
File metadata and controls
321 lines (314 loc) · 11.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
format_version: 1
id: arc-inflows
policy:
# Launch day (the UTC day of 2026-09-16) is 170,494 blocks at ~0.5 s each.
# 200k lets a single job cover it; the 30 min wall clock still bounds each
# run, and apply resumes where it stopped.
block_budget: 200000
# ~100k rows across five datasets: small enough to ship the parquet beside
# the page, so anyone can fork the release and recompute every number.
release_mode: dataset_referenced
chain_sources:
- id: arc
chain_id: 5042
rpc_secret: RPC_URL # env var name; archive-capable Arc mainnet endpoint
finality:
policy: finalized
# Arc mainnet public launch day, 2026-09-16 00:00:00 to 23:59:59 UTC.
# First block at or after 2026-09-16T00:00Z is 21,068,653; first block of
# 2026-09-17 UTC is 21,239,147 (found by binary search on block timestamps).
event_sources:
# CCTP v2 MessageTransmitterV2: one MessageReceived per inbound message,
# carrying sourceDomain and the finality threshold the attestation used.
- id: received
chain: arc
addresses: ["0x81d40f21f12a8f0e3252bccb954d722d4c464b64"]
abi: abis/MessageTransmitterV2.json
events: [MessageReceived]
start_block: 21068653
end: { mode: pinned, block: 21239146 }
# CCTP v2 TokenMessengerV2: MintAndWithdraw is the USDC actually minted on
# Arc for an inbound message (net amount + fee); DepositForBurn is USDC
# leaving Arc, with its destination domain.
- id: messenger
chain: arc
addresses: ["0x28b5a0e9c621a5badaa536219b3a228c8168cf5d"]
abi: abis/TokenMessengerV2.json
events: [MintAndWithdraw, DepositForBurn]
start_block: 21068653
end: { mode: pinned, block: 21239146 }
# Circle Gateway: the second rail onto Arc. AttestationUsed is a mint from a
# unified-balance deposit made on another chain.
- id: gateway
chain: arc
addresses: ["0x2222222d7164433c4c09b0b0d809a9b52c04c205"]
abi: abis/GatewayMinter.json
events: [AttestationUsed]
start_block: 21068653
end: { mode: pinned, block: 21239146 }
# Arc's EIP-7708 system emitter logs every native USDC movement as a
# Transfer (18 decimals). Filtering from = 0x0 keeps only native mints:
# every dollar that came into existence on Arc that day, whatever minted it.
- id: native
chain: arc
addresses: ["0xfffffffffffffffffffffffffffffffffffffffe"]
abi: abis/NativeUSDC.json
events: [Transfer]
indexed_filters:
- event_name: Transfer
indexed_1: ["0x0000000000000000000000000000000000000000"]
start_block: 21068653
end: { mode: pinned, block: 21239146 }
datasets:
- id: received
snapshot: .chainplot/snapshots/received/received_message_received.parquet
- id: mints
snapshot: .chainplot/snapshots/messenger/messenger_mint_and_withdraw.parquet
- id: burns
snapshot: .chainplot/snapshots/messenger/messenger_deposit_for_burn.parquet
- id: gateway
snapshot: .chainplot/snapshots/gateway/gateway_attestation_used.parquet
- id: native
snapshot: .chainplot/snapshots/native/native_transfer.parquet
models:
# CCTP v2 domain id -> chain name. Extend here when Circle adds domains.
- id: domains
file: models/domains.sql
depends_on: []
# One row per inbound CCTP message with the USDC it minted attached.
- id: inflows
file: models/inflows.sql
depends_on: [domains]
# One row per UTC hour: inbound and outbound value and counts.
- id: hourly
file: models/hourly.sql
depends_on: [inflows]
# Every native mint tagged cctp / gateway / direct by transaction membership.
- id: native_rails
file: models/native_rails.sql
depends_on: []
queries:
- id: inbound_total
file: queries/inbound_total.sql
dataset: received
title: USDC bridged in via CCTP
raw_amount_columns: [{ name: usdc, decimals: 6, symbol: USDC }]
- id: outbound_total
file: queries/outbound_total.sql
dataset: burns
title: USDC bridged out via CCTP
raw_amount_columns: [{ name: usdc, decimals: 6, symbol: USDC }]
- id: net_flow
file: queries/net_flow.sql
dataset: received
title: Net CCTP inflow
raw_amount_columns: [{ name: usdc, decimals: 6, symbol: USDC }]
- id: inbound_count
file: queries/inbound_count.sql
dataset: received
title: Inbound transfers
- id: chains_count
file: queries/chains_count.sql
dataset: received
title: Origin chains
- id: fast_share
file: queries/fast_share.sql
dataset: received
title: Share of inbound transfers attested at fast finality
- id: inflow_value_by_chain
file: queries/inflow_value_by_chain.sql
dataset: received
title: Dollars in, by origin chain
raw_amount_columns: [{ name: usdc, decimals: 6, symbol: USDC, label: Bridged in }]
- id: inflow_count_by_chain
file: queries/inflow_count_by_chain.sql
dataset: received
title: Transfers in, by origin chain
- id: hourly_flow
file: queries/hourly_flow.sql
dataset: received
title: Inbound and outbound USDC per hour
raw_amount_columns:
- { name: inbound, decimals: 6, symbol: USDC, label: In }
- { name: outbound, decimals: 6, symbol: USDC, label: Out }
- id: hourly_transfers
file: queries/hourly_transfers.sql
dataset: received
title: Transfers per hour
- id: fast_vs_standard
file: queries/fast_vs_standard.sql
dataset: received
title: Inbound USDC by finality mode
raw_amount_columns: [{ name: usdc, decimals: 6, symbol: USDC, label: Bridged in }]
- id: outflow_by_chain
file: queries/outflow_by_chain.sql
dataset: burns
title: Dollars out, by destination chain
raw_amount_columns: [{ name: usdc, decimals: 6, symbol: USDC, label: Bridged out }]
- id: largest_inflows
file: queries/largest_inflows.sql
dataset: received
title: Largest single bridge-ins
raw_amount_columns: [{ name: gross, decimals: 6, symbol: USDC, label: Amount }]
- id: native_total
file: queries/native_total.sql
dataset: native
title: All USDC minted natively on Arc
raw_amount_columns: [{ name: usdc, decimals: 6, symbol: USDC }]
- id: direct_total
file: queries/direct_total.sql
dataset: native
title: USDC minted outside CCTP and Gateway
raw_amount_columns: [{ name: usdc, decimals: 6, symbol: USDC }]
- id: mint_rails_hourly
file: queries/mint_rails_hourly.sql
dataset: native
title: Native mints per hour, by rail
raw_amount_columns:
- { name: cctp, decimals: 6, symbol: USDC, label: CCTP }
- { name: gateway, decimals: 6, symbol: USDC, label: Gateway }
- { name: direct, decimals: 6, symbol: USDC, label: Direct }
- id: rails
file: queries/rails.sql
dataset: native
title: Minted USDC by rail, reconciled against the native mint stream
raw_amount_columns:
- { name: bridge_events, decimals: 6, symbol: USDC, label: Bridge events }
- { name: native_mints, decimals: 6, symbol: USDC, label: Native mints }
- id: direct_mints
file: queries/direct_mints.sql
dataset: native
title: Largest mints by a USDC minter
raw_amount_columns: [{ name: value, decimals: 18, symbol: USDC, label: Amount }]
- id: top_recipients
file: queries/top_recipients.sql
dataset: received
title: Recipients by total bridged in
raw_amount_columns: [{ name: usdc, decimals: 6, symbol: USDC, label: Bridged in }]
- id: gateway_by_chain
file: queries/gateway_by_chain.sql
dataset: gateway
title: Gateway mints by origin chain
raw_amount_columns: [{ name: usdc, decimals: 6, symbol: USDC, label: Minted }]
dashboards:
- id: launch-inflows
title: Where Arc's first dollars came from
description: >-
Every USDC bridge-in and bridge-out on Arc mainnet during its public
launch day, 2026-09-16 00:00 to 23:59:59 UTC, indexed from CCTP v2,
Circle Gateway and the EIP-7708 native mint stream. Amounts are exact
6-decimal integers; the block range is proven complete by the release's
coverage record.
panels:
- query: inbound_total
chart: kpi
title: Bridged in (CCTP)
description: Net amount plus fee minted for every inbound message.
- query: outbound_total
chart: kpi
title: Bridged out (CCTP)
- query: net_flow
chart: kpi
title: Net inflow
- query: inbound_count
chart: kpi
title: Inbound transfers
- query: chains_count
chart: kpi
title: Origin chains
- query: fast_share
chart: kpi
title: Fast-lane share
description: Inbound transfers attested at finality threshold 1000 (fast) rather than 2000 (standard).
unit: "%"
- query: native_total
chart: kpi
title: Minted natively, all rails
description: Every Transfer from 0x0 the system emitter logged that day.
- query: direct_total
chart: kpi
title: Minted outside the bridges
description: >-
Minted straight onto the chain by an address holding USDC's minter
role, with no bridge message behind it.
- query: inflow_value_by_chain
chart: bar
title: Dollars in, by origin chain
span: full
- query: inflow_count_by_chain
chart: bar
title: Transfers in, by origin chain
description: Compare with the panel above; count and value rank the chains differently.
span: full
- query: hourly_flow
chart: bar
title: Hour by hour
description: Inbound and outbound CCTP volume per UTC hour of launch day.
span: full
- query: hourly_transfers
chart: line
title: Transfers per hour
span: full
- query: fast_vs_standard
chart: bar
title: Fast vs standard finality
description: Value that arrived through each attestation mode.
- query: outflow_by_chain
chart: bar
title: Where it left to
- query: largest_inflows
chart: table
title: Largest single bridge-ins
span: full
- query: top_recipients
chart: table
title: Recipients by total bridged in
description: Who accumulated the most over the day, how many transfers it took, and from how many chains.
span: full
- query: mint_rails_hourly
chart: bar
title: Who minted the dollars, hour by hour
description: >-
Native mints per UTC hour, split by the route whose transaction
they sit in. The third has no bridge message behind it.
span: full
- query: rails
chart: table
title: Every minted dollar, by rail
description: >-
Each bridge's own events beside the native mints inside its
transactions; they agree exactly. The third row was not bridged at
all, but minted onto the chain by an address holding USDC's minter
role.
span: full
hide_columns: [ord]
- query: direct_mints
chart: table
title: Largest mints by a USDC minter
description: >-
Native mints in transactions carrying no CCTP or Gateway event.
The recipient is shown; the minter is the transaction sender, which
is not part of the event and so is not indexed here.
span: full
- query: gateway_by_chain
chart: bar
title: Gateway mints by origin chain
description: >-
The second rail onto Arc, three orders of magnitude smaller than
CCTP that day.
span: full
publish_targets:
# Production bucket behind chainplot.chainstacklabs.com. The bucket, the S3
# endpoint and the credentials come from the environment (see .env.example);
# the prefix keeps this project's latest.json apart from other projects'.
- id: r2
type: s3
bucket: chainplot
prefix: arc-inflows
public_base_url: https://chainplot.chainstacklabs.com
dataset_license: CC-BY-4.0
# Local directory target for previewing a publish without credentials.
- id: local
type: directory
path: ./published
dataset_license: CC-BY-4.0