Quiero almacenar una lista de hash IPFS en la función de un contrato inteligente que expone una matriz de bytes32 [].
Estoy usando web3.js y Solidity.
He usado multi-hash y/o algunos ejemplos usando bs58, pero el valor que recuperé y convertí del contrato inteligente me da un hash diferente al de IPFS.
¿Tienes algún consejo para compartir conmigo?
Gracias
Dicho
Ok, lo obtuve gracias a esta gran muestra: https://bitbucket.org/edmundedgar/realitycheck/src/3ec966f1cf253c59caa224ee0e8e0e0d1037741d/assets/js/scripts/main.js?at=master&fileviewer=file-view-default#main.js -407
Utilicé estas funciones y pude almacenar/recuperar mi hash IPFS a/desde bytes32 Tipo de datos Solidity:
function ipfsHashToBytes32(ipfs_hash) {
var h = bs58.decode(ipfs_hash).toString('hex').replace(/^1220/, '');
if (h.length != 64) {
console.log('invalid ipfs format', ipfs_hash, h);
return null;
}
return '0x' + h;
}
function bytes32ToIPFSHash(hash_hex) {
//console.log('bytes32ToIPFSHash starts with hash_buffer', hash_hex.replace(/^0x/, ''));
var buf = new Buffer(hash_hex.replace(/^0x/, '1220'), 'hex')
return bs58.encode(buf)
}