IOGは動画「Plutus V3概要」を公開し、CardanoブロックチェーンのスマートコントラクトプラットフォームであるPlutusバージョン3が導入する機能と強化点について詳細に説明しています。また、注目すべきはカルダノ上でADAを、彼のイーサリアムアドレスで特定された受取人に送ることができるようになった方法をデモンストレーションしていることです。これによりカルダノはイーサリアムとスムーズに連動したエコシステムを展開することが可能になりました。
Plutus V3の目立つ機能の1つは、カルダノとイーサリアム間の相互作用を容易にすることです。これは、Plutusスクリプト内でイーサリアムの署名を検証するための新しい暗号化プリミティブの導入によって達成されます。この機能は、カルダノ上でイーサリアムアドレスで識別された受取人にADAを送ることができる使用例で実証されています。このプロセスには、受取人のイーサリアムアドレスを指定してカルダノのスマートコントラクトにADAをロックすることが含まれ、その後、受取人はMetaMaskを使用してイーサリアムアドレスでメッセージに署名し、カルダノ上で資金を解除することができます。これは、カルダノのスマートコントラクトがイーサリアムとスムーズに相互作用できる能力を示し、これら2つのブロックチェーン間の相互運用性を強化しています。
このような進歩の意味するところは、カルダノが他のブロックチェーン、特にイーサリアムとよりスムーズに相互作用できる能力は、さまざまなセクターやプラットフォームでのブロックチェーン技術の採用に向けて、より相互接続された機能的なブロックチェーンエコシステムを作るための大きな一歩を表しているという意味で、カルダノにとって重要です。
Plutus V3の主なアップデートは、パフォーマンス、スループット、スマートコントラクトのサイズ、プラットフォームの機能性の向上に焦点を当てており、他のブロックチェーンとの相互運用性も高めています。新機能は主に3つのカテゴリーに分けられます。
- ビットワイズプリミティブ:これにより、ビットレベルでの低レベルデータの操作が可能になり、さまざまなアルゴリズムとデータ構造の基盤として機能します。この更新により、整数のセットの効率的な表現と操作、暗号プリミティブの実装などが可能になります。特に、整数をバイトストリングに変換することができるようになり、これまで不可能だったPlutusでの任意データのハッシュ化が可能になりました。
- 暗号プリミティブ:ブロックチェーン技術に不可欠であり、選択された暗号プリミティブはブロックチェーンの機能に大きく影響します。Plutus V3は、BitcoinやEthereumなどの他のブロックチェーンとのスムーズな統合に不可欠な、BLS 12381、Blake 2B 224、Keccak 256などの新しい暗号プリミティブを導入します。これらのアップデートにより、Plutusスマートコントラクト内でEthereumの署名を検証するなどの新しい機能が可能になります。
- 積の和:Plutus自体のコア言語に変更を加え、よりコンパクトで効率的なデータ表現を可能にする機能です。Plutusコアにデータ型のネイティブサポートをもたらし、より効率的な検証プロセスを実現し、メモリ消費を減らし、トランザクションコストを下げます。ベンチマークによると、効率は最大で30%改善されるとされています。
動画には、先ほど述べたように実際にEthereumアドレスで識別された受取人にCardano上のADAを送信する方法を示すデモも含まれており、相互運用性の強化を紹介しています。このプロセスには、EthereumアドレスをデータとしてスマートコントラクトにADAをロックすることが含まれ、受取人はEthereumアドレスに対して検証された署名を提供することで解除できます。このデモは、Cardanoと他のブロックチェーン、例えばEthereumとの相互作用を橋渡しするPlutus V3の進歩を示しています。
次に注目なのはPlutus V3の「積和の形(Sums of Products, SOPs)」に関する改善点です。
データ型に対するネイティブサポート:
これまでのPlutus Coreは、データ型に対してネイティブなサポートを含まないため、構造化されたデータを使用したいユーザーは、通常「Scottエンコーディング」と呼ばれる方法でエンコードする必要がありました。Plutus V3は、データ型に対してネイティブなサポートを提供し、これを「積和の形」と呼ばれる方法で導入しています。
積和の形の利点:
最も重要な点は、全てのケース分岐を評価しないことです。Scottエンコーディングでは、ケース分岐がシンプルな関数の引数として扱われるため、進む前に常に評価されます。これに対して、積和の形では必要な分岐のみが評価されます。
より高速なバリデータとより優れたコード生成:
バリデータは最大で30%高速に実行される可能性があり、これは大きなパフォーマンス最適化を意味しています。また、Plutus Coreを対象とするコンパイラのコード生成がより良くなります。
要するに、Plutus V3は、より効率的なデータ型の表現、効率的な評価戦略、およびバリデータの実行速度の向上を通じて、スマートコントラクトのパフォーマンスと最適化を改善することを意図しています。これは、コスト削減、トランザクションの高速化、開発者がより複雑で表現力のあるスマートコントラクトを容易に作成できるようにすることで、カルダノブロックチェーンの使用性を高めることが期待されます。
全体として、Plutus V3はCardanoのスマートコントラクト機能の開発において大きな前進を代表し、開発者により効率的で相互運用可能なアプリケーションの構築に必要なツールを提供し、より相互接続されたブロックチェーンエコシステムを促進します。
以下は動画「Plutus V3 Overview」を翻訳したものです。
動画「Plutus V3 Overview」全翻訳
みなさん、こんにちは。この短いビデオでは、来るべき新しいPlutus V3についてお話ししたいと思います。私たちが楽しみにしている機能の概要を説明し、過去には不可能だったPlutus V3でできることのデモを見せたいと思います。
そこで、特にビット単位のプリミティブ、暗号学的プリミティブについて、機能の簡単な概要を説明し、その後デモを行い、最後に積の和について簡単に話します。Plutus V3は、パフォーマンス、スループット、スマートコントラクトのサイズ、プラットフォームの能力、そして他のブロックチェーンとの相互運用性に焦点を当てています。
それは現在、Sanchoネットでテスト可能であり、新機能は3つのグループに分かれています。私たちは、多くの興味深いアプリケーションへの扉を開くビット単位のプリミティブを持っています。暗号学的プリミティブとしては、BS 12381、Blake 2B 224、Katchar 256などがあり、これらはビットコインやイーサリアムのようなブロックチェーンとスムーズに統合することに特に興味深いものです。
そして、積の和は、Plutusにおけるビルトイン機能への変更ではなく、Plutusコア言語自体への変更であり、データのよりコンパクトで効率的な表現を可能にします。ビット単位のプリミティブは、ビットのレベル、最も低いレベルでデータの操作を可能にし、これらの操作は多くのアルゴリズムとデータ構造の基本的な構成要素です。そして、整数のセットの効率的な表現と操作から、暗号学的プリミティブの実装、高速検索に至るまで、多くのアプリケーションがあります。特に、これまで不可能だった任意のデータのハッシュ化を例に挙げると、Plutusで整数をバイト文字列に変換することが可能になりました。
暗号学的プリミティブは、ブロックチェーン技術の基本的な構成要素の一つであり、選択するプリミティブは、ブロックチェーンが何をできるかに大きな影響を与えます。もちろん、私たちはCardanoに選んだ暗号学的プリミティブの選択に自信を持っていますが、他のブロックチェーンは別の選択をしており、それが過去に他のブロックチェーンとの相互運用を困難にしていました。例えば、イーサリアムの署名がPlutusで検証できれば素晴らしいですが、これまでそれは不可能でした。
しかし、今は可能です。新しい暗号学的プリミティブは3つのグループに分かれています。1つ目はBLS12381に関するもので、楕円曲線ペアリングを含み、17の新しいプリミティブがサポートされ、サイドチェーン、ゼロ知識証明、Hydra、Mithil、Atalaなどのユースケースが含まれます。次に、Blake 2B 224は暗号化ハッシュ関数で、特にPlutus内から公開鍵やスクリプトをハッシュ化するのに役立ちます。最後に、Catchup 256はイーサリアム署名の検証をPlutoスクリプト内でサポートする暗号化ハッシュ関数です。
それでは、デモに移ります。私は、Cardano上でADAを、彼のイーサリアムアドレスで特定された受取人に送ることができるようになった方法をデモンストレーションしたいと思います。ワークフローは以下の通りです。
まず、送信者がスマートコントラクトにADAをロックし、datumに受取人のイーサリアムアドレスを指定します。次に、受取人がMetamaskを使用して彼のイーサリアムアドレスでメッセージに署名し、署名するメッセージは彼のCardano公開鍵ハッシュになります。そして、イーサリアム公開鍵、イーサリアム署名、Cardano公開鍵を使用して、彼はCardano上で資金を解除することを可能にするRedeemerを作成できます。
Plutus TXのHLLで書かれたスマートコントラクトを見てみましょう。それは単一のパラメータを取ります。これは、イーサリアムがいわゆる個人メッセージ署名に使用するメッセージのこの定数である「イーサリアム署名メッセージ」とメッセージの長さです。次に、datumがあります。これは受取人のイーサリアムアドレスが入ったバイト文字列です。そして、ここで見ることができるRedeemerがあります。これはイーサリアム公開鍵、カルダノ公開鍵ハッシュ、イーサリアム署名で構成されています。
これを使って、受取人が資金を解除する権利があるかどうかをどのように検証しますか?私たちはイーサリアム署名を検証します。これがPlutus V3で可能になった興味深い新しい部分です。私たちは、署名がdatumに指定されたアドレスから来たものであることを確認し、最終的には、トランザクションがRedeemerに記載されている公開鍵ハッシュによって署名されたものであることを確認します。これにより、datumに記載されたイーサリアムアドレスのコントロール下にある人物だけがこれらの資金を解除できることが保証されます。
最初の興味深い部分は、この新しいビルトイン関数verify_ecdsa_secp256k1_signatureで起こります。これはいわゆる圧縮公開鍵、メッセージのハッシュ、そして署名を受け取り、署名が有効かどうかをチェックします。イーサリアムには65バイトの非圧縮公開鍵と33バイトの圧縮公開鍵があるため、ここでいくつかのバイト文字列のスライシングと操作を行って、この圧縮公開鍵を計算します。一度それを持てば、Redeemerのイーサリアム公開鍵ハッシュを使って、その公開鍵に属するアドレスを計算し、それをdatumに記載されたアドレスと比較できます。そして最終的に、トランザクションがRedeemerに記載された公開鍵ハッシュによって実際に署名されたものであるかどうかを確認できます。
イーサリアムの公開鍵からイーサリアムアドレスを計算するためには、公開鍵をハッシュ化し、これにはCat Shar 256を使用する必要があります。これも、以前は不可能でしたが、Plutus V3で可能になりました。それでは、これを試してみましょう。私はテストネット上で、アリスとボブと呼ばれる2つのアカウント、2つの公開/秘密キーペアを設定し、これらの参加者の残高をチェックするいくつかのスクリプトを提供しました。では、最初に私たちがどこにいるかを見てみましょう。アリスは9,857のテストADAをもっています。
これを以前に試したので、ボブはすでにいくつかの資金を持っています。そして、例えばエリスがボブに1000テストADAを送りたいとしますが、ボブのイーサリアムアドレスを使用して。この目的のために、ここに見えるこのアドレスで新しいイーサリアムアカウントを作成しました。メタマスクで、そのアドレスには資金がありません。このアドレスをクリップボードにコピーいsます。
そして今、エリスが最初にしなければならないことは、彼女がスマートコントラクトに1000テストADAをロックしなければならないことです。そして、データムにはイーサリアムアドレスを使用しなければなりません。そのアドレスからパラメータとしてアドレスを計算する小さなヘルパープログラムがありますが、この0xは省略します。
これがJson形式で使用しなければならないdatumです。今、このトランザクションを作成するためのスクリプトLisを使うことができます。それはonにあります。 サネット変更アドレスは彼女自身です。txnは変更しなければなりません。ですから、エリスの資金を再びチェックしなければなりません。そして彼女がこのUTXOを利用できることがわかります。そして、ここでは10ADAだと思いますので、それを1000にするためにゼロを二つ追加します。このファイルは、このイーサリアムアドレスに対応する計算されたばかりのデータムです。そして、スクリプトアドレスでチェックしましょう。
現在、そこには資金がないはずです。さて、このスクリプトを実行します。トランザクションは正常に送信されました。今は待つ必要があります。 数秒後、再度チェックできます。現在、まだ到着していません。OK、そして今、資金がこのUTXOのこのアドレスにあります。今、ボブはこれをアンロックしたいと思っています。彼がデータムに記載されたイーサリアムアドレスのコントロールを証明できれば、彼はそれをすることができます。そして彼は、彼のカルダノPKハッシュから成るメッセージに署名しなければなりません。ここにボブのPKesがあるので、それをコピーしましょう。
そして、この署名プロセスを簡単にするために非常に原始的な小さなウェブサイトを作成しました。だから、ここに私のカルダノの公開キーを貼り付けます。 公開キーハッシュ、メッセージ署名をクリックすると、メタマスクが開きます。そして、このプロダクションアプリケーションでは、ここに暗号的な文字が見えるのは理想的ではありません。それは不安全でしょう。その理由は、このPキーハッシュが単なるバイトの連続として考えられ、それらはもちろん印刷可能ではないからです。もちろん、メタマスクでもここにあるような基数16表現が見えたらより良いでしょうが、それは今私たちを悩ませるべきではありません。ですから、署名しましょう。
そして今、この小さなウェブサイトはいくつかの情報を提供します。だから、それは公開キー、またはこのイーサリアムアドレスに対応する1つの公開キー、署名、そしてただの確認のためにアドレスを吐き出します。もし私がそれをメタマスクと比較するなら、ここにあるこの1つは、実際にはここにある同じアドレスです。
OK、そして今、私は公開キー、カルダノキーハッシュ、そして署名を使って、それを使用して資金をアンロックするために使える償還者を作成しなければなりません。だから、この公開キーをコピーしましょう。償還者を計算する別のスクリプトがあります。最初の引数はこのイーサリアムの公開キーです。二番目の引数はカルダノのpapyヘッシュです。そして三番目の引数は、 メタマスクによって提供された署名です。そして、私の償還者がここにあります。
だから、それはこれらの三つのバイト文字列、イーサリアムの公開キー、カルダノの公開キーハッシュ、そしてイーサリアムの署名を含んでいます。今、ボブはトランザクションを作成できます。そのためのスクリプトも持っています。だから、それはポップの変更アドレス、担保です。私たちは、それがまだ利用可能であることを見なければなりません。ここでは、入力として、スマートコントラクトアドレスのUTXOを更新しなければなりません。
これは、私たちのスマートコントラクトに対応するスクリプトです。datumを提供する必要はありません。なぜなら、私がトランザクションを作成したときにエリスが資金をロックしたときにインラインdatumを使用したからです。これが、私たちが計算したばかりの償還者であり、ボブが署名しなければならないものです。したがって、スクリプトを実行でき、成功裏に提出されました。
今は待って、ボブが資金を受け取るのを見るだけです。今回は非常に速かったですね、資金がほぼ1000ADAがすでに到着しています。これで、PlutusV3を使用すると、たとえばイーサリアムとスムーズにやり取りしたり、Plutusクリプト内からメタマスクによって生成されたイーサリアム署名を検証したりするようなことが可能です。
PlutusV3によって提供される最後の機能は「製品の合計」と呼ばれています。これは、データタイプのネイティブサポートを提供することを意味します。これまでPlutusコアにはそれがありませんでした。したがって、構造化データを使用したい場合、何らかの方法でそれをエンコードする必要がありました。通常は「スコットエンコーディング」と呼ばれるものを使用していました。
しかし、PlutusV3では、いわゆる製品の合計を使用してデータタイプのネイティブサポートがあります。その利点は、それがはるかに効率的であることです。つまり、もはやすべてを常に評価する必要はなく、データに応じて関連する特定の分岐のみです。これは、バリデータがより速く、短くなり、メモリを消費することが少なくなり、その結果、トランザクションも安くなることを意味します。ベンチマークは、この点で30%の改善が潜在的にあることを示しています。これはまた、たとえば他の言語がPlutusスコアを目指すコンパイラのライターがそれから利益を得て、彼らのコンパイラを改善することを意味します。
デモプロジェクトに戻ると、これが私たちがデモしたバリデータで、6,463バイトを取ります。これは、古いPlutusコアバージョン1.0.0でコンパイルされています。それでは、今製品の合計をサポートする新しいものに変更し、これらのシリアライズされたバリデータファイルを再生成しましょう。また、このイーサリアムメッセージプレフィックスに使用されるこちらも変更する必要があります。もう一度サイズを確認しましょう、そしてそれはかなり短くなっていることがわかります。スクリプトのサイズを見るだけで既に目に見える利益があります。これで、PlutusV3のこの小さな概要は終わりです。
私は、あなたが私と同じくらい今後の改善についてワクワクしていることを願っています。そして、多くの人がそれをテストネットで試してくれることを願っています。どうもありがとうございました。