{"content":{"title":"如何通过简单的 API 完成 zkSync 链的交易信息可视化","body":"**本文作者：[Pyours](https://www.notion.so/API-zkSync-312adb054b1545ee9fe8f939a9442560?pvs=21)**\r\n\r\n在之前的文章里，我们已经详细阐述了如何用 Chainbase 的数据 API 加上 Flipside 的 LiveQuery 工具来实现数据的可视化仪表盘。\r\n\r\n（前文可以在这里阅读：[结合 LiveQuery 和 Chainbase API 实现数据可视化](https://chainbase.com/blog/article/crafting-visualizations-with-live-query-and-chainbase-api)）\r\n\r\n希望这些内容能对大家理解数据和创建项目起到指导作用。\r\n\r\n今天，我们将进一步讨论这个话题，用 zkSync 举例，在区块链的浩渺海洋中寻找目标数据。本文的重点集中在获取交易和地址信息上，并仍然通过 Livequery 实现可视化。\r\n\r\n## **zkSync Era 简介**\r\n\r\n基于 ZK rollup 技术的 zkSync Era 代表了一个 L2 扩展解决方案，它的出现为以太坊带来了可扩展和经济高效的交易。ZK rollup 使用加密有效性证明来确保 zkSync 上的所有交易都是有效的，其中大部分的计算和数据存储都是在链下进行的，效率和速度都有显著提高。\r\n\r\n值得注意的是，虽然采用的是链下的方法，但所有的交易都在以太坊主链上验证，确保了与以太坊等同的安全级别。\r\n\r\n与以太坊相比，zkSync 的一个显著特点是其地址推导和内存管理方法。\r\n\r\n此外，zkSync 提供了与以太坊完全兼容的智能合约功能，允许开发者在两个平台之间轻松迁移。与此同时，zkSync 还引入了新的功能，如原生的账户抽象化，为用户和开发者提供了额外的便利。\r\n\r\n## **👉 通过 Data-cloud API 可视化数据**\r\n\r\n![1-Diving Deep into zkSync Data.png](https://static.chainbase.online/1\\_Diving_Deep_into_zk_Sync_Data\\_5766c62edd.png)\r\n\r\n\r\n\r\n上图是 [Chainbase](https://chainbase.com/) 中的 Data Cloud Studio 界面，在左上角有个下拉框，可以选择切换到 zkSync 数据库，这样可以进行更深入的探究。\r\n\r\n不过我们今天的主要数据来源是`zksync.transactions`表，并且我将从两个角度来进行简单分析，即地址活跃度分析和燃料费分析。\r\n\r\n如果你对此有兴趣，可以尝试运行一下这个 SQL 查询：\r\n\r\n```sql\r\nWITH address as(\r\n    SELECT\r\n        from_address AS exchange_address,\r\n        date_trunc(\"day\", block_timestamp) as date,\r\n        COUNT(*) AS fa\r\n    FROM\r\n        zksync.transactions\r\n    GROUP BY\r\n        date,exchange_address\r\n    UNION ALL\r\n    SELECT\r\n        to_address AS exchange_address,\r\n        date_trunc(\"day\", block_timestamp) as date,\r\n        COUNT(*) AS fa\r\n    FROM\r\n        zksync.transactions\r\n    GROUP BY\r\n        date,exchange_address)\r\nSELECT\r\n    distinct exchange_address,\r\n    SUM(fa) AS total_transactions,\r\n    date\r\nFROM\r\n    address\r\nGROUP BY\r\n    date, exchange_address\r\nORDER BY\r\n    total_transactions desc\r\n```\r\n\r\nnotes: \r\n\r\n1. 这段SQL片段从`zksync.transactions`表中提取数据，重点关注交易的发送者和接收者\r\n2. 它通过日期截断了交易时间戳，仅考虑交易发生的日期\r\n3. 通过组合发送和接收的交易，我们得到了每个地址在每个日期上的总交易总数\r\n4. 最后，结果按总交易量降序排序，显示最活跃的地址\r\n\r\n## **👉 使用 Livequery 进行数据分析**\r\n\r\n接下来，我将使用 [Livequery](https://www.flipsidecrypto.xyz/livequery) ，抛砖引玉，从两个不同的角度对 zkSync 数据进行更深入的分析。这个分析还有很多未尽之处，欢迎大家和我一起共同探索：\r\n\r\n### 1/ 分析地址活跃度\r\n\r\n- 通过查看地址的转账次数，以了解在过去一段时间内发生了多少交易。通常情况下，频繁进行交易的地址被认为更活跃\r\n- 查看特定地址最近一周内转账次数的变化\r\n\r\n![2-Diving Deep into zkSync Data.png](https://static.chainbase.online/2\\_Diving_Deep_into_zk_Sync_Data_fa1d357d64.png)\r\n\r\n\r\n\r\n**注意：调整日期和地址可以帮助您实现所需的结果。**\r\n\r\n示例 SQL ：\r\n\r\n```sql\r\nwith data as (\r\n SELECT\r\n    value:exchange_address as exchange_address,\r\n    value:total_transactions :: int as total_transactions,\r\n    value:date as date\r\n  FROM\r\n    (\r\n        SELECT\r\n        chainbase_utils.post(\r\n          '/v1/dw/query',\r\n          { 'query': '\r\n    WITH address as(\r\n    SELECT\r\n        from_address AS exchange_address,\r\n        date_trunc(\"day\", block_timestamp) as date,\r\n        COUNT(*) AS fa\r\n    FROM\r\n        zksync.transactions\r\n    GROUP BY\r\n        date,exchange_address\r\n    UNION ALL\r\n    SELECT\r\n        to_address AS exchange_address,\r\n        date_trunc(\"day\", block_timestamp) as date,\r\n        COUNT(*) AS fa\r\n    FROM\r\n        zksync.transactions\r\n    GROUP BY\r\n        date,exchange_address)\r\nSELECT\r\n    distinct exchange_address,\r\n    SUM(fa) AS total_transactions,\r\n    date\r\nFROM\r\n    address\r\nGROUP BY\r\n    date, exchange_address\r\nORDER BY\r\n    total_transactions desc\r\n' }\r\n        ) :: variant\r\n\r\n AS resp\r\n    ) AS subquery,\r\n    LATERAL FLATTEN(input => resp:data:data:result)\r\n)\r\n\r\nSELECT\r\n    exchange_address,\r\n    total_transactions,\r\n    left(date,10) as date -- or DATE(date) or CAST(date AS DATE)\r\nFROM\r\n    data\r\nWHERE left(date,10) = '{{YYYY-MM-DD}}' -- filter date\r\n\r\n```\r\n\r\n### 2/ **分析**燃料费 (gas fee)\r\n\r\n- 按累积燃料使用量对地址排名 ➡️ 这使我们能够确定哪些地址在网络内表现更活跃，或者消耗更多资源\r\n- 燃料费排名 ➡️ 通过这种方式，我们可以确定哪些交易因其复杂性或紧急性需要更高的费用\r\n\r\n![3-Diving Deep into zkSync Data.png](https://static.chainbase.online/3\\_Diving_Deep_into_zk_Sync_Data\\_286372d2a2.png)\r\n\r\n\r\n\r\n**示例SQL：**\r\n\r\n```sql\r\nwith data as (\r\n SELECT\r\n    value:from_address as from_address,\r\n    value:gas_used :: int as gas_used,\r\n    value:gas_price :: int as gas_price,\r\n    value:date as date\r\n  FROM\r\n    (\r\n        SELECT\r\n        chainbase_utils.post(\r\n          '/v1/dw/query',\r\n          { 'query': '\r\n    SELECT\r\n        from_address,\r\n        date_trunc(\"day\", block_timestamp) as date,\r\n        gas_used,\r\n        gas_price\r\n    FROM\r\n        zksync.transactions\r\n' }\r\n        ) :: variant AS resp\r\n    ) AS subquery,\r\n    LATERAL FLATTEN(input => resp:data:data:result)\r\n)\r\nSELECT\r\nfrom_address,\r\nsum(gas_used*gas_price/10e7) as total_gas_fee\r\nFROM\r\n    data\r\nGROUP BY from_address\r\nORDER BY total_gas_fee desc\r\nlimit 10\r\n```\r\n\r\n好啦！按照步骤和 SQL 来运行，就是两个非常简单运用 zkSync 数据的案例。你应该可以找到更多的运用方法，都可以[点击这里直接开始](https://flipsidecrypto.xyz/pyours/zksync-ZZoJzJ)。\r\n\r\n![4-Diving Deep into zkSync Data.png](https://static.chainbase.online/4\\_Diving_Deep_into_zk_Sync_Data_f7153bd071.png)\r\n\r\n\r\n\r\n\r\n## 后言\r\n\r\n这段时间，我们好些社区用户开始自发地写数据面板，做链上数据的整合分析，而且常常会用到 LiveQuery 来做面板的展示，结合得很好。这也是我们写了一系列  LiveQuery x Chainbase API 教程的原因。\r\n\r\n在深入研究的过程中，我发现数据的可视化面板让没有太多技术背景的人，也能够轻易创建、理解和分析链上数据，这对于我们数据提供方来说也挺有价值的。\r\n\r\n这篇文章内容不长，涉及到的 SQL 和功能实现也比较单纯，希望大家都能够尝试一下，看能不能产生更多的火花，发掘更多的玩法～\r\n\r\n感谢大家看完！有任何问题，可以在 [discord](https://discord.gg/kYrpZuwv6e) 里联系我。\r\n\r\n## 关于Chainbase\r\n\r\n**Chainbase是一个用于访问、组织和分析大规模链上数据的开放Web3数据基础设施。** 它通过将丰富的数据集与开放计算技术结合在一个数据平台中，帮助人们更好地利用链上数据。Chainbase的最终目标是提高加密货币领域的数据自由。\r\n\r\n\r\n**原文链接：[Diving Deep into zkSync Data: Unveiling Transaction Insights with Chainbase API](https://chainbase.com/blog/article/diving-deep-into-zk-sync-data-unveiling-transaction-insights-with-chainbase-api)**"},"author":{"user":"https://learnblockchain.cn/people/16124","address":null},"history":null,"timestamp":1697105127,"version":1}