見出し画像

Principal IDとAccount IDの違いは何ですか?(和訳)

元記事:https://yumimarketplace.medium.com/whats-the-difference-between-principal-id-and-account-id-3c908afdc1f9

ICPブロックチェーン上でNFTやファンジブルトークンを扱う際、Principal IDAccount IDという2つの異なるIDを選択する必要がある場合があります。この記事では、この2つのIDに関する混乱に光を当て、どちらを使うべきかのガイドを提供します。この記事は一般向けのものですが、より深く知りたい開発者向けの有用なリンクもいくつか含まれています。

関連リンク:


Twitter:https://mobile.twitter.com/c3f_iu
まとめサイト:https://dfinity-c3f.softr.app/


TL;DR

  • アカウントIDは、サブアカウント番号を使ってプリンシパルIDから導き出される

  • アカウントIDからプリンシパルIDを導き出すことはできない

  • NFTはアカウントIDかプリンシパルIDのどちらかに送れば、どちらも無事に届きます。

  • NNSウォレットには絶対にNFTを送らないでください。

これらのIDは何ですか?

YumiやICエコシステムの他のマーケットプレイスやウォレットでプロフィールを見ると、プリンシパルIDとアカウントIDが表示されることがよくあります。


プリンシパルID(PID)は、各ウォレットごとに生成される、あなただけのウォレット識別子です。アカウントID(AID)はプリンシパルIDから派生たもの、ICPとNFTのレジストリでICPとNFTの所有者を識別するために使用されます。PIDはハイフンで区切られた53文字の列、AIDは区切りのない64文字の列で、2つのIDはその構造で見分けることができます。

プリンシパルIDは、イーサリアムウォレットのウォレットアドレスに類似しています。アカウントIDはICPウォレットアドレスにプライバシーを追加するもので、ICP台帳で使用されるほか、個々のNFTの所有者にも使用されます。イーサリアムでは1つのウォレットアドレスを持っていますが、ICPではPIDとAIDを持っています。幸いなことに、両者の関係は単純明快です。

どのように関係するのでしょうか?

アカウントIDは、プリンシパルIDと暗号化されたサブアカウント番号の組み合わせです。サブアカウント番号は0以上の任意の整数になります。この2つ(PID+サブアカウント)をSHA224で暗号化し、アカウントIDを生成する。暗号化のポイントは、AIDからPIDに戻ることができないようにすることです。1つのPIDから異なる目的のために異なるAIDを生成することができるため、これはウォレットIDにプライバシーのステップを追加するものです。

この派生には、さらにいくつかの暗号化手順がありますが、ここでは割愛します。PIDからAIDを計算する方法を探している技術に詳しい読者や開発者のために、派生に関する有用なリンクを含むdfinityフォーラムへの投稿があります。

PIDからAIDを導出するには任意の自然数を使用できるので、理論的には1つのPIDに対して無限のAIDが存在することになります。例えば、以下の例では、1つのプリンシパルIDからサブアカウント番号0、1、2のそれぞれのAIDが示されています。

どのIDを使うべきですか?

ほとんどのウォレットは、PIDからAIDを導き出すために、サブアカウント番号0を使用します。これは通常、NFTやICPをプリンシパルIDやアカウントIDに送っても問題ない理由でもあります。Yumiやほとんどのウォレットは、サブアカウント番号ゼロでアカウントIDを導きます

結局、アカウントIDはNFTのレジストリに格納されます。このため、YumiやICPのウォレットは、プリンシパルIDからサブアカウント番号0のアカウントIDを導き出すので、プリンシパルID、アカウントIDのいずれにもNFTを送信することが可能です。

Plugなど一部のウォレットでは、実際にはプリンシパルIDにしかNFTを送ることができません。このため、レジストリに保存されるIDはアカウントIDが該当しますが、Yumiはユーザープロファイルに両方のIDを表示します。

インターネット・アイデンティティでは、PIDをどのように扱っているのですか?

Dfinityは、ICP上で動作するアプリケーションと認証するためのサービスとして、Internet Identity(II)を開発しました。Plug、Astrox ME、Infinity wallet、Stoicといった他のウォレットの中で、YumiもIIをログインのオプションとして搭載しています。ここで理解しておきたいのは、IIはそれ自体がウォレットではなく、ICPの認証サービスであり、アプリケーションに利用することでウォレットとなることだ。つまり、IIは単体ではトークンやNFTを保持できず、Yumiのようなアプリケーションと組み合わせて初めて保持できるのです。つまり、IIを使ってYumiにログインすると、プリンシパルIDとアカウントIDが生成され、Yumi内でICPやNFTを保有するために利用できるようになる。これは、Yumiとやり取りするために使っている他のウォレットと似ています。

IIと他のウォレットの違いは、IIはログインするアプリケーションごとに異なるプリンシパルIDを生成する点です。Plugのような他のウォレットは、ログインするアプリケーションごとに同じPrincipal IDを使用します。ただし、Astrox MEは例外で、アプリケーションごとに異なるPrincipal IDを作成するオプションも提供されています。

IIでログインする際にアプリケーションごとに異なるPIDを持つことは、特にICPのNetwork Nervous System(NNS)で作業する際に、もう1つ重要な意味を持ちます。NNSをIIのフロントエンド・ウォレットと勘違いしている人がいます。しかし、NNSはあくまでIIで認証するためのアプリケーションです。ですから、IIでNNSにログインすると、Yumiにログインしたときとは異なるPIDが取得されます。このことは、NNSではYumiとは異なるAIDを持つことも意味します。NNSはNFTと対話するためのフロントエンドを提供していないので、あなたのNNSのAIDに送られたNFTはすべて失われます(少なくとも回復するのは非常に困難です)。したがって、NNSのウォレットアドレスには絶対にNFTを送らないでください

概要

ICPで使用されるIDは2つあります。このことは、新しいユーザーにとって多少の混乱を招くかもしれませんが、両者の関係は単純であり、Yumiでの経験においては互換性を持って使用することができます。

この記事から得られる重要なポイントは

  • アカウントIDは、サブアカウント番号を用いてプリンシパルIDから導き出される

  • アカウントIDからプリンシパルIDを導き出すことはできない

  • NFTはアカウントIDとプリンシパルIDのどちらへ送っても、安全に届きます。

  • NNSウォレットには絶対にNFTを送らないでください。


この記事が気に入ったらサポートをしてみませんか?