Comment hacher une clé publique tezos
4 réponses
- votes
-
- 2020-01-16
Heres Comment lefaireen python,où la variable
pubkey
est lamatrice des octets de la clépubliqueP2HASH_MAGIC = bytes.fromhex('06a1a4') blake2bhash = blake2b(pubkey, digest_size=20).digest() shabytes = sha256(sha256(P2HASH_MAGIC + blake2bhash).digest()).digest()[:4] pkhash = b58encode(P2HASH_MAGIC + blake2bhash + shabytes).decode()
Heres how to do it in python, where the variable
pubkey
is the bytes array of the public keyP2HASH_MAGIC = bytes.fromhex('06a1a4') blake2bhash = blake2b(pubkey, digest_size=20).digest() shabytes = sha256(sha256(P2HASH_MAGIC + blake2bhash).digest()).digest()[:4] pkhash = b58encode(P2HASH_MAGIC + blake2bhash + shabytes).decode()
-
Merci,c'estgénial.Voulez-vous améliorer cette réponseen ajoutant des commentairesexpliquant ce qui sepasse là-bas?Parexemple - Qu'est-ce quep2hash_magicet pourquoi avons-nous découpé certains octetsen ligne 3.Thanks, that's great. Would you mind to improve that answer by adding comments explaining what happens there? For example - what is P2HASH_MAGIC and why do we cut out some bytes in line 3.
- 0
- 2020-01-16
- K SS
-
L'entréepourb58encode va être de 51 octets long (`p2hash_magic`est de 3 octets,` Blake2bhash`est de 20 octets `shabytes`est de 32 à 4=28 octets).Cela vaproduire une chaîne de 49 Char Long `base58Check.Cependant,une adresse «TZ1»est de 36 caractères.Sûrement,cetteméthoden'estpas correcte,n'est-cepas?Input for b58encode is going to be 51 bytes long (`P2HASH_MAGIC` is 3 bytes, `blake2bhash` is 20 bytes `shabytes` is 32 - 4 = 28 bytes) . This is going to produce a 49-char long `base58check` string. However, a `tz1` address is 36-char long. Surely, this method is not correct, is it?
- 0
- 2020-02-11
- K SS
-
- 2020-01-16
Avez-vous le repo Tezos construit?Si oui,vouspouvezexécuter le CLI OCAML avec Tezos-Crypto:
$ dune utop src/lib_crypto
et ensuite:
ocaml# open Tezos_crypto;; ocaml# Ed25519.Public_key.of_b58check_exn "edpkuoK2J2UVbDcSTdJgP85JmDN3gxBCswcgApbtY5d7zHVunwCKNR" |> Ed25519.Public_key.hash |> Ed25519.Public_key_hash.to_b58check;; - : string = "tz1L1bypLzuxGHmx3d6bHFJ2WCi4ZDbocSCA"
Do you have the tezos repo built? If yes, you can run the ocaml CLI with tezos-crypto:
$ dune utop src/lib_crypto
and then:
ocaml# open Tezos_crypto;; ocaml# Ed25519.Public_key.of_b58check_exn "edpkuoK2J2UVbDcSTdJgP85JmDN3gxBCswcgApbtY5d7zHVunwCKNR" |> Ed25519.Public_key.hash |> Ed25519.Public_key_hash.to_b58check;; - : string = "tz1L1bypLzuxGHmx3d6bHFJ2WCi4ZDbocSCA"
-
Bien que cela soitprobablement unebonne réponse,cen'estpas utile dansmon cas.Je dois lefaire demanièreprogrammée dans une application Nodejs.While this is probably a good answer, it is not helpful in my case. I need to do it programatically, in a nodejs app.
- 0
- 2020-01-16
- K SS
-
- 2020-01-17
en Python,à l'aide de la version GIT de PyTezos :
from pytezos.crypto import Key public_key = 'edpkuoK2J2UVbDcSTdJgP85JmDN3gxBCswcgApbtY5d7zHVunwCKNR' hash = Key(public_key).public_key_hash() print(hash)
In python, using the git version of pytezos:
from pytezos.crypto import Key public_key = 'edpkuoK2J2UVbDcSTdJgP85JmDN3gxBCswcgApbtY5d7zHVunwCKNR' hash = Key(public_key).public_key_hash() print(hash)
-
- 2020-01-17
dans NodeJS Ilest égalementpossible de lefaireen utilisant
sotez
:importer {clé} de 'sotez'; const sotezykey=nouvelle clé ({KEY: 'EDPKTX799PGW7M4Z8551AUR52VCENNCSZWE9F9CST4V6H5VCRQMJE'}); attendre sotezkey.ready; console.log (sotezkey.publickeyHash ());
Impressions:
TZ1XV78KMT7CHYVLI9RMQP1KUWULHDAFZDK
In NodeJS it is also possible to do it using
sotez
:import {Key} from 'sotez'; const sotezKey = new Key({ key: 'edpktx799pgw7M4z8551URER52VcENNCSZwE9f9cst4v6h5vCrQmJE' }); await sotezKey.ready; console.log(sotezKey.publicKeyHash());
prints:
tz1Xv78KMT7cHyVDLi9RmQP1KuWULHDafZdK
Je dois créer un hachage de clépublique Tezosbasé sur unpublic
ed25519
.Je suis au courant d'un utilitaire quigénère des clésentièresbasées sur lesmnémoniques - cen'estpas ce dontj'aibesoin.
Je vousféliciterais soit une étape étapepar étape Comment obtenir àpartir d'un
edpk
à untz1
formulaire ou unextrait de code.merci.