Aptosのスマートコントラクトに革命を起こす
Pontem Network- Jacob Devore
2022年10月12日のAptosブロックチェーンのメインネットのローンチ以来、機能を向上させるためにいくつかの新機能が追加されました。その中でも、スマートコントラクトの開発プロセスを大きく変える、Aptosに実装されてきた最も重要な機能の1つに焦点を当てます。
重要な機能View関数
「View関数はブロックチェーンの状態を変更しません。View関数とその入力は、Moveを使用して潜在的に複雑なオンチェーン状態を読み取るために使用することができます。View関数はAptos Simulation APIのように動作し、アクセス可能な出力パスがあります。この関数は、#[view]としてタグ付けされている場合は不変であり、コンパイラが確認し、それ以外の場合は失敗します。このView関数は、/viewエンドポイント経由で呼び出すことができます。View関数の呼び出しには、入力型のパラメータと値とともに、モジュール名と関数名が必要となります。」
— Aptos (Aptos.dev View Functions Documentation)
View関数はAptosブロックチェーンに最近追加された機能で、開発者はスマートコントラクトの複雑な状態を表示するためのGET API構造を作成することができます。これまで開発者は、モジュールのリソースデータをすべて取得し、クライアントサイドで計算を行う必要があり、時間がかかり非効率的でした。しかし、View関数を使用することで、開発者はよりシンプルで合理的なプロセスで複雑な状態を取得できるようになり、時間とリソースを節約できるようになりました。この開発によって、Aptosブロックチェーンの使い勝手が大幅に改善され、開発者にとってより身近な存在となりました。
これは、ユーザーがToDo項目を保存および取得できるようにするAptosスマートコントラクトの例です。コードは「TodoStore」というデータ構造を定義しており、ToDoアイテムを保存するための文字列のベクトルを備えています。「add_todos」関数は、TodoStoreに新しいToDoアイテムを追加するためのパブリックエントリーポイントとなります。まず、ユーザーのアカウントにTodoStoreが存在するかどうかをチェックし、次に新しいToDo項目をTodoStoreのベクトルに追加します。
Aptosブロックチェーンでは、View関数の導入以前は、特定のスマートコントラクトからまとまったデータを取得し、それを呼び出し元に公開する簡単な方法がありませんでした。開発者がスマートコントラクトからデータを必要とする場合、モジュールのリソースに問い合わせを行い、クライアントサイドでデータに対する必要なコンパイルを実行する必要がありました。このプロセスはしばしば時間がかかり非効率的で、開発者はスマートコントラクトからデータを取得しコンパイルするためのカスタムコードを書かなければなりませんでした。
上記の例は、ビュー関数の導入前にAptosブロックチェーン上の特定のアカウントとコントラクトのリソースデータを取得する方法を示しています。
View関数がない場合、特定のリクエストに関係なく、与えられたスマートコントラクトに関連するすべてのデータを取得することが必要となっていました。その結果、不要なデータが取得・送信されるオーバーフェッチの問題が発生し、非効率で処理時間が遅くなることがありました。
従来のWeb/サーバーの文脈では、クエリを実行するたびにデータベース全体を取得しなければならないのと同じようなものです。
View関数の導入によって、開発者はスマートコントラクトから複雑な状態をより合理的かつ効率的に取得することができるようになりました。また、開発者はスマートコントラクトから特定のデータを返すことができる関数を定義することができ、外部のインボッカーがブロックチェーンからデータを取得するために使用できるシンプルなAPIを提供できます。この進歩によって、Aptosブロックチェーンのユーザビリティとアクセシビリティが大幅に向上し、より開発者に優しく、使いやすいものになりました。
問い合わせのたびにデータベース全体を受け取るのではなく、新しいView機能を使って、必要な特定のデータを希望の形式で受け取ることができるようになりました。