曲線上の点(SECP256K1またはP-256)からtezos公開鍵を導出する方法
1 回答
- 投票
-
- 2019-02-27
Tezosの公開鍵は、圧縮された形式で保存されます:
<1 byte prefix>|X
- プレフィックスは、Yが偶数の場合はb '\ x02'、それ以外の場合はb '\ x03'です.これで、33バイト長の圧縮キーが作成されます.
- secp256k1にはtezosプレフィックスb '\ x03 \ xfe \ xe2V'を追加し、p256にはb '\ x03 \ xb2 \ x8b \ x7f'を追加します.
- チェックサムを使用してBase58アルゴでエンコードします.
実装例については、pytezos.crypto のソースを確認してください.
Public keys in Tezos are stored in compressed form:
<1 byte prefix>|X
- Prefix is b'\x02' if Y is even, b'\x03' otherwise, now you have a compressed key of 33 bytes long;
- Add tezos prefix b'\x03\xfe\xe2V' for secp256k1, b'\x03\xb2\x8b\x7f' for p256;
- Encode with Base58 algo with checksum.
Checkout pytezos.crypto sources for implementation examples.
-
ここの「Y」とは何ですか?(タイプミス、Xにする必要がありますか?)What is `Y` here? (A typo, should be X?)
- 0
- 2020-01-17
- arvidj
-
X、Yは楕円曲線方程式からのものであり、secp256k1の場合は `y ^ 2=x ^ 3 + 7`です.X, Y are from the elliptic curve equation, for secp256k1 it's `y^2 = x^3 + 7`
- 0
- 2020-01-17
- Michael Zaikin
曲線上のx、yポイント(
SECP256K1
またはP-256
)からTezos公開鍵を導出するにはどうすればよいですか?たとえば、イーサリアムの場合、
Keccak-256
で[x,y]
を使用してこれを計算できます. 次に、最後の40バイト(16進数の20文字)を取得し、先頭に0xを付けて合計42バイトにすることでアドレスを取得します.