原始 ID 的产出:
这里添加了一个字节可以表示其的类型,「0x01」为系统保留,「0x02」代表了这是主要 ID,即用户创建的;「0x03」表示该共钥是从主要 ID 派生的,一个主要 ID 具备一个空间,可以注册很多个派生 ID,去使用不同的 DApp;「0x04」为匿名 ID,不用签名也可以发送请求。 此时,对 blob 的两种处理方式分别产出了用于 II 合约的 63 字节的「Principal ID」,和 32 字节的钱包账户「Account ID」。 Principal ID 的产出:
Account ID 的产出:
Account ID 就是我们在交易所中使用的转账地址,而 Account ID 也可以衍生出多个子地址,之需要修改 blob 后的序号即可,被哈希后就能得出不同的地址,这个过程与之前的派生是有区别的。 注意问题目前 DFINITY 官方鼓励开发者使用 II 去登陆 DApp,而 II 对身份与地址的衍生与存储都运行在智能合约中。 而在 DFINITY 的合约中 Persistent 状态是允许被更新的,因此合约可以被升级,但这并不是一个持久化的状态,因此有可能会在更新中损失数据。这就意味着,在 II 合约自身,或者 DApp 合约更新后,可能会损失数据,导致过去使用 DApp 的身份丢失。 这是所有开发者在使用 II 时需要注意的风险,但是这种情况往往是在使用 DApp 时会遇到的,而你持有的 ICP 代币不会受到影响。 注意问题目前 DFINITY 的体验与加密原生用户中间有一个断层,II 对现在的加密原生用户的使用习惯来是超前的,因此大家很难接受。消除这个断层,改进这个机制是非常重要的一个工作,比如为 keysmith 命令行钱包做可视化页面等。 还可以在登陆机制上进行探索,目前的 WebAuthn 登陆有一定硬件门槛,不是所有人都能很轻松的使用。比如使用 metamask 登陆,比如通过邮箱去做密码学验证。 (责任编辑:admin) |