天才プログラマーか単に頭いい奴こいや

1 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 00:48:40.500 ID:vzo5Txn40
任意文字列を含む有効なビットコインアドレスを生成するにはどうすればいいか考えてみ

ビットコインアドレスの形式は
[プレフィックス 1バイト] [本体データ 160ビット] [チェックサム 4バイト]
をbase58(58進数)で表現したもの

プレフィックスは0x00とする
チェックサムはプレフィックス+本体データをsha256に二回かけた後の先頭4バイト

例:
1BitCoinDescriptionAddressadTvGDH
1MayukoMuraokaXXXXXXXXXXXXXXX5f8QC

これはどっちも有効なビットコインアドレスになってる
https://chainflyer.bitflyer.com/Address/1BitCoinDescriptionAddressadTvGDH
https://chainflyer.bitflyer.jp/Address/1MayukoMuraokaXXXXXXXXXXXXXXX5f8QC

2 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 00:49:02.050 ID:i1q9cmKqa
あばばばばwww
3 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 00:49:35.518 ID:hog4rKEi0
わからん
4 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 00:49:47.100 ID:DY8yNZCO0
頭悪いけど来ちゃった
5 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 00:50:26.491 ID:g+OmKNdU0
マイニングと同じなのでは?
6 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 00:50:37.905 ID:vzo5Txn40
>>5
違うぞ
一瞬で生成できる
9 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 00:51:35.831 ID:OVmu0I+s0
手順分かるならそれを実行すればいいのでは
11 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 00:53:25.129 ID:vzo5Txn40
>>9
おまえらなら一瞬で方法思いつくかどうか試してる
くそ頭の悪い俺は2年前にウンウン唸りながら考えて方法を思いついた
ムラオカマユコのアドレスもその時に作ったやつ
10 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 00:51:54.415 ID:pd9lLZ4j0
プレフィックスは00だから上の例には表示してないって意味??
12 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 00:54:01.400 ID:vzo5Txn40
>>10
0x00が先頭に来てくるとbase58で表現した時に先頭が1になる
13 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 00:54:28.632 ID:azVsAqWS0
なんで最初に1付けてるの
14 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 00:55:03.950 ID:vzo5Txn40
>>13
アドレスの種類を識別するため
3とか他の文字のアドレスもある
16 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 00:56:39.698 ID:vzo5Txn40
ビットコインアドレスの説明はここに書いてある
https://www.tottemoyasashiibitcoin.net/entry/2018/02/04/165300
22 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 01:09:57.835 ID:xQfIi4UBM
>>16見ると本体データ部分は公開鍵をハッシュしたものなんだろ?
逆算は無理じゃないか
24 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 01:11:09.625 ID:vzo5Txn40
>>22
アドレス作るのはできるけど鍵は分からないから誰もその中にあるコインは使えない
25 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 01:16:42.236 ID:vzo5Txn40
>>22みたいな直感に反する事実とかがあるからそれも問題をややこしくしてる気がする
17 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 00:59:46.216 ID:pd9lLZ4j0
あぁそういう意味か
先頭に欲しい文字列が付いた適当な文字列を56デコードしてバイト数を調整してエンコードする
19 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 01:03:18.267 ID:vzo5Txn40
>>17
俺も方法忘れたけど多分そんな感じだった気がする
流石やね
23 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 01:10:15.165 ID:vzo5Txn40
多分1番ややこしいのは>>17に書いてる調整の部分だろうな
ややこしいって言ってもガ●ジ俺の視点だからややこしくないかもしれん
18 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 01:00:19.954 ID:Hqq1O4Qk0
計算式用意して逆算するんだろうけど仕組みがいまいち理解できない
20 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 01:05:11.149 ID:8hakwc1P0
よくわからんがチェックサム付けるだけじゃないんか
21 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 01:06:35.705 ID:vzo5Txn40
>>20
多分大体合ってると思う
俺が前に考えた時も単純なことしかしてなかった気がする
26 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 01:20:51.960 ID:+ZJfEIyt0
単純に、目的の文字列をBase58文字列として扱ってデコードした後、チェックサムを計算して最後に追加するだけでよくね?
28 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 01:22:52.314 ID:vzo5Txn40
>>26
多分そういうことなんだろうな
そういう単純なことに気付ける頭の柔軟さが羨ましい
俺みたいなガ●ジは単純なことも複雑に考えがち
27 名前:ひみつの名無しさん 投稿日時:2020/08/17(月) 01:21:24.564 ID:+ZJfEIyt0
最後に追加した後、サイドBase58エンコード、な

コメント

タイトルとURLをコピーしました