这段时间,我们好些社区用户开始自发地写数据面板,做链上数据的整合分析,而且常常会用到 LiveQuery 来做面板的展示。于是我们写了这系列的教程,希望能帮大家简单地可视化数据。
本文作者:Pyours
在之前的文章里,我们已经详细阐述了如何用 Chainbase 的数据 API 加上 Flipside 的 LiveQuery 工具来实现数据的可视化仪表盘。
(前文可以在这里阅读:结合 LiveQuery 和 Chainbase API 实现数据可视化)
希望这些内容能对大家理解数据和创建项目起到指导作用。
今天,我们将进一步讨论这个话题,用 zkSync 举例,在区块链的浩渺海洋中寻找目标数据。本文的重点集中在获取交易和地址信息上,并仍然通过 Livequery 实现可视化。
基于 ZK rollup 技术的 zkSync Era 代表了一个 L2 扩展解决方案,它的出现为以太坊带来了可扩展和经济高效的交易。ZK rollup 使用加密有效性证明来确保 zkSync 上的所有交易都是有效的,其中大部分的计算和数据存储都是在链下进行的,效率和速度都有显著提高。
值得注意的是,虽然采用的是链下的方法,但所有的交易都在以太坊主链上验证,确保了与以太坊等同的安全级别。
与以太坊相比,zkSync 的一个显著特点是其地址推导和内存管理方法。
此外,zkSync 提供了与以太坊完全兼容的智能合约功能,允许开发者在两个平台之间轻松迁移。与此同时,zkSync 还引入了新的功能,如原生的账户抽象化,为用户和开发者提供了额外的便利。
上图是 Chainbase 中的 Data Cloud Studio 界面,在左上角有个下拉框,可以选择切换到 zkSync 数据库,这样可以进行更深入的探究。
不过我们今天的主要数据来源是zksync.transactions
表,并且我将从两个角度来进行简单分析,即地址活跃度分析和燃料费分析。
如果你对此有兴趣,可以尝试运行一下这个 SQL 查询:
WITH address as(
SELECT
from_address AS exchange_address,
date_trunc("day", block_timestamp) as date,
COUNT(*) AS fa
FROM
zksync.transactions
GROUP BY
date,exchange_address
UNION ALL
SELECT
to_address AS exchange_address,
date_trunc("day", block_timestamp) as date,
COUNT(*) AS fa
FROM
zksync.transactions
GROUP BY
date,exchange_address)
SELECT
distinct exchange_address,
SUM(fa) AS total_transactions,
date
FROM
address
GROUP BY
date, exchange_address
ORDER BY
total_transactions desc
notes:
zksync.transactions
表中提取数据,重点关注交易的发送者和接收者接下来,我将使用 Livequery ,抛砖引玉,从两个不同的角度对 zkSync 数据进行更深入的分析。这个分析还有很多未尽之处,欢迎大家和我一起共同探索:
注意:调整日期和地址可以帮助您实现所需的结果。
示例 SQL :
with data as (
SELECT
value:exchange_address as exchange_address,
value:total_transactions :: int as total_transactions,
value:date as date
FROM
(
SELECT
chainbase_utils.post(
'/v1/dw/query',
{ 'query': '
WITH address as(
SELECT
from_address AS exchange_address,
date_trunc("day", block_timestamp) as date,
COUNT(*) AS fa
FROM
zksync.transactions
GROUP BY
date,exchange_address
UNION ALL
SELECT
to_address AS exchange_address,
date_trunc("day", block_timestamp) as date,
COUNT(*) AS fa
FROM
zksync.transactions
GROUP BY
date,exchange_address)
SELECT
distinct exchange_address,
SUM(fa) AS total_transactions,
date
FROM
address
GROUP BY
date, exchange_address
ORDER BY
total_transactions desc
' }
) :: variant
AS resp
) AS subquery,
LATERAL FLATTEN(input => resp:data:data:result)
)
SELECT
exchange_address,
total_transactions,
left(date,10) as date -- or DATE(date) or CAST(date AS DATE)
FROM
data
WHERE left(date,10) = '{{YYYY-MM-DD}}' -- filter date
示例SQL:
with data as (
SELECT
value:from_address as from_address,
value:gas_used :: int as gas_used,
value:gas_price :: int as gas_price,
value:date as date
FROM
(
SELECT
chainbase_utils.post(
'/v1/dw/query',
{ 'query': '
SELECT
from_address,
date_trunc("day", block_timestamp) as date,
gas_used,
gas_price
FROM
zksync.transactions
' }
) :: variant AS resp
) AS subquery,
LATERAL FLATTEN(input => resp:data:data:result)
)
SELECT
from_address,
sum(gas_used*gas_price/10e7) as total_gas_fee
FROM
data
GROUP BY from_address
ORDER BY total_gas_fee desc
limit 10
好啦!按照步骤和 SQL 来运行,就是两个非常简单运用 zkSync 数据的案例。你应该可以找到更多的运用方法,都可以点击这里直接开始。
这段时间,我们好些社区用户开始自发地写数据面板,做链上数据的整合分析,而且常常会用到 LiveQuery 来做面板的展示,结合得很好。这也是我们写了一系列 LiveQuery x Chainbase API 教程的原因。
在深入研究的过程中,我发现数据的可视化面板让没有太多技术背景的人,也能够轻易创建、理解和分析链上数据,这对于我们数据提供方来说也挺有价值的。
这篇文章内容不长,涉及到的 SQL 和功能实现也比较单纯,希望大家都能够尝试一下,看能不能产生更多的火花,发掘更多的玩法~
感谢大家看完!有任何问题,可以在 discord 里联系我。
Chainbase是一个用于访问、组织和分析大规模链上数据的开放Web3数据基础设施。 它通过将丰富的数据集与开放计算技术结合在一个数据平台中,帮助人们更好地利用链上数据。Chainbase的最终目标是提高加密货币领域的数据自由。
原文链接:Diving Deep into zkSync Data: Unveiling Transaction Insights with Chainbase API
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!