mcpField
A
Altscan explorers

Altscan explorers

远程服务
altscan.io金融数据31 天前更新

关于 Altscan explorers

Altscan 是开源多链区块浏览器平台,以同一代码库提供 BNB Chain 和 Ethereum 浏览器。它面向链上数据浏览者与开发者,涵盖区块、交易、地址、代币、分析和 REST API。

主要功能

  1. 01浏览区块、交易、地址与代币
  2. 02搜索地址、交易哈希与区块号
  3. 03查看 DEX 交易、巨鲸转账和 Gas 数据
  4. 04识别仿冒代币并展示合约状态
  5. 05REST API、Webhook 与 CSV 导出

适用场景

  1. 01查询 BNB Chain 或 Ethereum 交易及代币转账
  2. 02检查地址持仓、NFT 与历史活动
  3. 03通过 API 查询链上数据并导出地址交易

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://altscan.io/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

BNBScan 首页:实时展示最新 BNB Chain 区块的动态条带,每个条形的宽度代表区块的交易数量,填充程度代表已使用的 Gas

Altscan

开源多链区块浏览器平台。
目前,同一套代码支持 BNB Chain 和 Ethereum 的独立浏览器,并且架构支持随时间推移添加更多链。
Next.js 15、Drizzle ORM 和 ethers.js。由 Measurable Data Token (MDT) 维护。

altscan.io  |  bnbscan.com  |  ethscan.io

CI CodeQL Latest release License: AGPL v3 Next.js 15 欢迎提交 PR


这是什么?

Altscan 是一个开源多链区块浏览器平台。目前,同一套代码支持两个独立的浏览器——BNBScan(bnbscan.com,BNB Chain)和 EthScan(ethscan.io,Ethereum)——并且设计上支持随时间推移扩展至更多链。它们与 BscScan、Etherscan、Binance 或 Ethereum Foundation 完全独立,提供简洁、快速的界面,用于浏览区块、交易、地址、代币和链上活动。

通过一个 CHAIN 环境变量即可选择部署所服务的链——前端、索引器和架构均相同。

截图

EthScan 首页,深色模式区块
深色模式下的 EthScan 首页,展示实时 Ethereum 区块动态条带BNB Chain 区块页面:区块在链上动态条带中以圆环标出,下方每笔交易各绘制为一个条形
交易地址
一笔 Ethereum 兑换,其摘要显示在区块交易条带上方的一行中BNB Chain 地址页面,顶部展示持仓,交易以账本形式呈现
代币状态页面
BNB Chain 上的 USDT 代币页面,展示市场数据和主要持有者status.altscan.io,跟踪两个浏览器的正常运行时间、区块延迟和响应时间

手机布局:BNBScan 首页、深色模式下的 EthScan 交易页面,以及 BNBScan 地址页面

截图于 2026 年 10 月 12 日从生产环境截取,赞助展示位已关闭。

功能特性

浏览
  • 区块带 — 将最新区块绘制为实时滚动带(宽度 = 交易数,填充量 = 已用 Gas),显示在首页以及区块、交易、地址和分析页面中
  • 区块 — 显示最新区块及其验证者、Gas 和交易数量;每个区块页面都会列出其中的交易
  • 交易 — 用一行概述发生的情况,并展示费用明细、日志以及代币和 NFT 转账;配置跟踪端点后可查看内部交易(默认关闭)
  • 地址 — 余额和已跟踪代币持仓、以账本形式呈现的交易历史、代币转账和 NFT
  • 代币 — 提供 ERC-20 / BEP-20 页面,展示市场数据、持有者和转账;相似外观(同形异义字符)代币会标记出来
  • 搜索 — 搜索地址、交易哈希、区块编号以及代币名称或符号
分析
  • DEX 交易 — Uniswap-V2 风格的兑换(BNB Chain 上的 PancakeSwap V2,Ethereum 上的 Uniswap V2);不索引 V3 风格的流动性池
  • 巨鲸追踪器 — 显示过去一小时、过去一天或整个保留时间范围内最大的原生代币、封装代币和稳定币转账
  • Gas 追踪器 — 根据近期区块的百分位数计算慢速、标准和快速价格
  • 网络图表 — 显示交易数、产出的区块数以及(在 Ethereum 上)平均基础费用;索引器积累满三天数据前按小时显示
  • 验证者(BNB Chain)— 显示验证者集合及其投票权、佣金和过去 24 小时产出的区块数
开发者工具
  • REST API — v1 查询 API、可选的 API 密钥(通过钱包签名消息生成)以及 Webhook
  • CSV 导出 — 导出本地索引的某个地址最近 1,000 笔交易
  • 合约状态 — 显示合约是否已在 Sourcify 上验证;可在 sourcify.dev 验证新的源代码
