Hugegreencandle/xahau-mcp

GitHub: Hugegreencandle/xahau-mcp

面向 Xahau 网络的 MCP 服务器,在本地 VM 中离线运行和分析 Hooks 智能合约的真实 WASM 字节码,提供签名前交易模拟、静态安全审计和只读账本工具。

Stars: 6 | Forks: 1

# xahau-mcp 一个用于 **[Xahau 网络](https://xahau.network)** 的 [Model Context Protocol](https://modelcontextprotocol.io) 服务器,实现了两项首创:它**在本地 VM 中运行 Hook 的真实 WebAssembly 字节码**(无需 `xahaud` 节点),并在其上运行**特定于 Hooks 的静态分析/安全规则引擎**——两者均可完全离线运行。围绕这一核心,它还添加了只读账本访问、适配 Xahau 的二进制编解码器、指令计数费用估算、网络奖励计算、治理辅助工具以及未签名交易构建器。 ![xahau-mcp v2.0 飞行模拟器演示](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/7b93ab3839122420.gif) ## 三部曲——实现安全的 Hooks,端到端 三个开源工具,一个工作流:**编写 → 模拟单笔交易 → 证明所有输入。** xahau-mcp 是其中的**模拟**阶段。 | 阶段 | 工具 | 功能 | |---|---|---| | **编写** | [xahc](https://github.com/Hugegreencandle/xahc) | 编写 + 编译一个安全的 Hook,生成干净、通过 lint 检查的 WASM | | **模拟单笔** | [xahau-mcp](https://github.com/Hugegreencandle/xahau-mcp) | 针对一笔实时交易运行真实的字节码 | | **证明所有** | [xahc-prover](https://github.com/Hugegreencandle/xahc-prover) | 证明在范围内的每个输入均保持某种不变性——或返回反例 | ## 为什么它很有用 将任何支持 MCP 的 agent(如 Claude 等)指向此服务器,它就能: - **签名前预见未来** — `simulate_transaction` 是一个签名前的**飞行模拟器**:未签名交易会触发的每个 hook 都将作为真实字节码针对实时账本状态运行,包含按 hook 划分的 accept/rollback、解码后的 emitted 交易、模拟的状态写入以及标记过的静态引擎预检。其同级工具 `what_if` 是一台**时光机**:在其原始账本上重放任何真实的历史交易——并加上您的修改。已验证能够**分毫不差地**重现真实 claim 所 emitted 的 `GenesisMint` 支付(72,251,963 drops),且已经过测试锁定。 - **无需部署即可运行 Hook** — `execute_hook` 在本地 VM 中实例化真实的 CreateCode WASM,通过*模拟的*交易 + 账本状态提供 Hook API,并报告实际的 `accept`/`rollback` 决定、返回码/字符串、状态写入、emitted 交易以及调用跟踪。这是第一个无需 `xahaud` 节点即可供开发者使用的 Hook 模拟器。 - **在安装前审计 Hook** — 粘贴 CreateCode WASM(或账本上的 hook hash)即可获取 SARIF-lite 结果:缺少 `accept`/`rollback` 退出、未受保护的循环 (`_g`)、未知的 `env` 导入、危险的 `HookGrant`、过于宽泛的 `HookOn` 等。 - **双向解码隐晦的 `HookOn` 位图** — 这个 256 位、反转的、低电平有效掩码(带有高电平有效的 SetHook 位)很容易出错;在这里它经过了验证和往返测试。 - **读取 Xahau 账本状态** — 账户、已安装的 hooks、hook 定义、hook 状态、交易(包含 `HookExecutions` 元数据)、账本。 - **回答头号零售问题** — `reward_status` 可以告诉任何账户是否已加入 Xahau 网络奖励(Balance Adjustments)、精确的已累积 XAH——使用 genesis reward hook 自身的公式和实时参数计算,已验证能**分毫不差地**重现真实的链上支付——下一次 claim 的时间,以及 claim 是否逾期(逾期 claim 会导致收益损失)。 - **诊断 Evernode host** — `evernode_host_diagnostics` 为 Xahau 最大的运营群体自动化执行官方故障排除清单:注册、心跳活跃度(实际的链上活跃规则)、信誉、EVR 信任线、租赁要约、规格以及累积奖励,只需一次只读调用。 - **解释失败的交易** — `diagnose_failed_tx` 将引擎结果 + hook 返回字符串转化为易懂的原因和具体的修复方法。 - **实时监控治理** — `governance_state` 解码了 Genesis Governance Game 的完整 hook 状态:谁占据了这 20 个席位、每一个未决投票及其统计,以及某个变更(成员轮换、奖励率变更)是否即将被执行。没有任何浏览器能显示这些信息。 - **构建未签名交易**(SetHook, ClaimReward, Payment)并带有自动安全预检——返回为**未签名**状态,以便进行离线签名。 ## 为什么这是我们所知的最高级的区块链 MCP 口气很大,所以这里提供可核查的证据(2026-06-11)。据我们所知,任何区块链的 MCP——无论是 Ethereum、Solana、Bitcoin、XRPL 还是其他——都没有将这其中哪怕两项结合起来;最接近的比较对象是云模拟 MCP(例如 Tenderly 的产品,它们在自己的托管基础设施上模拟)和独立分析器(例如 Slither,它仅限 EVM 使用且不是 MCP): 1. **在本地 VM 中执行真实的链上合约字节码** — `execute_hook` 无需节点、无需云端、无需账户即可运行真实的 CreateCode WASM。这不是 ABI 封装,也不是托管的模拟器。 2. **发布针对区块链真实情况的、经过测量和回归锁定的保真度分数** — `vm_fidelity_report` 重放了 30 次真实的 mainnet hook 执行:**30/30 一致 (100%),0 次性能下降**,包括占据主要实时流量的、读取外部状态的 hook。这 30 次全都是 **accept 方向**(实时 Xahau 流量由心跳主导),指标本身也说明了这一点——它报告了 accept/rollback 的构成,并警告说仅包含 accept 的语料库无法将 VM 与总是 accept 的存根区分开来。**rollback** 方向已在 [`tests/regression.test.ts`](tests/regression.test.ts) 中通过真实的 genesis 字节码(治理 `Invoke` → rollback)进行了测试。语料库、方法论和真实的历史记录(25% → 0% → 100%)都在 [docs/FIDELITY.md](docs/FIDELITY.md) 中。我们不知道还有其他任何区块链 MCP 尝试过这样做。 3. **协议内静态安全分析** — 特定于 Hooks 的规则引擎(SARIF-lite 结果),根据网络自身的 genesis hooks 进行了校准。 4. **协议内差异化模糊测试** — `fuzz_hook` 在本地 VM 中映射合约的 accept/reject 决策边界。 5. **利用真实字节码对真实交易进行事后剖析** — `hook_execution_postmortem` 重放链上实际触发的交易并进行比较。 6. **精确重现链上经济模型** — `reward_status` 重新实现了 genesis reward hook 的公式,并**分毫不差地**重现了真实的 emitted 支付(已验证并经过测试锁定)。 7. **端到端解码实时治理** — `governance_state` 实时展示了治理游戏的每一个席位、投票、统计和阈值。 8. **针对生态系统真实痛点的运维医生** — 带有原因+修复方法的失败交易诊断、Evernode host 健康状况、claim 逾期检测。 上述每一项主张都可以从这个 repo 中重现:语料库已提交,测试断言了这些数字,并且规范来源(xahaud genesis hooks,evernode-js-client)已在代码中注明。 ## 安全姿态 - 对网络是**只读**的。此服务器中没有任何地方存在 `submit` 或 `sign`。 - **不托管密钥。** 构建器工具从不接受 secret/seed,并始终返回**未签名**的交易以及离线签名的说明(例如使用 [xaman](https://xaman.app) 或 `xrpl-accountlib`)。它们默认使用 **testnet**。 - **诚实的保真度。** `execute_hook` 针对**模拟环境**运行**真实字节码**。该 VM 实现了 78 个函数的 Hook API 中的很大一部分——完整的 **XFL float** API(已针对 `float_one` 验证)、**slot** 表 + **STObject 子字段提取**(`slot_subfield`/`sto_subfield`,与真实交易字节精确一致)、state、`otxn_*`/`hook_*`、`util_accid`/`util_raddr`/`util_verify`/`util_sha512h` 等等。STObject 修改(`sto_emplace`/`erase`/`validate`)、`util_keylet`(账户 + hook 已针对实时账本索引验证;offer/escrow/check/ticket/signers 规范且故障安全)、**`slot_set` + 外部 hook 状态(`state_foreign`/`state_foreign_set`)支持异步预解析**(`execute_hook resolveKeylets:true` 获取 hook 读取的账本对象和外部状态条目——迭代进行,因为一次解析后的读取可能会暴露下一次——然后重新运行)、`slot_float`/`float_sto`(STAmount ⇄ XFL,低于第 63 位的发行布局*就是* XFL 布局)以及 32 字节的状态密钥填充(短密钥完全按照链上方式进行左侧零填充)现在均受支持。`state_foreign_set` 记录写入,但不建模链上的 `HookGrant` 要求;`etxn_details` 提供已披露的 SYNTHETIC 占位符(列在 `syntheticCalls` 中,不能更改 accept/rollback 决定)。对于仍无法保证真实性的情况,我们已如实记录:未经验证的 keylet 子类型、`meta_slot` 以及其他未建模的调用返回真实的 `NOT_IMPLEMENTED` 代码,被列在 `unsupportedCalls` 中,并将此次运行标记为 `degraded`——**绝不伪造**。VM 对守卫预算进行建模(`_g` 强制执行每个守卫声明的 `maxiter` → `GUARD_VIOLATION`),并报告 `stateApplied`(状态写入仅在 `accept` 时提交,在 `rollback` 时丢弃)。它**不是**一个共识绝对保真的 `xahaud` 副本——它没有守卫之外的 fee/fuel 计量,XFL 数学采用截断而非四舍五入(因此 `float_mulratio` 的进位标志和最后一位有效数字的结果可能会有所不同),值级别的数学运算仅在经过测试的地方进行了验证。带有循环但没有 `_g` 守卫的 Hooks 在执行前会被**拒绝**(在链上是无效的),并且*受守卫保护*的运行受限于 **VM 预算**(1M 累计守卫调用 / 2 秒壁钟时间——标记为本地 VM 上限,而非共识限制);务必在 testnet 上确认金融/资源类 hooks。`hook_dry_run` 是 `STATIC_ONLY`,`compute_reward` 是 `DOCUMENTED_MODEL`(遗留功能——推荐使用 `reward_status`,其 `REWARD_HOOK_FORMULA` 精确地重新实现了 `reward.c`,并分毫不差地重现了真实的链上 `GenesisMint` 支付),`estimate_hook_fee` 是 `ESTIMATE`。 - **资源与提示。** 除了工具之外,服务器还公开了 MCP **资源**(`xahau://rules`、`xahau://hook-api`、`xahau://tx-types`)和引导式**提示**(`audit_hook`、`simulate_hook`、`explain_hook`),以便 agent 可以直接提取参考数据并运行常见工作流。 ## 工具 **Hook 智能(离线——核心)** | 工具 | 用途 | |---|---| | `execute_hook` | **在本地 VM 中针对模拟的 tx/state 运行真实的 Hook 字节码** → 实际的 accept/rollback、返回码、状态写入、emits、trace (`LOCAL_VM`)。 | | `simulate_transaction` | **签名前飞行模拟器** — 预测未签名 tx 的命运:发起方 + 利益相关方 hook 链(顺序来自 xahaud 的规范 `Transactor.cpp`/`applyHook.cpp`)作为真实字节码针对实时状态运行;按 hook 划分的判决、解码后的 emits、状态写入、静态引擎预检、诈骗评分。 | | `what_if` | **时光机** — 获取一笔真实的历史 tx,应用您的覆盖设置,在其原始账本上重新模拟。分毫不差地重现真实的奖励 claim `GenesisMint`(已测试锁定)。 | | `fuzz_hook` | **差异化模糊测试**:在 VM 中扫描许多生成的交易,以映射 hook 的 accept/rollback **决策边界**(它接受与拒绝哪些 tx 类型/金额)。 | | `annotate_hook_trace` | 通过字节宽度将 `execute_hook` 的 `trace[]` **解码**为人类可读的值:规范 XFL float (`definite`)、int64/native-drops(两种字节序)、UInt32 + Ripple-epoch 日期、候选 ID → r-address (`possible`)、32 字节 hash。原始十六进制始终保留;离线。 | | `hook_report` | **一键完整报告**:结构 + 纯英文分类 + 安全结果 + 费用。 | | `hook_execution_postmortem` | **对真实链上 tx 的 hooks 进行事后剖析**:获取 tx 及其 `meta.HookExecutions` + 引擎结果,然后通过 VM 运行每个触发的 hook 的**真实字节码**,并将 VM 的 accept/rollback 与链上记录的内容进行比较。链上的决定是权威的;VM 运行为 `LOCAL_VM`;当性能下降/不确定时,`agree` 为 `null`(而不是 false)。串行 RPC:每个唯一的 HookHash 对应 1 次 `tx` + 1 次 `ledger_entry`。 | | `vm_fidelity_report` | **诚实的保真度指标**:在 VM 中重放已提交的真实 mainnet HookExecutions 语料库,并仅报告**可比较(非性能下降的)**运行的一致性百分比;离线。 | | `classify_hook` | 用纯英文推断 hook 的功能(防火墙/发射器/有状态/金融/……)。 | | `hook_diff` | 比较两个 hook 版本 —— API/HookOn/大小增量 + 新获得的敏感能力。 | | `scaffold_hook` | **根据意图生成 C 语言的入门 Hook**(防火墙/支付限制/状态计数器/……)——然后使用 analyze/execute 进行验证。 | | `analyze_hook` | 在 hook 上运行静态分析规则引擎 → SARIF-lite 结果。 | | `audit_account_hooks` | 拉取账户上的所有 hook 并全部进行分析。 | | `inspect_hook_wasm` | 解析 CreateCode WASM:导入、导出(`hook`/`cbak`)、内存、自定义段、循环、`_g` 守卫及指令计数。 | | `estimate_hook_fee` | 字节大小(SetHook 费用)+ 静态指令计数(复杂度代理),`ESTIMATE`。 | | `hook_dry_run` | `STATIC_ONLY` 快速检查 —— 触发交易 + 存在退出调用(如需真实运行请使用 `execute_hook`)。 | | `list_rules` · `hook_api_lookup` | 枚举分析器规则 · 查找 Hook API 函数的作用及风险。 | **编解码器 / 解码(离线)** | 工具 | 用途 | |---|---| | `decode_hook_on` / `encode_hook_on` | HookOn 位图 ⇄ 交易类型列表。 | | `decode_sethook` | SetHook tx → 其 hook 定义,HookOn 已解码。 | | `decode_tx_blob` / `encode_tx_blob` | Xahau tx blob ⇄ JSON(未签名)。 | | `decode_uritoken_id` · `xah_amount` | URIToken ID 验证 · XAH⇄drops。 | | `decode_xpop` | 解码 Import/Burn2Mint XPOP → 源账本、内部 burn tx、已 burn 的 drops、UNL 验证者。 | | `decode_result` | 引擎结果码 ⇄ 名称(例如 153 ⇄ tecHOOK_REJECTED)。 | | `diagnose_failed_tx` | **“为什么我的交易失败了?”** —— 基于链上事实的纯英文诊断:引擎结果 → 原因 + 具体修复方法(约 30 种代码目录),解码并*解释* hook rollback 返回字符串(reward hook 的“You must wait N seconds”变为可 claim 日期)、“成功”Payments 的部分支付陷阱,以及未找到的鉴别诊断(过期的 `LastLedgerSequence` / 错误网络)。1 次读取。 | | `validate_address` · `xaddress` | 验证 classic/X-address(类型、账户 ID、标签) · 编码/解码 X-addresses。 | | `currency_code` · `ripple_time` | 3 字符 ISO ⇄ 160 位货币 · Ripple-time ⇄ Unix/ISO。 | | `decode_amount` | 解码原生 drops / 8 字节 / 48 字节已发行的 STAmount / 金额对象 → 值+货币+发行者。 | | `decode_sign_request` | 解码 Xaman txjson 或 tx_blob → 纯英文的“您授权的内容” + 安全警告。 | | `decode_lease_uri` | 解码 Evernode 租约 URIToken(`evrlease`/LTV)→ 租约索引、EVR 金额(XFL)、ToS hash、IP。 | | `evernode_host_diagnostics` | **一键 Evernode host 健康检查**(官方故障排除清单,自动化):注册条目、相对于链上活跃规则的心跳活跃度、实例负载、信誉、EVR 信任线/余额、注册 URIToken、租赁要约、机器规格 + 累积的 EVR 奖励。布局已根据规范的 `evernode-js-client` + 一个实时的 mainnet host 进行了验证(约 9 次串行读取)。 | | `inspect_emitted_tx` | 解码 hook 的 `emit()` blob → tx JSON + 纯英文总结 + 危险评分。 | | `scam_check` | 对签名请求(txjson 或 tx_blob)的风险模式进行评分 → `dangerScore` 0-100 + SAFE/CAUTION/DANGER 等级 + 按规则划分的发现结果(SetHook、向他人的 AccountDelete、regular-key/signer-list 变更、大额原生支付、无过期时间、预签名)。仅针对 tx **形状**的离线启发式检测——每一项发现都是**潜在**风险,绝非确认的诈骗;没有黑名单查找,没有链上恶意检查。 | **账本(只读 RPC)** | 工具 | 用途 | |---|---| | `xahau_server_info` · `get_account_info` · `get_account_objects` | 节点/账户读取。 | | `get_account_hooks` · `get_hook_definition` · `get_hook_state` | Hook 读取。 | | `get_transaction` · `get_ledger` · `get_fee` | Tx(包含 `HookExecutions`) · 账本 · 当前网络费用。 | | `get_account_lines` · `get_account_offers` · `get_account_uritokens` | 信任线 · DEX 挂单 · URITokens(NFT,URI 已解码)。 | | `explain_account` | **一键纯英文账户快照** —— 余额、密钥安全性、hooks、信任线、Evernode 租约、近期活动(5 次串行读取)。 | **经济学 / 治理** | 工具 | 用途 | |---|---| | `reward_status` | **Balance Adjustment 医生** — 已加入?确切的已累积 XAH(来自 `reward.c` 的 genesis reward hook 自身公式,带有从 genesis hook 状态读取的实时 `RR`/`RD`;分毫不差地重现真实的链上 `GenesisMint` 支付)、下一次 claim 倒计时、逾期 claim 警告(逾期 claim 会导致收益损失),以及在适用时提供未签名的 opt-in/claim `ClaimReward`(3 次串行读取)。 | | `compute_reward` | 预测可 claim 的 XAH 网络奖励(`DOCUMENTED_MODEL`;遗留功能——推荐使用 `reward_status`)。 | | `quantum_grade` | 评估账户的抗量子(HNDL)准备情况 —— master-key/regular-key/multisig + hooks → 评分、等级、建议(带有 Hook/PQC 视角)。 | | `governance_state` | **完整实时解码治理游戏**:全部 20 个席位 + 成员、成员数量、实时奖励率/延迟、每一个未决投票(谁投了什么)以及每一次带有阈值(80% 成员 / 100% 其他)和达成标志的统计。布局源自规范的 `xahaud hook/genesis/govern.c`。 | | `decode_b2m` | Burn2Mint 分类。 | **未签名构建器(无密钥,默认为 testnet)** | 工具 | 用途 | |---|---| | `build_sethook_unsigned` | 未签名 SetHook,带自动 `analyze_hook` 预检。 | | `build_claimreward_unsigned` · `build_import_unsigned` · `build_payment_unsigned` | 未签名 ClaimReward · Import/B2M · Payment。 | | `prepare_transaction` | 从实时网络自动填充 Sequence/Fee/LastLedgerSequence/NetworkID → 准备好离线签名(绝不签名)。 | ## 安装 直接从 GitHub 安装——无需 npm-registry 账户;它会在安装时自动构建: ``` npm install -g github:Hugegreencandle/xahau-mcp ``` 或者克隆并构建: ``` git clone https://github.com/Hugegreencandle/xahau-mcp && cd xahau-mcp npm install # the `prepare` script compiles dist/ automatically npm run smoke # health check + a live mainnet read npm test # 298 tests (offline) ``` 此外,也已发布在 **GitHub Packages** 上,名称为 `@hugegreencandle/xahau-mcp`。即使是公开安装,GitHub Packages 也需要身份验证,因此请添加到您的 `.npmrc` 中: ``` @hugegreencandle:registry=https://npm.pkg.github.com //npm.pkg.github.com/:_authToken=YOUR_GITHUB_TOKEN # token with read:packages ``` 然后 `npm install -g @hugegreencandle/xahau-mcp`。(上面的 `github:` 安装不需要身份验证,更为简单。) 添加到 MCP 客户端(例如 Claude Code / Desktop): ``` { "mcpServers": { "xahau": { "command": "xahau-mcp" } } } ``` ## HTTP shim(浏览器、钱包、Web 工具) MCP 服务器使用 **stdio** 通信——浏览器、Xaman webview 以及公共的“模拟任何 hook”的 Web 工具无法做到这一点。HTTP shim (`src/http.ts`) 通过简单的 HTTP 公开了相同的飞行模拟器核心。只读;从不签名或提交。 ``` PORT=8787 npm run http # or: PORT=8787 node dist/http.js curl localhost:8787/health # 或部署 container(非 root,带 healthcheck): docker build --target http -t xahau-mcp-http . docker run -p 8787:8787 -e MAX_INFLIGHT=2 -e XAHC_HOOK_MEM_MB=128 xahau-mcp-http ``` 在构建 Dockerfile *最后* 阶段的平台上(如 Railway 等),请使用 `Dockerfile.http`(设置 `RAILWAY_DOCKERFILE_PATH=Dockerfile.http`)——它将 http 阶段作为最终阶段。 ### 端点 | 方法 · 路径 | 主体 | 返回 | |---|---|---| | `POST /simulate` | `{ tx, network?, ledgerIndex?, candidateCode? }` | 完整的 `Simulation` —— 每个 hook 的 accept/rollback、解码后的 emits、状态写入、静态预检 | | `POST /what-if` | `{ txHash, overrides?, network? }` | 针对在其原始账本上重新运行(带有您的覆盖设置)的真实历史 tx 的 `Simulation` | | `POST /execute` | `{ wasmHex, txType?, otxnFields?, hookAccountId?, state?, … }` | `SandboxResult` —— 独立运行 hook 的字节码(离线,无 RPC) | | `POST /analyze` | `{ wasmHex, hookOn?, namespace?, … }` | `{ findings, summary }` —— 静态规则引擎(离线、即时、廉价的首层过滤) | | `GET /fidelity` | — | VM 保真度报告 + `corpusHash` + `lastRun`(逐字回显仅包含 accept 的 `coverageWarning`) | | `GET /health` | — | `{ ok, inflight, endpoints }` | **模拟尚未部署的 hook** — 在 `/simulate` 上传递 `candidateCode`(构建好的 wasm 十六进制)。它会替换 `tx.Account` 的链上 hook 链,因此新编译的 hook 可以在您 SetHook 之前针对**实时账本 + 完整的 TSH 链运行**。(这就是 [`xahc verify`](https://github.com/Hugegreencandle/xahc) 和公共模拟工具所调用的内容。) ### 配置 (env) | 变量 | 默认值 | 用途 | |---|---|---| | `PORT` | `8787` | 监听端口 | | `RL_MAX` | `20` | 每分钟请求 / IP | | `MAX_INFLIGHT` | `4` | 并发模拟数 | | `XAHC_HOOK_TIMEOUT_MS` | `3000` | 每次 hook 执行的硬性壁钟时间 | | `XAHC_HOOK_MEM_MB` | `256` | 每次 hook 执行的内存上限 | | `XAHC_SIM_SPACING_MS` | 模拟默认值 | 读取间 RPC 间隔 —— 对于您自己的节点设为 `0`,在共享的公共节点后设为约 `300` | | `TRUST_PROXY` | 未设置 | 仅当位于设置了 `X-Forwarded-For` 的反向代理之后时才设置 | | `XAHAU_RPC_URLS` | `data/endpoints.json` | 逗号分隔的 mainnet RPC 故障转移列表 | ### 公共运行 该 shim 提供**不受信任的、用户提供的 wasm**,因此每次 hook 执行都在一个一次性的 `worker_thread` 中运行,并带有上述的超时 + 内存上限——挂起或分配炸弹式的 hook 会被终止,而不会阻塞或崩溃主进程(经过安全审计;无限循环 / 不受保护的递归返回 `422`,而不会导致停机)。对于公共部署: - **在进程管理器后运行**(systemd / pm2 / 容器重启策略),以实现纵深防御。 - **仅在确实位于设置X-Forwarded-For` 的代理之后时设置 `TRUST_PROXY`**;否则速率限制器将以 socket 地址为键(设置它会让客户端伪造该标头并绕过限制)。 - 默认启用每 IP 速率限制 + 全局并发上限 —— 通过环境变量进行调整。 ## 安全 经过防御性设计并经过审查(`npm audit` + 危险面检查): - **只读且不托管密钥** —— 任何地方都没有 `sign`/`submit`;构建器工具从不接受密钥,并且只发出*未签名*的交易以进行离线签名。 - **无代码执行面** —— 没有 `eval`/`Function`、没有 `child_process`/shell、没有文件系统写入、没有动态 `require`。RPC `fetch` 只访问 `data/endpoints.json` 中的固定端点(或者对于 mainnet/testnet,使用您的 `XAHAU_RPC_URLS` / `XAHAU_TEST_RPC_URLS` 覆盖)——绝不是从工具输入构建的 URL,因此没有 SSRF。 - **不受信任的 Hook WASM 是沙盒化的** —— `execute_hook`/`fuzz_hook` 在 Node 的 WebAssembly 引擎中运行 hook 字节码,该引擎没有 syscall/fs/network 访问权限;hook 只能调用内存中的 JS Hook-API shim,并带有边界检查的内存读/写。 - **不受信任的字节码加固:** 在执行 hook 之前,VM 会拒绝带有不受保护循环(循环多于 `_g` 守卫调用点)、无法验证循环的操作码扫描、超过 128 KiB 字节码或声明超过 512 个内存页的模块;受保护的循环受限于累积守卫预算 + 壁钟上限。因此,攻击者提供的 hook 无法挂起或导致运行出现 OOM。工具输出是数据,而不是指令(与任何 MCP 一样,请按此对待它)。 - **依赖项:** `npm audit` 仅报告 `xrpl-accountlib` 签名库下传递的低严重性建议——此服务器从不调用这些代码路径(它仅使用二进制编解码器)。 ## 工作原理 - **没有繁重的依赖。** 三个运行时依赖:`@modelcontextprotocol/sdk`、`zod` 和 `xrpl-accountlib`(仅用于 Xahau 感知的二进制编解码器;从不调用其签名面)。RPC 是简单的 `fetch`;**WASM 读取器是手写的且零依赖**;VM 使用 **Node 内置的 `WebAssembly` 引擎**通过 JS Hook API shim 运行字节码——无需 WASM 工具链或原生依赖。 - **真实数据,可再生。** `data/` 是根据实时 Xahau 节点的 `server_definitions` 和规范的 Hook API 列表(`Xahau/hooks-rs` `c/extern.h`)通过 `npm run fetch:all` 构建的。78 个函数的 Hook API 目录包含驱动分析器的每个函数的风险元数据。 - **HookOn** 语义已根据 [Xahau 文档](http://xahau.network/docs/hooks/concepts/hookon-field/) 进行了验证:256 位,第 *n* 位 = tx 类型 *n*,**反转/低电平有效**(设置 = *不*触发),其中第 22 位为 **高电平有效**。 ## 许可证 MIT © 2026 Dane Brown。不附属于 XRPL Labs 或 Xahau 项目。分析器结果是启发式指导,而非安全保证——务必在 testnet 上进行测试,并在 mainnet 使用前独立审查 hooks。
标签:AI工具, MCP, SOC Prime, WASM, Xahau, 云安全监控, 区块链, 开发工具, 智能合约分析, 自动化攻击, 静态分析