tanka420/arcready

GitHub: tanka420/arcready

Arc 专用静态 CI 质量门控工具,用于在发布前检测钱包、桥接器和 App Kit 集成中常见的 Arc 特有配置错误。

Stars: 0 | Forks: 0

# ArcReady 针对钱包、桥接器、App Kit 集成和 dApp 的 Arc 专用静态 CI 质量门控和集成模式验证器。 [![ArcReady Example](https://static.pigsec.cn/wp-content/uploads/repos/cas/aa/aa41dd82e9df039def1f533e6e84e2b6497c60e685edd00119dfaf06eb33e2e4.svg)](https://github.com/tanka420/arcready/actions/workflows/arcready-example.yml) [![Release](https://img.shields.io/github/v/release/tanka420/arcready?include_prereleases\&label=release)](https://github.com/tanka420/arcready/releases) ![TypeScript](https://img.shields.io/badge/TypeScript-5.x-blue) ![Node.js](https://img.shields.io/badge/Node.js-22%2B-green) ![npm](https://img.shields.io/badge/npm-arcready%400.3.0-blue) ![Backend](https://img.shields.io/badge/backend-not_required-lightgrey) ArcReady 可帮助开发者在发布前捕获常见的 Arc 集成错误。它是用于本地工作流和 CI 中静态检查的开发者侧早期预警层。 ## 它是什么 ArcReady 会扫描源文件,检查三种预设下常见的 Arc 专用集成假设: - `wallet` - `bridge` - `app-kit` 它会以终端、JSON、Markdown 或 HTML 格式报告检查结果,并可以根据 `critical`、`warning`、`info` 或 `none` 阈值使 CI 失败。 ## 快速演示 ``` npx --yes arcready@0.3.0 init npx --yes arcready@0.3.0 scan ``` 面向 CI 的 Markdown 报告: ``` npx --yes arcready@0.3.0 scan --format markdown --out arcready-report.md ``` 简化版示例输出: ``` ArcReady v0.3.0 Project: my-arc-app Score: 75 Status: fail Summary: 1 critical, 0 warning, 0 info ``` ## 快速开始 无需安装直接运行: ``` npx --yes arcready@0.3.0 scan ``` 创建配置文件: ``` npx --yes arcready@0.3.0 init ``` 本地安装: ``` npm install -D arcready npx arcready scan ``` ## GitHub Action 最小工作流: ``` name: ArcReady on: pull_request: push: branches: [main] jobs: arcready: runs-on: ubuntu-latest permissions: contents: read steps: - uses: actions/checkout@v4 - uses: tanka420/arcready@v0.3.0 with: fail-on: critical ``` 该 action 会运行已发布的 npm CLI,且默认使用 `arcready@0.3.0`。你可以固定或覆盖该 CLI 包的版本: ``` with: arcready-version: "0.3.0" ``` 请参阅 [docs/github-action.md](docs/github-action.md) 了解输入、artifact 行为和外部使用说明。 ## ArcReady 检查的内容 ### Wallet - Arc 链元数据 - 原生 USDC 显示 - 避免关于 ETH gas 标签的假设 - 单次确认(one-confirmation)最终性假设 - 不受支持的 PREVRANDAO 假设 - Blob 交易假设 ### Bridge - 单次确认(one-confirmation)桥接假设 - CCTP 域 `26` - 原生 USDC 与封装版 USDC 的假设 - 中继器(Relayer)gas token 假设 - 可重试的 CCTP attestation `404` 处理 - 避免关于 PREVRANDAO 中继选择的假设 ### App Kit - `Arc_Testnet` / Arc 链标识符的使用 - 能力防护(Capability guardrails) - 显式 RPC 配置 - 用户可控的钱包委托(Delegate)处理 - 面向用户的费用说明 - 桥接最小金额提示文案 ArcReady 仅检查静态集成模式。它不会在 runtime 验证 Circle SDK 或 App Kit。 ## 示例输出 ``` CRITICAL (1) - wallet/ONE_CONFIRMATION_FINAL Message: Arc wallet transaction flow appears to wait for more than one confirmation. Files: src/wallet.ts Suggested fix: Set Arc confirmation waits and release logic to 1 confirmation. ``` ## 报告 支持的格式: - 终端 - JSON - Markdown - HTML ``` npx --yes arcready@0.3.0 scan --format terminal npx --yes arcready@0.3.0 scan --format json --out arcready-report.json npx --yes arcready@0.3.0 scan --format markdown --out arcready-report.md npx --yes arcready@0.3.0 scan --format html --out arcready-report.html ``` 生成的报告文件夹(如 `.arcready/` 和 `reports/`)会被 git 忽略。 ## ArcReady 不做的事 ArcReady 不会执行: - 实时的 Arc RPC 检查 - Circle API 检查 - 链上交易模拟 - 合约部署验证 - 桥接 runtime 模拟 - 真正的 App Kit runtime 验证 - SaaS/仪表盘监控 它是一个静态 CI 质量门控,而不是 runtime 验证器或兼容性保证。 ## 为什么会有这个项目 Arc 兼容 EVM,但 Arc 集成不应盲目继承 Ethereum 的默认假设。开发团队可能会不小心发布错误的 gas 标签、最终性等待、CCTP 域值、封装资产假设或 App Kit 配置错误。 ArcReady 会将这些常见的集成风险转化为本地和 CI 检查。 ## 配置基础 在你要扫描的项目中创建 `arcready.config.json`: ``` { "presets": ["wallet", "bridge", "app-kit"], "paths": ["src", "app", "components", "lib", "package.json"], "exclude": ["dist/**", "coverage/**", ".next/**", "node_modules/**"], "reporters": ["terminal", "json", "markdown", "html"], "failOn": "critical", "rules": { "wallet/ONE_CONFIRMATION_FINAL": "critical", "bridge/BRIDGE_CONFIRMATIONS_ONE": "critical", "app-kit/APPKIT_CHAIN_IDENTIFIER_VALID": "critical" } } ``` ### CI 行为 `failOn` 控制何时让 CLI 以非零状态退出: | 值 | 行为 | | --- | --- | | `critical` | 仅当存在严重(critical)发现时失败 | | `warning` | 当存在警告(warning)或严重(critical)发现时失败 | | `info` | 当存在任何发现时失败 | | `none` | 永远不会因为发现而失败 | CLI 的 `--fail-on` 选项会覆盖配置值。 ## 预设 | 预设 | 关注点 | 示例规则 | | --- | --- | --- | | `wallet` | Wallet UX、链元数据、费用显示、最终性 | `ARC_CHAIN_METADATA`、`NO_ETH_GAS_LABEL`、`ONE_CONFIRMATION_FINAL` | | `bridge` | CCTP、最终性、中继器(relayer)gas、原生 USDC | `BRIDGE_CONFIRMATIONS_ONE`、`CCTP_DOMAIN_26`、`RELAYER_USES_USDC_FOR_GAS` | | `app-kit` | App Kit 链标识符、能力防护、统一余额(Unified Balance)UX | `APPKIT_CHAIN_IDENTIFIER_VALID`、`APPKIT_CAPABILITY_SUPPORTED`、`UB_FEE_EXPLANATION_PRESENT` | 完整规则列表:[docs/rule-catalog.md](docs/rule-catalog.md) 演示项目:使用[错误的 Arc 集成](examples/demo-projects/broken-arc-integration)和[修复后的 Arc 集成](examples/demo-projects/fixed-arc-integration)作为静态修复工作流的修复前后状态。 ## 验证测试夹具(Validation Fixtures) ArcReady 包含用于 wallet、bridge 和 App Kit 集成的好坏测试夹具: ``` corepack pnpm validate:fixtures ``` 好的测试夹具应该通过检查且没有任何发现。坏的测试夹具应该产生发现,并根据其预期结果使检查失败。 ## 独立声明 ArcReady 是一个独立的开源项目。它不是官方的 Circle 或 Arc 产品,其静态检查结果应被视为开发者侧的发布检查,而非官方验证。 ## 许可证 MIT
标签:MITM代理, TypeScript, Web3, 代码质量检查, 区块链, 安全插件, 暗色界面, 聊天机器人, 自动化攻击, 错误基检测, 静态代码分析