prefijos base58
2 respuestas
- votos
-
- 2019-02-01
Base58 codifica caracteres agregando unprefijo,tratando losbytes como unnúmerobig endian yescribiendoesenúmerobig endianen base 58.
Por lotanto,losprefijosespecíficospuedenprecisar los "dígitos"más significativosen Base58.
El script de Python
b58_prefix.py
en el directorioscripts
del repositorio de Tezospuede ayudar aencontraresosprefijos.Tengaen cuenta queparaejecutarlonecesitaráesta versión depython libpybitcointools
pip install git+https://github.com/vbuterin/pybitcointools.git@aeb0a2bbb8bbfe421432d776c649650eaeb882a5#egg=master
Base58 encodes characters by appending a prefix, treating the bytes as a big endian number and writing that big endian number in base 58.
Therefore, specific prefixes can pin down the most significant "digits" in Base58.
The python script
b58_prefix.py
in thescripts
directory of the Tezos repo can help find those prefixes. Note that to run it you will need this version of the python libpybitcointools
pip install git+https://github.com/vbuterin/pybitcointools.git@aeb0a2bbb8bbfe421432d776c649650eaeb882a5#egg=master
-
¿Cómo se convierte lamatriz debytes `" \ 006 \ 161 \ 159 "`en un valor demagicbyte que sepuedepasar a lafunciónbitcoin.bin_to_b58check? Descubrí quepuedes usar struct.unpack con los valores hexadecimales de lamatriz debytes comoesta (generap2sig (98)) `P256_SIGNATURE=struct.unpack ('> L',b '\ x36 \ xF0 \ x2C \ x34')[0] `,pero` "\ 006 \ 161 \ 159" `tiene solo 3bytes,por lo queno sepuedeempaquetaren unenterobig-endian de 4bytes.How do you convert the byte array `"\006\161\159"` into a magicbyte value that can be passed to the bitcoin.bin_to_b58check function? I discovered that you can use struct.unpack with the hex values of the byte array like this (generates p2sig(98))`P256_SIGNATURE = struct.unpack('>L', b'\x36\xF0\x2C\x34')[0]`, but `"\006\161\159"` is only 3 bytes so it can't be packed into a 4-byte big-endian integer.
- 0
- 2019-02-16
- Luke Youngblood
-
vertambiénel MRpendiente https://gitlab.com/tezos/tezos/-/merge_requests/1528 que documentaeste script conmás detalle.see also the pending MR https://gitlab.com/tezos/tezos/-/merge_requests/1528 that documents this script further.
- 0
- 2020-04-08
- arvidj
-
- 2019-02-01
Losprefijos Base58 siempreproducirán una salida conprefijopara una longitud de salidaestablecida.Entonces,la dirección deentradaes de 20bytes +elprefijo de 3bytes da una dirección de 36 caracteres contz1.
Calculaestosprefijos adivinando y comprobando.
Base58 prefixes will always produce a prefixed output for a set length of output. So the input address is 20 bytes + the 3 byte prefix gives a 36 char long address with tz1.
You calculate these prefixes by guess and check.
Elmódulo
Prefix
ensrc/lib_crypto/base58.ml
tiene líneas comolet ed25519_public_key_hash = "\006\161\159" (* tz1(36) *)
.¿Cómo se obtiene
"\006\161\159"
detz1(36)
?