This Topic is to discuss ICRC-75.
The Issue: ICRC-75 - Minimal Membership Standard · Issue #75 · dfinity/ICRC · GitHub
The Draft: icrc75.mo/icrc75-standard.md at main · icdevsorg/icrc75.mo · GitHub
Reference Motoko Module and Web Dapp Code:GitHub - icdevsorg/icrc75.mo: ICRC-75 for Motoko
Sample Dapp: https://iedms-tqaaa-aaaal-amieq-cai.icp0.io/
Mops: Mops • Motoko Package Manager
Tips:
- Add a read permission to your list for the Anon Principal to make the list public.
- You can make lists of Identities(principals), Values(ICRC16), Accounts(ICRC1/2), or Lists(recursive).
- Make an SNS and admin and manage via votes. You’ll need to authorize a Generic Function Call for your SNS. The module provides a pre-built validation helper for the validation function.
- You can request a certificate from the canister that a member is part of list and then retrieve the certificate. This can be provided to any other canister on the IC or external service that the NNS has signed the veracity of that membership.
The candid function list interface:
icrc10_supported_standards : () -> (vec ICRC10Record) query;
icrc75_get_list_lists : (List__1, opt List__1, opt nat) -> (
vec List__1,
) query;
icrc75_get_list_members_admin : (List__1, opt ListItem__1, opt nat) -> (
vec ListItem__1,
) query;
icrc75_get_list_permissions_admin : (
List__1,
opt Permission__1,
opt PermissionListItem__1,
opt nat,
) -> (PermissionList__1) query;
icrc75_get_lists : (opt text, bool, opt List__1, opt nat) -> (
vec ListRecord,
) query;
icrc75_get_stats : () -> (Stats) query;
icrc75_is_member : (vec AuthorizedRequestItem) -> (vec bool) query;
icrc75_manage : (ManageRequest) -> (ManageResponse);
icrc75_manage_list_membership : (ManageListMembershipRequest) -> (
ManageListMembershipResponse,
);
icrc75_manage_list_properties : (ManageListPropertyRequest) -> (
ManageListPropertyResponse,
);
icrc75_member_of : (ListItem__1, opt List__1, opt nat) -> (vec List__1) query;
icrc75_metadata : () -> (DataItemMap) query;
icrc75_request_token : (ListItem__1, List__1, opt nat) -> (
IdentityRequestResult,
);
icrc75_retrieve_token : (IdentityToken) -> (IdentityCertificate) query;