暗号資産初心者向けの記事です。本記事ではスクリプトについてわかりやすく解説していきます。
目次
はじめに
みなさん、こんにちは!今日はスクリプトについて一緒に学んでいきたいと思います。
ブロックチェーン上で不特定多数によって分散管理を行いながら高いセキュリティを実現するために、暗号資産には今日解説するスクリプトと呼ばれる作業が頻繁に関わってきます。特に重点が置かれているのは暗号資産のマイニングにおけるスクリプトです。
本記事ではこの概要や仕組みについて解説していきます。
スクリプトとは
スクリプトとはビットコインのトランザクションに不正がないか検証するためのプログラムです。スクリプトが存在することによりトランザクションが本当に正しい送信者からのインプットであるのか、または正しい送信先にアウトプットできているか確認することが可能になっています。
ビットコインのトランザクションはインプットとアウトプットから成っておりUTXOの消費と生成により実行されていることを知っていますか?
このUTXOにスクリプトがあり有効な条件下でのみトランザクションが実行されるようにされているのです。このスクリプトはスクリプト言語により記述されています。
スクリプト言語
上記でも少し触れたスクリプト言語はForthという言語に似たスタックベースの言語となっています。スタックの特徴としてプログラムや処理系が小さく済むため、IoTなど組み込み機器にも有利とされているのがメリットです。
スクリプト言語はOP_
で始まるOpcode(オペコード)という命令群で構成されています。
スクリプトの仕組み
スクリプトはハッシュ値を計算するための方法を記したプログラムとなっています。したがって「スクリプトを実行する」とは、そのプログラムを用いて処理を進めることを意味しています。
ここで登場したハッシュ値について少し解説したいと思います。ハッシュ値はランダムな状態で並んでいる特定の文字列をハッシュ関数によって算出している数字です。このランダムな状態で並んでいる文字列は、Number used onceを語源にナンス(Nonce)と呼ばれています。
ハッシュ関数は暗号化のために用いられている特殊な関数で、入力した数値に特定の内容の計算を行ってその解を導き出す数式です。ハッシュ関数で算出したハッシュ値には、一方通行の道路のように一方向にしか演算できないという特性があります。もともとのデータ(前出のナンス)を復元することが不可能で高いセキュリティを誇っていることから、ビットコインをはじめとする暗号資産ではさまざまなシーンに活用されているのです。
スクリプトの実例
最後にこれまで解説してきたスクリプトの実例についてお話ししていきたいと思います。
- P2PKH
- P2PK
それでは1つずつみていきましょう!
P2PKH (Pay to Public Key Hash)
P2PKHは最も一般的なスクリプトでビットコインネットワーク上で処理されているトランザクションの多くはこのP2PKHトランザクションを採用しています。
アリスがボブに10BTCを送金する状況を考えます。簡略化のためアリスのアドレスは10BTCのUTXOを持っていて取引手数料は考えないことにします。まず最初に、このUTXOはアリスのアドレスにロックされているためscriptSigによってロックを解除します。scriptSigでロックを解除するためにはアリスの秘密鍵によって署名し公開鍵を添付する必要があります。
次にボブに送金するためにscriptPubKeyでボブのアドレスにロックします。これによりアリスの10BTCのUTXOはボブのアドレスに紐付けられましたので送金が完了したことになります。
P2PK (Pay to Public Key)
P2PKは前述のP2PKHをシンプルにしたスクリプトで、scriptPubKeyの条件付けにビットコインアドレス(を用いるのでなく、単に公開鍵そのものを用いる形式となっています。
また、scriptSigの条件解除もデジタル署名だけで行われ、公開鍵は必要とされません。ビットコインアドレス形式の方が短く分かりやすいので、P2PKHは現在ほとんど使用されていません。
最後に
本記事では暗号資産におけるスクリプトの概要・仕組みなどについて解説してきました。
このスクリプトは不正がないかを確かめるためのプログラムになっています。暗号資産は現在もなお、不正や詐欺などが残念ながら避けて通れない分野となっています。
このマイナスな状況を未然に防ぐためにも、このスクリプトを活用してみてください。お疲れ様でした。