wormhole-explorer/analytics/scripts/protocols_stats_1h.flux

50 lines
2.0 KiB
Plaintext

import "date"
option task = {
name: "cctp and portal_token_bridge metrics every hour",
every: 1h,
}
calculateLastHourMetrics = (protocol,protocolVersion,ts) => {
since = date.sub(d: 1h, from: ts)
sourceBucket = "wormscan"
destMeasurement = "core_protocols_stats_1h"
bucket30d = "wormscan-30days"
totalValueTransferred = from(bucket: sourceBucket)
|> range(start: since, stop:ts)
|> filter(fn: (r) => r._measurement == "vaa_volume_v2" and r.app_id == protocol)
|> filter(fn: (r) => r._field == "volume" and r._value > 0)
|> drop(columns:["destination_chain","emitter_chain","token_address","token_chain","version"])
|> group()
|> sum()
|> map(fn: (r) => ({r with _time: since}))
|> set(key: "_field", value: "total_value_transferred")
totalMessages = from(bucket: sourceBucket)
|> range(start: since, stop:ts)
|> filter(fn: (r) => r._measurement == "vaa_volume_v2" and r.app_id == protocol)
|> filter(fn: (r) => r._field == "volume")
|> group()
|> count()
|> map(fn: (r) => ({r with _time: since}))
|> set(key: "_field", value: "total_messages")
return union(tables:[totalMessages,totalValueTransferred]) // if nothing happened during the last hour then union will result in empty and no point will be added.
|> set(key: "app_id", value: protocol)
|> set(key: "version", value: protocolVersion)
|> set(key: "_measurement", value: destMeasurement)
|> map(fn: (r) => ({r with _time: since}))
|>to(bucket: bucket30d)
}
ts = date.truncate(t: now(), unit: 1h)
// execute function for CCTP_WORMHOLE_INTEGRATION
calculateLastHourMetrics(protocol:"CCTP_WORMHOLE_INTEGRATION",protocolVersion:"v1",ts:ts)
// execute function for PORTAL_TOKEN_BRIDGE
calculateLastHourMetrics(protocol:"PORTAL_TOKEN_BRIDGE",protocolVersion:"v1",ts:ts)