[Hyperledger Iroha] Créez un compte à l'aide de la bibliothèque Python

Contenu de l'article

Créez un compte à l'aide de la bibliothèque Python d'Hyperledger Iroha.

Préparation

Installez les bibliothèques nécessaires pour créer une paire de clés de compte

pip install ed25519

la mise en oeuvre

Créer un compte

C'est un code pour créer un compte immédiatement

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

# Informations de connexion à iroha
net = IrohaGrpc(iroha_config.IROHA_HOST)
iroha = Iroha(iroha_config.ADMIN_ACCOUNT)

# Créer une paire de clés
signing_key, verifying_key = ed25519.create_keypair()

# Enregistrer la paire de clés créée
open("[email protected]","wb").write(signing_key.to_ascii(encoding="hex"))
open("[email protected]","wb").write(verifying_key.to_ascii(encoding="hex"))

# Conversion de binaire en hexadécimal
vkey_hex = verifying_key.to_ascii(encoding="hex")

# Créer une transaction
transfer_tx = iroha.transaction(
 [iroha.command(
    'CreateAccount',
    account_name ='iroha',
    domain_id = 'test',
    public_key = vkey_hex
 )]
)

# Signature de transaction
IrohaCrypto.sign_transaction(transfer_tx, iroha_config.ADMIN_PRIV_KEY)

# Envoyer la transaction
net.send_tx(transfer_tx)

# Vérifiez le résultat
for status in net.tx_status_stream(transfer_tx):
    print(status)

Lorsque vous créez un compte en utilisant iroha-cli, les informations clés sont également créées, mais si vous créez un compte à partir de la bibliothèque, vous devez le créer vous-même. J'utilise une bibliothèque appelée "ed25519" pour le créer.

Résultat d'exécution

Si le résultat suivant est sorti, il réussit.

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

Je vérifierai également le contenu du bloc.

{
  "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"
      }
    ]
  }
}

J'ai pu confirmer que la transaction de la commande createAccount a été capturée dans le bloc.

Puisque le même nom d'utilisateur et le même domaine ne peuvent pas être enregistrés, si vous exécutez avec le même contenu, le résultat suivant sera obtenu et la transaction sera rejetée.

('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"
      }
    ]
  }
}

Obtenir des informations sur le compte

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

# Créer une requête
get_block_query = iroha.query(
        'GetAccount',
        account_id = 'iroha@test'  
)

# Requête de signe
IrohaCrypto.sign_query(get_block_query, admin_priv_key)

# Envoyer la requête
response = net.send_query(get_block_query)

# Sortie de réponse
print(response)

La méthode d'acquisition des informations de compte est fondamentalement la même que l'envoi d'une transaction. Le contenu de la transmission n'est qu'une requête, pas une commande

Résultat d'exécution

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

J'ai pu obtenir le résultat de l'exécution

référence

Référence API Iroha # create-account

Référence API Iroha # get-account

Article associé

[Hyperledger Iroha] Remarques sur l'utilisation du SDK Python

Recommended Posts

[Hyperledger Iroha] Créez un compte à l'aide de la bibliothèque Python
Créez un fichier image à l'aide de PIL (Python Imaging Library).
[HyperledgerIroha] Requête avec la bibliothèque Python
Créer des tickets JIRA en utilisant Python
[Python] Créez un robot d'exploration Web basé sur les événements à l'aide de l'architecture sans serveur d'AWS
Créer une interface graphique python à l'aide de tkinter
Créez rapidement un fichier Excel avec Python #python
Installez la bibliothèque python sur Lambda à l'aide de [/ tmp]
[Python] Créer un environnement Batch à l'aide d'AWS-CDK
Créer une application à l'aide de l'API Spotify
Créer un environnement OpenCV3 + python3 sur OSX
[Python] Créez rapidement une API avec Flask
Créez une application de mots anglais avec python
Créer un diagramme de dispersion elliptique en Python sans utiliser une distribution normale multivariée
N'hésitez pas à transformer Python en utilisant la bibliothèque en une fonction AWS Lambda
[Personal memo] julia --Utiliser la bibliothèque Python avec Julia en utilisant PyCall
Créer un fichier GIF en utilisant Pillow en Python
Agréger les résultats des tests à l'aide de la bibliothèque Python QualityForward
Créez une application qui devine les étudiants avec Python
Reconnaissance d'accords à l'aide du chromagramme de la bibliothèque de python librosa
Pièces jointes par e-mail à l'aide de votre compte gmail avec python.
Créer un papier peint à pois avec la bibliothèque d'images Python
[Pandas Python] Créer un DataFrame vide à partir d'un DataFrame existant
Créer un environnement de 64 bits Windows + python 2.7 + MeCab 0.996
Introduction de la bibliothèque d'imagerie Python (PIL) à l'aide de HomeBrew
Créer une carte Web en utilisant Python et GDAL
Créer un fichier wav à partir du shader GLSL en utilisant python3
Créer une image avec des caractères avec python (japonais)
[Python] Créer un environnement d'exécution de tâches asynchrone + environnement de surveillance
Essayez de créer un serveur HTTP en utilisant Node.js
Créer un compte à partir de la création d'un serveur de messagerie CentOS
Créez un fichier MIDI en Python en utilisant pretty_midi
Résolvez des équations simultanées en un instant en utilisant Python
Créez rapidement un serveur API avec Python + Falcon
Bibliothèque de messagerie Python 3.6
Bibliothèque Python AST
Commencez à utiliser Python
★ Mémo ★ Python Iroha
Note sur la bibliothèque Python
Scraping à l'aide de Python
Créer un serveur local GIF animé avec Python + Flask
Créer un bot de collecte de données en Python à l'aide de Selenium
Vérifiez la date limite de renouvellement du certificat SSL à l'aide de la bibliothèque Python3 M2Crypto
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 1 ~
[Python] Générer ValueObject avec un constructeur complet à l'aide de classes de données
Créez votre premier fichier GDSII en Python en utilisant gdspy
Comment créer un téléchargeur d'image avec Bottle (Python)
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 2 ~
Utiliser l'API de recherche de la Bibliothèque du Parlement national en Python
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 3 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 4 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 5 ~
Comment créer une instance d'une classe particulière à partir de dict en utilisant __new__ () en python