其他
  • 深色模式,跟随系统设置,并采用适合手机的布局
  • 关注列表 — 在浏览器中保存地址(无需账户,数据不会离开设备)
  • 网络切换器 — 链接到另一条链上的姊妹区块浏览器
  • 状态页面 — status.altscan.io 跟踪托管区块浏览器的正常运行时间、区块延迟和响应时间

架构

altscan/
├── apps/
│   ├── explorer/         Unified Next.js 15 frontend + API routes
│   │                     CHAIN=bnb → bnbscan.com
│   │                     CHAIN=eth → ethscan.io
│   ├── indexer/          Unified block indexer (direct polling loop)
│   │                     CHAIN=bnb → indexes BNB Chain
│   │                     CHAIN=eth → indexes Ethereum
│   ├── status/           Hono status page for the hosted explorers
│   │                     Polls /api/health on bnbscan.com and ethscan.io
│   ├── altscan-site/     altscan.io umbrella site (Astro on Cloudflare Workers)
│   └── admin/            Operator console behind Cloudflare Access (Astro on Cloudflare Workers)
├── packages/
│   ├── chain-config/     getChainConfig() — chain-specific config
│   ├── db/               Drizzle ORM schema + Postgres client
│   ├── explorer-core/    Shared utils (rate limiting, formatting, Redis cache)
│   ├── providers/        Third-party data adapters (Moralis) and their spend budgets
│   ├── settings-schema/  Runtime settings shared by the explorer and the admin console
│   └── types/            Shared TypeScript types
├── render.yaml           Render blueprint for the hosted explorers
├── docker-compose.yml    Self-host stack: Postgres, Redis, indexer, explorer
├── turbo.json            Turborepo pipeline config
└── pnpm-workspace.yaml
技术栈
层级技术
前端Next.js 15 (App Router)、React 19、Tailwind CSS 3
后端Next.js API 路由、Hono(状态页面)
数据库PostgreSQL(通过 Drizzle ORM)
索引器ethers.js、JSON-RPC(直接轮询循环,无任务队列)
缓存Redis(速率限制、缓存、Moralis CU 账本)
边缘站点Cloudflare Workers 上的 Astro(altscan.io、管理控制台)
Monorepopnpm + Turborepo
托管Render.com(Web 服务 + workers + Postgres + Redis)
工作原理
  1. 索引器连接到链的 JSON-RPC 端点,轮询新区块,并通过 Drizzle ORM 将区块、交易和代币数据写入 Postgres。
  2. 区块浏览器通过 ISR(增量静态再生成)提供 Next.js 前端——每个页面按自身计划重新验证,间隔从 45 秒到五分钟不等,在提供最新数据的同时减轻服务器压力。依赖请求的页面(例如搜索页面)会针对每个请求进行渲染。
  3. 链配置包集中管理所有链特定差异(区块时间、货币、主题颜色、RPC URL、功能标志),让相同代码可以在两条链上运行。
  4. 状态页面通过每 30 秒轮询两个托管区块浏览器的 /api/health 端点,独立监控其正常运行时间、区块延迟和响应时间,并跟踪过去 24 小时和 30 天的数据。其监控目标固定在 apps/status/src/server.ts 中,不属于 Docker 堆栈或 Render blueprint。

开始使用

运行自己的浏览器(Docker)
git clone https://github.com/heathermhuang/altscan.git
cd altscan
cp .env.docker.example .env
docker compose up -d

打开 http://localhost:3000。这会启动 Postgres、Redis、索引器和浏览器——无需配置即可启动,索引器会在首次启动时创建自己的架构。要使用 Ethereum,请在 .env 中设置 CHAIN=eth,然后使用 --build 重新运行。

完整指南(包括 Render 部署、保留策略调优和局限性): docs/SELF_HOSTING.md。

本地开发(不使用 Docker)
前置条件
  • Node.js 22 — CI 和 Docker 镜像使用的版本
  • pnpm 10 — 在 package.json 中固定;corepack enable 会采用精确版本
  • PostgreSQL 16
  • Redis 7 — 可选:未设置 REDIS_URL 时,速率限制和缓存会退回到进程内存
安装
# Clone the repo
git clone https://github.com/heathermhuang/altscan.git
cd altscan

# Install dependencies
pnpm install

# Start Postgres from the Docker stack (localhost:5432; user, password and database all "altscan")
docker compose up -d postgres

# Set up the explorer environment (defaults match the local Docker Postgres)
cp apps/explorer/.env.example apps/explorer/.env.local

# Start the BNB explorer
CHAIN=bnb NEXT_PUBLIC_CHAIN=bnb pnpm --filter @altscan/explorer dev

