base58プレフィックス
2 回答
- 投票
-
- 2019-02-01
Base58は、プレフィックスを追加し、バイトをビッグエンディアン番号として扱い、そのビッグエンディアン番号をベース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関数に渡すことができるマジックバイト値にどのように変換しますか? このようにバイト配列の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
-
このスクリプトをさらに文書化した保留中のMRhttps://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)
を取得するにはどうすればよいですか?