一句话说明白它解决什么
Stellar 的 SEP-7(状态 Active,2018-05-07 创建,现行 2.1.0 版更新于 2020-07-29)设计了一条 URI 通道,让不保存私钥的网页或应用生成交易后,把”请签名”这件事委托给用户自己信任的钱包完成。链接格式是 web+stellar:<操作>?<参数>=<值>,注意冒号后没有双斜杠——它不是 hierarchical URI;web+ 前缀则是浏览器协议处理程序允许的写法,网页注册处理权时要用。操作名构成命名空间,规范内定了 tx 与 pay 两种,并为未来操作留了位置。

tx 操作:整包 XDR 加一堆可选件
tx 是”请签这封交易”:必填的 xdr 参数装一个 base64 再做 URL 编码的 TransactionEnvelope。可选件各有用途。callback 指定签完之后去哪:不写就默认由钱包签好提交上链;写成 url: 前缀的地址,钱包把签好的 XDR 以表单 POST 回传。pubkey 点名”用哪把公钥对应的私钥来签”,多签协调场景常用。replace 让发起方交一封”留白”的交易模板:用 SEP-11 的 txrep 表示法指出哪些字段要钱包替你填上,格式是”字段:引用标记”分号加”标记:给用户的提示”,两半的标记集合必须一一对应否则整串无效——比如把源账户留成 X、把两个操作的账户字段留成 Y,钱包会按提示语引导用户补齐。chain 参数允许转带上游的 SEP-7 请求形成签名链,钱包最多接受七层嵌套。msg 是给钱包界面显示的一句话说明(编码前不超 300 字符),要分清:msg 不上链,memo 上链。
pay 操作:只管”对方收到什么”
pay 更贴近”付钱”语义:destination 必填,amount 可以缺省(留给用户自己填,支持随意额度的捐赠),asset_code 与 asset_issuer 缺省即 XLM,memo 与 memo_type 按 TEXT、ID、HASH、RETURN 四种带上链备注,同样可带 callback、msg 与网络标识。它与 tx+replace 的分界值得划清:pay 承诺的是”收款人收到指定资产指定数量”,付款走直通还是路径支付由钱包自选;tx+replace 则锁死具体操作机制。
签名与域名:合规钱包的硬规矩
SEP-7 给信任留了两件套:origin_domain 写明请求源自哪个域名,signature 是对”除签名参数外整个 URI 请求”的哈希签名,验签公钥来自该域名 stellar.toml 里声明的 URI_REQUEST_SIGNING_KEY。规范用词很硬:钱包必须先验签通过,才能把 origin_domain 显示给用户;验不过必须拒绝并告警。安全实践部分还点了三条:其一,没有 origin_domain 和 signature 的裸请求是红旗——规范类比成 http 对 https 的差距,钱包应该加插额外确认步骤;其二,防”整包换票”——中间人可以把你页面上的请求换成另一条签名有效的别家请求,所以验签通过后 origin_domain 必须显示在签名同一页的显眼位置,首次交易的域名要额外提示;其三,防”页面与请求不一致”,发起方应把订单要点写进 msg,钱包要把它亮出来。同一份 stellar.toml 也被用于 Stellar 的登录挑战协议 SEP-10 的公钥核验(验的是”谁签的登录”,见 签一笔永不上链的交易:Stellar SEP-10 登录的挑战与回话逐项拆),两件事别混为一谈;而”点开链接弹钱包”这个交互在以太坊的对应物是支付链接规范 EIP-681(同为链上签名请求,见 支付链接里到底写了什么?EIP-681 请求的地址、链标识与金额逐项拆)。
弹到钱包后,按这个顺序读
把合规要求翻译成用户的检查顺序:先看有没有 origin_domain 与 signature 这一对——两个都缺,钱包应让你多按几次确认才放行;再看验签结果与域名的首次出现提示;然后逐项读交易内容:tx 请求读解码后的操作与来源账户,pay 请求核对 destination、amount、资产代码与发行账户是否合成你想要的币种;memo 字段将永久上链,写错追不回;msg 只是界面展示文字,缺失或简短不构成欺诈证据。对 callback 类请求还要意识到:签好的交易可能不回网络而是回到发起方的服务器,你面对的信任对象从链变成了那家域名背后的服务。
边界与风险提示
签名验通过只证明”这个域名的密钥签了这条请求”,不证明交易内容合理,也不保证域名私钥没有泄露——域名被攻破、stellar.toml 里的验签钥匙被换成攻击者的,规范自己也列为威胁。落笔前请知悉:参数细节以 SEP-7 现行文本为准。本文为机制说明,不构成投资建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。