prefissi base58
2 risposta
- voti
-
- 2019-02-01
Base58 codificai caratteri aggiungendo unprefisso,trattandoi byte come unnumerobig endiane scrivendo quelnumerobig endianin base 58.
Pertanto,prefissi specificipossonoindividuare le "cifre"più significativein Base58.
Lo scriptpython
b58_prefix.py
nella directoryscripts
del repository Tezospuò aiutare atrovare queiprefissi.Nota chepereseguirlo avraibisogno di questa versione della libpythonpybitcointools
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
-
Come si converte l'array dibyte "" \ 006 \ 161 \ 159 ""in un valoremagicbyte chepuòesserepassato allafunzionebitcoin.bin_to_b58check? Ho scoperto chepuoi usare struct.unpack coni valoriesadecimali dell'array dibytein questomodo (generap2sig (98)) `P256_SIGNATURE=struct.unpack ('> L',b '\ x36 \ xF0 \ x2C \ x34')[0] `,ma" "\ 006 \ 161 \ 159" "è di soli 3byte,quindinonpuòessere compressoin uninterobig-endian a 4byte.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
-
vedere ancheil MRin attesa https://gitlab.com/tezos/tezos/-/merge_requests/1528 che documenta ulteriormente questo 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
Iprefissi Base58produrranno sempre un outputprefissatoper una determinata lunghezza di output.Quindi l'indirizzo diinput è di 20byte +ilprefisso di 3bytefornisce unindirizzo lungo 36 caratteri contz1.
Puoi calcolare questiprefissiindovinandoe verificando.
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.
Ilmodulo
Prefix
insrc/lib_crypto/base58.ml
ha linee comelet ed25519_public_key_hash = "\006\161\159" (* tz1(36) *)
.Come si ottiene
"\006\161\159"
datz1(36)
?