HUNNY

2021年7月2日

【翻訳文字起こし全文】IOHK PlutusFest 2018|Marlowe - Simon Thompson インタビュー

最終更新: 2021年11月28日

Simon Thompsonがドメイン固有言語であるMarloweの利点について2018年にインタビューされたときに語ったものです。

以下の文章は、IOHKのYouTube動画「IOHK PlutusFest 2018|Marlowe - Simon Thompson インタビュー」(2019/1/14)を翻訳文字起こししたものです。

HUNNYプールにステーキングしましょう!

HUNNY:ff5eb7a210b3b322271da7f17753a06d107bda666f34be10017ad723

PoolToolで詳細を見る:こちら

私は数学の学位と博士号を取得しました 

そして 「自分のやっていることは楽しい」と思うようになりました 

でも それはごく一部の人たちにしか影響を与えないだろうと思いました 

その頃 コンピュータ業界では面白いことが起こっていました 

そこで私は 関数型プログラミングで何が起こっているのかを知りました 

1980年代の初めのことです 

当時英国にいたとき 関数型プログラミングが世界中で大きな話題になっていました 関数型プログラミングがエキサイティングな技術であることも理由の1つです 

また 当時は「コンピュータの速度が限界に達する」「ムーアの法則が破綻する」と考えられていましたが それも間違いでした 

そこで彼らは 並列計算をしなければならないと考えました 

そのためには汎用の言語が必要です 

それを関数的にやろうというわけです 

このようにして 多くのエキサイティングな研究が行われました 

しかし その後のプロセスはどんどん速くなっていきました 

そのため 関数型プログラミングの研究は脇に追いやられてしまったのです 

関数型プログラミングについては 大きな話題になっていましたね 

Haskellの前身であるMirandaという言語を開発したDavid Turnerと一緒にケント大学にいたのですが 彼は多くのアイデアをまとめて 遅延型 強い型付け化しました 

しかし それは独自仕様の言語でもありました 

ある意味 Haskellはその反動で 人々は研究の基盤としてもっとオープンな言語を求めていたのです 

だから私も最初の頃に参加して 入力と出力に関する研究をしました 

関数型言語が何をしているのか 人々が理解し始めた頃でした 

それ以来 さまざまな側面から研究を続けています 

ここ数年は特に 関数型言語でリファクタリングがどのように機能するかを調べています 

しかし 私がIOHKに参加したきっかけは ご存知の通り Charlesが関数型プログラミングのコミュニティの人々と話したいと思ったからです 

また 私は20数年前に建設的型理論についての本を書いていましたが これは非常に流行していました 

しかし 私が執筆した頃は 数理論理学の中でもかなり曖昧な分野に過ぎませんでした 

私が書いた本は1500部ほど売れ 当時としては悪くなかったのですが その後絶版になり 今では自由に入手できるようになりました 

それが曲を更新する方法なのです Charlesもこれを読んで ああ この人は面白い 話を聞いてみようと思ったのではないでしょうか 

それで IOHKがまだ小さな会社だった頃 私は少なくとも3年は話をしていたと思います 

それでここにたどり着いたわけです 

そしてCharlesは 「じゃあ どんなことが興味深いのだろうか?IOHKは汎用的な関数型言語に興味があるのだ」と言い 他の人々を巻き込んでいったのですね 

しかし ドメイン固有言語を書くことは 私にとって興味のあることだと思っていました 

そして それを実行してきたのです 

スクリプトもそうですが 特に金融契約を作成するための特別な目的を持った言語に注目しています 

MarloweとPlutusは補完関係にありますが それぞれ異なることをします 

Plutusは主力製品ですね 

これは ブロックチェーン上に置かれるものであり 拡張UTXOモデル上に置かれるものであり ブロックチェーン取引のための非常に無駄のない 非常に精密で明確なモデルです 

Plutusはコントラクトを書くための汎用関数型言語ですが これはプログラミング言語でもあります 

ラップトップなどで動作する一般的なプログラムを書こうと思ったら JavaやHaskellなどを学ばなければならないように コーダーでなければならないのです 

Plutusでも同じです 

Haskellや関数型プログラミングを知っていれば とても簡単なものになりますが それを扱うにはコーダーにならなければなりません 

しかし いったんコーダーになれば 指先にすべての力が備わっているので 何でもプログラミングできるようになります 

しかし 世の中には コーディングにはあまり興味がなく ただ特定の種類のものを書くことに興味があるという より大きなクラスのユーザーがいます 

そのようなカテゴリーや分野の1つに 金融契約の作成があります 

関数コミュニティではかなりの作業が行われています 

投資銀行の業界では 金融契約を記述するためにドメイン固有言語を使った関数型言語を使用しています Marloweで行ったことは これらの言語の1つをブロックチェーン上に置いたらどうなるか ということです ユーザーについて考えてみると ここには素晴らしいアナロジーがあります 

世界最大のプログラミング言語 世界最大の関数型プログラミング言語のユーザー数は Excelだと言われています 

人々はExcelを書くことができ Excelでスプレッドシートを作り 数式を書いてちょっとした計算をすることができます 

しかし 彼らは自分たちのことをコーダーとは思っておらず ただのExcelユーザーです 

