mcpField
M
moralis-streams-api

moralis-streams-api

github.com/novnski数据与数据库139 次安装7 周前更新
代码仓库

关于 moralis-streams-api

用于实现 Moralis Streams API 集成的技能,面向开发者,覆盖 EVM、Solana、Bitcoin 和通用端点,并提供按链类型区分的请求规则及投递注意事项。

主要功能

  1. 01EVM、Solana 和 Bitcoin 流操作
  2. 02按链类型提供端点与负载指引
  3. 03地址及 Bitcoin xpub 管理
  4. 04Webhook 历史、重放与统计
  5. 05API 密钥和投递问题排查

适用场景

  1. 01创建区块链活动监控
  2. 02管理流配置和状态
  3. 03检查或重放 Webhook 投递

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/novnski/onchain-skills --skill moralis-streams-api

安装后在 Claude Code 中输入/moralis-streams-api确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
BitcoinStreams.md
CommonPitfalls.md
DeliveryGuarantees.md
ErrorHandling.md
FAQ.md
FilterStreams.md
HistoricalJobs.md
ListenToAllAddresses.md
MonitorMultipleAddresses.md
ReliabilityAndLifecycle.md
ReplayFailedWebhooks.md
SolanaStreams.md
StreamConfiguration.md
Triggers.md
Tutorials.md
UsefulStreamOptions.md
WebhookResponseBody.md
WebhookSecurity.md
rules/
AddAddressToStream.md
bitcoinBlockToWebhook.md
bitcoinGetBlockByNumber.md
bitcoinStreamsAddAddresses.md
bitcoinStreamsAddXpub.md
bitcoinStreamsCreate.md
bitcoinStreamsDelete.md
bitcoinStreamsDeleteAddresses.md
bitcoinStreamsDeleteXpub.md
bitcoinStreamsGet.md
bitcoinStreamsGetAddresses.md
bitcoinStreamsGetAll.md

详细介绍

重要:实施前请先阅读规则文件

导致 Streams 错误的首要原因,是混淆了不同流系列或请求结构。

对于每个端点:

  1. 阅读 rules/{EndpointName}.md
  2. 先确认所属系列:
    • EVM:/streams/evm
    • Solana:/streams/solana
    • Bitcoin:/streams/bitcoin
    • 实用工具:/history、/historical-jobs、/settings、/stats
  3. 仔细检查 HTTP 方法(PUT 创建、POST 更新/状态/重放、DELETE 删除)
  4. 确认流 ID 是 UUID,而不是哈希或地址
  5. 使用对应系列的正确配置结构:
    • EVM:chainIds、topic0、abi、advancedOptions
    • Solana:network、programIds、mintAddresses、allAddresses
    • Bitcoin:network、includeInputs、includeOutputs、allAddresses、xpub

阅读顺序:

  1. 本文件 SKILL.md
  2. rules/ 中的端点规则
  3. references/StreamConfiguration.md
  4. 针对特殊情况的系列专属参考资料

设置

API 密钥

**切勿要求用户在聊天中粘贴 API 密钥。**请改为:

  1. 检查是否已设置 MORALIS_API_KEY:
    [ -n "$MORALIS_API_KEY" ] && echo "API key is set" || echo "API key is NOT set"
    
  2. 如果未设置,提出在本地创建一个包含 MORALIS_API_KEY= 的 .env 文件
  3. 告知用户打开 .env 并自行添加密钥
  4. 说明没有密钥就无法调用或测试 Moralis Streams

如果用户需要密钥,请引导他们访问 admin.moralis.com/register。Free 套餐已于 2026 年 9 月 1 日取消;现在需要付费套餐。Starter、Pro 和 Business 的月费价格请参阅套餐定价,并核对实时定价页面。未确认的免费 Webhook 不代表存在 Free 订阅套餐。

验证密钥
curl "https://api.moralis-streams.com/streams/evm?limit=10" \
  -H "X-API-Key: $MORALIS_API_KEY"

基础 URL

https://api.moralis-streams.com

所有请求都必须包含 X-API-Key: $MORALIS_API_KEY。


流系列

系列核心筛选条件其他功能说明
EVMchainIds、topic0、abi、流地址advancedOptions、includeContractLogs、includeNativeTxs、includeInternalTxs、triggers、getNativeBalances使用十六进制链 ID,例如 0x1、0x89
Solananetwork、programIds、mintAddresses、流地址allAddresses、区块重放辅助功能不使用 chainIds、topic0,也不进行 EVM ABI 解码
Bitcoinnetwork、流地址、allAddressesincludeInputs、includeOutputs、xpub 端点、区块重放辅助功能通过地址和 xpub 监控,而不是通过合约主题监控
实用工具历史记录、重放、历史任务、设置、统计数据账户级操作必须确认历史任务的时间戳单位和系列范围
EVM

在受支持的 EVM 主网链上,用户需要监控合约事件、ERC20 / ERC721 / ERC1155 转账、授权、原生交易和内部交易时,请使用 EVM 流。

