コンテンツにスキップ

トランザクションと状態

Aptosブロックチェーンは3種類のデータを保存します:

  • トランザクション: トランザクションは、ブロックチェーン上でアカウントによって実行される意図された操作を表します(例:アセットの転送)。
  • 状態: (ブロックチェーン台帳の)状態は、トランザクション実行の出力の蓄積、すべてのリソース内に保存されている値を表します。
  • イベント: トランザクション実行によって公開される補助データ。

Aptosトランザクションには、送信者のアカウントアドレス、送信者からの認証、Aptosブロックチェーン上で実行したい望ましい操作、送信者がトランザクション実行のために支払う意志のあるガス量などの情報が含まれています。

トランザクションは以下のいずれかの状態で終了する可能性があります:

  • ブロックチェーン上でコミットされ実行された。これは成功したトランザクションと見なされます。
  • ブロックチェーン上でコミットされたが中断された。中断コードはトランザクションが実行に失敗した理由を示します。
  • 不十分なガス、無効なトランザクション形式、不正なキーなどの検証チェックにより、トランザクション送信時に破棄された。
  • トランザクション送信後だが実行試行前に破棄された。これはタイムアウトや、アカウントに影響する他のトランザクションによる不十分なガスが原因である可能性があります。

送信者のアカウントは、コミットされたトランザクションに対してガスを請求されます。

トランザクション送信時に、送信者は送信の成功または検証失敗の理由について通知されます。

正常に送信されたが最終的に破棄されたトランザクションは、アクセス可能なAptosノードやAptosネットワーク内で可視的な状態を持たない場合があります。ユーザーは同じトランザクションを再送信してトランザクションを再検証しようとすることができます。送信ノードがこのトランザクションがまだ有効であると信じる場合、同一のトランザクションが送信されたことを示すエラーが返されます。

送信者は、進行を促進し、ダウンストリームでトランザクションの破棄を引き起こしていた可能性のあるものに対して調整するために、ガスコストを些細な量だけ増加させることを試みることができます。

ブロックチェーン上の署名されたトランザクションには以下の情報が含まれています:

  • 署名: 送信者がトランザクションに署名したことを確認するためにデジタル署名を使用します(つまり、認証)。
  • 送信者アドレス: 送信者のアカウントアドレス
  • 送信者公開鍵: トランザクションへの署名に使用された秘密認証キーに対応する公開認証キー。
  • プログラム: 任意で以下のいずれかを含みます:
    • Moveバイトコード(ピアツーピアトランザクション、または既にブロックチェーン上にあるMoveリソースの更新用)
    • Moveモジュールのバイトコード(ネットワークで初めて公開される場合)
  • ガス価格: 送信者がガス単位あたりに支払う意志のある金額(Octasで指定)。
  • 最大ガス量: トランザクションが消費可能な最大ガス量。
  • シーケンス番号: このトランザクションに対応する符号なし整数。
  • 有効期限: このトランザクションが有効である時間(Unix Epoch以降の秒数)。

概念的に、状態は(key、value)マッピングであり、keyはアドレスで、valueはMoveモジュールとMoveリソースです:

  • Move Module: Move modules contain bytecode that defines struct types and functions that operate on these types. These functions define the rules for updating the global state of the blockchain.
  • Move Resource: Move resources contain data that can be accessed according to the procedures declared in a Move module. Resources can never be copied or discarded, only moved between program storage locations.

Aptosブロックチェーンのすべてのデータはバージョン化データベースに保存されています。バージョン化データベースのバージョン番号は符号なし64ビット整数で、過去のブロックチェーン状態に対応します。

バージョン0は初期状態であり、ジェネシスとも呼ばれます。バージョン1は初期状態にジェネシス後最初のトランザクションを適用した結果です。そのようにして続いていきます。

Aptosブロックチェーンの状態は以下で構成されています:

  • アカウント: 各アカウントはアカウントアドレスによって識別され、そのアドレスでMove modulesMove resourcesを含みます。
  • 台帳状態: オンチェーンデータのMerkle tree表現。

アカウントはMove resourcesとMove modulesのコレクションです:

  • Move modules: Moveバイトコードを含み、構造体タイプとそれらのタイプを操作する関数を定義します。これらの関数はブロックチェーンのグローバル状態を更新するルールを定義します。
  • Move resources: Move moduleで宣言された手順に従ってアクセスできるデータを含みます。リソースはコピーや破棄することはできず、プログラムストレージ場所間でのみ移動できます。