Verpflichtungswerte für Pedersen prüfen

Die Oracle Blockchain Platform Digital Assets Edition nutzt Pedersen-Verpflichtungen, um sowohl Geheimhaltung als auch Unveränderlichkeit sicherzustellen. Mit den folgenden APIs können Sie die Pedersen-Verpflichtungen anhand der tatsächlichen Rohtextwerte prüfen.

In Oracle Blockchain Platform können Daten in der umfangreichen Historiendatenbank persistiert werden, indem eine Verbindung zu einer Oracle Database hergestellt wird. Konten und Transaktionen, die als Schlüssel/Wert-Paare in der Statusdatenbank gespeichert werden, können im Laufe der Zeit in der umfangreichen Historiendatenbank verfolgt werden. Im vertraulichen Modus werden sowohl Konten als auch Transaktionen in zwei Teilen (privat und öffentlich) in der Historientabelle in der umfangreichen Historiendatenbank gespeichert.

Alle öffentlichen und privaten Daten für die Organisation sind in der Historientabelle der umfangreichen Historiendatenbank verfügbar. Der Tabellenname verwendet das folgende Format: <obp_instance_name>_<channel_name>_hist. Beispiel: CentralBank_default_hist.

Public Account-Daten (Statusdatenbank)
  • Unter der Chaincode-ID gespeichert: <chaincode_name>
  • Zugänglich für alle Netzwerkteilnehmer
  • Allgemeine Kontoeigenschaften wie org_id, token_name, balance/onhold_balance (als Pedersen-Verpflichtungen) und andere nicht vertrauliche Metadaten
Private Kontodaten (Private Datenerfassung)
  • Unter der Chaincode-ID gespeichert: <chaincode_name>$$_implicit_org_<Oracle_Blockchain_Platform_instance_name>
  • Nur für die Organisation zugänglich, die Eigentümer der privaten Datenerfassung ist
  • Sensible Felder wie balance/onhold_balance (Raw-Werte), balanceBlindingFactor, onHoldBalanceBlindingFactor und Tageslimits
Öffentliche Transaktionsdaten (Statusdatenbank)
  • Unter der Chaincode-ID gespeichert: <chaincode_name>
  • Zugänglich für alle Netzwerkteilnehmer
  • Allgemeine Kontoeigenschaften wie Absender- und Empfängerkonto-IDs, from_account_balance/from_account_onhold_balance/to_account_balance/to_account_onhold_balance/Transaktionsbeträge (als Pedersen-Verpflichtungen) und andere nicht vertrauliche Metadaten
Private Transaktionsdaten (Private Datenerfassung)
  • Unter der Chaincode-ID gespeichert: <chaincode_name>$$_implicit_org_<Oracle_Blockchain_Platform_instance_name>
  • Nur für die Organisation zugänglich, die Eigentümer der privaten Datenerfassung ist
  • Sensible Felder wie from_account_balance/from_account_onhold_balance/to_account_balance/to_account_onhold_balance/Transaktionsbeträge (Rohwerte) und die entsprechenden Blinding-Faktoren

Pedersen Commitment-APIs

Sie können die folgenden APIs verwenden, die in der Controller-Datei des Chaincodes enthalten sind, um Pedersen-Verpflichtungen zu überprüfen und mit diesen zu arbeiten.

generateCommitment
Diese Methode generiert eine Pedersen-Verpflichtung für einen bestimmten Wert und einen Blinding-Faktor. Diese Methode kann nur mit einer Token Admin oder Org Admin aufgerufen werden.
@Validator(yup.string(), yup.string())
 public async generateCommitment(value: string, blinding_factor: string) {
   await this.Ctx.Auth.checkAuthorization("ACCOUNT.processSendersAndReceivers", "TOKEN");
   const result = await this.Ctx.PedersonCommitments.generateCommitment(value, blinding_factor);
   return result;
 }
Parameter:
  • value: string: Der numerische Wert, für den die Pedersen-Verpflichtung generiert wird.
  • blinding_factor: string: Die Zufallszahl, mit der das Pedersen-Engagement generiert wird.
