Neues Konto anfordern

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.

können Sie auch alle Ihre Schlüssel und Schlüsselbunde finden und verwalten.
  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 gcloud kms keyrings create Befehl 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 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.
  4. Erstellen Sie für jedes Konto, das Sie im Ledger verwenden möchten, mit dem gcloud kms keys create Befehl 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 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 KeyFormat Referenz.

  5. Rufen Sie mit dem gcloud kms keys versions get-public-key Befehl 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_LOCATION
    

    Ersetzen Sie Folgendes:

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

    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 die gcloud-Befehle in diesem Leitfaden ausgeführt haben, ist das Format KEY_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 currency angeben, 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