CardanoのMesmoがAI支援開発をPython、Go、Rust、JavaScriptにもたらす
Cardano Developers Office Hoursで、ソフトウェアアーキテクトのMateusz Czeladkaが、MesmoがAI支援によるトランザクション開発、オフラインのPlutus評価、クロス言語実行をどのように支援するかを詳述した。発表では、このライブラリの技術的な制約と改善の可能性についても検討した。
By SongMarketCap
Cardano FoundationのSenior Software ArchitectであるMateusz Czeladkaは、Fabian Bormannが主催した第84回Developers Office HoursでMesmoの技術的なウォークスルーを行った。発表では、このオープンソースライブラリが、複数のプログラミング言語にわたってCardano開発の機能を利用可能にする方法を取り上げ、とくにトランザクション処理、AI支援開発、ブロックチェーン基盤との統合に焦点を当てた。
議論はMesmoの既存の言語サポートを越えて、そのアーキテクチャの仕組み、開発者がそれで何を構築できるか、そして提示されたバージョンにどのような技術的制約が残っているかを検討した。
MesmoはCardanoトランザクション向けに共有実行エンジンを用いる
MesmoはJavaのソフトウェア開発ライブラリであるCardano Client Libを中核としており、その機能はGraalVM Native Imageを用いてネイティブの共有ライブラリにコンパイルされている。言語固有のラッパーにより、Python、Go、Rust、JavaScriptで書かれたアプリケーションは標準的なCのApplication Binary Interface(ABI)を通じてそのコンパイル済みコードにアクセスできる。
このアーキテクチャにより、開発者はJava Virtual Machineを実行せずにサポートされるCardanoの各種操作を利用できる。さらに、アプリケーションの主要なソフトウェア開発キットに欠けている可能性のある機能にもアクセスできる。
Czeladkaは、この手法はCardanoの各ライブラリ間でメンテナンススケジュールが異なることに一因があると説明した。議論の中では、GoベースのApolloライブラリにPlutus V3トランザクションのサポートがなく、それに依存するアプリケーション側でアーキテクチャの調整が必要となった時期があったことも振り返られた。
MeshJS、PyCardano、Pallas、Apolloといった確立されたツールを置き換えるのではなく、Mesmoは共有実装から選択された機能へのアクセスを提供する。
その機能には、ウォレットとアドレス管理、トランザクション署名、ステーキング操作、ネイティブスクリプト、Cardanoのガバナンストランザクションが含まれる。ガバナンス機能は、標準的なDRep委任を超え、Constitutional Committeeの投票などの専門的な操作にも及ぶ。
中核コンポーネントはTX Planで、構造化されたYAMLデータによってトランザクションを記述する。各操作を言語固有のメソッドの手続きで組み立てる代わりに、開発者はMesmoが解釈して処理するトランザクション定義を提供する。
このモデルにより、異なる言語で書かれたアプリケーションが同一の基盤となるトランザクションロジックにアクセスでき、同時に周辺インフラの制御を維持できる。
AIコーディングエージェントは構造化されたCardanoトランザクションを扱える
発表で取り上げられた分野の一つは、AI支援のソフトウェア開発に対するMesmoの適合性だった。
このプロジェクトは、プログラミングインターフェイスに関する情報を含むAIスターターパックを提供している。開発者はこれらの資料をAIコーディングツールに与え、利用可能な機能、想定される入力、サポートされるトランザクション操作の理解を助けられる。
TX Planはこのワークフローのための構造化インターフェイスを提供する。AIコーディングエージェントはYAMLによるトランザクション定義を生成でき、アプリケーションはそれをMesmoに渡してトランザクションを構築できる。
トランザクションを生成することと、それをブロックチェーン上で実行することを区別する点は重要なままだ。
Mesmoは単独ではCardanoノードに接続せず、オンチェーン情報の取得やトランザクションのブロードキャストもしない。これらの責務はライブラリを統合するアプリケーション側に属する。
たとえばアプリケーションは、サポートされるブロックチェーンデータプロバイダーから利用可能なUTXOやプロトコルパラメータを取得し、それらの入力をMesmoに渡してシリアライズ済みのトランザクションデータを受け取れる。署名後、アプリケーションは選択したネットワークサービスを通じてトランザクションを送信する。
Czeladkaは、その基盤となる実行は決定的かつステートレスであり、同じ入力を与えれば同じ結果が得られ、ライブラリが外部のブロックチェーン状態を独自に変更することはないと述べた。
発表ではオフラインのPlutus評価も検討した。Mesmoには組み込みのScalus evaluatorが含まれており、サポートされるスマートコントラクトトランザクションに必要なメモリおよびCPUの実行ユニットを算出できる。開発者は提供されるインターフェイスを通じて代替のevaluatorを統合することもできる。
この構成により、評価そのもののために別個のネットワークリクエストを必要とせず、トランザクション構築とスクリプト評価をローカルで実行できる。
アカウントの取り扱いも同様の責務分離に従う。アカウントオブジェクトはアドレス生成やトランザクション署名に必要な鍵素材を保持でき、アプリケーションの各機能間でニーモニックフレーズを繰り返し送信することを避けられる。
ただし、ネイティブライブラリの使用はメモリ管理上の配慮を伴う。とりわけ機微な暗号素材を扱う場合、ホストのプログラミング言語とネイティブコードの境界をまたいでリソースをどのように解放すべきかについて議論が交わされた。
[NEWSBREAK]
プレリリース段階の制約と将来的なWebAssembly対応の可能性
発表では、Mesmoの実装における実務的な制限点がいくつか示された。
デモで示されたバージョンのJavaScript対応はBunランタイムに依存している。Node.jsはForeign Function Interfaceに関する困難のためサポートされていない。
もう一つの制約はコンパイル済みライブラリのサイズで、およそ60 MBである。Czeladkaは、これはサーバーサイドアプリケーションにとって潜在的なトレードオフであり、パッケージサイズの要件が厳しい環境にとってはより大きな障害になり得ると述べた。
ネイティブ配布には、異なるオペレーティングシステムやプロセッサアーキテクチャに対応したビルドも必要となる。そうした組み合わせをサポートすることは、プロジェクトが拡大するにつれて保守作業を増やす。
Czeladkaは将来の代替案としてWebAssemblyについても言及した。GraalVMで開発が進むWebAssembly機能は、最終的により移植性の高い実行ターゲットを提供し、複数プラットフォームにわたって個別のネイティブバイナリを配布する必要性を減らし得る。このアプローチについて、発表ではリリース時期や本番利用の可否は確定されなかった。
そのほかの開発可能性として、ブロックチェーンデータプロバイダーとのさらなる統合、言語別のトランザクションビルダー、エラーハンドリングの改善、署名やコントラクト関連メタデータのより広範なサポートが挙げられた。
今回示された実装は、主要なトランザクション構築インターフェイスとしてTX Planを用いている。コミュニティの需要があれば、共有エンジンの上により従来型のプログラミング手法を開発することも可能だろう。
Mesmoには、実装の理解と拡張を支援することを目的としたアーキテクチャ意思決定記録やオープンソースのドキュメントも含まれている。
チームは、提供中の言語ラッパーやトランザクション機能を試す開発者からのフィードバックを求めている。貢献内容には、新たなブロックチェーンデータプロバイダー、リソース管理の改善、未対応の操作へのサポート追加などが含まれ得る。
Developers Office Hoursで披露された実装では、Mesmoは共有ネイティブライブラリを通じてトランザクションの構築、署名、ローカルでのPlutus評価を提供し、ネットワークへのアクセスや完成したトランザクションの送信はアプリケーション側の責務のままだった。