私たちは Marloweのユーザーを同じように見ています 彼らは 自分が何を書きたいかを知っていて 多くの人が以前に書かれたものと似ているものを使って 小さな契約を結ぼうとするでしょう 

しかし 私たちは彼らがそれを形式化することを許可します 

そして それをブロックチェーン上で実現する 

つまり Plutusで書くような一般的なコーダーとはまったく異なる 大きなユーザー層が存在する可能性があるのです 

実際 私たちのMarloweはPlutusの上に実装されています 

つまり Plutusの上のレイヤーなのです 

つまり Marloweが他の言語とどのような関係にあるのかを説明することができます 

ブロックチェーン上にあるときの違いの1つは 契約書を書くことだと思いますが もし私がRichardと契約を作るとしたら 何かを書き留めます 

もし従わなければ どちらかがもう一方を訴えます 契約が履行されているかどうかを確認するために 法制度があります 

そして 誰かが契約のルールに従わなかった場合には 救済措置があります 

ブロックチェーンの世界では 少なくとも私たちが考えている世界では 法制度がありません 

ですから ブロックチェーンは契約を履行するものでなければなりません 

そのためには 自分で強制力を持つような契約の設計を考えなければなりません 

そのためには 契約の書き方を変えなければなりません 

例えば 私がRichardにいくらかのお金を支払うという契約の場合 私がいくらかのお金を前もって約束しなければ その契約を成立させることはできません 

前もってお金を約束しなければ 契約が正しく行われることを保証できません 

このように 私たちはコミットメントという概念を持っています 

しかし 例えば 私が「契約にお金をコミットしてください」と言ったとしても あなたは何もせず 立ち去ることができます 

もし私がすでに契約にお金をコミットしていたら 私のお金は永遠にロックされてしまいます 

なので コミットだけでなく タイムアウトも考えなければなりません 「さあ リチャードは次の10ブロック以内にこのお金をコミットしてください」と言わなければなりません 

それができなければ すべては水の泡となり 契約を撤回します 

だからこそ この緊急性についてを考えて 物事を強制的に進めていかなければならない 

それまでに何もしなければ 何らかの対策を講じるというタイムアウトを設けることで 物事を進めていくのです 

つまり タイムアウトを入れることで 物事を進める強制力をもたせたのです 

コミットメントを追加したのです 

そして この2つの要素に加えて 原油価格以外のものの価値を観察してある期間を待ったりするといった より一般的な「意志」や「物事」を契約の言葉で表現することで ユーザーに1つの選択肢か別の選択肢かを判断してもらうのです 

これらの要素を組み合わせることで 小さな言語でありながら さまざまな契約を表現することができるようになりました 

つまり この言語にはいくつかの構成要素があり それらを組み合わせることでさまざまな契約を構築することができるのです 

契約の作成を支援するために 「Meadow」というツールを用意しました 

ブロックチェーン上で実行することなく 実際のお金を投入することなく 契約を段階的に実行して 各ブロックで何が起こるかを確認することができます 

そして ユーザーの入力や観測値をシミュレートしたりして コントラクトがどのように展開するかを確認することができます 

このように 実際に稼働させることなく コントラクトを試したり さまざまな選択肢を試したりすることができるので コントラクトがどのように振る舞うのかという感覚を得ることができます 

また 比較的制約の多い言語なので Plutusのような汎用性の高い言語ではありませんが いくつかの悪い点はデフォルトで除外されています 

そのため たとえばコントラクトが永遠に実行されないようにすることができます 

タイムアウトがあるので この期間が終われば契約が終了することが保証されています 

汎用のPlutusコントラクトは ブロックチェーン上で永遠に何もしないか あるいは何か悪いことをする可能性がありますが Marloweの場合 特定の方法で進展が起こることを保証することができるのです 

そして 物事がどのように振る舞うかを事前に分析することができます 

株価についてある仮定を立てれば そのコントラクトがどのように振る舞うかを予測することができます 

このような予測ができるのです 

シミュレーションするだけでなく あらゆる状況で契約がどのように振る舞うかの証明を書いてみたり このような形式の契約は このような入力があればすべてそうなると言ってみたりすることができます 

すべてのコントラクトは正しい振る舞いをするでしょう 

つまり コントラクトの正しさや安全性について 非常に厳密な保証を与えることができるのです 

私が思うに 特定の分野のみで機能するということは 汎用的ではなく 表現力は劣りますが より多くのことを証明できるということであり 自分の書いた契約書をよりコントロールできるということなのです 

現在 私たちはそのようにしています 

つまり 今後数ヶ月のうちにやることは 現在のMarloweを Cardano-SL全体のシミュレーションであるモックチェーンと呼ばれるものに実装することです 

今後数ヶ月間は MarloweをCardano-SL上に実装し それをデプロイする予定です 

また コントラクトを実行するために人々がどのようにお金を払うのか さまざまなアプリケーション分野についても検討していきます 

このように この分野ではやることがたくさんあります 

私たちは そのために全力を尽くすことを楽しみにしています 

この記事は楽しんでいただけましたか?

↓下のシェアボタンから、Twitterやブログ等でこの記事をシェアしていただけると嬉しいです。

もしよろしければ、HUNNYプールへの委任をよろしくお願いします!