ed25519バイトをTezos公開鍵に変換する方法
-
-
これはあなたの質問に答えますか?[Tezos公開鍵をハッシュする方法](https://tezos.stackexchange.com/questions/2016/how-to-hash-a-tezos-public-key)Does this answer your question? [How to hash a Tezos public key](https://tezos.stackexchange.com/questions/2016/how-to-hash-a-tezos-public-key)
- 0
- 2020-01-17
- utdrmac
-
あんまり.私もリンクされた質問の著者です;).リンクされたものは公開鍵のハッシュを作成することに関するものですが、これは公開鍵自体を作成することに関するものです-それはその前のステップです.Not really. I am an author of the linked question as well ;) . The linked one is about creating a hash of a public key while this one is about creating a public key itself - it's a step before that.
- 0
- 2020-01-17
- K SS
-
1 回答
- 投票
-
- 2020-01-17
これらのバイトはこのファイルの最後にあります
https://gitlab.com/tezos/tezos/blob/master/src/lib_crypto/base58.ml
あなたの場合、「\ 013 \ 015 \ 037 \ 217」
You can find those bytes at the bottom of this file
https://gitlab.com/tezos/tezos/blob/master/src/lib_crypto/base58.ml
In your case, "\013\015\037\217"
-
やってみました.私は `base58`が36バイトをエンコードし、49個の`base58`文字を取得しました.次に、プレフィックスとは別に、4つのランダムなバイトも追加しました.`edpk`から始まる54個の`base58`文字を取得しました.これは、プレフィックスが明らかに正しいことを意味しますが、ランダムなものを置き換えるために残りの4バイトをどこで取得しますか?I tried that. I `base58` encoded my 36 bytes and got 49 `base58` characters. Then apart from the prefix, I also appended 4 random bytes. I got 54 `base58` characters, starting from `edpk`. This means that prefix is clearly correct - but where do I get remaining 4 bytes to replace my random ones from?
- 0
- 2020-01-17
- K SS
-
バイナリデータのハッシュからいくつかのバイトをチェックサムとして追加するbase58Checkを使用する必要があります.You have to use base58Check which appends some bytes from a hash of the binary data as a checksum.
- 0
- 2020-01-17
- Arthur B
-
いいね.これにより、 `1edpk`で始まる55文字の文字列が得られます.先頭の `1`を削除し(そうすることになっていますか?)、有効なTezos公開鍵のように見えるものを取得しました.ただし、[sotez](https://www.npmjs.com/package/sotez)を使用してこの公開鍵のハッシュを作成しようとすると、「エラー:無効なチェックサム」が発生しました.これは、 `ed25519`バイトが間違っていることを示唆していますか?Tezosはカスタムの `ed25519`バリアントを使用していますか?`ed25519`バイトを生成するために使用している実装は[これ](https://www.npmjs.com/package/ed25519)です.Nice. This gives me a 55 character string starting with `1edpk` . I removed leading `1` (am I supposed to do that?) and got something that looks like a valid Tezos public key. However, after attempting to create a hash for this public key using [sotez](https://www.npmjs.com/package/sotez) I got `Error: Invalid checksum` . Does this suggest that `ed25519` bytes are wrong? Does Tezos use some custom `ed25519` variant? Implementation that I'm using to generate `ed25519` bytes is [this one](https://www.npmjs.com/package/ed25519) .
- 0
- 2020-01-17
- K SS
-
その特定のモジュールについてはよくわかりませんが、Sotezは[libsodium-wrappers](https://www.npmjs.com/package/libsodium-wrappers)を使用してed25519暗号化機能を実行します.たとえば、[this](https://github.com/AndrewKishino/sotez/blob/master/src/crypto.ts#L163)を参照できます.I'm not sure about that specific module, but Sotez uses [libsodium-wrappers](https://www.npmjs.com/package/libsodium-wrappers) to perform its ed25519 crypto functions. You can reference [this](https://github.com/AndrewKishino/sotez/blob/master/src/crypto.ts#L163) for example.
- 0
- 2020-01-18
- AKISH
-
`libsodium`を使用して`ed25519`バイトを生成すると、同じエラーが発生しました.先頭の `1`は`base58check`チェックサムの一部であるため、削除しないでください.ただし、削除しない場合、キーは「1edpk」で始まるため、当然のことながら「エラー:無効なプレフィックス」が表示されます.O_Oをどうやって解決するのか分かりませんUsing `libsodium` to generate `ed25519` bytes gave me the same error. It seems that leading `1` is a part of `base58check` checksum so it should not be removed. But if not removed, the key starts with `1edpk` so, unsurprisingly I'm getting `Error: Invalid prefix` . I have no idea how to work that out O_O
- 0
- 2020-01-20
- K SS
base58
エンコードed255191
公開鍵バイトでこれを実行しようとしました.次のコードサンプルを検討してください.印刷:
取得したそのトピックは、
base58
文字列は、実際のTezos公開鍵よりも10文字短くなっています.これとbase58
でエンコードする前に、base58
データの前に魔法のバイトを付ける必要があることを示唆しています.それらの魔法のバイトは何ですか?それに関するドキュメントはありますか?ありがとうございます.
アーサーBの回答後に編集:
base58
でエンコードする前に、ed25519
をbase58
バイトに追加してみました.それでも、実際のTezos公開鍵が54文字である場合、49文字を取得しました.さらに4つのランダムなバイトを追加した後、必要な54文字とedpk
で始まる値を取得しました.明らかにこれはプレフィックスが正しいことを意味します-しかし、残りの4バイトはどこから取得しますか?コメントで話し合った後の編集:
チェックサムとして追加の4バイトがあるbase58
の代わりにbase58
を使用したため、4バイトが欠落していました.
base58
を使用した後、1edpk
で始まる55バイトを取得しました.したがって、1
が前に付いた有効なパブリックTezosアドレスのように見えます.現在の問題は、キーを操作するとき(具体的には、ハッシュを計算するとき)、先頭の
1
を削除し、54文字を取得したことです.その結果、キーのハッシュに使用しているライブラリがInvalid checksum
エラーをスローしました.明らかに、1
はbase58
チェックサムの一部です.それでも、削除しないと、キーのプレフィックスが無効になります.更新されたコードサンプルは次のようになります:印刷:
このトピックに関する多くのことを読んだにもかかわらず、これを機能させる方法がわからないので、それについてさらに助けていただければ幸いです;)