@kaleidorg/wallet-engine 是构建多协议比特币钱包的无界面(headless)内核。它把各条比特币 L2 之间的差异收敛到同一个接口之下,让应用代码在 React Native、浏览器扩展与 Node 宿主上保持一致,并把最难的部分 —— 路由、统一收款、交换、精简/高级两种体验 —— 做成可复用的基础能力。
KaleidoSwap 浏览器扩展和 rate 移动钱包都由它驱动。
问题所在
每条比特币 L2 都有自己的 SDK、自己的地址格式和自己的特性差异 —— 通道流动性、boarding 交易、发票过期、零费用转账。一旦钱包要支持多条 L2,if (protocol === …) 就会散落到每个页面,而每新增一个协议都要改动所有既有代码路径。
引擎把这些收敛成一套契约加一份差异数据清单:
- 页面只调用一个 API ——
ProtocolManager或CrossProtocolRouter,从不直接调用协议 SDK。 - 协议差异以数据形式存放在能力清单里,而不是写成应用代码里的分支。
- 同一套引擎运行在所有宿主上,平台相关的部分由外部注入。
你能得到什么
适配器是你自己也能写的那部分。下面这四样,则是你不愿意写第二遍的那部分。跨协议路由器
传入一个目标字符串或 BIP321 URI,返回能够结算它的协议排序列表 —— 并已过滤为真正注册且已连接的协议。
.best 就是自动路由结果。统一收款
一个
bitcoin: 二维码同时承载链上、BOLT11/BOLT12、Spark、Arkade、Liquid 和 RGB。其他钱包会忽略它们不认识的参数。能力清单
每个协议的分层、特性差异与限制都以数据形式存在。路由器和你的 UI 读取它,没有任何代码按协议名特判。
披露层
精简与高级是同一个可随时切换的设置,而不是两套代码。精简模式把所有 BTC 形态合并为一个「BTC」。
支持的协议
Maturity 是每个协议在能力清单中携带的字段。请在运行时读取它,而不要写死。
它所处的位置
引擎在内部使用kaleido-sdk 来对接 KaleidoSwap 协议。引擎的使用者无需直接引入 kaleido-sdk。