Rückgabewert:
  • Ein Hash-Wert, der die Pedersen-Verpflichtung für den angegebenen Wert und den Blinding-Faktor ist.
Beispiel für Rückgabewert:
"0212f6b676da244eee000a9106060cf3a3a4bb5a9b61be23dd467e557156c40be8"
addCommitment
Mit dieser Methode werden zwei angegebene Hashwerte für Pedersen-Verpflichtungen hinzugefügt. Da Pedersen-Verpflichtungen homomorph sind, unterstützen sie die Durchführung mathematischer Operationen wie Addition und Subtraktion von Verpflichtungen unter Beibehaltung der Beziehungen zwischen den zugrunde liegenden Werten. Diese Methode kann nur mit einer Token Admin oder Org Admin aufgerufen werden.
@Validator(yup.string(), yup.string())
 public async addCommitment(value1: string, value2: string) {
  await this.Ctx.Auth.checkAuthorization("ACCOUNT.processSendersAndReceivers", "TOKEN");
  const result = await this.Ctx.PedersonCommitments.add(value1, value2);
  return result;
 }
Parameter:
  • value1: string – Der erste Hashwert für Pedersen-Verpflichtungen.
  • value2: string – Der zweite Hashwert für Pedersen-Verpflichtungen.
Rückgabewert:
  • Ein Hash-Wert, der die Pedersen-Verpflichtung für die Summe der beiden angegebenen Pedersen-Verpflichtungswerte ist.
Beispiel für Rückgabewert:
"03a9c138b76e7d56f799108a46f665f53a42f55008b31e0fec071019aa5c37344a"
subCommitment
Diese Methode subtrahiert den zweiten angegebenen Pedersen Commitment-Hashwert von dem ersten. Da Pedersen-Verpflichtungen homomorph sind, unterstützen sie die Durchführung mathematischer Operationen wie Addition und Subtraktion von Verpflichtungen unter Beibehaltung der Beziehungen zwischen den zugrunde liegenden Werten. Diese Methode kann nur mit einer Token Admin oder Org Admin aufgerufen werden.
@Validator(yup.string(), yup.string())
 public async subCommitment(value1: string, value2: string) {
  await this.Ctx.Auth.checkAuthorization("ACCOUNT.processSendersAndReceivers", "TOKEN");
  const result = await this.Ctx.PedersonCommitments.sub(value1, value2);
  return result;
 }
Parameter:
  • value1: string – Der erste Hashwert der Pedersen-Verpflichtung in der Subtraktion (das Minuend).
  • value2: string – Der zweite Pedersen-Verpflichtungs-Hashwert, der vom ersten abgezogen werden soll (der Subtrahend).
Rückgabewert:
  • Ein Hash-Wert, der die Pedersen-Verpflichtung für die Differenz der beiden angegebenen Pedersen-Verpflichtungswerte ist.
Beispiel für Rückgabewert:
"0212f6b676da244eee000a9106060cf3a3a4bb5a9b61be23dd467e557156c40be8"

