Digamos que necesito almacenar y manipular la recopilación de datos complejos en el contrato inteligente. Puede haber reglas complejas que definan quién y cómo puede cambiar un elemento. Puede haber varios millones de artículos en la colección.
Hay 2 formas de implementar esa lógica
elemento de datos del contrato { bytes32 clave; valor de cadena; función Elemento de datos (bytes32 k, cadena v) { clave = k; valor = v; } } contrato DAppInterface { mapeo (bytes32 => dirección) elementos de datos públicos; función addDataItem (bytes32 k, cadena v) externo { elementos de datos [k] = nuevo elemento de datos (k, v); } }
contrato DAppInterface { estructura elemento de datos { bytes32 clave; valor de cadena; } mapeo (bytes32 => Elemento de datos) elementos de datos públicos; función addDataItem (bytes32 k, cadena v) externo { elementos de datos[k].key = k; elementos de datos[k].valor = v; } }
¿Cuál es la ventaja de usar uno u otro enfoque? ¿Cuáles son las pautas para elegir uno frente a otro?
En la mayoría de las circunstancias, las estructuras de datos, incluso las más complicadas, deberían ser estructuras.
Aquí hay algunas razones para elegir estructuras:
foo.bar()
, ), puede usar un contrato de biblioteca para hacerlo sin la complejidad adicional de crear contratos para cada instancia.Aquí hay algunas razones por las que los contratos serían superiores:
Sin embargo, estos son menos comunes. Mi consejo: pruébelo primero con estructuras y use contratos de estructuras de datos como último recurso.
sergey ilin
Mateo Schmidt
gatito