Anchor协议

扫码登录

dapp

  • 生成一个uuid作为房间号(WSS地址例如:wss://fwd.aplink.app/f7693a09-e038-4c9e-8583-f70638cd67cc),放在二维码信息里,然后aplink可以通过二维码获取到。

  • aplink登录签名信息会通过此房间号把签名信息返回给dapp,完成登录。

  • 二维码信息如下:

{
  "chain_id": [
    "chain_id",
    "208DACAB3CD2E181C86841613CF05D9C60786C677E4CE86B266D0A58884968F7"
  ],
  "req": [
    "identity",
    {
      "scope": "anchor.link.d",
      "permission": null
    }
  ],
  "flags": 2,
  // 登录成功信息会通过 wss://fwd.aplink.app/aa2f1738-bc3e-4b61-9e14-1e31f84b6f44(注意是wss协议)返回
  "callback": " https://fwd.aplink.app/aa2f1738-bc3e-4b61-9e14-1e31f84b6f44", 
  "info": [
    {
      "key": "link",
      "value": "09E074115CDAD0340002A0EF7AE67D27AEBC094EF5FACC04B0FAF52BE88EE3B5B846E4D2483B0F7536D500"
    },
    {
      "key": "scope",
      "value": "616E63686F722D6C696E6B2D64656D6F"
    },
    {
      "key": "dapp",
      "value": "5B224E46544F6E65222C22687474703A2F2F3139322E3136382E35302E38353A383038302F66617669636F6E2E706E673F3334363334336338366361643631353565323462222C22687474703A2F2F3139322E3136382E35302E38353A383038302F64657461696C2F75736572312F313030303030322F3230303730225D"
    }
  ]
}
  • 通过扫码获上到上面信息,然后生成登录交易信息去签名。放在sig

  • aplink 会随机生成钱包地址,作为sessionID,以便查找。放在link_key

  • aplink 也会随机生成一个uuid,后面通信通道。这个通信方式不是wss协议,而是https协议。放在link_ch

  • 返回给dapp的数据如下:

  • sig的签名内容如下:(仿制的交易,并不会广播。只做签名

  • aplink会生成下面信息去签名。dapp会也生成下面信息去验证签名。

发起交易

dapp

  • 再次随机生成一个uuid,用来接收交易返回信息,也可能是错误处理信息。

  • 发起https请求,把esr信息(包含uuid)发给aplinkhttps请求的地址就是上面的link_ch,这是个固定通道。aplink也会用这个通道接收信息。

  • esr信息如下:

  • 接收上面esr信息,解析生成交易,并签名。然后通过https请求带过来的callback通道把签名与其它信息发送给dapp。

  • 发送的信息如下

  • link_chlink_key只要session没有重链,是不会变的。

侦听退出登录

这是后面开发的一个功能,如果实现?

sessionId即上面的link_key创建一个通道。然后aplink与dapp都侦听这个通道,如果aplink主动退出,则发出APPREMOVESESSION信息。如果dapp主动退出,则发出REMOVESESSION信息。两边相互接收对方信息,接收到就会触发退出登录操作。

对于dapp只需增加对aplink的侦听: 注意:事件是在session对象上,非link对象

总结

  • 每次交易都会用不同的uuid通信,这也是为了安全考虑,防止信息被侦听窃取。

  • 这是记住session方式,还有一种方式是每次都要扫码,但没开启。

  • dapp发起请求是通过https发送到https://fwd.aplink.app服务器,然后由服务器再通过wss发送信息到aplink。aplink通过侦听wss获取信息并处理。

  • 通信息服务器https://fwd.aplink.app由dapp确定。但必需要有相应功能。

最后更新于