Tengo el siguiente código de Solidity:
pragma solidity ^0.4.18;
contract ContractsRegistry {
address owner;
struct ContractInfo {
bytes32 subject;
bytes32 companyName;
string contactName;
string contactEmail;
string contactPhone;
}
mapping(address => ContractInfo) contractsMap;
address[] addresses;
Quiero mostrar el contenido completo del mapeo contractsMap
en la aplicación web. ¿Cuál sería el mejor enfoque para lograr esto? Aquí hay algunas preguntas adicionales:
¿Es posible convertirlo a representación JSON de alguna manera?
¿Debo usar otra estructura de datos?
¿Es una forma habitual de usar un contrato inteligente o nadie lo hace así?
No puede usar el mapeo si necesita acceder a "todos" los datos almacenados. El objetivo del mapeo es encontrar de una manera rápida y ágil EL registro que está buscando mediante una búsqueda rápida en la tabla hash.
El único elemento iterable práctico podría ser una matriz en la que el registro único sea su estructura previamente almacenada, pero debe insertar ese registro en la matriz al escribir el elemento de asignación único (esto en el caso de que su asignación sea realmente necesaria para su trabajo porque su capacidad para ser rápido y asegurar el ahorro de gas en la recuperación}.
Podría, de esa manera, usar la matriz solo para enumerar y el mapeo solo para buscar.
Una segunda posibilidad más rápida podría ser hacer que la asignación genere el índice en la matriz, que se puede usar para recuperar los datos sin duplicar el espacio de memoria utilizado.
Cuando llega un nuevo registro, debe escribirlo en la matriz junto con la dirección o no, dependiendo de su aplicación, recuperar el índice en la matriz y luego escribir en la asignación {dirección, índice}
al recuperar una estructura a través de una llamada a un contrato inteligente, obtendrá una matriz simple que le brinda los valores sin las claves.
Obtendrás algo como esto:["mysubject","mycompanyname","mycontactname","mycontactemail","mycontactphone"]
no tendrás un objeto mapeado. Tendrá que saber exactamente cuál es la estructura que ha recuperado y el orden de las claves definidas, para que de esta manera pueda reconstruir el mapeo del objeto dentro de su aplicación/sitio web/middleware/lo que sea que hizo la llamada
RB_
pabloruiz55
RB_
pabloruiz55
RB_
pabloruiz55