流类型:

类型说明
tx原生交易
log合约事件日志
erc20transferERC20 代币转账
erc20approvalERC20 授权
nfttransferNFT 转账
internalTx内部交易
Solana

用户需要监控 mainnet 上的程序、铸币或地址活动时,请使用 Solana 流。

  • 主要筛选条件为 programIds 和 mintAddresses
  • network 必须为 ["mainnet"]
  • 没有 EVM 风格的 topic0、abi 或 chainIds
  • Solana 地址使用 base58 编码且区分大小写;切勿将其转换为小写
  • Solana 负载使用 transactions[].signature、accountKeys、instructions、innerInstructions 和代币前后余额,而不是 EVM 事件数组

请参阅 references/SolanaStreams.md。

Bitcoin

使用 Bitcoin 流进行基于地址或 xpub 的监控。

  • 主要筛选条件是监控的地址或 xpub
  • network 是一个数组
  • includeInputs 和 includeOutputs 控制载荷详情
  • network 必须为 ["mainnet"]

使用 ["mainnet"]。

参见 references/BitcoinStreams.md。


快速参考

流 ID 格式
// WRONG
"0x1234567890abcdef"

// CORRECT
"YOUR_STREAM_ID"
EVM 链 ID
"0x1"     // Ethereum
"0x89"    // Polygon
"0x38"    // BSC
"0xa4b1"  // Arbitrum
"0xa"     // Optimism
"0x2105"  // Base
Solana 网络
["mainnet"]
Bitcoin 网络
["mainnet"]

Bitcoin 流仅支持 mainnet。

状态值
"active"
"paused"
"error"
"terminated"

更新请求中只能发送 active 或 paused。


交付模型

  • Moralis 会在创建和更新时发送必需的测试 Webhook。你的端点必须返回 2xx。
  • 流采用至少一次交付。请构建幂等消费者。
  • EVM 和 Solana Webhook 流程会先使用 confirmed: false,然后使用 confirmed: true。
  • 对于一个 txid,Bitcoin 最多会发送三次生命周期通知:内存池(block.hash: "mempool"、block.height: "0")、已纳入区块但尚未确认(confirmed: false),然后在达到 2 个区块的确认深度后可防止重组(confirmed: true)。
  • 如果 Webhook 持续交付失败,流可能进入 error 状态,然后进入 terminated 状态。

参见 references/DeliveryGuarantees.md、references/ErrorHandling.md 和 references/WebhookSecurity.md。


仅限 EVM 的功能

以下功能仅适用于 EVM 流:

  • triggers
  • advancedOptions
  • includeContractLogs
  • includeNativeTxs
  • includeInternalTxs(仅支持 EVM 主网链;不支持测试网)
  • includeAllTxLogs(Pro 及更高套餐可用)
  • getNativeBalances
  • filterPossibleSpamAddresses
  • topic0 / 基于 ABI 的筛选

参见 references/UsefulStreamOptions.md、references/Triggers.md 和 references/ListenToAllAddresses.md。


快速故障排查

问题可能原因解决方法
400 Bad Request请求结构混用重新检查端点规则中的特定系列字段
404 Not Found流 ID 错误使用 UUID 流 ID
Method Not Allowed请求方法错误使用 PUT 创建,使用 POST 更新状态或重放
Missing limit列表端点添加 ?limit=100
流始终无法激活测试 Webhook 失败让 Webhook 端点返回 2xx

端点目录

包含 EVM、Solana、Bitcoin 和共享实用功能的全部 47 个 Streams API 端点。

EVM 流

创建、更新、删除和模拟 EVM 流,包括区块重放辅助功能。

端点描述
CreateStream创建流
DeleteStream删除流
DuplicateStream复制流
GetStream获取指定的 EVM 流。
GetStreamBlockDataByNumber使用提供的流配置,获取区块编号对应的 Webhook 数据
GetStreamBlockDataToWebhookByNumber使用流配置和地址,根据指定区块编号发送 Webhook。
GetStreams获取流
UpdateStream更新流
UpdateStreamStatus更新流状态
EVM 地址

管理 EVM 流的地址列表。

端点描述
AddAddressToStream向流添加地址
DeleteAddressFromStream从流中删除地址
GetAddresses按流获取地址
ReplaceAddressFromStream替换流中的地址
Solana 流

创建、更新、删除和模拟 Solana 流,包括区块重放辅助功能。

Endpoint描述
solanaBlockToWebhook按区块编号发送 Solana Webhook 数据
solanaGetBlockByNumber按区块编号获取 Solana Webhook 数据
solanaStreamsCreate创建 Solana 流
solanaStreamsDelete删除 Solana 流
solanaStreamsGet按 ID 获取 Solana 流
solanaStreamsGetAll获取 Solana 流
solanaStreamsUpdate更新 Solana 流
solanaStreamsUpdateStatus更新 Solana 流状态
Solana 地址

