feat: 无登录 infra 初始化页 (社区节点 onboarding, CC-40)#7
Merged
Conversation
- app/node-onboarding: 移植自 aastar-sdk node-onboarding-portal/src (纯React), 6步向导(下载镜像→配置→连EOA→生成密钥→注册质押→身份) - 属 infra/operator 层(EOA): operator 注入EOA自筹, owner key 不进浏览器, 无需 AirAccount 登录; 底层全走 @aastar/sdk (onboardDvtNode/buildDvtPop/KMS popSigner), 页面只串线 - 唯一接缝 lib/sdk.ts 已是 injected EOA, 无需改; 窄子路径 @aastar/sdk/operator + /core - bump @aastar/sdk 0.41→0.42 (onboardDvtNode 需 0.42) -⚠️ SDK 0.42 /operator 子包 await import('child_process')(Foundry-CLI签名)泄进浏览器bundle → next.config turbopack.resolveAlias stub 掉; TODO(repo:sdk): SDK 侧 node-guard 该路径 - 本地/HSM 私钥路径可跑; KMS-TEE key-less 路径 gated CC-37; type-check + build 绿 Claude-Session: https://claude.ai/code/session_01RajETCvboSvhadpqMbekNx
jhfnetboy
added a commit
that referenced
this pull request
Jul 10, 2026
clestons
approved these changes
Jul 10, 2026
clestons
left a comment
There was a problem hiding this comment.
Review — APPROVE [4-round: DeepSeek R1a+R1b → Opus R2 → Codex SKIPPED(post-R2 全 Low) → Opus R4]
架构对路:整个 portal 把 chain/keys/crypto 收敛进 lib/sdk.ts 一个文件,buildDvtPop 等直接委托 @aastar/sdk。没有阻断性问题。以下都是 Low / 上线前待办,不影响合入。
CONFIRMED (Low)
generateLocalBlsKeymodulo bias (lib/sdk.ts) —BigInt(hex) % r有取模偏置,约 9.8% 的低残差被 3:2 过采样。但 r≈2^254.86,实际熵损失 < 1 bit(不是初判的 14-15x),对一次性 keygen 无安全意义。建议改 rejection sampling 顺带干掉sk<=0n特判。- 前端
kmsPopSigner零绑定校验 — 直接把 KMS/pop响应整包返回,不验popSig↔publicKey、不验publicKey↔node_id。今天 kms-tee 路径 gated(未上线,走到就报错),所以是 Low;但 CC-37 上线后必须换成 SDK 里已带交叉校验的 popSigner(aastar-sdk#311),别在 client-only 页面里重造这个信任边界。 - 明文 BLS 私钥落盘 + 进 DOM(
OnboardingWizard.tsx)— 有明确的「生产用 HSM/离线」警示 + demo 定位兜底,本地/测试路径可接受。 as unknown as never双重强转(SDK client 接缝)— 抹掉了该 seam 的类型检查(viem 版本 skew,已注释)。建议用overrides.viem在依赖层统一版本,消掉强转。
MISSED (Low, R4 全量补扫)
kmsPopSigner请求体永远发{ node_id: nodeIdOrPubkey },但入参标注是「node_id 或 pubkey」——传 pubkey 时会被错标成 node_id。今天无害(路径 gated),并入 CC-37 的 popSigner 委托一起改。
REJECTED(R1 误报,已驳)
- 「BLS key 可能为 0」— 误报,
if (sk<=0n) sk=1n已把唯一的 0 残差重映射为非 0。 - 「缺
import React」— 误报,Next.js"use client"+ automatic JSX runtime 无需手动 import。 - 「
getRandomValues可能被弱 polyfill」— 误报,真实浏览器就是 WebCrypto CSPRNG。
SUGGESTIONS
- keygen 换 rejection sampling(去偏置 + 去特判)。
- CC-37 上线前,把内联
kmsPopSigner换成 SDK 的已校验 popSigner,让 pop 三元组绑定被强制而非信任中继。 child_processstub 与as unknown as never记成 SDK 侧 TODO(repo:sdk),SDK 出 browser-safe 子包 + 对齐 viem 后回退。
结论:APPROVE — 无阻断项。核心加密都委托给了 SDK,自造的两处(scalar keygen + 远端 PoP 信任)均为 Low,且 kms-tee 路径尚未上线。上线前落实 popSigner 委托即可。
Rounds: R1a/R1b DeepSeek(dual) → Opus R2(独立读, 全降 Low + 驳 3 误报) → Codex SKIPPED(post-R2 gate 全 Low) → Opus R4(终裁 + 补扫). head 7d1ae99.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
无登录 infra 初始化页(CC-40): 社区 KMS+DVT 节点 onboarding 6步向导, 移植自 SDK node-onboarding-portal。
https://claude.ai/code/session_01RajETCvboSvhadpqMbekNx