[Hyperledger Iroha] Erstellen Sie ein Konto mit der Python-Bibliothek

Artikelinhalt

Erstellen Sie ein Konto mit der Python-Bibliothek von Hyperledger Iroha.

Vorbereitung

Installieren Sie die Bibliotheken, die zum Erstellen eines Kontoschlüsselpaars erforderlich sind

pip install ed25519

Implementierung

Ein Konto erstellen

Es ist ein Code, um sofort ein Konto zu erstellen

from iroha import Iroha, IrohaCrypto, IrohaGrpc
import ed25519
import iroha_config

# Verbindungsinformationen zu iroha
net = IrohaGrpc(iroha_config.IROHA_HOST)
iroha = Iroha(iroha_config.ADMIN_ACCOUNT)

# Erstellen eines Schlüsselpaars
signing_key, verifying_key = ed25519.create_keypair()

# Speichern Sie das erstellte Schlüsselpaar
open("[email protected]","wb").write(signing_key.to_ascii(encoding="hex"))
open("[email protected]","wb").write(verifying_key.to_ascii(encoding="hex"))

# Konvertieren Sie von binär nach hexadezimal
vkey_hex = verifying_key.to_ascii(encoding="hex")

# Transaktion erstellen
transfer_tx = iroha.transaction(
 [iroha.command(
    'CreateAccount',
    account_name ='iroha',
    domain_id = 'test',
    public_key = vkey_hex
 )]
)

# Transaktionssignatur
IrohaCrypto.sign_transaction(transfer_tx, iroha_config.ADMIN_PRIV_KEY)

# Transaktion senden
net.send_tx(transfer_tx)

# Überprüfen Sie das Ergebnis
for status in net.tx_status_stream(transfer_tx):
    print(status)

Wenn Sie ein Konto mit iroha-cli erstellen, werden auch die wichtigsten Informationen erstellt. Wenn Sie jedoch ein Konto aus der Bibliothek erstellen, müssen Sie es selbst erstellen. Ich benutze eine Bibliothek namens "ed25519", um es zu erstellen.

Ausführungsergebnis

Wenn das folgende Ergebnis ausgegeben wird, ist es erfolgreich.

('ENOUGH_SIGNATURES_COLLECTED', 9, 0)
('STATEFUL_VALIDATION_SUCCESS', 3, 0)
('COMMITTED', 5, 0)

Ich werde auch den Inhalt des Blocks überprüfen.

{
  "blockV1": {
    "payload": {
      "transactions": [
        {
          "payload": {
            "reducedPayload": {
              "commands": [
                {
                  "createAccount": {
                    "accountName": "iroha",
                    "domainId": "test",
                    "publicKey": "efdc215eab6dd2c4435d370da73e4b88350e1fed9d39afed503fcbee985fce1f"
                  }
                }
              ],
              "creatorAccountId": "admin@test",
              "createdTime": "1594016319157",
              "quorum": 1
            }
          },
          "signatures": [
            {
              "publicKey": "313a07e6384776ed95447710d15e59148473ccfc052a681317a72a69f2a49910",
              "signature": "429bf3ae70b60d31ab3fc3c15fa11cb8155b6a824f831652c1c46068feaeb866846b8048e0959cbcbeed532423f050e77d2fe192ea90d0827a6f1489bf67ec0a"
            }
          ]
        }
      ],
      "height": "4",
      "prevBlockHash": "039c70e4d990318c7373a59b14f39c9dd6199b949f1ba74b28c44d100adf8218",
      "createdTime": "1594016319568"
    },
    "signatures": [
      {
        "publicKey": "bddd58404d1315e0eb27902c5d7c8eb0602c16238f005773df406bc191308929",
        "signature": "e2a7dc68e837fc4bdefc2e7f60131661c9567f0f2b19af7e0069ced69a4054f7402fb93abd38e96aef850d865c760f3983632654db61fc0ab0181224e44fb20d"
      }
    ]
  }
}

Ich konnte bestätigen, dass die Transaktion des Befehls createAccount im Block erfasst wurde.

Da derselbe Benutzername und dieselbe Domain nicht registriert werden können, wird bei Ausführung mit demselben Inhalt das folgende Ergebnis erzielt und die Transaktion abgelehnt.

('ENOUGH_SIGNATURES_COLLECTED', 9, 0)
('STATEFUL_VALIDATION_FAILED', 2, 4)
('REJECTED', 4, 0)
{
  "blockV1": {
    "payload": {
      "height": "5",
      "prevBlockHash": "fe0c9b0e59efe7de5f67710ad66fdb5aab3f1e41b79bed8eda13f9c3d122d8cf",
      "createdTime": "1594017524600",
      "rejectedTransactionsHashes": [
        "ef17d5f4e82c7e9690676110b3d84c9ff721fd2ac78678e1b893cf3c024c5156"
      ]
    },
    "signatures": [
      {
        "publicKey": "bddd58404d1315e0eb27902c5d7c8eb0602c16238f005773df406bc191308929",
        "signature": "0ea48cca0b0db7ee525edafa961e6f2469989cbbb1346cc31e140a98b8260693ef939fe30bc9ef10a5ab4d0a6e7ffeccc1cc15124cb472be1d4f658b5aac1b0d"
      }
    ]
  }
}

