Skip to content

Difference with the C version app‐conflux

Pana edited this page Nov 14, 2024 · 7 revisions

本项目是使用 Rust 开发的全新 Conflux Ledger Device App, 相较于 C 版本的 除了支持 Conflux 1559 升级之外, 也增加了对 Ledger Stax, Flex 设备的支持.

需要注意的是新版 App 的 APDU 数据传输格式相较于之前版本有一点变化.

sign_tx 命令的请求数据传输方式:

主要区别在于 P1, P2 的值含义发生了变化, P1 表示数据 chunk 的 index, 最大值为 03, P2 用于表示数据是否传输完成, 80 表示还有更多数据, 00 表示传输结束.

另外 bip32 请求数据和交易 rlp 编码数据要分开传输, 第一个 chunk 只用来发送 bip32 数据, 交易数据使用后边的 chunk 传输. 单个 chunk 支持传输的最大数据大小为 255

具体格式文档和例子, 可参考这里

返回数据的格式保持一致

如何区分是新版 App 还是 原版 App

get_app_info 命令返回数据的第一个 byte 为 flag 数据, 之前只用了两位 b000000YX 现在新增一位 b00000NYX 其中 N 用来与原版 app 进行区分, 1 表示为新版 app, 0 为原版.

其他

get_app_info, get_public_key 命令的传参和数据返回格式均与原版保持一致

文档

  1. 本 App APDU Command API: https://github.com/Conflux-Chain/app-conflux/blob/develop/docs/COMMANDS.md
  2. 原始(C)版本 APDU Command API: https://github.com/Conflux-Chain/ledger-app-conflux/blob/master/doc/COMMANDS.md