ブロックチェーン

トランザクションのインプットとアウトプットとは【Bitcoinを理解する-4】

さて、以前はビットコインの基本的な仕組みについてお伝えしました。今回はトランザクションの構造である「インプット」と「アウトプット」と呼ばれるものについてお伝えしていきます。以前の投稿は以下です。

 

 

インプットとアウトプット

 

ビットコインのトランザクション(送信)の要は「まだ使われていないアウトプット」です。そしてこれを専門用語でUTXO:(unspent transaction output)といいます。いきなりこんなことを言われてもさっぱりかもしれませんが、この説明を読んでいくと、アウトプットとはなんなのかということが少しずつ理解していけます。

 

UTXO、つまり「まだ使われていないアウトプット」は特定の所有者に割り当てられた「分割不可能な」ビットコインです。これはどういうことかというと、新しい1万円札を特定の誰かが持つことができている状態で、なおかつその1万円札は、1000円札や5000円札に両替することができない、というようなことをイメージするとわかりやすいです。この状態は、ブロックチェーンに記録されていて、ビットコインのネットワーク全体に「通貨」として認められるものです。ビットコインのネットワークでは、「今現在いくら利用可能なビットコインがあるか」ということが把握されています。その数は今では数100万以上です。

 

みなさんがビットコインを手にする時は、どんなときであっても「まだ使われていないアウトプット」としてブロックに記録されます。このことから、みなさんのビットコインは数多あるブロックの中の「まだ使われていないアウトプット」として散り散りになっています。なので、ビットコインに触れたことがある人は「アドレスに表示された自分のビットコイン残高」をみることはできているようにみえて、実はそれはただ単に「アドレスに残った残高」として記録されているだけです。「残高」というのは、言い換えれば「みなさんが普段の銀行の通帳で見ている数字」と同じようなものです。

 

みなさんのお使いになっているお財布(ウォレット)は、「ブロックチェーンを読み取って、あなたに属している全部の『まだ使われていないアウトプット』を計算している」というだけのものです。

 


上記のことから、ビットコインには本来、「口座」や「残高」という概念は存在しません。驚かれるかもしれませんが、みなさんが「口座」として認識している「アドレスの中にある情報」というのは「まだ使われていないアウトプット」の「情報」ということです。既存の概念では少々理解しずらいため、他のサイトや当サイトでも「口座」という表現を用いて説明していますが、正確に理解する場合は、それは適切ではありません。


 

「まだ使われていないアウトプット」は、satoshi(1)という単位をもとに、誰でも自由にその値をもつことができます。アメリカドルでもセントという単位があるように、実はビットコインでも最小単位があります。「まだ使われていないアウトプット」は任意の値となりますが、「1度つくられるたコインを2つに切ることができないように2つに切ることはできません」

 

これはどういうことかについて説明します。

 

もしもみなさんが10bitcoinの「まだ使われていないアウトプット」を持っていたとして、5bitcoinだけ使いたいとしましょう。その際、トランザクション(送信)は10bitcoinの「まだ使われていないアウトプット」を使い切らなければなりません。そして、その際には「2つのアウトプット」が発生します。1つは、「送りたい5bitcoin」で、もう1つは「手元に残る5bitcoin=あなたの手元に戻ってくるおつり」です。現実世界で考えると、「10000円札」を「2枚の5000円札に両替して、そのうちの1つを送り先に渡している」というイメージです。

 

 

トランザクション(送信)によって使われた「まだ使われていないアウトプット」は次に「トランザクションインプット」と呼ばれます。「まだ使われていないアウトプット」の消費と生成の繰り返しの中で、ビットコインの塊は「Aさん」から「Bさんへ」と移っていきます。ただし、これには例外もありますので注意してください(2)

 


トランザクションのチェーンには必ず先に「アウトプット」が発生します。なぜかというと、「例外の(2)」で述べているように、「新たなビットコイン」を生み出すためのcoinbaseトランザクションは「インプットの情報が存在しないから」です。


 

(1)・・・ビットコインの最小単位を意味します。「0.00000001BTC=1satoshi」です。これは8桁の十進数を持ちます。

(2)・・・coinbaseトランザクションといわれる「特殊なトランザクション」があります。これはそれぞれのブロックの「最初」のトランザクションであり、「マイニングをしているマイナーへの報酬」として支払われるビットコインです。マイニングについての詳細はコチラの記事をご覧ください。

 

 

アウトプット

 

すべてのビットコイントランザクションは、必ず「アウトプット」を作り出します。これは絶対のルールです。このアウトプットといわれるものはビットコインのブロックに記載されますが、ほほすべてのアウトプット(ただし、1つ例外がありますがこれについてはまた別途記載します。今後その内容についても更新します。)は、まだ使われていないアウトプット(=UTXO)は「使うことができる」ビットコインのかたまりを作ります。「まだ使われていないアウトプット」は前述した通り、ビットコインのネットワークに認識されているため、持っている人がこれからの取引で使用することが可能です。

 

