Prefixos base58
2 respostas
- votos
-
- 2019-02-01
base58 codifica caracteres anexando umprefixo,tratando osbytes como umgrandenúmeroendianoe escrevendo que ograndenúmeroendianonabase 58.
Portanto,prefixosespecíficospodem definir os "dígitos"mais significativosno Base58.
O script Python
B58_Prefix.py
no diretório scripts do diretório Tezospode ajudar aencontrar osprefixos.Observe que,paraexecutá-lo,vocêprecisará desta versão do Python LibPybitcoINTools
PIP Install Git + https://github.com/vbuterin/pybitcointools.git@aeb0a2bb8bbfe421432d776c649650EEB882A5#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
-
Como você converta o arraybyte` "\ 006 \ 161 \ 159" `Em um valor Magicbyte quepode serpassadopara afunção Bitcoin.bin_to_b58Check? Eu descobri que vocêpode usar struct.unpack com os valores hexadecimais damatriz dobyte comoeste (gerap2sig (98)) `p256_signature=struct.unpack ('> l',b '\ x36 \ xf0 \ x2c \ x34'[0] `,mas` "\ 006 \ 161 \ 159" `é apenas 3bytes,porissonãopode serembaladoem uminteirobig-endiano 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
-
Vejatambém o Sr. Https://gitlab.com/tezos/tezos/--/merge_requests/1528 que documenta aindamaisesse script.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
Osprefixos Base58 sempreproduzirão uma saídaprefixadapara um comprimento de saída definido.Assim,oendereço deentrada é de 20bytes + Oprefixo de 3bytesfornece umendereço longo de 36 caracteres com TZ1.Você calculaessesprefixospor adivinhae check.
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.
Módulo
Prefixo
emSRC/Lib_Crypto/Base58.ml
tem linhas comopermiteed25519_public_key_hash="\ 006 \ 161 \ 159" (* TZ1 (36*)
.Como se recebe
"\ 006 \ 161 \ 159"
detz1 (36)
?