Aquí hay un hash de IPFS: QmTfCejgo2wTwqnDJs8Lu1pCNeCrCDuE4GAwkna93zdd7d
. De acuerdo con los documentos de IPFS, están codificados en base58 y supongo que Qm
son metadatos (porque todos comparten esto).
¿Cuál es el tipo de datos más efectivo para almacenar uno de estos?
Editar: no todos comienzan conQm
bytes
porque son más de 32 bytes. Un hash de IPFS:
especifica la función hash y la longitud del hash en los dos primeros bytes del multihash. En los ejemplos anteriores, los primeros dos bytes en hexadecimal son 1220, donde 12 indica que esta es la función hash SHA256 y 20 es la longitud del hash en bytes: 32 bytes.
Aunque SHA2-256 tiene 32 bytes y actualmente es el hash IPFS más común, otro contenido podría usar una función hash de más de 32 bytes.
Puede almacenar cualquier hash de IPFS en bytes32.
Necesitará cids
el paquete npm.
Ejemplo:
export function IpfsHashToBytes32(hash: string)
{
return new CID(hash).toV0().multihash.subarray(2)
}
export function bytes32ToIpfsHash(bytes: Uint8Array)
{
return new CID(new Uint8Array([18, 32, ...bytes])).toString()
}
Los primeros dos bytes son prefijos de versión hash, por lo que no los necesita.
Juan Allen