任意の相手にビットコインを送金するということは、送り先のビットコインアドレスとつなげられた「まだ使っていないトランザクションアウトプット」を生み出す、ということです。ここで初めて、この「まだ使っていないトランザクションを、受信者が使うことができるようになり」、トランザクションアウトプットとなります。

 

すべての「まだ使われていないトランザクションアウトプット」はすべてのフルノード(フルクライアント)(3)によって追跡されています。そして、「UTXOセット」または「UTXOプール」とよばれるメモリにしまわれたデータベースで管理されています。また、新規トランザクションはUTXOセットにあるアウトプットをを使用することができます。

 

つまり、ここで整理してみると、トランザクションアウトプットは次の2つで成立しています。


  • ビットコインの最小単位である「satoshi」で著されたビットコインの額(量)
  • アウトプットと使用するにあたって「解除条件(4)」であるlocking script(別記事で説明いたします)

 

 

(3)・・・ビットコインが作られて以来、取引の履歴すべて、つまりみなさんのすべての取引情報を保持しているノード(端末)のことです。ユーザーのウォレットの管理も行ってくれるので、ビットコインネットワーク上の取引を始めることが可能となっています。これは他のサーバーや他者に依存することなく稼働してくれる独立したサーバーであるEメールサーバと似ています。

 

(4)・・・トランザクションアウトプットは「ビットコインを特定の解除条件」もしくは「ビットコインを使用するにあたって条件を定義したlocking script」と関連づけられています。たいていはlocking scriptとよばれる特定のビットコインアドレスにアウトプットをロックすることで、所有者が次のひとへ写ります。

 

 

インプット

 

わかりやすくいうと、トランザクションインプットは「まだ使用されていないトランザクションアウトプット(=UTXO)」の接続するためのアクセスポイントのようなものです。インプットは、トランザクションハッシュと、「まだ使用されていないトランザクションアウトプット」が書き込まれたブロックチェーン内の「どのブロックにあるか」という「さがすための番号(=ブロックの所在地を示すもの」を使って、特定の「まだ使用されていないトランザクションアウトプット」を決めます。

 

逆に言うと、「まだ使用されていないトランザクションアウトプット」を使用するために、「unlocking script(別記事にて紹介します)」という、「まだ使用されていないトランザクションアウトプット」の鍵をひらくscript(簡単なプログラム)を持っているのです。

 

一回「まだ使用されていないトランザクションアウトプット」が選択されると、ウォレットは各UTXOに対して、署名を含むunlocking scriptを生み出します。これによって、locking scriptの条件を解除することができ、「まだ使用されていないトランザクションアウトプット」を使用することが出来る、というわけです。

 

さて、いかがでしたでしょうか。今回はトランザクションの要の「アウトプットとインプット」についてご紹介しました。また次回は、みなさんが気になるところの「トランザクションscriptとScript言語」についてお伝えしていくので、ぜひ参考にしてみてください。

 

 

 

日本で一番簡単にビットコインが買える取引所 coincheck bitcoin
bitFlyer ビットコインを始めるなら安心・安全な取引所で

関連記事

  1. ブロックチェーン

    Dapps(自律分散型アプリケーション)とは何か。

    今回はDappsとは一体どういうものなのかについて説明していきます。…

  2. ブロックチェーン

    トランザクションの形式・構造を知る【Bitcoinを理解する-3】

    さて、前回では秘密鍵と公開鍵についてお伝えしました。「Bitcoinを…

  3. ブロックチェーン

    マクロの視点でBlockchainの動向を理解する。

    仮想通貨、暗号通貨、Bitcoin、Ethereum、Blockcha…

  4. ブロックチェーン

    トランザクションのscriptとScript言語とは?【Bitcoinを理解する-5】

    ビットコインのトランザクションには、トランザクションscriptと、S…

  5. ICO解説

    【ICOを読み解く】ChangeはERC20トークン準拠・APIを投資家向けに公開

    話題となっているICOのChangeですが、こちらは現在確認することが…

日本で一番簡単にビットコインが買える取引所 coincheck bitcoin

おすすめ記事

最近の記事

  1. 【概要と結果を簡単理解】分散型台帳技術に関する共同調査【日本…
  2. トランザクションのscriptとScript言語とは?【Bi…
  3. 【ICOを読み解く】ChangeはERC20トークン準拠・A…
  4. マクロの視点でBlockchainの動向を理解する。
  5. Dapps(自律分散型アプリケーション)とは何か。
  1. 開発

    プログラマー必見!Gethの環境構築について【2017年8月25日更新版】
  2. ICO解説

    【ICOを読み解く】ChangeはERC20トークン準拠・APIを投資家向けに公…
  3. 開発

    プログラマー必見!Ethereumのプライベートネットワーク起動【2017年8月…
  4. 公開鍵・秘密鍵

    秘密鍵と公開鍵・アドレスを知る【Bitcoinを理解する-2】
  5. ブロックチェーン

    Dapps(自律分散型アプリケーション)とは何か。
PAGE TOP