BNB 浏览器将在 http://localhost:3000 提供服务。索引器会在首次启动时创建数据库架构,因此请先运行一次索引器(见下文),再期待数据出现;面对空数据库时,单独运行浏览器没有可读取的数据表。pnpm dev 通过 Turborepo 一次启动所有应用:浏览器、索引器、状态页和两个 Astro 站点。

运行指定链
# BNB Chain explorer only
CHAIN=bnb NEXT_PUBLIC_CHAIN=bnb pnpm --filter @altscan/explorer dev

# Ethereum explorer only
CHAIN=eth NEXT_PUBLIC_CHAIN=eth pnpm --filter @altscan/explorer dev -p 3001

# BNB indexer only — build the packages it imports first (see below)
pnpm --filter @altscan/db build && pnpm --filter @altscan/chain-config build && pnpm --filter @altscan/explorer-core build && pnpm --filter @altscan/providers build
CHAIN=bnb pnpm --filter @altscan/indexer dev

# Status page only (monitors the hosted sites)
pnpm --filter @altscan/status dev

CHAIN 用于驱动服务端;NEXT_PUBLIC_CHAIN 会内联到客户端构建包中,因此两者必须设置为同一条链。索引器从环境变量或 apps/indexer/.env 读取设置:至少需要 DATABASE_URL(或 ETH_DATABASE_URL)、该链的 RPC URL,以及靠近链头的 START_BLOCK——内置的起始区块会回溯数百万个区块。

浏览器会从源码编译工作区软件包,但索引器会加载这些软件包已构建的 dist/ 输出,而这些文件不会提交到版本库——克隆后需构建一次,修改后也需重新构建。

环境变量

部署时需要设置以下变量。apps/explorer/.env.example 还列出了可选的提供商上限,docs/SELF_HOSTING.md 介绍了索引器的保留策略和磁盘设置。

