
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 端点其中 WSSWebSocket端点可用于订阅实时事件如 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 KeyKey 需要在 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对象类型示例中为addressanalysisType分析类型可留空使用默认分析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),仅供参考