Les nouveaux comptes d'un réseau Universal Ledger doivent être créés par un compte administrateur privilégié déjà présent dans le registre. Ce compte privilégié doit signer et envoyer une transaction pour créer le nouveau compte.
Ce guide explique comment demander un nouveau compte dans un réseau Universal Ledger. Découvrez comment :
Créer des clés de signature asymétriques pour le nouveau compte à l'aide de Cloud Key Management Service.
Identifier le propriétaire du compte privilégié approprié qui peut créer votre compte.
Confirmer les informations de votre compte une fois qu'il est créé dans le registre.
Avant de commencer
Pour suivre ce guide, vous aurez besoin des éléments suivants :
Un Google Cloud projet avec l'API Universal Ledger activée.
Un rôle IAM tel que
roles/universalledger.networkViewerpour pouvoir au moins interroger l'état des comptes dans un réseau Universal Ledger.Un Google Cloud projet avec Cloud KMS activé.
Lors des tests, ce projet peut être le même que celui pour lequel l'API Universal Ledger est activée.
En production, nous vous recommandons de procéder comme suit :
- Utilisez un projet dédié pour vos ressources Cloud KMS, distinct des autres Google Cloud ressources.
- Créez un projet Google Cloud distinct pour gérer les clés Cloud KMS de chaque réseau Universal Ledger que vous utilisez.
Le rôle IAM d'administrateur Cloud KMS (
roles/cloudkms.admin) sur le projet pour lequel Cloud KMS est activé ou sur une ressource parente.
Créer vos clés de signature asymétriques
Chaque compte fonctionnant sur un Universal Ledger nécessite une paire de clés publique/privée de signature asymétrique. La clé privée est utilisée pour signer les transactions, et la clé publique est enregistrée dans le registre pour identifier votre compte et valider les signatures.
Les étapes suivantes vous guident dans la création d'une paire de clés appropriée à l'aide de Cloud KMS et dans la récupération de la clé publique. Vous pouvez utiliser d'autres approches de gestion des clés tant qu'elles produisent des clés et des signatures compatibles avec les exigences d'Universal Ledger, telles que les clés ECDSA P-256 avec des condensés SHA-256. Pour en savoir plus sur les formats de clés compatibles, consultez la
KeyFormat
référence.
-
Dans la Google Cloud console, activez Cloud Shell.
Définissez le projet par défaut :
gcloud config set project KEYS_PROJECTRemplacez
KEYS_PROJECTpar l'ID du projet à utiliser pour vos ressources Cloud KMS.Si ce n'est pas déjà fait, créez un trousseau de clés pour stocker vos clés à l'aide de la
gcloud kms keyrings createcommande :gcloud kms keyrings create KEY_RING \ --location=KEY_LOCATIONRemplacez les éléments suivants :
KEY_RING: nom du trousseau de clés à créer, par exempletest-gcul-keys. Ce nom est destiné à vos propres besoins organisationnels et n'a pas besoin d'être enregistré dans le registre.KEY_LOCATION: Google Cloud emplacement du trousseau de clés, par exempleglobal.
Pour chaque compte que vous souhaitez utiliser dans le registre, créez une clé de signature asymétrique pour celui-ci à l'aide de la
gcloud kms keys createcommande :gcloud kms keys create KEY_NAME \ --keyring=KEY_RING \ --location=KEY_LOCATION \ --purpose="asymmetric-signing" \ --default-algorithm="ec-sign-p256-sha256"Remplacez les éléments suivants :
KEY_NAME: nom de la clé à créer, par exempleusd-operatoroueur-clearinghouse. Ce nom est destiné à vos propres besoins organisationnels et n'a pas besoin d'être enregistré dans le registre.KEY_RING: nom du trousseau de clés dans lequel stocker la clé.KEY_LOCATION: emplacement Google Cloud de la clé.
Cela crée une paire de clés ECDSA sur la courbe P-256 avec un condensé SHA-256, comme pris en charge par Universal Ledger. Pour obtenir la liste des formats compatibles, consultez la
KeyFormatréférence.Récupérez la partie clé publique d'une version de clé à l'aide de la
gcloud kms keys versions get-public-keycommande :gcloud kms keys versions get-public-key KEY_VERSION \ --key=KEY_NAME \ --keyring=KEY_RING \ --location=KEY_LOCATIONRemplacez les éléments suivants :
KEY_VERSION: version de la clé à obtenir. Il s'agit de1pour les clés nouvellement créées.KEY_NAME: nom de la clé.KEY_RING: nom du trousseau de clés contenant la clé.KEY_LOCATION: emplacement de la clé. Google Cloud
Cette commande génère la clé publique au format encodé PEM (
KEY_FORMAT_PEM_EC_P256_SHA256) adapté à l'utilisation avec l'API Universal Ledger, par exemple :-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEJ/vWkd5wgakFbVD25k8WM9Ll6We+ c8RVDS0R4G8xetsmFjfNW/ZxwWeB86IvMjxY8ZsdU9+W7BL5YM6rUB5yCQ== -----END PUBLIC KEY-----
Identifier qui peut créer votre compte
Le type de compte que vous souhaitez créer détermine le compte privilégié du registre qui est autorisé à le créer. Vous devez identifier le propriétaire de ce compte privilégié. Pour en savoir plus sur les types de comptes dans le Universal Ledger, consultez Concepts clés.
| Type de compte | Créé par | Envoi de la transaction |
|---|---|---|
| Opérateur de devise | Opérateur de plate-forme | CreateCurrencyOperator |
| Chambre de compensation | Opérateur de devise | CreateClearinghouse |
| Responsable de compte | Opérateur de devise | CreateAccountManager |
| Gestionnaire de jetons | Opérateur de devise | CreateTokenManager |
| Compte utilisateur | Responsable de compte | CreateAccount |
Une fois identifié, vous devrez coordonner et partager les informations suivantes avec le propriétaire du compte privilégié qui peut créer votre compte :
- Nom du réseau dans lequel vous souhaitez créer le compte. Pour obtenir la liste des régions compatibles, consultez Réseaux et régions disponibles.
- Partie publique de votre clé de signature asymétrique et son correspondant
KeyFormat. Si vous avez suivi les commandesgcloudde ce guide, le format estKEY_FORMAT_PEM_EC_P256_SHA256. - Chaîne de commentaire de compte contenant toutes les informations pertinentes à enregistrer dans le registre associé à votre nouveau compte. Il s'agit d'une valeur opaque stockée dans le registre, mais qui n'est pas interprétée autrement par Universal Ledger. Une fois créé, ce champ est immuable et lisible par toute personne ayant accès au réseau.
- Toutes les informations supplémentaires requises pour remplir la transaction à envoyer lors de la création du compte. Par exemple, pour créer un opérateur de devise, vous devez également spécifier la
currencyqui sera gérée par le nouvel opérateur à créer.
Pendant la préversion, contactez votre contact Google si vous ne savez pas qui est le propriétaire du compte privilégié pertinent pour votre cas d'utilisation.
Confirmer la création de votre compte
Une fois la transaction envoyée par le compte privilégié exécutée et finalisée dans le registre, la réponse de la
QueryTransactionState
méthode inclura un
TransactionCertificate
avec un transaction_output événement contenant l'ID de compte du compte nouvellement créé
compte.
L'ID se présentera comme dans l'exemple suivant :
1:USR:XTS:025sAZ55EqGKF6vpXEpSS8X891nNDEQU9yFQKYkcFzAb6
Vous pouvez vérifier que votre nouveau compte est présent dans le registre en envoyant la requête REST suivante :
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://universalledger.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/NETWORK_NAME:queryAccount?account_id=ACCOUNT_ID
Remplacez les éléments suivants :
PROJECT_ID: ID du projet pour lequel l' API Universal Ledger est activée.LOCATION: emplacement du point de terminaison à atteindre.NETWORK_NAME: nom du réseau dans lequel votre compte a été créé.ACCOUNT_ID: ID de votre compte nouvellement créé.
Vous devez obtenir un résultat semblable à ce qui suit :
{
"account": {
"publicKey": "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFSi92V2tkNXdnYWtGYlZEMjVrOFdNOUxsNldlKwpjOFJWRFMwUjRHOHhldHNtRmpmTlcvWnh3V2VCODZJdk1qeFk4WnNkVTkrVzdCTDVZTTZyVUI1eUNRPT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0t",
"roundId": "10962032",
"comment": "My Test Account",
"userDetails": {
"accountManager": {
"id": "1:ACT:XTS:02f4VSHyPsXeMZmcogbNx7bP4kfn5DYvc7d2K52RYAFd3"
},
"tokenManager": {
"id": "1:TKN:XTS:024fqJS87dJ94ETN9PGhTCGd86btXj9iyWLxGQWgC3dde"
},
"roles": [
"ROLE_PAYER",
"ROLE_RECEIVER"
],
"accountStatus": "ACCOUNT_STATUS_ACTIVE",
}
}
}
Étape suivante
- Découvrez comment envoyer des requêtes RPC à l'API Universal Ledger.
- Découvrez les transactions que vous pouvez envoyer à l'aide de votre nouveau compte.