@amadeus-protocol/wallet-sdk (英语)
Amadeus dApp 钱包连接层的审计之家。 钱包 (移动+扩展)和每个 dApp 导入 不变 密码和协议代码, 因此,双方永远不能漂移——这是整个问题.
建于顶上 @amadeus-protocol/sdk
(钥匙衍生,编码, TransactionBuilder) (中文(简体) ). 此软件包只添加
连接层.
状态:v0.1 — 密码+协议核心. 运输(深连通/QR/桥梁) 反应钩子不在此发布中。 见下文"行走图".
释放的内容是什么
| 区域 | 出口 |
|---|---|
| API 键令牌 | generateApiKey, (中文(简体) ), verifyApiKey, (中文(简体) ), decodeApiKey |
| 交易 | signTransaction, (中文(简体) ), submitTransaction |
| 连接认证 | signConnect, (中文(简体) ), verifyConnect, (中文(简体) ), buildConnectTranscript |
| 会话加密 | generateSessionKeypair, (中文(简体) ), deriveSharedKey, (中文(简体) ), seal, (中文(简体) ), open |
| 供应商合同 | AmadeusProvider, (中文(简体) ), getAmadeusProvider, (中文(简体) ), isProviderAvailable,事件/响应类型 |
| 电线验证 | zod计划: signTransactionRequestSchema, (中文(简体) ), generateApiKeyRequestSchema, (中文(简体) ), connectTranscriptSchema, (中文(简体) ), addressSchema, (中文(简体) ), originSchema |
| 二进制参数 | encodeBinaryValues, (中文(简体) ), decodeBinaryValues, (中文(简体) ), describeBinaryValues |
| 常数 | 所有DST,字节长度,事件名称, PROTOCOL_VERSION |
为什么先统一API键符
是手卷进来的 3个 位置(扩展后, hub,以及 prime-hub, (中文(简体) ),
全部必须保持字节与 kbs.ama.one 后端 . generateApiKey
此处重现了确切的标志—— base58( json{aud,exp} ‖ pubkey48 ‖ sig96 )
签名 sha256(json ‖ pubkey) 下划线 _APIKEY_ DST - 和一项测试声称
与原配方的字节平等. 消费者现在可以删除他们的拷贝.
import { generateApiKey, verifyApiKey } from '@amadeus-protocol/wallet-sdk'
const { apiKey } = generateApiKey({ seed, aud: 'amadeus', expIn: 7 * 24 * 3600 })
// ... later, on any verifier:
const result = verifyApiKey(apiKey, { aud: 'amadeus' })
if (result.valid) console.log(result.address)
信使的地址是公用钥匙
seed你通过. 复苏 短语可以打开两个不同的地址(标准eip2333衍生物,以及 页:1legacy用旧扩展和app创建的钱包使用的原始 BIP39 种子 建筑),所以不要假设一个. 以resolveCandidateForAddress(sdk ≥ 1.6.0),将候选人送回publicKey等于用户的 钱包地址,或null假若无一物把它打开 无效的短语). 否则,这个符号沉默地属于另一个账户.import { resolveCandidateForAddress } from '@amadeus-protocol/sdk' import { generateApiKey } from '@amadeus-protocol/wallet-sdk' const candidate = resolveCandidateForAddress(phrase, walletAddress) if (!candidate) throw new Error('This phrase does not open that address') const { apiKey } = generateApiKey({ seed: candidate.seed, aud: 'amadeus', expIn: 3600 })
安全说明
- 不同的标准 (单位:千美元)
_TX_, (中文(简体) ),_APIKEY_, (中文(简体) ),_CONNECT_由一人签字 上下文加密在另一个上无法使用. - 连接 Auth 签名全文 —来源+两个会话键+ 挑战 + 请求 id —— 不仅仅是关闭密钥替换的非ce 迈克尔.
- 无任意信件签名预告: 连接证明只显示 结构化,长度前缀的笔录.
- 会话框 使用 x25519 + XChaCha20-Poly1305 通过
@noble(无危险;无)tweetnacl"没有PRNG"问题),并且没有在任何篡改上关闭.
开发
bun install
bun run test # vitest
bun run typecheck
bun run build # tsdown -> dist/
路线图
- 运输 ——深度链接/通用链接入侵,QR对接,a 自我托管的加密桥, 都说一个信封.
/react—— 说WalletProvider+ 键useWallet()所以DApps停止复制打印 提供者胶水(和amadeus#initialized对amadeus-wallet#initialized错误得到修复一次).- 收 养 - 迁移扩展,
hub,以及prime-hub他们的 手滚动加密到此软件包.