Hi everyone
Couldn’t the documentation of the IC use terms that differentiate more clearly between canister ids and user ids? With that I mean that the words “id”, “principal” and “identifier” are currently all used interchangeably for both canisters and users/developers.
In the “Internet Computer Interface Specifications” under " Principals" it says:
Principals are generic identifiers for canisters, users and possibly other concepts in the future. As far as most uses of the IC are concerned they are opaque binary blobs with a length between 0 and 29 bytes, and there is intentionally no mechanism to tell canister ids and user ids apart.
I might be misunderstanding something but canister ids/identifiers/principals are simply shorter than user/developer ids/identifiers/principals and can thus be clearly differentiated:
- canisters: rwlgt-iiaaa-aaaaa-aaaaa-cai
- users: g3jww-sbmtm-gxsag-4mecu-72yc4-kef5v-euixq-og2kd-sav2v-p2sb3-pae
I would propose that the docs are modified to be more clear in describing the differences between the two and also in describing that id/identifiers/principals are the same thing and depending on what they refer to (users or canisters) differ in length.
In many cases in the docs it is not clear enough if the context is about user or canister ids. For example under “use the default cycles wallet” there is a sentence:
In a production environment, however, you need to explicitly register and transfer cycles to new canisters, specify the principals that can act as custodians, and manage the principals with ownership rights.
This leaves room for interpretation if canister or user ids are used as controllers or to manage ownership rights.
All in all I think the docs could be clearer in using these terms. It cost me way too much time to understand what is what, especially as the cycle wallets add to the confusion.