Konten und gesperrte Salden prüfen

  1. Verwenden Sie die folgende Abfrage, um die Pedersen-Verpflichtung für den Saldo abzurufen, bei dem es sich um öffentliche Daten handelt.
    SELECT JSON_VALUE(h."VALUEJSON", '$.balance') AS balance_commitment
    FROM "<OBP_instance_name>_<channel>_hist" h
    WHERE h."CHAINCODEID" = '<chaincode_name>'
      AND h."KEY" = '<account_id>'
    ORDER BY h."BLOCKNO" DESC, h."TXNNO" DESC
    FETCH FIRST 1 ROW ONLY;
    Beispielabfrage:
    SELECT JSON_VALUE(h."VALUEJSON", '$.balance') AS balance_commitment
    FROM "CentralBank_default_hist" h
    WHERE h."CHAINCODEID" = 'testChaincode'
      AND h."KEY" = 'oaccount~07e1c67205520da256f6edfbe9d1cb763cf13d29a3ec870137251a1344feab84'
    ORDER BY h."BLOCKNO" DESC, h."TXNNO" DESC
    FETCH FIRST 1 ROW ONLY;
    Beispielantwort balance_commitment:
    03977a92a07c00234270d41097a35ed2050bcdef02d3908a9a3cc733951b4171dd
  2. Verwenden Sie die folgende Abfrage, um den Balance- und Blinding-Faktor aus der privaten Datenerfassung abzurufen.
    SELECT 
        JSON_VALUE(h."VALUEJSON", '$.balance') AS balance,
        JSON_VALUE(h."VALUEJSON", '$.balanceBlindingFactor') AS blinding_factor
    FROM "<OBP_instance_name>_<channel>_hist" h
    WHERE h."CHAINCODEID" = '<chaincode_name>$$_implicit_org_<OBP_instance_name>'
      AND h."KEY" = '<account_id>'
    ORDER BY h."BLOCKNO" DESC, h."TXNNO" DESC
    FETCH FIRST 1 ROW ONLY;
    Beispielabfrage:
    SELECT
        JSON_VALUE(h."VALUEJSON", '$.balance') AS balance,
        JSON_VALUE(h."VALUEJSON", '$.balanceBlindingFactor') AS blinding_factor
    FROM "CentralBank_default_hist" h
    WHERE h."CHAINCODEID" = 'testChaincode$$_implicit_org_CentralBank'
      AND h."KEY" = 'oaccount~07e1c67205520da256f6edfbe9d1cb763cf13d29a3ec870137251a1344feab84'
    ORDER BY h."BLOCKNO" DESC, h."TXNNO" DESC
    FETCH FIRST 1 ROW ONLY;
    Die folgende Tabelle enthält ein Beispiel für eine Antwort:
    balance blinding_factor
    100 17629824947682234000
  3. Fügen Sie die zuvor definierte Methode generateCommitment zur Controllerdatei im Ordner src (src/controller/<Chaincode_name>.controller.ts) hinzu.
    Beispiel:
    @Validator(yup.string(), yup.string()) 
    public async generateCommitment(value: string, bf: string) {
        await this. Ctx.Auth.checkAuthorization("ACCOUNT.processSendersAndReceivers", "TOKEN"); 
        const result = await this.Ctx.PedersonCommitments.generateCommitment(value, bf); 
        return result;
    }	
  4. Übergeben Sie die Werte balance (als value) und blinding_factor (als blinding_factor) vom zweiten Schritt an die Methode generateCommitment.
    Beispiel:
    balance_commitment from step 1 :03977a92a07c00234270d41097a35ed2050bcdef02d3908a9a3cc733951b4171dd
    balance from step 2 : 100
    blinding_factor from step 2 : 17629824947682234000
     
    Invoke the method generateCommitment("100", "875628364246182")
    Response: "0212f6b676da244eee000a9106060cf3a3a4bb5a9b61be23dd467e557156c40be8"
  5. Stellen Sie sicher, dass der Wert balance_commitment aus dem ersten Schritt mit der Ausgabe der Methode generateCommitment übereinstimmt.
    Beispiel:
    balance_commitment from step 1 :03977a92a07c00234270d41097a35ed2050bcdef02d3908a9a3cc733951b4171dd
    Response From Step 4: "03977a92a07c00234270d41097a35ed2050bcdef02d3908a9a3cc733951b4171dd"
     
    balance_commitment from step 1 must equal the generateCommitment response from step 4
    LHS = RHS
    
    This verifies that the Pederson commitment is correct against the raw balance and blindingFactor
  6. Um ein Zurückstellungssaldo zu prüfen, wiederholen Sie diese Schritte für die Pedersen-Verpflichtung onhold_balance und die Werte onhold_balance und onHoldBalanceBlindingFactor.

