Optimización de MVCC
Las bases de datos de Hyperledger Fabric utilizan el control de simultaneidad de varias versiones (MVCC) para evitar el doble gasto y la incoherencia de datos.
Cuando se actualiza el mismo estado, una nueva versión del registro sobrescribe la versión anterior. Si hay solicitudes simultáneas para actualizar la misma clave en un bloque, es posible que se genere un error MVCC_READ_CONFLICT.
Para reducir los errores de MVCC para las operaciones de transferencia, acuñación, grabación y retención, puede activar la optimización de MVCC para el código de cadena de token. Esta optimización solo funciona en Oracle Blockchain Platform. Por defecto, la optimización está desactivada. Para activar la optimización, complete el siguiente paso correspondiente.
- CLI: especifique el parámetro booleano
-m
o--enable_mvcc_optimization
con el comandoochain init
. Por defecto, el parámetro está definido enfalse
. Para activar la optimización, agregue-m true
a la línea de comandosochain init
. - Visual Studio Code: al crear un código de cadena, seleccione Activar optimización de MVCC en la ventana Crear código de cadena.
Para utilizar la optimización con código de cadenas creado en versiones anteriores de Blockchain App Builder, complete los siguientes pasos:
- Después de instalar la última versión de Blockchain App Builder, actualice el código de cadena como se describe en Actualización de proyectos de código de cadena en la CLI y Actualización de proyectos de código de cadena en Visual Studio Code.
- Edite el archivo
.ochain.json
en la carpeta raíz del código de cadenas para definirenableMvccOptimization
entrue
. - Sincronice el código de cadenas, que agrega la optimización y crea dos nuevas carpetas en la carpeta raíz del código de cadenas:
statedb
ytokens
. Para obtener más información sobre la sincronización, consulte Synchronize Specification File Changes With Generated Source Code y Synchronize Specification File Changes With Generated Source Code.
Otros métodos para solucionar errores de MVCC_READ_CONFLICT, como tener solicitudes de reintento de la aplicación cliente cuando se genera este error o utilizar una cola para capturar solicitudes simultáneas antes de enviarlas a la red de cadenas de bloques. Para obtener más información, consulte Read-Write set semántics en la documentación de Hyperledger Fabric.
Note:
La optimización de MVCC no funciona en redes híbridas que incluyen iguales de Oracle Blockchain Platform e Hyperledger Fabric, ni para realizar pruebas en una red local de Hyperledger Fabric. No active la optimización de MVCC en redes híbridas, ya que esto puede provocar inconsistencias entre iguales.