コーヒーハウスハードボイルドオクトパス

暗号通貨やパソコン,電気,カメラ,写真,素人経済社会学などをテーマに記事を書きたいと思います.

適当技術解説-UTXOとは何か-1

読者の皆様,今回は当ブログ初の技術解説記事です.

 

対象は一般暗号通貨クラスターと、ちょっとだけ突っ込んだ事を知りたい新規参入者です。

一応技術解説ではありますが、イメージで分かる事を優先した記事ですので正確さは盛大に犠牲にしています。

どうぞ気楽に読み進めてみて下さい。

勿論、今後記事を重ねる毎に難易度を上げ、知識の精度を上げていく方針で進めようと思っています。

ワイもノンエンジニアですので、どうせ現状では高度な事は書けませんからねw

ワイの勉強記事も兼ねているのであしからずです。

仮に分からなかったとしてもそれはタコ頭のせいであり、貴方の問題ではございません! 

また繰り返しになりますがワイの誤解の可能性も多々あること、ディテールガン無視である事を考慮して頂きこの記事を参考に行動する場合は自己責任でお願いします。(他の方の記事や本、公式を参考にすべきです)

さて、張り切って本題の解説に入りましょう!

おっと、もう一つだけ注意事項がありますが,この記事におけるウォレットとは明記がない限り軽量ウォレット(SPVウォレット)です。

分からない方は、軽量ウォレットとはウォレット機能しかない純粋なウォレットだと解釈して下さい。

 

さて、UTXOの解説記事を検索すると沢山出てきますが、トランザクションの構造の解説を絡めたトップダウン型の解説が多いように思います。

本記事では、同じ事をしても意味がないので貴方の残高はどのように記録されているかという静的な部分を解説し、どう送金をするのか(トランザクション)の話はなるべく避ける方針です。

いきなりですが、貴方の暗号通貨の残高はどの様にブロックチェーン上に保存されていると思いますか?

この記事の読者であれば、アカウントベースとUTXOがあってだな、イーサリアムはアカウントベースでビットコインはUTXOなんだぜ!と答えられる人も多いと思います。

しかし、それらを説明しろと言われるとちょっと難しい。

しかも、アカウントベースはアドレスに直接残高が結びついてるという事は何となくわかるかとは思いますが、UTXOはいかにも意味不明です。

未使用のトランザクションアウトプットだって?何だその面倒くさそうなギミックはとなるのは当然です。

ワイも初めてビットコインを知った数年前、勝手にアカウントベース的なシステムだと思っていたのですが、ドキュメントやコードを見てみると何だかよく分からない構造になっておりパニクったのを覚えています。

それだけ直感的ではないシステムなのです。(あれって元々どこかで使われていた仕組みなのかな?)

ざっくり書くと、このUTXOというもの(ものなのか?)に金額が書いてあり、それがアドレスと結びつけているのです。

 

では何でこんな手のこんだ方法をビットコインは選んだのか、どういった場合に有利なのかについてはガチ勢に聞いて頂いた方がいいですが、一つはプライバシーだと考えられます。

まぁ、その内ユースケースの解説をしてみましょうか。

ミキサーとかがいいかね?

そのようなメリットも頭の片隅におきながら解説を進めていきたいとおもいます。

いきなりですが、貴方のウォレットを用意するか頭の中に思い浮かべて下さい。

(そして、寝てるだけで資産が増えていく日がまた来る事を祈りましょう。)

ウォレットの中には沢山アドレスが入っている事はお分かりだとはおもいますが、ウォレットがそれらの残高を纏めて表示してくれている状況です。

その中から、適当な残高のあるアドレスを何個かピックアップしてみて下さい。

(ウォレットによっては面倒かもしれないので、想像だけでも充分です)

それには当然残高が結びついているのですが、イメージとしては以下の図のようになっています。

(ワイが3つのアドレスにフォーカスをしただけで、読者のウォレット内はもっとあるかもしれませんし少ないかもしれません)

f:id:takoatama:20200428144101j:plain

見ての通りですが、この外枠がウォレットで、南京錠がアドレスを表しています。

そして、それにぶら下がっているビラビラがUTXOです。

(2個とは限りませんよ!通常は一つの事が多いかもわかりません。)

送金事にはそのビラビラをやりとりしているわけですが、その詳細は次回以降の記事「ビットコインにおけるトランザクションとは何か」で解説をします。

今はとりあえず、そのビラビラは貴方が開示したアドレス(南京錠)に対して、相手から送られてきた物だという理解をしておいて下さい。

そして、そのビラビラとアドレスとの結び付きがブロックチェーンに刻まれているわけです。

残高を探すのにやたら時間の掛かるウォレットを使った事はあるでしょうか?

少なくとも初回の同期では時間がかかることがありますよね。

(フルノードの話ではないですよ)

あれ、何処かのフルノードからアナタのアドレスに結びついているUTXOをある程度プライバシーを守りながら探してるくれているのですよ。

(この辺りもいずれ解説をしますね!)

アナタのUTXOを見つけることが出来れば、当然アナタの残高が算出できる事はお分かりいただけるとおもいます。

UTXOに書かれた額を合計すれば良いのですから。

次の記事でどうせ説明をするし、スマホで見ると図が細かくなるので、上の画像にはUTXOの額面は書かなかったですが、適当なアドレスを拡大すると下の赤丸の箇所のように額面が書きこまれています。

(実際はsatoshi単位ですが,気にせんでええでしょ)

f:id:takoatama:20200501110115j:plain

繰り返しになりますが、UTXOは一つのアドレスに2つとは限らないです!

 ニーちゃん「ちょっと待てよタコ頭の大将、それはウォレットじゃねーだろ。大体よ〜アドレスとUTXOの結びつきなんて公開されていて誰でも見れるだろ。」

タコ頭「あ〜その通りだ、詳しそうな兄ちゃんはワイの店の客じゃないんだよ!」

小芝居はさておき詳しそうなニーちゃんのいう事は全く正しいです。

上の図の方が説明がしやすかったのでそうしたのですが、ウォレットで重要なのは秘密鍵の方です。

したがって下の図の方がしっくりきます。

これらの秘密鍵は先ほどの南京錠と結びついており、送金事にはこれを使って解錠をしUTXOを取り出します。

ここら辺はトランザクションが分からないと理解が難しいので、雰囲気だけ理解をしていただければとおもいます。

f:id:takoatama:20200428145221j:plain

 

いずれにしても、南京錠の例で考えてもらった方が、残高がどの様に保管されているかという部分は分かりやすいでしょう。

もういんじゃないか感はありますが、これ以降の記事の為にいずれ説明をしなければならないのでさらにUTXOの内部構造に踏み込んでいきましょう。

しかし、長くなりすぎたので記事を分ける事にします。

今日はここまで!

 

この記事の続き

 

takoatama.hatenablog.com