Wie Hash a Tezos öffentlicher Schlüssel
4 Antworten
- Stimmen
-
- 2020-01-16
Hierbeis,wieesin Pythongeht,wo die Variable
pubkey
das Bytes-Array des öffentlichen SchlüsselsistP2Hash_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()
-
Danke,dasistgroßartig.Möchten Sie diese Antwort verbessern,indem Sie Kommentare hinzufügen,dieerklären,was dortpassiert?Zum Beispiel - wasistp2Hash_magic und warum schneiden wireinige Bytesin Zeile 3 aus.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
-
Die Eingabefür B58EnDODE wird 51 Bytes lang sein (`p2hash_magic`ist 3 Bytes,`blake2bhash` 20 Bytes `Shabytesist 32 - 4=28 Bytes).Dies wirdeine 49-kohle lange `Base58Check-Zeichenfolgeerzeugen.Eine `tz1-Adresseistjedoch 36-char lang.Sicherist diese Methodenicht korrekt,oder?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
Hast du die Tezos-Repogebaut?Wennja,können Sie den OCAML-CLImit Tezos-Crypto ausführen:
$ DUNE UTOP SRC/LIB_CRYPTO
und dann:
OCAML # Opentezos_crypto ;; ocaml #ed25519.public_key.of_b58check_exn. "EDPKUOK2J2UVBDCSTDJGP85JMDN3GXBCWCGABTY5D7ZHVUNWCKNR" | >Ed25519.public_key.hash. | >ED25519.Public_key_Hash.to_b58Check ;; -: String="TZ1L1BYPLZUXGHMX3D6BHFJ2WCI4ZDBOCKA"
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"
-
Während dies wahrscheinlicheine gute Antwortist,istesin meinem Fallnicht hilfreich.Ichmussesprogrammgestämftin einer Nodejs-Apptun.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
in Pythonmit der Git-Version von pytezos :
von Pytezos.crypto-Import-Schlüssel Public_key='EDPKUOK2J2UVBDCSTDJGP85JMDN3GXBCSWCKGAPBY5D7ZHVUNWCKNR' hash=key (public_key) .public_key_hash () drucken (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
In NodeJsistes auchmöglich,mit
zu verwendensachez
:Import {Taste} von 'STECH'; const sachezkey=neuer Schlüssel ({Key: 'EDPKTX799PGW7M4Z8551URE52VCENNCSZWE9F9CST4V6H5VCRQMJE'}); warten sotezkey.Ready; console.log (sosezkey.publickeyhash ());
druckt:
TZ1XV78KMT7CHYVDLI9RMQP1KUWULHDAFZDK
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
Ichmusseinen TEZOS-Public-Key-Hasherstellen,basierend aufeinem öffentlichen
ED25519
-Te.Ichbin mireines Dienstprogrammsbewusst,das komplette Keystorebasierend auf Mnemonicsgeneriert. Diesistnicht das,wasichbrauche.
Ich würdeentwedereine Schrittfür Schrittbegrüßen Beschreibung,wie Sie voneinem
EDPK
aufeinTZ1
oderein Code-Snippetgelangen.danke.