Cómo manejar estructuras dentro de solidity any

¿Cuál es la posible solución para pasar una matriz de cadenas (no compatible con Solidity en este momento)? Estoy usando una matriz de estructura que es variable de estado para un contrato.

pragma solidity ^0.4.23;
contract Person {
struct edu {
string title;
string institute;
string date;
string details;
}
edu[] public education;
constructor (string[] title, string[] institute, string[] date, string[] 
details                         
) public {
for (uint i=0; i<title.length; i++)
edu memory newEdu = edu({
title : title[i],
institute : institute[i],
date : date[i],
details : details[i]
});
}
}

Respuestas (1)

Una solución alternativa puede ser usar el nuevo codificador abi. Debe usar una biblioteca alternativa como ethers.js porque web3 aún no la admite.

La solución de la vieja escuela que he usado es usar una matriz de bytes con todas las cadenas concatenadas, el primer byte es la longitud y sigue los datos de la cadena.

Si le apetece, puede usar la codificación RLP en la matriz de bytes para admitir otros tipos de datos, estará haciendo su propia codificación/descodificación.

El nuevo codificador abi no está en producción en este momento (en versión beta). ¿Le gustaría compartir algún ejemplo de código con el segundo enfoque? El tercer enfoque parece prometedor.
Recientemente encontré esta biblioteca RLP github.com/FourthState/plasma-mvp-rootchain/blob/master/… , puedes intentarlo.
Me he esforzado mucho, pero no funciona para mí, es demasiado defectuoso (la biblioteca que mencionaste). :(