{
  "projectId": "edwin",
  "title": "Edwin SDK 的钱包实现差异",
  "summary": "发行 SDK 同时包含本地 keypair、浏览器钱包和只读 public-key 适配器；不同接入方式具有不同签名能力。",
  "scope": "npm edwin-sdk@0.8.53 的选定发布文件；REA 解析 1 个 JS 文件，静态分析。",
  "status": "partial",
  "analyzedAt": "2026-10-13T10:41:59.919368+00:00",
  "tool": {
    "name": "REA",
    "version": "6.4.0"
  },
  "findings": [
    {
      "title": "钱包接口有不同权限的实现",
      "detail": "发布包分别包含 EVM public-key 钱包、Solana keypair、Phantom 与 public-key 客户端。调用者选用哪一种钱包会影响可读与可签名能力。",
      "evidenceType": "observed",
      "evidenceIds": [
        "ev_27797997bf4d093ea3ddb0cc3608626b4ce9319aa70916a143dc9a5dab80632f"
      ],
      "sourceUrls": [
        "https://registry.npmjs.org/edwin-sdk/-/edwin-sdk-0.8.53.tgz"
      ]
    },
    {
      "title": "Solana 发送路径与 RPC/提交服务分开",
      "detail": "代码包含 Solana RPC、sendTransaction 与可配置 Jito 交易提交路径；Phantom 分支把签名交给 provider.solana。仅由同一 SDK 包不能认定所有部署都保存私钥。",
      "evidenceType": "code_inference",
      "evidenceIds": [
        "ev_27797997bf4d093ea3ddb0cc3608626b4ce9319aa70916a143dc9a5dab80632f"
      ],
      "sourceUrls": [
        "https://registry.npmjs.org/edwin-sdk/-/edwin-sdk-0.8.53.tgz"
      ]
    }
  ],
  "limitations": [
    "只分析 edwin-sdk@0.8.53 的 ESM 发行入口。",
    "未核对所有协议适配器、运行交易或读取钱包。",
    "静态代码不证明运行行为、完整风控、成交或收益；未审计服务端。",
    "没有登录、读取账户、连接钱包、签名、交易或执行目标代码。"
  ],
  "artifacts": [
    {
      "label": "edwin-sdk@0.8.53",
      "url": "https://registry.npmjs.org/edwin-sdk/-/edwin-sdk-0.8.53.tgz",
      "sha256": "3c52dd580fc7a352d779a3a0dc27274dd7296aa45c4dcae176f7da0b5e5138ef"
    },
    {
      "label": "dist--esm--index.js",
      "url": "https://registry.npmjs.org/edwin-sdk/-/edwin-sdk-0.8.53.tgz",
      "sha256": "9a2f50592082d78310fc56b457ca10e91d9e9156c9b9d885117e45b9dc8c9288"
    }
  ],
  "evidenceIds": [
    "ev_27797997bf4d093ea3ddb0cc3608626b4ce9319aa70916a143dc9a5dab80632f"
  ],
  "reportUrl": "/research/rea/edwin.json",
  "coverage": {
    "parsedFiles": 1,
    "parseFailures": 0,
    "semanticCoverage": "unknown",
    "rootArtifactSha256": "7afe51047cfc722387b366f9126f562e3220993a81f88ebef97d7ce59c69c1f3",
    "inputFileCount": 1,
    "inputBytes": 264110,
    "npmIntegrityVerified": true,
    "analysisResult": "completed"
  }
}
