WTF-Solidity 工具篇:ZAN 节点服务、合约安全审计与 KYT 链上数据分析实战指南
【免费下载链接】WTF-SolidityWTF Solidity 极简入门教程,供小白们使用。Now supports English! 官网: https://wtf.academy项目地址: https://gitcode.com/GitHub_Trending/wt/WTF-Solidity
本教程属于 WTF-Solidity 极简入门 系列的工具篇(Topics/Tools)之一,聚焦蚂蚁集团旗下 Web3 技术服务品牌ZAN。文章将围绕 ZAN 面向开发者的三大核心能力展开:节点服务(RPC API)、智能合约安全审计(Smart Contract Review)与链上数据分析(Know Your Transaction, KYT),通过完整的配置步骤、代码示例与源码佐证,帮助你快速掌握"如何用 ZAN 接入区块链、审计合约、追踪资金"的完整实操路径。
ZAN 是什么
ZAN 是一家 Web3 技术服务提供商,是蚂蚁集团下的一个技术品牌,提供类似 Infura 和 Alchemy 的节点服务(包括各种链的 JSON-RPC 支持及高级链 API),同时涵盖合约审计、链上数据分析、KYC 等安全相关服务,以及面向 toB 的 RWA 资产链上发行、零知识证明加速、安全和可定制区块链等解决方案。
在 WTF-Solidity 工具篇系列中,TOOL02_Infura 与 TOOL04_Alchemy 分别介绍了"连接链下与链上的桥梁"型节点服务,ZAN 则在此基础上进一步整合了安全审计与链上数据分析能力,形成了覆盖"接入 → 审计 → 监控"的完整开发者工具链。
在学习以下内容之前,需要先访问 ZAN 官网并完成注册和登录。对于刚接触节点服务的读者,可以先回顾工具篇中的基础概念(链下 DApp 与链上合约的交互方式),再开始本讲的操作。
节点服务
创建 API Key
注册登录后,进入节点服务的控制台创建一个 Key。每个 Key 都有默认的免费额度,对于小项目来说够用了。创建成功后即可在控制台看到 API Key 与各条链的 RPC 地址,直接点击页面上的Copy按钮复制使用。
控制台为每条链提供HTTPS与WSS两种协议的 RPC 端点,其中 WSS(WebSocket)端点可用于订阅实时事件(如 pending 交易),HTTPS 端点适合常规的读写查询。大多数情况下,我们直接复制所需链的 RPC 地址,在 DApp 中使用即可。
使用 RPC 地址
不同的区块链通常都有自己的基础 JSON-RPC 接口规范(例如以太坊的 JSON-RPC 规范)。ZAN 提供的接口遵循同样的规范,例如通过访问https://api.zan.top/node/v1/eth/mainnet/{YourZANApiKey}即可读取以太坊主网数据。
注意:代码中的YourZANApiKey需要替换成你自己的 Key。在实际项目中,为了避免 Key 被滥用,建议把 Key 放到后端服务中,通过后端服务调用节点服务;也可以在 ZAN 控制台中设置域名白名单来降低滥用风险。
通常我们可以直接使用链官方或生态提供的 SDK 调用接口,下面分别介绍以太坊常用的 ethers.js、web3.js 与 wagmi 三种接入方式。
使用 ethers
在 ethers.js 中,利用 ZAN 的 API Key 创建JsonRpcProvider与链上交互:
import { ethers } from "ethers"; const provider = new ethers.providers.JsonRpcProvider( "https://api.zan.top/node/v1/eth/mainnet/{YourZANApiKey}" ); provider.getBlockNumber().then((blockNumber) => { console.log("Current block number: " + blockNumber); });如上所示,通过 ethers.js 提供的JsonRpcProvider访问 ZAN 节点服务,即可获取当前区块高度。这种 provider 用法在本仓库中也有对应的真实案例:在 S11_Frontrun/frontrun.js 中,项目通过new ethers.providers.WebSocketProvider(url)创建 provider,再借助provider.getNetwork()、provider.on("pending", ...)、provider.getTransaction(txHash)等方法监听并解码 pending 交易——这恰好演示了节点服务在"交易监听与解析"场景下的典型用法。也就是说,无论使用 HTTPS 还是 WSS 端点,ethers 的 provider 抽象都能统一承载。
使用 web3.js
在 web3.js 中,利用 ZAN 的 API Key 创建 Web3 provider 与链上交互:
import Web3 from "web3"; const web3 = new Web3( "https://api.zan.top/node/v1/eth/mainnet/{YourZANApiKey}" ); web3.eth.getBlockNumber().then((blockNumber) => { console.log("Current block number: " + blockNumber); });使用 wagmi
在 ZAN 控制台中选择以太坊主网的节点服务地址并复制,然后添加到 wagmi 的http()方法中:
import { createConfig, http, WagmiProvider } from "wagmi"; import { mainnet } from "wagmi/chains"; const config = createConfig({ chains: [mainnet], transports: { [mainnet.id]: http( "https://api.zan.top/node/v1/eth/mainnet/{YourZANApiKey}" ), }, }); export default function App() { return <WagmiProvider config={config}>{/** ... */}</WagmiProvider>; }如上,在WagmiProvider包裹的组件中,就可以使用 wagmi 提供的各种 hook 访问以太坊数据了。
安全设置
如果要在生产环境中使用,为了避免 API Key 被滥用或攻击,可以在 ZAN 控制台中设置域名白名单,只有白名单中的域名才能使用你的 API Key:
控制台还提供了其他安全与治理设置,包括:
- 访问频率限制(API Rate Limits):为每个 Key 设置请求频率上限,防止被滥用;
- 使用情况统计(Stats):查看每个 Key 的用量情况;
- 团队协作(Teamwork):支持团队共同管理 Key。
测试网代币水龙头
在开发中经常需要获取测试网代币,ZAN 也提供了测试网代币水龙头服务,可在 ZAN 官网的水龙头页面按需领取。这与 WTF-Solidity 教程中 32_Faucet 所讲解的自建水龙头合约形成互补:自建水龙头适合教学与自定义分发场景,而 ZAN 等第三方水龙头适合快速获取官方测试币进行联调。
合约安全审计
合约安全审计是开发中非常重要的环节,尤其在 DeFi 项目中,合约的安全性直接关系到用户资金安全。ZAN 提供合约安全审计服务,支持免费版与专家版:免费版为自动化扫描,专家版有人工介入、需要收费。本文以免费版为例,介绍提交合约审计任务的两种方式:通过 ZAN 网站提交,或通过 VSCode 插件提交。
通过 ZAN 网站提交
在合约审计控制台提交审计任务:
提交方式支持多种选择:本地文件(Local Computer,支持 .sol 或 .zip,≤5MB)、GitHub 链接(GitHub Link)、已部署合约(Deployed Contract)。提交后会进入自动化程序进行审计,需要等待几分钟:
需要注意的是,自动化审计只能检测一些常见漏洞,无法保障合约的逻辑正确性。如果合约逻辑比较复杂,还是需要人工介入审计(专家版)。
通过 VSCode 插件提交
ZAN 提供了 VSCode 插件(市场名称zantop.zan-smart-contract-review),可以在 VSCode 中直接提交合约审计任务:
- 在 VSCode 扩展市场搜索并安装 ZAN 插件;
- 安装成功后,左侧会出现 ZAN 图标,点击后可以看到Config Access Key按钮:
- 点击按钮配置你的Access Key,Key 需要在 ZAN 的合约审计控制台中获取(见
vscode-key.png,即 ZAN 合约审计控制台的 Key 获取页面); - 填入 Key 后,即可在 VSCode 中直接提交合约审计任务。
合约报告查看
合约分析完成后可以在网站上查看报告:
报告中会以High / Medium / Low / Informational分级展示发现的问题(例如重入漏洞 Reentrancy 常被标记为 High 级别),并给出问题所在合约与检查项的分类统计。这种"问题列表 + 严重级别"的报告结构,与 WTF-Solidity 安全攻防系列(如 S01_ReentrancyAttack 中演示的利用重入盗币合约)可以对照阅读:先通过 ZAN 自动化报告定位常见漏洞模式,再结合 WTF 系列源码理解漏洞成因与修复方法。
对于专家服务,会有多轮 AI + 专家人工审计,最终输出 PDF 报告(示例见 scr-pdf.png)。
链上数据分析(KNOW YOUR TRANSACTION)
区块链上的数据公开透明,但要在浩瀚的链上数据中分析问题、查找线索并不容易。ZAN 提供链上数据分析服务(KYT),可以在控制台中提交地址或交易,查看详细信息:
提交的内容可以是一个地址,也可以是一笔交易。分析结果会展示资金的流动情况,并标记出有风险的地址:
该服务可以用于资金追踪、巨鲸监控、反洗钱(AML)等场景。对于专业用户,可以使用 API 调用:在控制台(见 kyt-key.png)中获取 API Key 后,通过下面的 curl 请求获取某个地址的相关数据:
## Replace {apiKey} with the API key you obtained from the ZAN dashboard. ## You can also replace the "eth" and "mainnet" with any other supported networks. curl https://api.zan.top/kyt/v1/score \ -H "Content-Type: application/json" \ -H "Authorization:Bearer {apiKey}" \ -X POST \ -d "{\"objectId\":\"0xA160cdAB225685dA1d56aa342Ad8841c3b53f291\",\"objectType\":\"address\",\"analysisType\":\"\",\"chainShortName\":\"eth\",\"depth\":\"\"}"接口说明:
objectId:要分析的对象,可以是地址或交易哈希;objectType:对象类型,示例中为address;analysisType:分析类型,可留空使用默认分析;chainShortName:链简称,示例为eth,可替换为其他受支持的网络;depth:分析深度,可留空使用默认值。
该 API 适用于需要批量、自动化调用 KYT 能力的场景(如风控系统、监控机器人)。从仓库中的 JS 脚本模式(如 S11_Frontrun/frontrun.js 通过 provider 订阅 pending 交易并解析地址/交易数据)可以看到,将 RPC 节点服务与 KYT 分析 API 结合,可以构建"监控到可疑交易 → 自动调用 KYT 评分"的完整工作流。
总结
这一讲介绍了如何使用 ZAN 提供的各类 Web3 技术服务,核心可以归纳为三条主线:
- 节点服务:创建 API Key → 复制目标链的 RPC 地址 → 用 ethers.js / web3.js / wagmi 接入;配合域名白名单、访问频率限制等安全设置保障生产环境安全;
- 合约审计:通过网站(支持本地文件、GitHub 链接、已部署合约三种提交方式)或 VSCode 插件提交自动化审计,按 High/Medium/Low/Informational 分级查看报告,复杂合约建议走专家人工审计;
- 链上数据分析(KYT):控制台提交地址或交易查看资金流向与风险标记,专业场景可通过
kyt/v1/scoreAPI 自动化调用。
ZAN 的服务面向 DApp 开发者、商业机构、安全团队与研究机构等不同群体,你可以根据自己的需求选择合适的服务。对照 WTF-Solidity 仓库中的源码与工具篇(如 TOOL02_Infura、TOOL04_Alchemy),可以进一步理解不同节点服务提供商的接入方式差异,并在 S01_ReentrancyAttack 等安全攻防示例中验证审计工具的实际价值。
【免费下载链接】WTF-SolidityWTF Solidity 极简入门教程,供小白们使用。Now supports English! 官网: https://wtf.academy项目地址: https://gitcode.com/GitHub_Trending/wt/WTF-Solidity
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考