【如何使用 IC 身份】Principal ID 与 Account ID 的使用指南和之间的关系区别解读

文章来自于/Yumi Marketplace
投稿、转载请联系/D Plus 小助手
在IC 网络上,作为用户的我们在与其交互时,通常情况下会面临两种ID 使用,分别是Principal ID 和 Account ID。
本期文章将带各位小伙伴探讨关于这两个ID 的使用指南和之间的关系区别?也希望给一些正在研究IC 区块链的开发者提供一些灵感和总结解读。

01
这些 ID 是什么?
以 Yumi 或 IC 生态中的钱包为例,在你查看个人资料时,你通常会看到你的 Principal ID 和 Account ID:

Principal ID ( 简称 PID) 是你在钱包或应用中生成的唯一标识符号,普遍情况下,Principal ID 不仅对应着用户在 IC Dapp 中产生的数据权限和相应的功能权限,也是用户在 IC 网络中的全局唯一标识符。
而 Account ID(简称 AID)由 Principal ID 派生而来,AID 主要作为 ICP Ledger 或 NFT Ledger 中对应持有者的余额地址。
在可读性的角度上看,PID 和 AID 的区别很大:PID 是带分隔字符的 53 个字符串;AID 是由 64 个字符串组成,不带任何分隔符。
而从结构化的角度来说,Principal ID 主要与 IC 的 Dapp 交互,作为 Dapp 中的标识符,而 AID 为 Principal ID 上增加了一层额外的隐私(详情参见下文),它单独作为与 ICP Ledger 或各个 NFT Ledger 中的资产交互地址。
02
它们之间的关系
AID 是经过 PID 和 SubAccount 的加密组合,SubAccount 可以是任何大于或等于 0 的整数。PID 和 SubAccount 经过 SHA224 加密,派生出 Account ID,这个加密算法的关键特性是禁用从 AID 推导回 PID 的可能性,这在一定程度上为用户提供了隐私保障。
因为从一个 PID 中可以生成多个不同的 AID,应用于不同的资产处理目的,而 AID 不能反向推导回 PID 的特性可以在一定程度上保障用户的隐私。

由于推导过程中涉及很多加密步骤,我们在此处省略详细步骤,对于想要了解更多原理的小伙伴们可以通过下方开发者论坛链接查阅更多详情:⬇️
https://forum.dfinity.org/t/what-is-the-difference-between-account-identifier-principal-identifier-and-public-key/3677
任何一个自然数都可以从 PID 派生 AID,因此理论上一个 PID 可以拥有无限个 AID,如下图所示,来自 ylymw 的 PID 通过 SubAccount 0、1、2 派生出了相应的 AID。
03
我们应该使用哪个 ID?
关于作为用户的我们应该使用哪个 ID 这个问题?其实本身也涉及到了资产 Token 标准问题,即为某个 Token 标准使用哪个 ID 作为该标准对应持有者的余额地址,目前可以分为两派,一派是以 Principal ID 作为持有者的余额地址,另外一派是以 Account ID 对应为持有者的余额地址。
假设我拥有一个以 Principal ID 作为持有者的余额地址的资产,但是我只知道接收方的 Account ID,由于 SHA224 加密算法,AID 不能推导回 PID,所以在我只知道 AID 的前提下,本质上我很难将该资产转移到该 AID 关联的 PID 上。
但目前用户在第一次使用 IC 的钱包或应用时,大部分钱包或应用都会使用 SubAccount 0 从 PID 派生一个 AID,这也是为什么一般情况下将 IC NFT 或 ICP 发送到您的 Principal ID 或 Account ID 是无关紧要的原因, 因为这些交易最终都会以正确的格式转到 PID 或者 AID。

简单来说,如果你持有一个 PID 资产,你只知道接收方的 AID,但你在应用或钱包内转账,应用或钱包会帮你将接收方的 PID 和 AID 的关系关联起来,最终将该资产以正确的格式转账到 PID。
这是一个主动行为产生的关系存储,由于 PID 可以推导 AID,当有足够多的 PID 输入,就能够推导足够多的 AID,就做一个关系存储用例,作为反向索引应用场景。
04
ii 如何处理 PID
在去年的 5 月 10 日,互联网计算机(简称 IC)主网正式上线,在上线当天其背后孵化组织 DFINITY 基金会也推出了与 IC 网络底层密码学技术 Chain Key 对应的原生身份验证框架 Internet Identity(简称 ii)。
通过 ii,任何人都可以通过手机和计算机的生物识别系统(指纹 & 面容识别)或 HSM 硬件安全模块来验证他们的身份并登陆 Dapp。
体验 ii:identity.ic0.app

从本质上来说 ii 本身不是一个钱包,而是作为 IC 网络上的一项身份验证服务,这意味着 ii 本身不能持有任何 Token 或 NFT,只能与 IC Dapp 结合使用,所以当你使用 ii 登录一个 IC Dapp 时,会生成一个 Principal ID 和 SubAccount 0 对应的 Account ID 与 Dapp 进行交互。
在使用 IC 的治理系统 NNS 时,大部分的用户可能会下意识会认为是 ii 终端钱包。其实相反,NNS 只是一个可以使用 ii 进行身份验证的 Dapp。
而 ii 的核心特性之一是保障用户的匿名和隐私,用户使用 ii 登陆 IC 上的不同 Dapp 时都会派生出不一样的 Principal ID 网络标识符交互,以最大程度保障用户的匿名性和隐私。举例,当你使用 ii 登录 NNS 与您登录其他 IC Dapp 时,例如 Yumi,虽然使用的是同一个 ii,但获得的 PID 却是不同的,这也意味着获得的 AID 是不同的。由于 NNS 不提供任何与 NFT Ledger 和除 ICP Ledger 外的 Token Ledger 交互前端,因此发送到 NNS 中的任何 NFT 和除 ICP 外的 Token 都将会丢失(并且极难恢复),所以请小伙伴们千万不要将自己的 NFT 和其他 Token 发送到您的 NNS 钱包喔。

与 ii 设计有着异曲同工之妙的一个钱包是由 AstroX 推出的 ME,在 ME 钱包中会提供两种登录 Dapp 的模式,一种是全局模式,全局模式下登录 Dapp 的 Principal ID 保持不变;第二种是隐私模式,隐私模式下登录不同的 Dapp 会生成不提供的 Principal ID 交互。
体验 ME:https://astrox.me/

05
总结
虽然 IC 网络中的这两个 ID 会给新用户带来一些困惑,但它们之间的关系其实是直接了当的,这么设计的好处也能够在一定应用场景下给用户带来更高的灵活性和互换使用的弹性空间⬇️
AID 使用 SubAccount 从 PID 派生而来;
不能从 AID 推导回 PID;
你可以将 NFT 发送到 AID 或 PID,资产会顺利到达;
切勿将 ICP 除外的资产和 NFT 发送到 NNS 钱包;

每周必看

AMA 预告



联系我们

电报
t.me/DFINITY_ZH
英文推特
twitter.com/D_PlusCommunity
中文推特
twitter.com/D_PlusCN

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。
来源链接