Kontoinformationen abrufen

from iroha import Iroha, IrohaCrypto, IrohaGrpc
import iroha_config

net = IrohaGrpc(iroha_config.IROHA_HOST)

iroha = Iroha(iroha_config.ADMIN_ACCOUNT)
admin_priv_key = iroha_config.ADMIN_PRIV_KEY

# Abfrage erstellen
get_block_query = iroha.query(
        'GetAccount',
        account_id = 'iroha@test'  
)

# Abfrage signieren
IrohaCrypto.sign_query(get_block_query, admin_priv_key)

# Anfrage senden
response = net.send_query(get_block_query)

# Antwortausgabe
print(response)

Die Methode zum Erfassen von Kontoinformationen entspricht im Wesentlichen dem Senden einer Transaktion. Der Inhalt der Übertragung ist nur eine Abfrage, kein Befehl

Ausführungsergebnis

account_response {
  account {
    account_id: "iroha@test"
    domain_id: "test"
    quorum: 1
    json_data: "{}"
  }
  account_roles: "user"
}
query_hash: "a07e90ca85d9c4f0bd1b12ba8cd9c11886729fcd50ee4c2fc50e6c9a27047a2e"

Ich konnte das Ausführungsergebnis erhalten

Referenz

Iroha API-Referenz # Konto erstellen

Iroha API-Referenz # get-account

In Verbindung stehender Artikel

[Hyperledger Iroha] Hinweise zur Verwendung von Python SDK

Recommended Posts

[Hyperledger Iroha] Erstellen Sie ein Konto mit der Python-Bibliothek
Erstellen Sie eine Bilddatei mit PIL (Python Imaging Library).
[HyperledgerIroha] Abfrage mit Python-Bibliothek
Erstellen Sie JIRA-Tickets mit Python
[Python] Erstellen Sie einen ereignisgesteuerten Webcrawler mithilfe der serverlosen Architektur von AWS
Erstellen Sie mit tkinter eine Python-GUI
Erstellen Sie schnell eine Excel-Datei mit Python #python
Installieren Sie die Python-Bibliothek auf Lambda mit [/ tmp]
[Python] Erstellen Sie eine Stapelumgebung mit AWS-CDK
Erstellen Sie eine Anwendung mit der Spotify-API
Erstellen Sie eine OpenCV3 + python3-Umgebung unter OSX
[Python] Erstellen Sie schnell eine API mit Flask
Erstellen Sie eine englische Wort-App mit Python
Erstellen Sie in Python ein elliptisches Streudiagramm, ohne eine multivariate Normalverteilung zu verwenden
Sie können Python mithilfe der Bibliothek in eine AWS Lambda-Funktion verwandeln
[Persönliches Memo] julia - Verwenden Sie die Python-Bibliothek mit julia unter Verwendung von PyCall
Erstellen Sie eine GIF-Datei mit Pillow in Python
Aggregieren Sie die Testergebnisse mithilfe der QualityForward Python-Bibliothek
Erstellen Sie eine App, die Schüler mit Python errät
Akkorderkennung mit Chromagramm der Python Library Librosa
E-Mail-Anhänge über Ihr Google Mail-Konto mit Python.
Erstellen eines Hintergrundbilds mit Tupfen mit der Python-Bildbibliothek
[Python-Pandas] Erstellen Sie einen leeren DataFrame aus einem vorhandenen DataFrame
Erstellen Sie eine Umgebung mit 64-Bit-Windows + Python 2.7 + MeCab 0.996
Einführung der Python Imaging Library (PIL) mit HomeBrew
Erstellen Sie eine Webmap mit Python und GDAL
Erstellen Sie mit python3 eine WAV-Datei aus dem GLSL-Shader
Erstellen Sie ein Bild mit Zeichen mit Python (Japanisch)
[Python] Erstellen Sie eine asynchrone Taskausführungsumgebung + Überwachungsumgebung
Versuchen Sie, mit Node.js einen HTTP-Server zu erstellen
Erstellen Sie ein Konto aus dem Aufbau eines CentOS-Mailservers
Erstellen Sie eine MIDI-Datei in Python mit pretty_midi
Lösen Sie simultane Gleichungen sofort mit Python
Erstellen Sie schnell einen API-Server mit Python + Falcon
Python 3.6 E-Mail-Bibliothek
Python ast Bibliothek
Starten Sie Python
★ Memo ★ Python Iroha
Python Library Hinweis
Scraping mit Python
Erstellen Sie mit Python + Flask einen animierten lokalen GIF-Server
Erstellen Sie mit Selenium einen Datenerfassungsbot in Python
Überprüfen Sie die Frist für die Erneuerung des SSL-Zertifikats mithilfe der Python3 M2Crypto-Bibliothek
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 1 ~
[Python] Generieren Sie ValueObject mit dem vollständigen Konstruktor mithilfe von Datenklassen
Erstellen Sie Ihre erste GDSII-Datei in Python mit gdspy
So erstellen Sie einen Bild-Uploader mit Bottle (Python)
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 2 ~
Verwenden Sie die Such-API der National Parliament Library in Python
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 3 ~
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 4 ~
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 5 ~
So erstellen Sie eine Instanz einer bestimmten Klasse aus dict mit __new__ () in Python