暗号資産購入
マーケット
スポット
先物
金融
特別企画
さらに
reward-center新規登録ゾーン
アカデミー用語集詳細
Ethereum
スマートコントラクト

Calldata

定義

Calldataは、イーサリアム上のスマートコントラクトとやり取りする際に、トランザクションとともに送信される読み取り専用データの一種です。これには、スマートコントラクトが関数を実行するために必要な命令と入力値が含まれますが、コントラクトによって変更または永続的に保存することはできません。

簡単に言えば、calldataはスマートコントラクトに何をすべきか、どのような情報で実行すべきかを伝えるメッセージです。

Calldataは何に使用されますか?

Calldataは主に、スマートコントラクトに情報を渡すために使用されます。これには以下が含まれます。

  • どの関数を呼び出すか
  • その関数を実行するために必要なパラメータ
  • ユーザーまたはアプリケーションからのエンコードされたトランザクションデータ

calldataはコントラクトのストレージに保存されないため、永続的なストレージよりも安価であり、実行中に一時的なデータを提供する効率的な方法となります。

Calldataの仕組み

ユーザーがスマートコントラクトにトランザクションを送信すると、そのトランザクションには実行するアクションを指定するcalldataが含まれます。イーサリアム仮想マシン(EVM)はこのデータを読み取り、要求された関数を実行し、実行が完了するとcalldataを破棄します。

例えば、ユーザーが分散型取引所でトークンをスワップする場合、トランザクションのcalldataには、トークンアドレス、スワップされる量、受取人アドレスなどの詳細が含まれます。スマートコントラクトはこの情報を読み取り、スワップを完了し、その後calldataを保持しません。

イーサリアムのスケーリングにおけるCalldata

Calldataは、イーサリアムのスケーリング、特にロールアップにおいて重要な役割を果たします。ロールアップは、calldataを使用して圧縮されたトランザクションデータをイーサリアムに投稿し、必要に応じて誰でもオフチェーンのトランザクションを検証できるようにします。

しかし、大量のデータが投稿されると、calldataは高価になる可能性があります。これが、コストを削減するためにデータブロブや外部データ可用性レイヤーのような新しいソリューションが開発されている理由です。

Calldata vs ストレージとメモリ

Calldataは、イーサリアムの他のデータロケーションとは異なります。

Calldata :読み取り専用、一時的、関数入力に使用されます。

メモリ :一時的で、実行中に変更可能です。

ストレージ :ブロックチェーンに保存される永続的なデータで、使用するのに最も高価です。

なぜそれが重要なのか

calldataを理解することで、ユーザーと開発者はスマートコントラクトがどのように命令を受け取るか、そしてトランザクションコストがなぜ異なるのかを把握できます。また、ロールアップが透明性のためにcalldataに依存する理由や、データ使用量の最適化がイーサリアムのスケーラビリティにとってなぜ重要なのかも説明します。

calldataはほとんどのユーザーには見えないかもしれませんが、スマートコントラクトとスケーリングソリューションがイーサリアム上で機能するための核となる構成要素です。