なぜCardanoはHaskellを選んだのか -なぜ注意すべきなのか

Cardanoエコシステムにしばらく関わった方であれば、私たちのブロックチェーンが「Haskell」という関数型プログラミング言語を使用して構築されているブロックチェーンだとご存知かもしれません。

Haskellは、Cardanoのスマートコントラクトのプログラミング言語であるPlutusの基礎であり、また、金融向けスマートコントラクトのための私たちのドメイン・スペシフィック言語Marloweにパワーを与えます。どちらも 分散型アプリケーションの導入を説明した前回の記事で詳細に学ぶことができます。

ただし、Haskellは最もよく知られたプログラミング言語の1つではありません。また、開発者としての旅を始めたばかりの人に広く選択されるものでもありません。実際、Haskellは「プログラミング言語の人気指数」において2020年11月現在Googleで27番目に検索されている言語とランクされています。ちなみに、PythonやJavaなどがトップの座を占めています。

こうしたことを念頭に置けば、CardanoはそもそもなぜHaskellで実装されたのか疑問に思われる方も多いのではないでしょうか。理由はシンプルです:Haskellがスマートコントラクトに秀でた高保証コードを提供しているからです。しかし、これがCardanoにとって重要である理由を理解するには、まずHaskellとは何かを調べれば良いのか、関数型プログラミング言語としてのその役割を調べる必要があります。

Haskellとは何ですか?

Haskellという名前は、故アメリカの数学者ハスケル・カリーの名にちなんでおり、そのルーツは学術環境と論理の研究の両方にあり、また、Mirandaなどの関数型プログラミング言語の初期のイテレーション(=発行版)にも関係があります。

これらの初期の影響により、関数型プログラミング言語全般への関心が高まり、1990年にHaskellが正式に定義されるに至りました。しかし、フィリップ・ワドラー教授など、何人かの研究者は、早くも1987年、Haskellのバージョン1.0がリリースされる前に、型クラスなどの原初的なHaskellのコンポーネント(=部分)の作業を既に開始していました。

関数型プログラミング言語は、合成関数を使用します。単純な関数を組み合わせてより複雑な関数を作成し、プログラムを決定論的に記述できるようにします。これにより、プログラムが進化する際のバグの発生やその可能性が低くなります。これは、関数型プログラミングをフォーマル検証テストに非常に適したものにします。そのため、関数型プログラミング言語は、航空や金融などのミッションクリティカルなプログラム(ライフラインレベル)で広く使用されています。

Haskellは時間とともに進化し、Haskell 98やHaskell 2010などのいくつかのイテレーションを経て、専用のコミュニティメンバーが拡張機能、型クラスを追加し、エコシステムをサポートするHaskellコンパイラを構築しました。現在、膨大な量の作業とHaskell開発者が利用する包括的なライブラリとツールがあります。

Haskellは、最も純粋な関数型プログラミング言語の1つとして、多くの開発者の全般的なプログラミングへの取り組み方を変革させ、プログラマーとしての全体的な能力の向上に役立ったと言われています。

Haskellのプログラミング会社FPCompleteのCEO、Aaron Contorerによれば、これによりHaskellは、開発者が特に必要としていない場合でも学ぶことを最も推奨される言語として選ばれることなったと言います。私たちがすべての開発者にHaskellとはどんなものかを探求するよう推奨するのはこのためです。

HaskellにCardanoが実装されたのはなぜですか?

私たちは、Haskellは、高保証コードと高度なフォーマル検証を必要とするプログラム用に特別に構築されている関数型プログラミング言語であると知っています。

上で説明したように、この言語により、プログラマーは、実装したコードが正しいことをより確実に知ることができます。私たちがCardanoについて絵描く将来、つまり、Cardanoが次のグローバルな社会金融オペレーティングシステムになることを想定している将来においては、保証と高い信頼性が不可欠です。

Cardanoに分散型アプリケーション、トークン化、スマートコントラクトが登場すると共に、私たちは分散型の金融サービスのエコシステム全体が生まれると予想しています。これにより、数十億ドル以上の価値がオンチェーンにもたらされ、スマートコントラクトによってロックされ、分散型自律組織(DAO)によって管理されることになります。

ただし、現在のスマートコントラクトのインフラは、このオンチェーンの価値を確保できず、主に、新しいカスタム設計のプログラミング言語を実装しています。各言語には、独自のツールチェーン、ライブラリ、教育用リソースが必要で、その上に構築されるスマートコントラクトとアプリケーションの動作を正式に推論するのを困難にしています。

私たちは経験から、他のブロックチェーンとスマートコントラクトの言語上に結果として生じる脆弱性、コード障害、あるいはスマートコントラクトのエクスプロイトが破壊的な帰結をもたらし、相当の経済的損失(多くの場合数十億ドルのレベル)に繋がることを知っています。こうしたことが、スマートコントラクトがリスクの観点から機関投資家のユーザーにとって実行可能なものとなるかどうかという疑問が生じるのです。

ここでHaskellの本領が発揮されます。Haskellを通じて、CardanoのPlutusとMarloweのスマートコントラクトは、正確で形式的に検証されたコードで慎重に実装でき、最初から高レベルの保証が提供されます。

PlutusとMarloweは、Haskellのライブラリのセットとして提供され、既存のHaskellドキュメント、ツールキット、そして高度な専門家たちのコミュニティを活用して、エンタープライズグレードの安全なスマートコントラクトを構築するための基盤を提供します。

CardanoのオフチェーンコードとオンチェーンコードはどちらもHaskellで記述されているため、Cardanoは、まったく新しい実証されていないスマートコントラクト言語を使ってわざわざ一からやり直すのではなく、Haskellエコシステム内に既に存在する豊かな研究の塊を継承できます。

Haskellの詳細はどこで確認できますか?

Cardanoは、さらにはその延長線としてのPlutusとMarloweのプラットフォームは、オープンソースであり、探索に使用できます。コードベースの詳細は、Cardano Docsを利用して、またはCardano GitHubに直接アクセスして見つけることができます。

Haskellに至る最高のガイドを探していて、どこから始めればよいかわからないという方は、Miran Lipovačaの本かウェブサイト「Learn You a Haskell for Great Good」のチェックをお奨めします。Haskellの学習が、この図解ガイドで簡単に行えます。このガイドはこの魅力的なプログラミング言語を学習するための最も魅力的な方法の1つです。

始めたばかりのHaskell開発者の方は、Simon Peyton JonesとSimon Marlowが率いるGlasgow Haskell Compiler (GHC)を探索してみてもいいでしょう。Haskellのためのオープンソース ネイティブコード コンパイラです。

開発者コミュニティのための活気に満ちたHaskellへの参加をご希望になられる方は、Haskell Redditのチェックもお奨めします。Cardanoでの開発にご興味があれば、開発者ポータルの順番待ちリストに参加してみませんか? ここでは、Cardanoエコシステムからの最新の開発者ニュースにアクセスできます。

どうぞ、楽しく開発や構築を続けましょう!

2 Likes