6章Script

コインをロック/アンロックする機能は、ビットコインを転送する仕組みそのものです。ロックするということは、ビットコインをエンティティに与えることに相当します。アンロックするということは、これまでに受け取ったビットコインを支払うことに相当します。

本章では、このロック/アンロックの仕組みについて確認していきます。この仕組みはしばしばスマートコントラクトと呼ばれます。楕円曲線暗号(3章)はScriptがトランザクションに適切に使用許可が与えられていることを検証する(5章)ときに使用されます。Scriptによって、人があるUTXOを使用する権利を持っていることを証明できるようになります。これについては後ほど解説しますので、まずはScriptの仕組みや動きについて見ていきましょう。

6.1 Scriptの仕組み

スマートコントラクトが何かよくわからないという方もご心配なく。「スマートコントラクト」とは「プログラム可能(プログラマブル)」なことを格好よく言い換えたもので、「スマートコントラクト言語」とは単なるプログラム言語の1つです。ビットコインでは、Scriptがスマートコントラクト言語、つまり、ビットコインが使用可能となる条件を表すために用いるプログラミング言語になります。

ビットコインは、ある契約をデジタル化してScriptで表したものです。Scriptは、Forthに似たスタックベースの言語で、とあることを避けるため、機能を意図的に制限しています。具体的には、Scriptはループを招くあらゆるメカニズムを避けています。それゆえ、チューリング完全ではありません。

ビットコインがチューリング完全ではない理由

プログラミング言語におけるチューリング完全とは、本質的には、プログラムがループ処理できることを意味します。ループ処理はプログラミングにおける有用な機構であるため、なぜScriptがループ処理できないのか疑問に思うかもしれません。 ...

Get プログラミング・ビットコイン ―ゼロからビットコインをプログラムする方法 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.