管理 Solana 流的地址列表。

Endpoint描述
solanaStreamsAddAddresses向 Solana 流添加地址
solanaStreamsDeleteAddresses从 Solana 流删除地址
solanaStreamsGetAddresses获取 Solana 流的地址
Bitcoin 流

创建、更新、删除和模拟 Bitcoin 流,包括区块重放辅助功能。

Endpoint描述
bitcoinBlockToWebhook按区块编号发送 Bitcoin Webhook 数据
bitcoinGetBlockByNumber按区块编号获取 Bitcoin Webhook 数据
bitcoinStreamsCreate创建 Bitcoin 流
bitcoinStreamsDelete删除 Bitcoin 流
bitcoinStreamsGet按 ID 获取 Bitcoin 流
bitcoinStreamsGetAll获取 Bitcoin 流
bitcoinStreamsUpdate更新 Bitcoin 流
bitcoinStreamsUpdateStatus更新 Bitcoin 流状态
Bitcoin 地址

管理 Bitcoin 流的地址列表。

Endpoint描述
bitcoinStreamsAddAddresses向 Bitcoin 流添加地址
bitcoinStreamsDeleteAddresses从 Bitcoin 流删除地址
bitcoinStreamsGetAddresses获取 Bitcoin 流的地址
Bitcoin Xpub

管理关联到流的 Bitcoin xpub。

Endpoint描述
bitcoinStreamsAddXpub向 Bitcoin 流添加 xpub
bitcoinStreamsDeleteXpub从 Bitcoin 流删除 xpub
bitcoinStreamsGetXpubs获取 Bitcoin 流的 xpub
项目设置

读取和更新项目级别的流设置。

Endpoint描述
GetSettings获取项目设置
SetSettings设置项目设置
统计信息

查看全局和各流的统计信息。

Endpoint描述
GetStats获取项目统计信息
GetStatsByStreamId按 Stream ID 获取项目统计信息
历史记录

查看投递历史记录和日志,并重放失败的 Webhook 投递。

Endpoint描述
GetHistory获取历史记录
GetLogs获取日志
ReplayHistory重放历史记录
历史任务

创建并检查历史流任务。在生产环境使用前,请确认时间戳单位和支持的流系列。

Endpoint描述
CreateJob创建历史流任务
GetJobs获取历史流任务

示例:创建 EVM ERC20 转账监控

curl -X PUT "https://api.moralis-streams.com/streams/evm" \
  -H "X-API-Key: $MORALIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "webhookUrl": "https://your-server.com/webhook",
    "description": "Monitor ERC20 transfers",
    "tag": "erc20-monitor",
    "topic0": ["Transfer(address,address,uint256)"],
    "allAddresses": true,
    "chainIds": ["0x1", "0x89"],
    "advancedOptions": [
      {
        "topic0": "Transfer(address,address,uint256)",
        "includeNativeTxs": true
      }
    ]
  }'

示例:创建 Solana 程序流

curl -X PUT "https://api.moralis-streams.com/streams/solana" \
  -H "X-API-Key: $MORALIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "webhookUrl": "https://your-server.com/webhook",
    "description": "Monitor Solana program activity",
    "tag": "solana-monitor",
    "network": ["mainnet"],
    "programIds": ["YOUR_SOLANA_PROGRAM_ID"],
    "mintAddresses": ["YOUR_SOLANA_MINT"],
    "allAddresses": false
  }'

示例:创建 Bitcoin 地址流

curl -X PUT "https://api.moralis-streams.com/streams/bitcoin" \
  -H "X-API-Key: $MORALIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "webhookUrl": "https://your-server.com/webhook",
    "description": "Monitor Bitcoin transactions",
    "tag": "bitcoin-monitor",
    "network": ["mainnet"],
    "includeInputs": true,
    "includeOutputs": true,
    "allAddresses": false
  }'

示例:添加 Bitcoin Xpub

curl -X POST "https://api.moralis-streams.com/streams/bitcoin/YOUR_STREAM_ID/xpub" \
  -H "X-API-Key: $MORALIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "xpub": "YOUR_XPUB"
  }'

分页

列表端点使用游标分页:

# First page
curl "...?limit=100" -H "X-API-Key: $MORALIS_API_KEY"

# Next page
curl "...?limit=100&cursor=<cursor>" -H "X-API-Key: $MORALIS_API_KEY"

支持的链

  • EVM Streams:请使用当前支持链文档和十六进制 ID。Moonbeam、Moonriver 和 Lisk 计划于 2026 年 9 月 25 日移除。
  • Solana Streams:仅支持 mainnet
  • Bitcoin Streams:仅支持 mainnet

Moralis 的在线文档还为 EVM Streams 发布了专门的支持链页面。


参考文档


另请参阅

  • 端点规则:rules/*.md
  • Data API:用于查询历史或当前区块链状态的 @moralis-data-api

评论

支持 Markdown