Entiendo que escribir datos en un contrato inteligente es una transacción y costará gasolina. ¿Leer datos de blockchain costará gasolina?
Por ejemplo, tengo una estructura para recopilar datos sobre una persona: nombre, edad, sexo. Ahora sembré 1000 personas durante la inicialización del contrato. ¿Puedo consultar para obtener toda la información de las Personas? ¿Puedo escribir una función para iterar a través de la asignación de personas y devolver todos los registros? Por favor, hágame saber si hay alguna manera eficiente de hacer esto y si costará gasolina.
struct Person {
uint age;
string name;
string gender;
}
mapping(uint => Person) Persons;
Mientras solo lea datos de la cadena de bloques y no cambie la cadena de bloques, no necesita realizar una transacción. La función a la que llama se lleva a cabo solo por el nodo al que está conectado y no minado, de modo que no necesita pagar gasolina. Puedes encontrar más detalles en esta respuesta .
Entonces sí, puede consultar el mapeo. Si puede iterar a través del mapeo depende. Si usa como clave un contador que se actualiza con cada Persona que coloca en el mapeo, entonces puede hacerlo. Si la clave es un número que identifica a la Persona, no será posible iterar.
Tenga en cuenta que si uint
en su mapeo es solo un contador, también podría usar una matriz de Person
. Puede encontrar más información sobre diferentes patrones de almacenamiento en esta respuesta
Si define la asignación como Public
, puede usar la función getter integrada para acceder a ella.
usuario19510
mapping
. (Necesita conocer las claves de alguna otra manera).gisdev_p
david c
Arun Kumar
gisdev_p