Cómo convertir ed25519 bytes a clave pública de Tezos
-
-
¿Respondeesto atupregunta?[Cómo aplicar hash a una clavepública de Tezos] (https://tezos.stackexchange.com/questions/2016/how-to-hash-a-tezos-public-key)Does this answer your question? [How to hash a Tezos public key](https://tezos.stackexchange.com/questions/2016/how-to-hash-a-tezos-public-key)
- 0
- 2020-01-17
- utdrmac
-
Realmenteno.Yotambién soy autor de lapregunta vinculada;).El vinculado setrata de crear un hash de una clavepública,mientras queeste setrata de crear una clavepúblicaen sí,es unpaso antes deeso.Not really. I am an author of the linked question as well ;) . The linked one is about creating a hash of a public key while this one is about creating a public key itself - it's a step before that.
- 0
- 2020-01-17
- K SS
-
1 respuesta
- votos
-
- 2020-01-17
Puedeencontraresosbytes alfinal deeste archivo
https://gitlab.com/tezos/tezos/blob/master/src/lib_crypto/base58.ml
En su caso,"\ 013 \ 015 \ 037 \ 217"
You can find those bytes at the bottom of this file
https://gitlab.com/tezos/tezos/blob/master/src/lib_crypto/base58.ml
In your case, "\013\015\037\217"
-
Intentéeso."Base58" codifiquémis 36bytes y obtuve 49 caracteres "base58".Luego,aparte delprefijo,también agregué 4bytes aleatorios.Obtuve 54 caracteres `base58`,comenzandopor`edpk`.Esto significa queelprefijoes claramente correcto,pero ¿de dónde obtengo los 4bytes restantespara reemplazar los aleatorios?I tried that. I `base58` encoded my 36 bytes and got 49 `base58` characters. Then apart from the prefix, I also appended 4 random bytes. I got 54 `base58` characters, starting from `edpk`. This means that prefix is clearly correct - but where do I get remaining 4 bytes to replace my random ones from?
- 0
- 2020-01-17
- K SS
-
Debe usarbase58Check que agrega algunosbytes de un hash de los datosbinarios como una suma de verificación.You have to use base58Check which appends some bytes from a hash of the binary data as a checksum.
- 0
- 2020-01-17
- Arthur B
-
Agradable.Estome da una cadena de 55 caracteres que comienza con "1edpk".Eliminéel "1"inicial (¿se supone que debo hacereso?) Y obtuve algo queparece una clavepública válida de Tezos.Sinembargo,después deintentar crear un hashparaesta clavepública usando [sotez] (https://www.npmjs.com/package/sotez) obtuve unerror: suma de comprobaciónno válida.¿Sugiereesto que losbytes `ed25519` sonincorrectos?¿Tezos usa alguna variantepersonalizada de `ed25519`?Laimplementación queestoy usandoparagenerarbytes `ed25519`es [esta] (https://www.npmjs.com/package/ed25519).Nice. This gives me a 55 character string starting with `1edpk` . I removed leading `1` (am I supposed to do that?) and got something that looks like a valid Tezos public key. However, after attempting to create a hash for this public key using [sotez](https://www.npmjs.com/package/sotez) I got `Error: Invalid checksum` . Does this suggest that `ed25519` bytes are wrong? Does Tezos use some custom `ed25519` variant? Implementation that I'm using to generate `ed25519` bytes is [this one](https://www.npmjs.com/package/ed25519) .
- 0
- 2020-01-17
- K SS
-
Noestoy seguro acerca deesemóduloespecífico,pero Sotez usa [libsodium-wrappers] (https://www.npmjs.com/package/libsodium-wrappers)para realizar susfunciones criptográficased25519.Puede hacer referencia a [esto] (https://github.com/AndrewKishino/sotez/blob/master/src/crypto.ts#L163)porejemplo.I'm not sure about that specific module, but Sotez uses [libsodium-wrappers](https://www.npmjs.com/package/libsodium-wrappers) to perform its ed25519 crypto functions. You can reference [this](https://github.com/AndrewKishino/sotez/blob/master/src/crypto.ts#L163) for example.
- 0
- 2020-01-18
- AKISH
-
El uso de `libsodium`paragenerarbytes`ed25519`me dioelmismoerror.Parece queel "1"inicialesparte de la suma de comprobación "base58check",por lo queno debeeliminarse.Pero sino seelimina,la clave comienza con "1edpk",por lo que,comoera deesperar,aparece "Error:prefijono válido".Notengoidea de cómo resolvereso O_OUsing `libsodium` to generate `ed25519` bytes gave me the same error. It seems that leading `1` is a part of `base58check` checksum so it should not be removed. But if not removed, the key starts with `1edpk` so, unsurprisingly I'm getting `Error: Invalid prefix` . I have no idea how to work that out O_O
- 0
- 2020-01-20
- K SS
Intenté hacereso con
base58
codificandoed255191
bytes de clavepública. Considere unamuestra de código siguiente:Imprime:
Una cadena
base58
que obtuvees 10 caracteresmás corta que una clavepública real de Tezos. Esto,ytambién esetema sugiere quenecesitoprefijarmis datos deed25519
con algunosbytesmágicos antes de codificarlos conbase58
. ¿Qué sonesosbytesmágicos? ¿Hay documentación sobreeso?Gracias.
EDITAR después de la respuesta de Arthur B:
Intenté agregarbytes deprefijo:
\013\015\037\217
aed25519
bytes antes de quebase58
los codifique. Aún así,tengo 49 caracteres cuando una clavepública real de Tezostiene 54 caracteres. Después de agregar 4bytes aleatorios adicionales,obtuve los 54 caracteres deseados y un valor que comienza conedpk
. Claramente,esto significa queelprefijoes correcto,pero ¿de dónde obtengo los 4bytes restantes?EDITAR después de la discusiónen los comentarios:
Faltaban 4bytesporque utilicé
base58
en lugar debase58check
quetiene 4bytes adicionales como suma de comprobación. Después de usarbase58check
obtuve 55bytes comenzando con1edpk
- así que algo queparece una direcciónpública válida de Tezosprecedidapor un1
.Elproblema actuales: cuandotrabajaba con la clave (específicamente,calculando su hash)eliminé un
1
inicial y obtuve 54 caracteres. Como resultado,unabiblioteca queestoy usandopara aplicar un hash a una clave arrojó unerrorInvalid checksum
. Claramente,1
esparte de la suma de comprobaciónbase58check
. Aún así,sino seelimina,la clavetendrá unprefijono válido. Unejemplo de código actualizado se ve así:Imprime:
Cualquier ayuda adicional coneso seríamuy apreciada,ya quenoentiendo cómo hacer queestofuncione apesar de leer MUCHO sobreeltema;)