base58 접두사
2 대답
- 투표
-
- 2019-02-01
Base58은 접두사를 추가하고 바이트를 빅 엔디안 숫자로 처리하고 해당 빅 엔디안 숫자를base 58로 작성하여 문자를 인코딩합니다.
따라서 특정 접두사는 Base58에서 가장 중요한 "숫자"를 찾을 수 있습니다.
Tezos 저장소의
가 필요합니다.b58_prefix.py
디렉토리에있는 Python 스크립트scripts
는 이러한 접두사를 찾는 데 도움이 될 수 있습니다.실행하려면이 버전의python 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
-
바이트 배열` "\ 006 \ 161 \ 159"`를bitcoin.bin_to_b58check 함수에 전달할 수있는magicbyte 값으로 어떻게 변환합니까? 다음과 같이 바이트 배열의 16 진수 값과 함께 struct.unpack을 사용할 수 있음을 발견했습니다 (p2sig (98) 생성)`P256_SIGNATURE=struct.unpack ( '> L',b '\ x36 \ xF0 \ x2C \ x34')[0]`이지만` "\ 006 \ 161 \ 159"`는 3 바이트에 불과하므로 4 바이트 빅 엔디안 정수로 압축 할 수 없습니다.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
-
이 스크립트를 자세히 설명하는 보류중인 MR https://gitlab.com/tezos/tezos/-/merge_requests/1528도 참조하십시오.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
Base58 접두사는 항상 설정된 출력 길이에 대해 접두사가 붙은 출력을 생성합니다.따라서 입력 주소는 20 바이트 + 3 바이트 접두사는tz1과 함께 36 자 길이의 주소를 제공합니다.
이 접두사는 추측과 확인으로 계산합니다.
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.
Prefix
의모듈
src/lib_crypto/base58.ml
에는let ed25519_public_key_hash = "\006\161\159" (* tz1(36) *)
."\006\161\159"
에서tz1(36)
를 어떻게 얻나요?