Transaktionsmengen prüfen

  1. Verwenden Sie die folgende Abfrage, um die Pedersen-Verpflichtung für die Menge abzurufen, bei der es sich um öffentliche Daten handelt.
    SELECT JSON_VALUE(h."VALUEJSON", '$.amount') AS quantity_commitment
    FROM "<OBP_instance_name>_<channel>_hist" h
    WHERE h."CHAINCODEID" = '<chaincode_name>'
      AND h."KEY" = '<transaction_id>'
    ORDER BY h."BLOCKNO" DESC, h."TXNNO" DESC
    FETCH FIRST 1 ROW ONLY;
    Der folgende Text zeigt eine Beispielabfrage.
    SELECT JSON_VALUE(h."VALUEJSON", '$.amount') AS quantity_commitment
    FROM "AdamsCentralBank_adams_hist" h
    WHERE h."CHAINCODEID" = 'confDev'
      AND h."KEY" = 'otransaction~d5e08934fd520554162d694476bae8521803e4bf7272e8709fe34dd3eeecbfe4'
    ORDER BY h."BLOCKNO" DESC, h."TXNNO" DESC
    FETCH FIRST 1 ROW ONLY;
    Der folgende Text zeigt eine Beispielantwort.
    quantity_commitment
    036a1d71b658b592a4261bc76d28b5a08b17cf553c67de2943d769741f8f23dd63
  2. Mit der folgenden Abfrage können Sie die Menge und den Blinding-Faktor aus der privaten Datenerfassung abrufen.
    SELECT
        JSON_VALUE(h."VALUEJSON", '$.amount') AS quantity,
        JSON_VALUE(h."VALUEJSON", '$.blindingFactor') AS blinding_factor
    FROM "<OBP_instance_name>_<channel>_hist" h
    WHERE h."CHAINCODEID" = '<chaincode_name>$$_implicit_org_<OBP_instance_name>'
      AND h."KEY" = '<transaction_id>'
    ORDER BY h."BLOCKNO" DESC, h."TXNNO" DESC
    FETCH FIRST 1 ROW ONLY;
    Der folgende Text zeigt eine Beispielabfrage.
    SELECT
        JSON_VALUE(h."VALUEJSON", '$.amount') AS quantity,
        JSON_VALUE(h."VALUEJSON", '$.blindingFactor') AS blinding_factor
    FROM "CentralBank_default_hist" h
    WHERE h."CHAINCODEID" = 'testChaincode$$_implicit_org_CentralBank'
      AND h."KEY" = 'otransaction~d5e08934fd520554162d694476bae8521803e4bf7272e8709fe34dd3eeecbfe4'
    ORDER BY h."BLOCKNO" DESC, h."TXNNO" DESC
    FETCH FIRST 1 ROW ONLY;
    Der folgende Text zeigt eine Beispielantwort.
    quantity blinding_factor
    100 17721346708393996000
  3. Fügen Sie die zuvor definierte Methode generateCommitment zur Controllerdatei im Ordner src (src/controller/<Chaincode_name>.controller.ts) hinzu.
    Beispiel:
    @Validator(yup.string(), yup.string()) 
    public async generateCommitment(value: string, bf: string) {
        await this. Ctx.Auth.checkAuthorization("ACCOUNT.processSendersAndReceivers", "TOKEN"); 
        const result = await this.Ctx.PedersonCommitments.generateCommitment(value, bf); 
        return result;
    }	
  4. Übergeben Sie die Werte quantity (als value) und blinding_factor (als blinding_factor) vom zweiten Schritt an die Methode generateCommitment.
    Beispiel:
    quantity_commitment from step 1 :036a1d71b658b592a4261bc76d28b5a08b17cf553c67de2943d769741f8f23dd63
    quantity from step 2 : 100
    blinding_factor from step 2 : 17721346708393996000
     
    Invoke the method generateCommitment("100", "17721346708393996000")
    Response: "036a1d71b658b592a4261bc76d28b5a08b17cf553c67de2943d769741f8f23dd63"
  5. Stellen Sie sicher, dass der Wert quantity_commitment aus dem ersten Schritt mit der Ausgabe der Methode generateCommitment übereinstimmt.
    Beispiel:
    quantity_commitment from step 1: 036a1d71b658b592a4261bc76d28b5a08b17cf553c67de2943d769741f8f23dd63
    Response From Step 4: "036a1d71b658b592a4261bc76d28b5a08b17cf553c67de2943d769741f8f23dd63"
     
    balance_commitment from step 1 = response from step 4
    LHS = RHS
     
    This verifies that the Pederson commitment is correct against the raw quantity and blindingFactor

Kontensalden prüfen

