BASE58 PRÉFIXES
2 réponses
- votes
-
- 2019-02-01
base58 codes caractèresen ajoutant unpréfixe,traitant les octets comme ungrandnombre d'Endianet en écriture que legrandnombre d'Endian dans labase 58.
Par conséquent,despréfixes spécifiquespeuventbroyer les "chiffres" lesplus significatifs dans labase58.
Le script Python
b58_prefix.py
dans les scripts répertoire du Tezos Repopeut aider àtrouver cespréfixes.Notez quepour l'exécuter,vous aurezbesoin de cette version du Python LibPybitCointools
PIP INSTALL GIT + https://github.com/vbuterin/pybitcotitools.git@aeb0a2BBB8BBFE421432AEB882A5#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
-
Comment convertissez-vous letableau d'octets `" \ 006 \ 161 \ 159 "dans une valeur de MagicBytepouvant êtretransmise à lafonction BitCoin.bin_To_B58Check? J'ai découvert que vouspouvez utiliser Struct.Unpack avec les valeurs hexagonales de lamatrice d'octet comme celle-ci (génère P2SIG (98)) `p256_signature=structure.unpack ('> l',b '\ x36 \ xf0 \ x2c \ x34')[0] `,mais` "\ 006 \ 161 \ 159" `n'est que de 3 octets afin qu'ilne puissepas êtreemballé dans unentier Big-Endian de 4 octets.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
-
Voir aussi l'attente M. https://gitlab.com/tezos/tezos/-/merge_requests/1528 qui documente le scriptplus loin.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
Lespréfixes debase58produironttoujours une sortiepréfixéepour une longueur de sortie définie.Donc,l'adresse d'entréeest de 20 octets + lepréfixe de 3 octets donne une adresse 36 charcuter avec TZ1.
Vous calculez cespréfixespar devinezet vérifiez.
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.
module
Prefix
insrc/lib_crypto/base58.ml
a des lignestelles quelet ed25519_public_key_hash = "\006\161\159" (* tz1(36) *)
.Comment obtenir un
"\006\161\159"
detz1(36)
?