ブロックチェーン

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

ビットコインのトランザクションには、トランザクションscriptと、Script言語というものが関わっています。前回ではトランザクションのアウトプットとインプット、UTXOについてご紹介しました。今回はそのトランザクションの有効性を確認するための解除条件などの詳細についてお伝えします。

前回のトランザクションの紹介については以下の記事をご確認ください。

 

 

 

トランザクションscriptとScript言語

 

 

ビットコインのクライアントは、scriptを実行します。scriptとはどんなことかというと、Bitcoinに関して言えば、コンピューターの決まったプログラムを実行することにあります。

 

Bitcoinではこのscript、つまり規定の動きを実行することでトランザクションが有効かそうでないかを確認します。Bitcoinでは、「locking script」という解除条件と、通常の署名が含まれている「unlocking script」と呼ばれるものは、script言語で書かれています。

 

わたしたちが今実際に利用しているBitcoinは、Bitcoinネットワークを通じて処理されています。また、トランザクションはAがBへ支払う」というものになっていますが、これはPay-to-Public-Key-Hashとよばれるsriptに基づいています。少し難しく聞こえるかもしれませんが、これは単純にAという名前がつけられたもともとのプログラムを処理しているということです。

 


※ビットコイントランザクションの有効かどうかという確認は、このScript言語の処理を通じて行われています。Script言語はありとあらゆる様々な条件を規定することが可能なため、Bitcoinが成立しています。


 

scriptの作成

 

 

ビットコインのトランザクション有効性を確認するための方法は2種類のsriptによって成立しています。

 


 

1.locking script

アウトプットに設定されている解除条件です。トランザクションを実行する際に必要な条件を規定しています。

 

2.unlocking script

これはlocking scriptによって設定された解除条件を解除した場合に条件を満たすscriptです。たいていの場合は秘密鍵からウォレットが生成した署名を含んでいます。

 


 

 

さて、両者がどのようなものかがわかったところで、Bitcoinクライアント(みなさんがお使いのウォレット)はどのようなことをしているかというと、この2種類を実行することで、トランザクションが有効か否かを確認しています。

 

 

どのように確認するかというとトランザクションそれぞれにあるインプットへ、インプットにより参照されているUTXOを取得しようとします。(UTXOはまだ使われていないアウトプットのことです、)このUTXOについては使用するときに必要な条件が決められたlocking scriptを含んでいます

 

 

この段階でUTXOの資金を使おうとしているインプットのunlocking scriptを取り出すことで、locking scriptとunlocking scriptを実行します。かなりややこしくなるかもしれませんが、これがBitcoinの流れの一部です。

 

 

Script言語

 

 

Bitcoinトランザクションにおけるスクリプト言語は、Scriptoと呼ばれます。どんな言語かというと電卓ようなデバイスと同じくらい簡単なハードウェアでも動作するようにつくられたものです。

 

BitcoinのScript言語についてですが、「スタック」というデータの構造を使用しています。なんだか難しそうに聞こえるかもしれませんが、これは非常にシンプルな構造のものであり、「トランプの山札」のようなイメージです。これは次の操作を許可しています。

 


  • プッシュ

アイテムをスタックの一番上(山札の一番上)に付け加えます。

 

  • ポップ

一番上にあるアイテム(カード)をスタック(山札)から取り外します。


 

 

Script言語というものは、それぞれのアイテムを左から順に処理することでscriptの実行をします。

(本来であればここからはプログラムの話になるのですが、当記事では上記の流れを理解してもらうことを目的とします。)

 

チューリング不完全性

 

Bitcoinのトランザクションにはループ・if文などの分岐処理が実装されないように制限しています。これを「チューリング完全」といい、この問題をクリアしない限りは「たくさんのトランザクションは他の悪意のあるユーザーによるトラップを使用する」ことが出来てしまいます。

 

ステートレスな検証

 

トランザクションScript言語=ステートレスです。どういうことかというと、scriptの実行前には「何も保持しない」scriptの実行後の状態を「一切有さない」ということです。これが理由により、scriptへの必要不可欠な情報はscriptへ含まれています。

 

 

 

さて、いかがでしたでしょうか。今回の内容は少しプログラミングによった内容でしたが、ここを理解すればもう立派なBitcoin通といえるのではないでしょうか。また次回をお楽しみにくださいね。

 

 

 

 

 

 

 

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

関連記事

  1. ブロックチェーン

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

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

  2. ブロックチェーン

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

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

  3. ICO解説

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

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

  4. ブロックチェーン

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

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

  5. 開発

    プログラマー必見!Ethereumのマイニング・送金方法【2017年8月30日最新版】

    前回はEthereumの代表的なクライアントであるGethをインストー…

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

おすすめ記事

最近の記事

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

    プログラマー必見!Ethereumのマイニング・送金方法【2017年8月30日最…
  2. 公開鍵・秘密鍵

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

    マクロの視点でBlockchainの動向を理解する。
  4. スマートコントラクト

    【概要と結果を簡単理解】分散型台帳技術に関する共同調査【日本銀行・欧州中央銀行】…
  5. ブロックチェーン

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