跳至正文
Starone

参考架构

示意

数字资产基础设施

数字资产产品背后的链下基础设施:区块链节点、钱包服务、安全的密钥管理、索引、交易监控和 API 网关。

问题

设想一家企业,需要代表用户或为自身资金在一条或多条公有区块链上持有、发送和接收数字资产。它必须生成充值地址、识别转入的资金、为转出的交易签名,并通过自己的应用呈现准确的余额和历史记录。

区块链是一种不同寻常的依赖。交易不可逆,在达到最终性之前确认只是概率性的,区块可能被重组,手续费会波动,而私钥一旦泄露,事后轮换也无法挽回损失。链本身不提供的安全性、可审计性和运营控制,必须由围绕链的基础设施来补足。

设计必须满足的需求

  • 私钥绝不能以明文形式出现在应用内存、日志、备份或运维人员的机器上。
  • 每一笔转出交易都必须通过策略检查,大额转账必须获得不止一人的审批。
  • 余额必须由已最终确认的链上数据推导得出,并在发生链重组后自动修正。
  • 失去任何单个节点或 RPC 服务商,都不得导致充值无法识别或提现无法广播。
  • 交易必须经过筛查和监控,并完整留存每一笔由谁申请、谁审批、谁签名的审计轨迹。
  • 新增对另一条 EVM 兼容链的支持,应当只是配置和测试工作,而不是重写。

设计

组件

Web3 与数字资产基础设施
  1. 应用与 API

    • 客户端应用
    • API 网关
    • 合作方 API
    • 运营控制台
  2. 钱包与交易

    • 地址管理
    • 交易构建器
    • Nonce 与手续费控制
    • 策略引擎
  3. 密钥管理

    密钥绝不离开签名边界

    • HSM
    • MPC 签名
    • 多人审批门限
    • 密钥轮换
  4. 节点 / RPC 层

    • 全节点
    • RPC 服务商
    • 故障切换路由
    • Mempool 访问
  5. 索引与分析

    链上数据在最终确认前都是暂定的

    • 区块摄取
    • 事件解码
    • 重组处理
    • 查询 API
  6. 监控与合规

    • 交易监控
    • 地址筛查
    • 审计轨迹
    • 告警
数字资产产品所依赖的链下系统。智能合约只占整个体系的一小部分:托管、节点接入、索引与监控承担了大部分运营风险。
01

API 网关

一个经过认证的统一入口,服务于内部应用和合作方集成。凡是涉及价值转移的请求,它都强制执行限流、请求签名和幂等键。提现接口与只读接口相互分离,以便施加更严格的控制和独立的配额。

02

钱包服务

钱包服务从分层确定性密钥派生充值地址,将其映射到账户,并跟踪平台所控制的地址。它把服务日常提现的热钱包,与存放储备的温钱包和冷钱包层级区分开来。各层级之间的归集和再平衡是受策略约束的显式操作。

03

交易服务与策略引擎

该服务负责构建交易、管理 nonce、估算手续费,并在交易卡住时处理替换。在任何内容被签名之前,策略引擎会评估限额、频率规则、目标地址白名单和审批要求。该服务以显式状态机的形式,跟踪每笔交易经历提交、上链和最终确认的全过程。

04

安全的密钥管理

签名在硬件安全模块内部完成,或通过多方计算完成:密钥分片由不同的参与方分别持有,完整密钥从不被拼合。签名边界只接受带有有效策略决定和所需审批的请求。密钥仪式、备份和恢复都是成文并经过演练的流程。

05

区块链节点与 RPC 层

平台通过一个由自营全节点和外部 RPC 服务商组成的资源池读取链上数据并广播交易。路由层检查节点健康状况和区块高度,自动进行故障切换,并对关键读取在多个来源之间比对结果。通过多条路径广播,可以降低交易被悄悄丢弃的概率。

06

索引器

索引器摄取区块,解码转账和合约事件,并以区块号和区块哈希为键写入关系型存储。在区块达到配置的最终性深度之前,数据都被标记为暂定;遇到重组时,则回滚并重放受影响的区块。应用从这个存储读取余额和历史记录,而不是实时调用 RPC。

07

交易监控与筛查

转入和转出的资金都会对照地址风险数据进行筛查,并按行为规则检查,例如拆分交易或异常的交易频率。告警会生成待审核的案件,被标记的提现在签名之前就被扣留,而不是事后再调查。该组件的设计目的是支持组织履行合规义务,它并不能替代这些义务。

08

可观测性与审计

仪表盘对照阈值跟踪节点滞后、索引器滞后、待处理交易的滞留时长、手续费支出和热钱包余额。每一次请求、策略决定、审批和签名都写入只追加的审计日志。一个周期性任务会把内部账本与链上余额进行对账,并上报任何差异。

取舍

设计决策

决策理由
采用 MPC 或 HSM 签名,而不是由应用持有密钥把密钥放在应用配置里简单又快,却会让任何一次服务器被攻破都变成全部损失。硬件签名或多方签名会增加延迟、成本和操作流程,而这正是消除“密钥可以在某一个点被窃取”所应付出的代价。
分层钱包结构,只保留少量热钱包余额把全部资金放在热钱包里,提现可以即时完成,风险敞口也最大。只让日常周转所需的流动性保持在热钱包中,可以限制攻击者或软件故障所能触及的范围,代价是需要执行再平衡操作,并且在热钱包余额不足时偶尔会出现提现延迟。
自营节点与外部 RPC 服务商结合使用只依赖一家服务商成本低,却形成了一个可能限流、滞后或下线的依赖。运行节点是实实在在的运维负担,因此设计上两者并用:自有节点用于保持独立性和进行验证,服务商用于提供突发容量和地域覆盖。
使用专门的索引器,而不是按需查询链实时 RPC 查询无法高效回答诸如账户完整历史这类问题,还会让用户看到尚未最终确认的数据。索引器是又一个需要构建并保持同步的系统,但正是它让余额查询快速、一致,并在重组之后依然正确。
只在达到配置的最终性深度后才为充值入账在首次确认时就入账感觉更快,却可能为一笔之后被重组掉的转账入账。等待最终性会让资金可用时间推迟一段因链而异的时长,这一过程会以“待确认”状态告知用户。

预期成效

  • 私钥不会暴露给应用代码或运维人员
  • 转出交易无法绕过策略和审批控制
  • 余额与链上保持一致,重组之后也是如此
  • 每笔交易由谁申请、谁审批、谁签名都有完整记录

该设计旨在达成的目标。仅为示意,并非客户项目的实测结果。

代表性技术

  • Go
  • TypeScript
  • Node.js
  • PostgreSQL
  • Kafka
  • Redis
  • Ethereum / EVM
  • HSM / MPC signing
  • Kubernetes
  • Terraform
  • OpenTelemetry
全部参考架构

有一套必须在生产环境中正常运行的系统?

告诉我们您正在构建什么。工程师会阅读您的留言,并在两个工作日内回复。