变量必需说明
CHAIN是bnb 或 eth——选择要提供服务或索引的链
NEXT_PUBLIC_CHAIN浏览器与 CHAIN 相同的值;在构建时由客户端组件读取
DATABASE_URLCHAIN=bnbPostgreSQL 连接字符串(BNB Chain)
ETH_DATABASE_URLCHAIN=ethPostgreSQL 连接字符串(Ethereum)
BNB_RPC_URLCHAIN=bnbBSC JSON-RPC 端点,也可用逗号分隔的列表配置故障转移
ETH_RPC_URLCHAIN=ethEthereum JSON-RPC 端点,也可用逗号分隔的列表配置故障转移
REDIS_URL建议设置Redis 连接字符串;未设置时,速率限制和缓存按进程隔离
MORALIS_API_KEY否用于余额和 NFT 增强的 Moralis API
ADMIN_SECRET否/api/admin/* 端点的 Bearer 令牌;未设置时,这些端点会拒绝所有请求
GA_MEASUREMENT_ID否Google Analytics 衡量 ID;未设置时,不会加载分析脚本
BINANCE_REF_CODE否赞助 Binance 展示位的推荐码;未设置时,这些展示位不会显示
免费 RPC 端点

无需付费 RPC 提供商即可开始使用:

链免费端点
BNB Chainhttps://bsc-dataseed1.binance.org/
Ethereumhttps://ethereum-rpc.publicnode.com

这些是 Docker 堆栈的默认值。两者都支持历史区块的 eth_getBlockReceipts,索引器依赖此功能(于 2026 年 10 月检查)。依赖其他端点之前,也要用同样的方法检查:请求它返回几千个区块深度处某个区块的收据。一些公共 RPC 在链上最新区块处可以响应,但不支持该方法;还有一些会为该方法返回空列表。索引器会拒绝收据未涵盖其所有交易的区块,因此这两种情况都会导致索引器无法继续处理。一些免费套餐还会限制 JSON-RPC 批次大小:eth.drpc.org 的免费套餐会拒绝包含超过 3 个请求的批次,因此如果使用它,请在索引器上设置 RPC_BATCH_MAX_COUNT=1。

用于生产环境时,请使用付费 RPC 提供商:免费端点在索引器负载下会限制请求频率。

API

两个浏览器都提供 v1 REST API。任一网站上的 /api-docs 都是端点参考文档,/developer 则介绍如何通过使用钱包签署消息来创建 API 密钥。API 密钥是可选的:不带密钥的调用会受到 IP 限流。

# Example: query transactions for an address
curl -X POST https://bnbscan.com/api/v1/query \
  -H "X-API-Key: bnbs_..." \
  -H "Content-Type: application/json" \
  -d '{"entity":"transactions","filter":{"address":"0x..."}}'

测试

pnpm test

运行每个工作区的 Vitest 测试套件。需要真实 Postgres 或 Redis 的测试套件会跳过,除非设置了相应的环境变量 — CONTRIBUTING.md 列出了这些测试以及运行方法。CI 会运行除两个保留分区测试套件之外的所有测试,还会运行 lint、对索引器和管理控制台进行类型检查,以及构建生产环境版本的浏览器。

部署

托管的浏览器通过 Render.com 使用 render.yaml 运行:每条链各有一个 Web 服务和一个索引器工作进程,并配有 Postgres 和 Redis。若要使用 Docker 或 Render 自行部署,请参阅 docs/SELF_HOSTING.md。

数据保留

索引器每 6 小时执行一次保留清理。超过 RETENTION_DAYS(默认值为 7 天)的日志、DEX 交易和 Gas 历史记录会被删除,每笔交易的输入数据也会被移除,并在需要时从 RPC 重新获取;交易本身仍可查询。除非同时设置 COMPACT_RETENTION_DAYS,否则交易、代币转账和区块会永久保留,因此该设置决定了区块历史记录的上限。addresses 表永远不会清理,会随着链的增长而不断增大。请参阅 docs/SELF_HOSTING.md。

还有一个手动清理端点。它会删除整行数据——包括交易和区块——删除早于 days 指定时间的数据,然后运行 VACUUM。请先请求试运行:

curl -X POST "https://your-explorer.example/api/admin/db-prune?days=7&dry=true" \
  -H "Authorization: Bearer $ADMIN_SECRET"

已知限制

  • 不是创世区块归档 — 索引器会从起始区块开始向前推进。较早的地址和代币历史记录会按需从服务提供商获取并缓存,而不是在本地编入索引。完整的历史归档需要采用不同的架构。
  • 查询深层历史需要 Moralis 密钥 — 如果没有密钥,地址历史记录仅限于本地已编入索引的区块,持币者数量则会改用估算值,并附带说明。这是唯一的第三方商业依赖。
  • 实时持币者数据来自 Moralis — 为提高索引器吞吐量,已关闭逐区块持币者跟踪功能,因此本地存储的持币者数量是固定快照,界面会标注为“已索引持币者”。实时总数和持币者排行榜来自 Moralis;没有密钥时,持币者列表会根据近期转账估算,并附带说明。
  • 每个部署只支持一条链 — NEXT_PUBLIC_CHAIN 会在构建时内联到客户端捆绑包中,因此切换链需要重新构建,而不只是重启。
  • 支持两条链 — BNB Chain 和 Ethereum。目前要添加第三条链需要修改代码,而不是更改配置。
  • 合约验证仅支持 Sourcify,区块浏览器会读取验证结果,而不接受源代码。
  • 规范域名和网络切换器的目标地址按链写入代码,位于 packages/chain-config 中,因此公开分叉时需要在那里进行修改。除非完成配置,否则分析功能和推荐广告均处于关闭状态。请参阅 docs/SELF_HOSTING.md。

参与贡献

欢迎贡献。请阅读 CONTRIBUTING.md,了解开发环境设置、CHAIN 模型和 PR 规范;同时请阅读我们的 行为准则。

  1. Fork 此仓库
  2. 创建功能分支:git checkout -b feat/my-feature
  3. 进行修改并添加测试
  4. 运行 CONTRIBUTING.md 中列出的检查
  5. 向 main 提交拉取请求

首次贡献者:请在第一次 PR 中将姓名添加到 CONTRIBUTORS.md,以接受 贡献者许可协议。你仍拥有作品的所有权——CLA 是授予许可,而非转让版权;这使我们能够提供下文所述的商业许可。CI 检查会确认你的姓名已列出。

发现安全漏洞?请遵循我们的 安全政策——不要公开提交问题。

许可证

基于 AGPL-3.0 开源——经 OSI 批准的许可证。人人均可永久免费使用:

  • 运行它,用于任何目的,包括商业用途和付费服务
  • Fork 它、修改它,并分发你的分支
  • 围绕它销售服务——托管、支持、咨询、托管式部署、RaaS
  • 授予的权利不可撤销——已发布版本将继续采用 AGPL-3.0,我们无法撤回

AGPL 要求你做一件事作为回报:如果你修改了 Altscan,并通过网络向他人提供服务,也要向这些用户提供修改后的源代码。未作修改直接运行,或仅在内部保留修改,则无需履行此义务。

对于无法使用 AGPL 代码,或需要保修和支持条款的组织,可申请商业许可证。请参阅 LICENSING.md,了解其涵盖内容,以及这些条款与其他仅提供源代码的许可方案有何不同。

© Measurable Data Token(MDT)。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。