Lo siento si esta pregunta no parece ser lógica.
Quiero almacenar hash
un Excel
archivo en Blockchain mediante la siguiente función:
//byte fileHash;
event LogsetFileHash(byte _hashValue);
function setFileHash(byte hashValue) {
emit LogsetFileHash(hashValue);
//fileHash = hashValue; // In case storing hash value in a variable is NOT expensive, we store hash in a variable, otherwise, we save it only as an event log.
}
La pregunta es cómo puedo usar funciones matemáticas y criptográficas para convertir el contenido de mi Excel
archivo en un hash
valor, teniendo en cuenta el hecho de que el contenido de un Excel
archivo no es string/text
como un pdf
archivo.
De hecho, lo que no me queda claro es cómo usar una de estas funciones como: ¿ keccak256(...) returns (bytes32)
o sha256(...) returns (bytes32)
regresar _hashValue variable
? ¿Y también cuál es mejor usar? (si hay una diferencia en el tamaño del hash).
Puede convertir su archivo en base64 y calcular el hash de la secuencia de cadenas. Debe realizar esta operación fuera de la cadena antes de enviar la transacción al contrato inteligente.
Por ejemplo, index.js :
var fs = require('fs');
var keccak256 = require('js-sha3').keccak256;
var hash1 = hashFile('sample1.xlsx');
console.log("sample1.xlsx: " + hash1);
var hash2 = hashFile('sample2.xlsx');
console.log("sample2.xlsx: " + hash2);
function hashFile(file) {
var body = fs.readFileSync(file);
return keccak256(body.toString('base64'));
}
$ node index.js
sample1.xlsx: 6f908b0facccb5008eb05214a7406300192a59db69bf7c2d979bfa8404b094b1
sample2.xlsx: 3d4e1062085c24da7af7c955d54fc89fa5670dc74bc0521db46ec3ceb4ef9109
Luego, el hash se puede convertir en una variable bytes32:
event LogsetFileHash(bytes32 _hashValue);
function setFileHash(bytes32 _hashValue) {
emit LogsetFileHash(_hashValue);
}
Usaría el método de Greg, pero si realmente desea que la función hash esté en el contrato, puede convertir el archivo a csv o json y pasarlo al contrato como una cadena para convertirlo.
No es posible leer un archivo directamente usando un contrato. Ethereum necesita que todos puedan validar el resultado de forma independiente, esto requeriría que cada validador tenga acceso al archivo, lo cual es inviable.
Excel
archivo a csv
archivo. ¿Podría decirme cómo pasar este csv
archivo a un contrato inteligente como un archivo string
? Porque cuando csv
el archivo está abierto, tiene un formato similar al Excel
archivo. (Considere que este csv
archivo se guarda, por ejemplo, en este directorio:) C:\\example_csv_file
Gracias
José