Neues Konto anfordern

Neue Konten in einem Universal Ledger-Netzwerk müssen von einem übergeordneten Konto erstellt werden, das bereits im Ledger vorhanden ist. Mit diesem Elternkonto muss eine Transaktion signiert und gesendet werden, 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:

  • Erstellen Sie mit Cloud Key Management Service asymmetrische Signierschlüssel für das neue Konto.

  • Finden Sie den Inhaber des entsprechenden Elternkontos, um Ihr Konto zu erstellen.

  • Bestätigen Sie Ihre Kontodetails, sobald das Konto im Ledger erstellt wurde.

Hinweis

Für diese Anleitung ist Folgendes erforderlich:

  • 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 des 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, das von anderen Google Cloud Ressourcen getrennt ist.
    • 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, in dem Cloud KMS aktiviert ist, oder für eine übergeordnete Ressource.

Asymmetrische Signaturschlüssel erstellen

Für jedes Konto, das in einem Universal Ledger verwendet wird, ist ein asymmetrisches öffentliches/privates Signaturschlüsselpaar erforderlich. Der private Schlüssel wird zum Signieren von Transaktionen verwendet. Der öffentliche Schlüssel wird im Ledger registriert, um Ihr Konto zu identifizieren und Signaturen zu überprüfen.

Die folgenden Schritte führen Sie durch das Erstellen eines geeigneten Schlüsselpaars mit Cloud KMS und das Abrufen des öffentlichen Schlüssels. Sie können auch andere Methoden zur Schlüsselverwaltung verwenden, sofern sie Schlüssel und Signaturen erzeugen, die mit den Anforderungen von Universal Ledger kompatibel sind, z. B. ECDSA-P-256-Schlüssel mit SHA-256-Digests.

  1. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

  2. Legen Sie das Standardprojekt fest:

    gcloud config set project KEYS_PROJECT
    

    Ersetzen Sie KEYS_PROJECT durch die ID des Projekts, das für Ihre Cloud KMS-Ressourcen verwendet werden soll.

  3. Falls noch nicht geschehen, erstellen Sie mit dem Befehl gcloud kms keyrings create einen Schlüsselbund für Ihre Schlüssel:

    gcloud kms keyrings create KEY_RING \
        --location=KEY_LOCATION
    

    Ersetzen Sie Folgendes:

    • KEY_RING: Der Name des zu erstellenden Schlüsselbunds, z. B. test-gcul-keys. Dieser Name dient nur für Ihre eigene Organisation und muss nicht im Ledger aufgezeichnet werden.
    • KEY_LOCATION: der Google Cloud Speicherort des Schlüsselbunds, z. B. global.
  4. Erstellen Sie für jedes Konto, das Sie im Ledger verwenden möchten, mit dem Befehl gcloud kms keys create 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-operator oder eur-clearinghouse. Dieser Name ist für Ihre eigenen organisatorischen Anforderungen 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 -Standort des Schlüssels.

    Dadurch wird ein ECDSA-Schlüsselpaar auf der P-256-Kurve mit einem SHA-256-Digest erstellt, wie vom Universal Ledger unterstützt. Eine Liste der unterstützten Formate finden Sie in der KeyFormat-Referenz.

  5. Rufen Sie den öffentlichen Schlüsselabschnitt einer Schlüsselversion mit dem Befehl gcloud kms keys versions get-public-key ab:

    gcloud kms keys versions get-public-key KEY_VERSION \
        --key=KEY_NAME \
        --keyring=KEY_RING \
        --location=KEY_LOCATION
    

    Ersetzen Sie Folgendes:

    • KEY_VERSION: Die Version des abzurufenden Schlüssels. Bei neu erstellten Schlüsseln ist dies 1.
    • 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.

    Mit diesem Befehl wird der öffentliche Schlüssel in einem PEM-codierten Format (KEY_FORMAT_PEM_EC_P256_SHA256) ausgegeben, das für die Universal Ledger API geeignet ist, z. B.:

    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEJ/vWkd5wgakFbVD25k8WM9Ll6We+
    c8RVDS0R4G8xetsmFjfNW/ZxwWeB86IvMjxY8ZsdU9+W7BL5YM6rUB5yCQ==
    -----END PUBLIC KEY-----
    

Herausfinden, wer Ihr Konto erstellen kann

Der Kontotyp, den Sie erstellen möchten, bestimmt das übergeordnete Konto im Ledger, das die Berechtigung zum Erstellen hat. Sie müssen den Inhaber dieses Elternkontos identifizieren. Informationen zu den Kontotypen im Universal Ledger finden Sie unter Schlüsselkonzepte.

Kontotyp Wurde 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 die Informationen ermittelt haben, müssen Sie die folgenden Details mit dem Inhaber des übergeordneten Kontos abstimmen und ihm mitteilen, damit er Ihr Konto erstellen kann:

  • Der Name des Netzwerks, in dem das Konto erstellt werden soll. Eine Liste der verfügbaren Netzwerke für die Private Preview finden Sie hier.
  • Der öffentliche Teil Ihres asymmetrischen Signaturschlüssels und der entsprechende KeyFormat. Wenn Sie die gcloud-Befehle in dieser Anleitung ausgeführt haben, ist das Format KEY_FORMAT_PEM_EC_P256_SHA256.
  • Eine Kommentarzeile mit allen relevanten Informationen, die im Hauptbuch für Ihr neues Konto aufgezeichnet werden sollen. Dies ist ein undurchsichtiger Wert, der im Ledger gespeichert, aber nicht anderweitig vom Universal Ledger interpretiert wird. Nach der Erstellung ist dieses Feld unveränderlich und kann von jedem gelesen werden, der Zugriff auf das Netzwerk hat.
  • Alle zusätzlichen Details, die zum Ausfüllen der einzureichenden Transaktion beim Erstellen des Kontos erforderlich sind. Wenn Sie beispielsweise einen Währungsoperator erstellen möchten, müssen Sie auch die currency angeben, die vom neuen Operator verwaltet werden sollen.

Wenn Sie sich während der privaten Vorschau nicht sicher sind, wer der Inhaber des relevanten übergeordneten Kontos für Ihren Anwendungsfall ist, wenden Sie sich an Ihren Ansprechpartner bei Google.

Prüfen, ob Ihr Konto erstellt wurde

Sobald die vom Elternkonto eingereichte Transaktion erfolgreich ausgeführt und im Ledger abgeschlossen wurde, enthält die Antwort der Methode QueryTransactionState ein TransactionCertificate mit einem transaction_output-Ereignis, das die Konto-ID des neu erstellten Kontos enthält.

Die ID sieht etwa so aus:

1:USR:XTS:025sAZ55EqGKF6vpXEpSS8X891nNDEQU9yFQKYkcFzAb6

Sie können prüfen, ob 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