Nachdem Sie die aktuellen tatsächlichen Werte für balance_commitment und balance und den Blinding-Faktor für das Konto wie zuvor beschrieben erhalten haben, können Sie diese Werte anhand der Transaktionshistorie validieren.

Die Beispielwerte, mit denen wir beginnen:
balance_commitment for account :036a1d71b658b592a4261bc76d28b5a08b17cf553c67de2943d769741f8f23dd63
balance for account : 4600
blinding_factor for account : 6835208149283572992000
  1. Verwenden Sie die Methode getAccountTransactionHistoryWithFiltersFromRichHistDB, um alle Transaktionen für das Konto abzurufen. Jede Transaktion hat eine eindeutige Transaktions-ID und die entsprechenden Einträge von quantity_commitment (in der Statusdatenbank) sowie Menge und Blinding-Faktor (in der privaten Datenerfassung).
    Die Beispielantwort:
    [
        {
            "transaction_id": "otransaction~5112f576c94c2d23c342479bfa37e34612414b3258a64b43cf51b920f4ff5868",
            "transacted_amount": 5000,
            "timestamp": "2025-08-12T21:05:02.000Z",
            "token_id": "USD",
            "transacted_account": "oaccount~cea6080858337b1575d6a76ed0bd07a0eacd8871e3f2f7f793729a0e4b0e8e98",
            "transacted_org_id": "CentralBank",
            "transacted_user_id": "cb_retirer_demo",
            "transacted_custom_account_id": "10109999006543",
            "to_account": "oaccount~cea6080858337b1575d6a76ed0bd07a0eacd8871e3f2f7f793729a0e4b0e8e98",
            "to_org_id": "CentralBank",
            "to_user_id": "cb_retirer_demo",
            "to_custom_account_id": "10109999006543",
            "from_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
            "from_org_id": "CentralBank",
            "from_user_id": "cb_issuer_demo",
            "from_custom_account_id": "10109999001234",
            "transaction_type": "DEBIT",
            "category": "burn",
            "balance": 45000,
            "onhold_balance": 0
        },
        {
            "transaction_id": "otransaction~862aa9d9e877d3ea209b87299ab5b12c13ed5ce43d1cf1b934043c1dd02f58f6",
            "transacted_amount": 50000,
            "timestamp": "2025-08-12T21:04:22.000Z",
            "token_id": "USD",
            "transacted_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
            "transacted_org_id": "CentralBank",
            "transacted_user_id": "cb__creator_demo",
            "transacted_custom_account_id": "10105678004567",
            "to_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
            "to_org_id": "CentralBank",
            "to_user_id": "cb_issuer_demo",
            "to_custom_account_id": "10109999001234",
            "from_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
            "from_org_id": "CentralBank",
            "from_user_id": "cb__creator_demo",
            "from_custom_account_id": "10105678004567",
            "transaction_type": "CREDIT",
            "category": "transfer",
            "balance": 50000,
            "onhold_balance": 0
        },
        {
            "transaction_id": "otransaction~d209ff46dc46f4adb42f0002377507fe995b32bc618ac919eba49141cf1b8008",
            "transacted_amount": 100,
            "timestamp": "2025-08-01T10:59:48.000Z",
            "token_id": "token",
            "category": "category value",
            "description": "description value",
            "holding_id": "ohold~cbdc~token~mint1",
            "to_account_id": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
            "to_org_id": "CentralBank",
            "to_user_id": "cb",
            "to_custom_account_id": "10109999001234",
            "transacted_account": "oaccount~3a1b1c307883c0f74473fedfa62894d510b68959c4a21c7abb9d0224151aa573",
            "transaction_type": "APPROVE_MINT",
            "balance": 100,
            "onhold_balance": 0,
            "transacted_org_id": "CentralBank",
            "transacted_user_id": "cb__creator_demo",
            "transacted_custom_account_id": "1234567jh"
        }
    ]
  2. Führen Sie die vorherigen Schritte aus, um jede Transaktionsmenge zu prüfen und sicherzustellen, dass die öffentlichen und privaten Daten synchronisiert werden. Die folgenden Beispiele zeigen Transaktionen und die Werte, die in den Berechnungen aus den vorherigen Prüfungsschritten verwendet wurden.
    Transaktion 1
    otransaction~d209ff46dc46f4adb42f0002377507fe995b32bc618ac919eba49141cf1b8008
    Werte aus den Verifizierungsschritten:
    quantity_commitment from step 1: 036a1d71b658b592a4261bc76d28b5a08b17cf553c67de2943d769741f8f23dd63
    quantity from step 2: 100
    blinding_factor from step 2: 17721346708393996000
     
    Call the method generateCommitment("100", "17721346708393996000")
    Response: "036a1d71b658b592a4261bc76d28b5a08b17cf553c67de2943d769741f8f23dd63"
     
    quantity_commitment from step 1: 036a1d71b658b592a4261bc76d28b5a08b17cf553c67de2943d769741f8f23dd63
    response from step 4: "036a1d71b658b592a4261bc76d28b5a08b17cf553c67de2943d769741f8f23dd63"
     
    balance_commitment from step 1 = response from step 4
    LHS = RHS
     
    This verifies that the Pedersen commitment is correct against the raw quantity and blindingFactor 
    Transaktion 2
    otransaction~862aa9d9e877d3ea209b87299ab5b12c13ed5ce43d1cf1b934043c1dd02f58f6
    Werte aus den Verifizierungsschritten:
    quantity_commitment from step 1: dd63036a1d71b658b592a4261bc76d28b5a08b17cf553c67de2943d769741f8f23
    quantity from step 2: 50000
    blinding_factor from step 2: 6789721346708393996000
     
    Call the method generateCommitment("50000", "6789721346708393996000")
    Response: "dd63036a1d71b658b592a4261bc76d28b5a08b17cf553c67de2943d769741f8f23"
     
    quantity_commitment from step 1: dd63036a1d71b658b592a4261bc76d28b5a08b17cf553c67de2943d769741f8f23
    Response from step 4: "dd63036a1d71b658b592a4261bc76d28b5a08b17cf553c67de2943d769741f8f23"
     
    balance_commitment from step 1 = response from step 4
    LHS = RHS
     
    This verifies that the Pedersen commitment is correct against the raw quantity and blindingFactor
    Transaktion 3
    otransaction~5112f576c94c2d23c342479bfa37e34612414b3258a64b43cf51b920f4ff5868
    Werte aus den Verifizierungsschritten:
    quantity_commitment from step 1: d28b5a08889921d71b658b592a4261bc76b17cf553c67de2943d769741f8f23dd63
    quantity from step 2: 5000
    blinding_factor from step 2: 39317721346708996000
     
    Call the method generateCommitment("5000", "39317721346708996000")
    Response: "d28b5a08889921d71b658b592a4261bc76b17cf553c67de2943d769741f8f23dd63"
     
    quantity_commitment from step 1: d28b5a08889921d71b658b592a4261bc76b17cf553c67de2943d769741f8f23dd63
    Response from step 4: "d28b5a08889921d71b658b592a4261bc76b17cf553c67de2943d769741f8f23dd63"
     
    balance_commitment from step 1 = response from step 4
    LHS = RHS
     
    This verifies that the Pedersen commitment is correct against the raw quantity and blindingFactor
  3. Wiederholen Sie die geordnete Liste der Transaktionen in der Reihenfolge, in der sie stattgefunden haben, und berechnen Sie die laufenden Summen für jede Eigenschaft. Gehen Sie für jede Transaktion folgendermaßen vor.
    1. Wenn die Transaktion eine Gutschrift (Hinzufügen) ist, kombinieren Sie die Eigenschaft quantity_commitment mit der Methode addCommitment. Wenn die Transaktion eine Lastschrift (Subtraktion) ist, kombinieren Sie die Eigenschaft quantity_commitment mit der Methode subCommitment.
    2. Wenn die Transaktion eine Gutschrift ist, fügen Sie die Eigenschaft quantity hinzu. Wenn die Transaktion eine Belastung ist, subtrahieren Sie die Eigenschaft quantity.
    3. Wenn die Transaktion eine Gutschrift ist, fügen Sie die Eigenschaft blinding_factor hinzu. Wenn die Transaktion eine Belastung ist, subtrahieren Sie die Eigenschaft blinding_factor.
    Die folgenden Beispiele zeigen die Verarbeitung von Zusagen, Menge und Blinding-Faktor.
    Verpflichtungen verarbeiten
    Starting balance_commitment: "2a4261d28b5a08889921d71b658b59bc76b17cf553c67de2943d769741f8f23dd63"
    
        For Transaction 1 using method
        addCommitment(
        "2a4261d28b5a08889921d71b658b59bc76b17cf553c67de2943d769741f8f23dd63", 
        "036a1d71b658b592a4261bc76d28b5a08b17cf553c67de2943d769741f8f23dd63"
        ) = "a1d71b658036b592a4261bc76d28b5a08b17cf553c67de2943d769741f8f23dd63"
    
        current balance_commitment: "a1d71b658036b592a4261bc76d28b5a08b17cf553c67de2943d769741f8f23dd63"
        Transaction 2 using method
        addCommitment(
        "a1d71b658036b592a4261bc76d28b5a08b17cf553c67de2943d769741f8f23dd63", 
        "dd63036a1d71b658b592a4261bc76d28b5a08b17cf553c67de2943d769741f8f23"
        ) = "b285a4261dd63036a1d71b658b592bc76da08b17cf553c67de2943d769741f8f23"
    
        current balance_commitment: "b285a4261dd63036a1d71b658b592bc76da08b17cf553c67de2943d769741f8f23"
        Transaction 3 using method
        subCommitment(
        "b285a4261dd63036a1d71b658b592bc76da08b17cf553c67de2943d769741f8f23", 
        "d28b5a08889921d71b658b592a4261bc76b17cf553c67de2943d769741f8f23dd63"
        ) = "036a1d71b658b592a4261bc76d28b5a08b17cf553c67de2943d769741f8f23dd63"
    
    Final commitment: "036a1d71b658b592a4261bc76d28b5a08b17cf553c67de2943d769741f8f23dd63"
    Verarbeitungsmenge
    starting balance: 0
    
        For Transaction 1 
        current_balance = 0 + 100 = 100
        current_balance = 100
        For Transaction 2
        new current_balance = 100 + 5000 = 5100
        current_balance = 5100
        For Transaction 3
        new current_balance = 5100 - 500 = 4600
    
    Final_balance = 4600
    Prozessblindfaktor
    starting blindingFactor: 67083177213493996000
    
        For Transaction 1 
        current_blindingFactor = 67083177213493996000 + 17721346708393996000 = 84804523921887992000
        current_balance = 84804523921887992000
        For Transaction 2
        new current_blindingFactor = 84804523921887992000 + 6789721346708393996000 = 6874525870630281988000
        current_balance = 6874525870630281988000
        For Transaction 3
        new current_blindingFactor = 6874525870630281988000 - 39317721346708996000 = 6835208149283572992000
    
    Final_balance = 6835208149283572992000
  4. Prüfen Sie nach der Verarbeitung aller Transaktionen, ob die folgenden Anweisungen wahr sind.
    • Der Wert quantity_commitment stimmt mit dem aktuellen Wert Account.balance_commitment überein
    • Der Wert quantity stimmt mit dem aktuellen Wert Account.balance überein
    • Der Wert blinding_factor stimmt mit dem aktuellen Wert Account.blinding_factor überein
    Beispiel:
    Starting balance_commitment: 036a1d71b658b592a4261bc76d28b5a08b17cf553c67de2943d769741f8f23dd63
    balance_commitment from step 3 :036a1d71b658b592a4261bc76d28b5a08b17cf553c67de2943d769741f8f23dd63
     
    Starting balance_commitment =  balance_commitment from step 3
    LHS = RHS
    The balance pederson commitment is verified.
      
    starting balance : 4600
    balance from step 3 : 4600
     
    starting balance =  balance for step 3
    LHS = RHS
    The balance verified. 
     
    starting blinding_factor  : 6835208149283572992000
    blinding_factor from step 3  : 6835208149283572992000
     
    starting blinding_factor =  blinding_factor for step 3
    LHS = RHS
    The blinding_factor is verified.