hiro99ma blog

Something technical

アドレス

最終更新日: 2025/03/09

はじめに

Bitcoin で送金先を指定するときにはアドレスを使うのが一般的である。

アドレスの種類

一言で「Bitcoin アドレス」と書いたが、フォーマットがいくつかある。
開発が進むことでセキュリティが増したり秘匿性が高くなったりすることで過去のフォーマットはだんだん使われなくなっていく(が、無効になったりはしない)。

私が Bitcoin開発し始めた 2017年くらいは P2PKH や P2SH がよく使われていた。
mainnet ならアドレスの始まりが “1” や “3” の文字列である。
その後、segwit が有効になり “bc” で始まる P2WPKH や P2WSH に切り替わっていった。
2024 年くらいから P2TR が主流になってきているが、他のアドレスもまだ見られるという状況だ。
(主観です。)

アドレスの文字列は人間が見るためのもので、トランザクションには出てこない。
トランザクションの中では Bitcoin の転送先である scriptPubKey をいうデータがアドレスに相当し、 scriptPubKey をエンコードすると Bitcoin アドレスになる。
scriptPubKey(アドレス) によって送金の方法が決められるので “locking script” と呼ばれることもある。

Bitcoin Core のソースコードでは TxoutType と呼ばれている。

Type BIP Address encode
P2PK - -
MultiSig BIP-11 -
P2PKH BIP-13 base58
P2SH BIP-16 base58
P2WPKH BIP-141 bech32
P2WSH BIP-141 bech32
P2TR BIP-341 bech32m

単独鍵とスクリプト

アドレスには、ウォレットなどから生成された秘密鍵から作るか、Bitcoin スクリプトから作るかのどちらかになる(P2TR ではどちらも使えるアドレスが生成できる)。
主なところでは、P2PKH, P2WPKH, P2TR(key path) が鍵から生成するタイプ、 P2SH, P2WSH, P2TR(script path) がスクリプトから生成するタイプである。

“P2” は “Pay to” の略である。
それぞれ Pay to PubKey(P2PK)、Pay to PubKey Hash(P2PKH)、Pay to Script Hash(P2SH)、Pay to Witness PubKey Hash(P2WPKH)、Pay to Witness Script Hash(P2WSH)、Pay to Taproot(P2TR) である。

秘密鍵(複数の鍵を使った MultiSig というものがあるので、ここでは単独鍵)は、一般的にはウォレットから作る。
鍵は送受金のたびに新しく作るのが一般的である。 秘密鍵を記録していないと自分宛の送金であっても何もできなくなるのだが、 鍵のデータを無くさないようにとバックアップするとしても送金のたびに行うのは大変である。
そのため、ウォレットは元になる seed というデータとインデックス値から秘密鍵を生成する HDウォレットというものが使用される。 HDウォレットであれば seed だけバックアップしておけば、あとからインデックス値を 0 からインクリメントしていくだけで秘密鍵が計算できるためいちいちバックアップせずに済む。

スクリプトはプログラミング言語のようなもので、IF 文などを使うことができる。 安全性のため自由度は少ないが、いろいろできてしまって不安定になるよりはよいと思う(主観です)。
自作するものなので HDウォレットのようなバックアップができない。 そのためフォーマットもなく各アプリが独自でバックアップしていたが、最近は Output Descriptors という BIP があるので対応されるとスクリプトがあっても別のウォレットで使用することができるかもしれない。 ただ、スクリプトに対応できるウォレットがそもそも多くないので、普及がどうなのかはよく知らない。

アドレスはみんなに見られる

1つのトランザクションを見て、この送金先は誰だ、みたいなのを判断することはまず無理だろう。

ただ、そのアドレスについて操作している PC の IPアドレスや、 その後同じ IP アドレスがどうしているかとかたどっていくと個人を特定できるかもしれない。

個人まではたどれなくても、IPアドレスで国がおおよそ分かったりするし、他にも芋づる式にたどられるかもしれない。

違うパターンとして、犯罪組織が自分のアドレスに勝手に送金されて、自分が犯罪の何かをしたと見なされてしまうという心配もあるかもしれない。

などなど、無闇に恐れる必要はないのだが、力があったり熱心な犯罪組織などは何をしてくるか分からないという話なので困ったものだ。


 < Top page


コメント(Google Formへ飛びます)

GitHub

X/Twitter

Homepage