MVCC-Optimierung

Hyperledger Fabric-Datenbanken verwenden Multi-Version Concurrency Control (MVCC), um Doppelausgaben und Dateninkonsistenz zu vermeiden.

Wenn derselbe Status aktualisiert wird, überschreibt eine neue Version des Datensatzes die alte Version. Wenn nebenläufige Anforderungen zum Aktualisieren desselben Schlüssels in einem Block vorhanden sind, kann ein MVCC_READ_CONFLICT-Fehler generiert werden.

Um MVCC-Fehler bei Transfer-, Minz-, Burn- und Hold-Vorgängen zu reduzieren, können Sie die MVCC-Optimierung für Token Chaincode aktivieren. Diese Optimierung funktioniert nur auf Oracle Blockchain Platform. Standardmäßig ist die Optimierung deaktiviert. Um die Optimierung zu aktivieren, führen Sie den entsprechenden folgenden Schritt aus.

  • CLI: Geben Sie den booleschen Parameter -m oder --enable_mvcc_optimization mit dem Befehl ochain init an. Standardmäßig ist der Parameter auf false festgelegt. Um die Optimierung zu aktivieren, fügen Sie -m true zur Befehlszeile ochain init hinzu.
  • Visual Studio-Code: Wenn Sie einen Chaincode erstellen, wählen Sie im Fenster Chaincode erstellen die Option MVCC-Optimierung aktivieren aus.

Gehen Sie folgendermaßen vor, um die Optimierung mit Chaincode zu verwenden, der in früheren Versionen von Blockchain App Builder erstellt wurde:

  1. Nachdem Sie die neueste Version von Blockchain App Builder installiert haben, aktualisieren Sie den Chaincode wie unter Chaincode-Projekte in der CLI upgraden und Chaincode-Projekte in Visual Studio Code upgraden beschrieben.
  2. Bearbeiten Sie die Datei .ochain.json im Root-Ordner des Chaincodes, um enableMvccOptimization auf true zu setzen.
  3. Synchronisieren Sie den Chaincode, der die Optimierung hinzufügt und zwei neue Ordner im Stammordner des Chaincodes erstellt: statedb und tokens. Weitere Informationen zur Synchronisierung finden Sie unter Änderungen an Spezifikationsdateien mit generiertem Quellcode synchronisieren und Änderungen an Spezifikationsdateien mit generiertem Quellcode synchronisieren.

Andere Methoden zur Umgehung von MVCC_READ_CONFLICT-Fehlern, darunter Wiederholungsanforderungen der Clientanwendung, wenn dieser Fehler generiert wird, oder die Verwendung einer Queue zur Erfassung gleichzeitiger Anforderungen, bevor sie an das Blockchain-Netzwerk gesendet werden. Weitere Informationen finden Sie in der Hyperledger Fabric-Dokumentation unter Semantik für Lese-/Schreibsets.

Hinweis:

Die MVCC-Optimierung funktioniert nicht in hybriden Netzwerken, die sowohl Oracle Blockchain Platform- als auch Hyperledger Fabric-Peers enthalten, oder zum Testen in einem lokalen Hyperledger Fabric-Netzwerk. Aktivieren Sie die MVCC-Optimierung nicht in hybriden Netzwerken, da dies zu Inkonsistenzen zwischen Peers führen kann.