スクリプト
まずもってスクリプト言語とは、台帳システム上のアドレス間におけるトランザクションにおいてその有効性を証明するために実行されるプログラムを意味します。イヴ(悪意のある者)がアリスの資産に不正アクセスする、あるいは誤って設計されたスクリプトによって無効の住所にお金を送ってしまい、資金が回収不能になるようなことは、スクリプトの設計者は望んでいません。
ビットコインなどのシステムは、非常に融通の利かない厳格なスクリプト言語を提供しているため、トランザクションを独自にプログラムすること、またそれを読み解くことは非常に困難です。加えて、Solidityなどの一般的な言語によるプログラミングは、システムに複雑さをもたらす上に、ほんの一握りのアクターに対してのみ有益です。
よって我々は新しい言語を設計することにしました。これはSimon6と呼ばれており、言語を作成したSimon Thompsonおよびにそのコンセプトを生み出したSimon Peyton Joneから由来しています。Simonはコントラクト構成法: 金融工学への探求を基にしたドメイン特化言語です
主要な考え方は、金融取引は一般的に基本要素の集合から構成される、ということです7。金融関係の要素を定期的に寄せ集めれば、一般的なプログラマビリティでなくても、ほとんどすべてに通じるトランザクションをカバーする任意の大規模な複合トランザクションに対応することができます。
主な利点としては、セキュリティの向上とプログラムの実行が理解しやすいことです。これによってテンプレートの正確性を証明することができ、虚無から創出されたお金、トランザクション展性など問題のあるトランザクションの実行スペースを無くしてしまうことができます。また新しい機能が必要である場合、ソフトフォークを介して既存の拡張機能に追加することもできます。
つまり、オーバーレイプロトコル、従来の金融システム、および専用サーバーにCSLを接続する必要が常に存在します。したがって、我々はPlutusを汎用スマートコントラクト言語と相互運用性のための専用DSLとして開発しました。
Plutusは、独自のトランザクションスクリプトを記述する際に使用できる Haskell の概念に基づいた型付きの関数型言語です。この言語はCSLにおいて、サイドチェーンの仕組みなど別の階層と接続する必要がある複雑なトランザクションに対応するために使用されます。