はじめに(翻訳者より)
Arweaveプロジェクトは2017年にICOを行い(その際は「Archain」という名称でした)、以来継続的にコラムやリリースなど情報発信を続けてきています。
それらの情報の大部分が英語で発信されたものであるため、日本人に向け、少しずつ翻訳して紹介していきます(都合上、意訳を多く含みます。文末にリンクを張りますので可能なら原文も確認してみてください)。
Weaving Clarity:SmartWeaveのための安全なスマートコントラクト
2020年11月11日
この記事の要約:9月初め、ArweaveとBlockstackは、Arweaveのスマートコントラクトプロトコルである「SmartWeave」で、安全で解読可能な「Clarity」というスマートコントラクト言語を使用可能にする共同バウンティを発表しました。
このバウンティでは、Gitstampの開発で知られるコミュニティメンバーのArto Bendikenが報奨金を獲得しました。
これは、ArtoがClarityの必要性を説明し、SmartWeave上のClarityのためのコンパイラであるSwornを紹介するゲストブログポストです。
デモの様子
1ヶ月のハードワークの後、私のClarityからSmartWeaveへのコンパイラの最初の安定版である「Sworn 1.0」をリリースし、人々がその(比喩的な)タイヤを蹴る準備ができたことを発表できることを嬉しく思います。
もしあなたが技術に興味があるなら、Swornの2分間の短いデモをご覧ください。
賞金
元コンパイラハッカーの私にとって、これは夢のようなプロジェクトでした。コンパイラを丸ごと開発すると報奨金が出るなんて、めったにあることじゃないから、これは飛びつくしかないって思ったんです。
夜中までかかって、最短距離で機能実証を行い、懸賞金を獲得できたのは嬉しかったですね。それから1ヶ月ちょっとで、Clarity言語全体をSmartWeaveに導入するためのコンパイルができるようになりました。
約束
なぜ私はこのプロジェクトに興奮しているのでしょうか?「Clarity」は、より安全なスマートコントラクトに向けた待望の進化だと信じているからです。
すでに広く理解されているように、設計の不十分なスマートコントラクトは、広範なブロックチェーン・エコシステムにおいて数億ドル相当の騒乱を引き起こしています。スマートコントラクトを記述するプログラミング言語は重要であり、フットガン(翻訳者注:利便性を上げるために追加されたものの、利用者がよく誤用し、結果的に損する製品機能のこと)の少ない言語が非常に望ましい。「Clarity」はそのような言語です。
こうした理由から、ArweaveはBlockstackとAlgorandによって開発されたClarityの採用を決定しました。スマートウィーブは、計算をネットワーク・バリデーターから契約ユーザー自身に移行することで、他に類を見ない柔軟性を実現しています。
これにより、ガス代が不要となり、現在特にイーサリアムを悩ませている計算のボトルネックが解消されます。
SmartWeaveでは、開発者が大量の計算を必要とするJavaScriptコントラクトを展開することも可能です。SmartWeaveでは、コントラクトが無限ループに陥っても計算上は問題ない。なぜなら、そのコントラクトを書いた当事者が主に影響を受ける傾向があるからですだ。しかし、コンポーザビリティと正しさの観点からは、より安全な言語が望ましいと言えますJavaScriptはSolidityよりもさらに多くのフットガンを含んでいます。)
言語について
なぜClarityは特別なのか? まず、Solidityのようになんでもかんでもやろうとするスマートコントラクト言語とは異なり、Clarityはチューリング完全ではありません。
その代わり、Clarityは決定可能であり、最も簡単に言えば、Clarityで無限ループを書くことはできないということです。Clarityで書かれたコントラクトは確実に停止し、一般にマナー良く予測可能な振る舞いをします。
それにもかかわらず、Clarityのスマートコントラクトは簡単に書くことができ、言語が制限的であるようには感じません。
実際、関数型プログラミングに慣れている人は違和感なく、Clojure に慣れているプログラマーは Lisp 由来のシンプルな構文が気に入るでしょう。(他の人にとっては、慣れるまで少し時間がかかるかもしれません。心配しないでください、悟りを開くための道には、いらいらするような余計な括弧が散らばっています)。
以下は、永続カウンターを実装した簡単なコントラクトの例、counter.clarです。
(define-data-var counter int 0)
(define-read-only (get-counter)
(ok (var-get counter)))
(define-public (increment)
(begin
(var-set counter (+ (var-get counter) 1))
(ok (var-get counter))))
(define-public (decrement)
(begin
(var-set counter (- (var-get counter) 1))
(ok (var-get counter))))
今後について
Clarityが広く採用されることは、より安全なブロックチェーンサービスだけでなく、異なるブロックチェーン間での知識伝達のためにも良いことです。
実際、十分かつ本格的なバックアップがあれば、Clarityはやがて様々なブロックチェーンにまたがるスマートコントラクトの重要な業界標準となる可能性があるのです。現状では、ClarityはBlockstackとArweaveのみで利用可能であり、間もなくEthereumにも登場する予定です。Clarityを使ったプログラミングを学ぶには絶好のタイミングと言えるでしょう。
Swornに関しては、これはまだ始まりに過ぎません。Swornのロードマップには、利益分配型トークンやコミュニティを簡単に構築するためのArweave専用の「Clarity」関数がさらに用意されています。
また、Sworn 2.0には大きな計画があります。すでにEthereumに精通している開発者がArweaveを採用しやすくするために、既存のSolidityコントラクトも取り込んでサンクインベストメントを維持する方法を探っているのです。
もしあなたが私と同じようにこれらの開発に興奮しているなら、Discordの#smartweaveに飛び込んで会話に参加してください!