Neue Konten in einem Universal Ledger-Netzwerk müssen von einem privilegierten Administratorkonto erstellt werden, das bereits im Ledger vorhanden ist. Dieses privilegierte Konto muss eine Transaktion signieren und senden, um das neue Konto zu erstellen.
In diesem Leitfaden wird beschrieben, wie Sie ein neues Konto in einem Universal Ledger-Netzwerk anfordern. Sie erfahren, wie Sie:
mit dem Cloud Key Management Service asymmetrische Signaturschlüssel für das neue Konto erstellen.
den Inhaber des entsprechenden privilegierten Kontos ermitteln, der Ihr Konto erstellen kann.
Ihre Kontodetails bestätigen, sobald das Konto im Ledger erstellt wurde.
Hinweis
Für diesen Leitfaden benötigen Sie Folgendes:
Ein Google Cloud Projekt mit aktivierter Universal Ledger API.
Eine IAM-Rolle wie
roles/universalledger.networkViewer, damit Sie zumindest den Status von Konten in einem Universal Ledger-Netzwerk abfragen können.Ein Google Cloud Projekt mit aktiviertem Cloud KMS.
Während der Tests kann dieses Projekt mit dem Projekt identisch sein, für das die Universal Ledger API aktiviert ist.
In der Produktion empfehlen wir Folgendes:
- Verwenden Sie ein dediziertes Projekt für Ihre Cloud KMS-Ressourcen, getrennt von anderen Google Cloud Ressourcen.
- Erstellen Sie ein separates Google Cloud Projekt, um die Cloud KMS Schlüssel für jedes Universal Ledger-Netzwerk zu verwalten, das Sie verwenden.
Die IAM-Rolle „Cloud KMS-Administrator“ (
roles/cloudkms.admin) für das Projekt mit aktiviertem Cloud KMS oder für eine übergeordnete Ressource.
Asymmetrische Signaturschlüssel erstellen
Für jedes Konto, das in einem Universal Ledger verwendet wird, ist ein asymmetrisches Signaturschlüsselpaar (öffentlicher und privater Schlüssel) erforderlich. Der private Schlüssel wird zum Signieren von Transaktionen verwendet und der öffentliche Schlüssel wird im Ledger registriert, um Ihr Konto zu identifizieren und Signaturen zu überprüfen.
In den folgenden Schritten wird beschrieben, wie Sie mit Cloud KMS ein geeignetes Schlüsselpaar erstellen und den öffentlichen Schlüssel abrufen. Sie können auch andere Methoden zur Schlüsselverwaltung verwenden, solange sie Schlüssel und Signaturen erzeugen, die mit den Universal Ledger-Anforderungen kompatibel sind, z. B. ECDSA P-256-Schlüssel mit SHA-256-Digests. Details zu unterstützten Schlüsselformaten finden Sie in der
KeyFormat
Referenz.
-
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Legen Sie das Standardprojekt fest:
gcloud config set project KEYS_PROJECTErsetzen Sie
KEYS_PROJECTdurch die ID des Projekts, das für Ihre Cloud KMS-Ressourcen verwendet werden soll.Falls noch nicht geschehen, erstellen Sie mit dem
gcloud kms keyrings createBefehl einen Schlüsselbund für Ihre Schlüssel:gcloud kms keyrings create KEY_RING \ --location=KEY_LOCATIONErsetzen Sie Folgendes:
KEY_RING: der Name des zu erstellenden Schlüsselbunds, z. B.test-gcul-keys. Dieser Name dient Ihren eigenen organisatorischen Zwecken und muss nicht im Ledger aufgezeichnet werden.KEY_LOCATION: der Google Cloud Speicherort für den Schlüsselbund, z. B.global.
Erstellen Sie für jedes Konto, das Sie im Ledger verwenden möchten, mit dem
gcloud kms keys createBefehl einen asymmetrischen Signaturschlüssel:gcloud kms keys create KEY_NAME \ --keyring=KEY_RING \ --location=KEY_LOCATION \ --purpose="asymmetric-signing" \ --default-algorithm="ec-sign-p256-sha256"Ersetzen Sie Folgendes:
KEY_NAME: der Name des zu erstellenden Schlüssels, z. B.usd-operatorodereur-clearinghouse. Dieser Name dient Ihren eigenen organisatorischen Zwecken und muss nicht im Ledger aufgezeichnet werden.KEY_RING: der Name des Schlüsselbunds, der den Schlüssel enthält.KEY_LOCATION: der Google Cloud Speicherort für den Schlüssel.
Dadurch wird ein ECDSA-Schlüsselpaar auf der P-256-Kurve mit einem SHA-256-Digest erstellt, wie es vom Universal Ledger unterstützt wird. Eine Liste der unterstützten Formate finden Sie in der
KeyFormatReferenz.Rufen Sie mit dem
gcloud kms keys versions get-public-keyBefehl den öffentlichen Schlüsselabschnitt einer Schlüsselversion ab:gcloud kms keys versions get-public-key KEY_VERSION \ --key=KEY_NAME \ --keyring=KEY_RING \ --location=KEY_LOCATIONErsetzen Sie Folgendes:
KEY_VERSION: die Version des abzurufenden Schlüssels. Bei neu erstellten Schlüsseln ist das1.KEY_NAME: der Name des Schlüssels.KEY_RING: der Name des Schlüsselbunds, der den Schlüssel enthält.KEY_LOCATION: der Google Cloud Speicherort des Schlüssels.
Dieser Befehl gibt den öffentlichen Schlüssel in einem PEM-codierten Format (
KEY_FORMAT_PEM_EC_P256_SHA256) aus, das mit der Universal Ledger API verwendet werden kann, z. B.:-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEJ/vWkd5wgakFbVD25k8WM9Ll6We+ c8RVDS0R4G8xetsmFjfNW/ZxwWeB86IvMjxY8ZsdU9+W7BL5YM6rUB5yCQ== -----END PUBLIC KEY-----
Ermitteln, wer Ihr Konto erstellen kann
Der Typ des Kontos, das Sie erstellen möchten, bestimmt das privilegierte Konto im Ledger, das die Berechtigung zum Erstellen hat. Sie müssen den Inhaber dieses privilegierten Kontos ermitteln. Informationen zu den Kontotypen im Universal Ledger finden Sie unter Schlüsselkonzepte.
| Kontotyp | Wird erstellt von | Transaktion senden |
|---|---|---|
| Währungsbetreiber | Plattformbetreiber | CreateCurrencyOperator |
| Clearingstelle | Währungsbetreiber | CreateClearinghouse |
| Account Manager | Währungsbetreiber | CreateAccountManager |
| Token Manager | Währungsbetreiber | CreateTokenManager |
| Nutzerkonto | Account Manager | CreateAccount |
Sobald Sie den Inhaber des privilegierten Kontos ermittelt haben, müssen Sie die folgenden Details koordinieren und mit ihm teilen, damit er Ihr Konto erstellen kann:
- Der Name des Netzwerks, in dem das Konto erstellt werden soll. Eine Liste der unterstützten Regionen finden Sie unter Verfügbare Netzwerke und Regionen.
- Der öffentliche Teil Ihres asymmetrischen Signaturschlüssels und das entsprechende
KeyFormat. Wenn Sie diegcloud-Befehle in diesem Leitfaden ausgeführt haben, ist das FormatKEY_FORMAT_PEM_EC_P256_SHA256. - Ein Kommentarstring für das Konto mit allen relevanten Informationen, die im Ledger für Ihr neues Konto aufgezeichnet werden sollen. Dies ist ein undurchsichtiger Wert, der im Ledger gespeichert, aber vom Universal Ledger nicht anderweitig interpretiert wird. Nach der Erstellung ist dieses Feld unveränderlich und kann von jedem mit Zugriff auf das Netzwerk gelesen werden.
- Alle zusätzlichen Details, die zum Ausfüllen der Transaktion erforderlich sind, die beim Erstellen des Kontos gesendet werden soll. Wenn Sie beispielsweise einen Währungsbetreiber erstellen möchten, müssen Sie auch die
currencyangeben, die vom neuen Betreiber verwaltet wird.
Wenden Sie sich während der Vorschau an Ihren Ansprechpartner bei Google, wenn Sie sich nicht sicher sind, wer der Inhaber des relevanten privilegierten Kontos für Ihren Anwendungsfall ist.
Bestätigen, dass Ihr Konto erstellt wurde
Sobald die vom privilegierten Konto gesendete Transaktion erfolgreich
ausgeführt und im Ledger abgeschlossen wurde, enthält die Antwort der
QueryTransactionState
Methode ein
TransactionCertificate
mit einem transaction_output Ereignis, das die Konto-ID des neu erstellten
Kontos enthält.
Die ID sieht in etwa so aus:
1:USR:XTS:025sAZ55EqGKF6vpXEpSS8X891nNDEQU9yFQKYkcFzAb6
Sie können bestätigen, dass Ihr neues Konto im Ledger vorhanden ist, indem Sie die folgende REST-Anfrage senden:
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
Ersetzen Sie Folgendes:
PROJECT_ID: die ID des Projekts, in dem die Universal Ledger API aktiviert ist.LOCATION: der Speicherort des zu erreichenden Endpunkts.NETWORK_NAME: der Name des Netzwerks, in dem Ihr Konto erstellt wurde.ACCOUNT_ID: die ID Ihres neu erstellten Kontos.
Es wird eine Ausgabe angezeigt, die in etwa so aussieht:
{
"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",
}
}
}
Nächste Schritte
- Informationen zum Senden von RPC-Anfragen an die Universal Ledger API
- Informationen zu Transaktionen, die Sie mit Ihrem neuen Konto senden können.