Coin Core エグゼキュータ

エグゼキュータは、トランザクションを実行して結果を保存する Coin Core コンポーネントです。エグゼキュータが実行する操作は、準備、実行、永続化の 3 つの段階に分類できます。

121

準備

準備段階では、エグゼキュータはトランザクションを実行するために必要な情報を取得し、すべての残高が最新かつ正確であることを確認します。

601

手順は次のとおりです。

  • イベントターゲットを読み込む: イベントによって必要となるすべてのターゲットは、イベント構成からロードされます。
  • ターゲットアカウントをロードする: 各ターゲットに関連付けられたアカウント残高がロードされます。
  • コインの振る舞いを実行する: 残高に保持されているコインにコインの振る舞いが設定されている場合、その残高はロードの直後には使用できないことがあります。残高を使用できるようにするには、すべてのコインの振る舞いを実行し、残高に減価されたコインまたは期限切れのコインが含まれている場合は、トランザクションが開始する前にそれらのコインを回復する必要があります。この手順では台帳エントリが生成される場合があります。

実行

実行段階では、エグゼキュータがすべてのイベントの Balance modifier を適用してトランザクションレコードを作成します。

286

手順は次のとおりです。

  • modifier を適用する:すべての Balance modifier は順番に実行され、アカウント残高を変更し、発生した変更を記述する複数の台帳エントリを生成します。すべての変更は、次のステップでの検証のために記録されます。
  • 台帳の不変式を確認する:すべての Balance modifier が適用された後、追加のステップによってすべての変更のバランスが維持されトランザクションが台帳の不変式を満たしていることを確認します (貸方と借方が等しい)。.

永続化

最後の段階は永続化です。この段階では、tamper-evidence が生成され (有効になっている場合)、データ変異がデータストアに保存されます。ここでは、永続化の段階に含まれる手順を簡単に説明します。その後、tamper-evidence を生成するプロセスについて説明します。

571

手順は次のとおりです。

  • ハッシュを生成する: tamper-evidence が有効になっていると、すべてのエントリとトランザクションがハッシュされ、後で内容を確認できるようになります。
  • tamper-evidence を生成する: tamper-evidence が有効になっている場合、トランザクション情報は監査サービスに送信され、tamper-evidence が作成され保存されます。tamper-evidence は後で検証でき、誰かが台帳を改ざんしていないかを確認できます。
  • 台帳エントリに書き込む: コインの振る舞いと Balance modifier によって生成されたすべての台帳エントリは、台帳に書き込まれます。
    *トランザクション情報を保存する: トランザクションに関する情報は、トランザクションログに保存されます。

永続化が完了すると、トランザクションが終了しトランザクション ID がユーザーに返されます。この ID は、後でトランザクション情報、台帳エントリ、tamper-evidence を取得するために使用することができます。

tamper-evidence

tamper-evidence とは暗号化アーティファクト (証拠) のことで、アーティファクトが生成された後にデータの一部が変更されていないこと、または改ざんされていないことを示すために使用できます。tamper-evidence は監査サービスによって生成されます。この文書では、tamper-evidence を Coin Core トランザクションの文脈で説明します。ただし tamper-evidence は任意のデータに対して生成することができます。
tamper-evidence の生成と検証のプロセスの概要について以下に説明します。以下で使用される「トランザクション情報」という用語は、トランザクションを構成するイベントおよび状態の突然変異のリストを指します。「トランザクションデータ」という用語は、トランザクション情報のコンパクトなバイナリダイジェストを作成するためにハッシュされたトランザクション情報を指します。

生成

tamper-evidence を生成するプロセスを次の図に示します。

765

プロセス:

ステップ 1: クライアントがトランザクションを開始し、Coin Core に公開鍵を渡します。Coin Core はトランザクションを実行し、その結果をハッシュしてトランザクションデータを作成します。
ステップ 2: トランザクションデータおよびトランザクションを要求するクライアントの公開鍵が監査サービスに送信されます。
ステップ 3: 監査サービスは鍵のペアを生成し、それをクライアントの公開鍵とともに使用して共有鍵を生成します。
ステップ 4: この共有鍵は、トランザクションデータを暗号化し、tamper-evidence アーティファクトを形成するために使用されます。

上記の手順が完了すると、監査サービスによって生成された秘密鍵が破棄され、監査サービスは後でアーティファクトを復号化または変更できなくなります。

検証

トランザクションが改ざんされていないことを検証するプロセスとは、Coin Core からトランザクションをフェッチし、トランザクションを再実行し、トランザクションデータが tamper-evidence アーティファクトの復号化された値と一致することを検証するプロセスです。

754

プロセス:

ステップ 1: トランザクション ID を使用して Coin Core からトランザクションデータを要求します。
ステップ 2: Coin Core はトランザクション情報を返します。
ステップ 3: 監査サービスから tamper-evidence アーティファクトを要求します。
ステップ 4: 監査サービスは、アーティファクト (共有キーを使用して暗号化) および監査サービスによって生成された公開鍵を返します。
ステップ 5: 検証プログラムは、ステップ 2 のトランザクション情報を使用してトランザクションを実行し、トランザクションデータを再生成します。次に、生成されたデータが tamper-evidence アーティファクト (再構成された共有キーを使用して復号化) のトランザクションデータと一致することを検証します。