Hier ist ein IPFS-Hash: QmTfCejgo2wTwqnDJs8Lu1pCNeCrCDuE4GAwkna93zdd7d
. Laut IPFS-Dokumentation sind sie base58-codiert, und ich gehe davon aus, dass Qm
es sich um Metadaten handelt (weil sie alle diese teilen).
Was ist der effektivste Datentyp, um einen davon zu speichern?
Bearbeiten: Sie beginnen nicht alle mitQm
bytes
weil sie mehr als 32 Bytes sind. Ein IPFS-Hash:
selbst spezifiziert die Hash-Funktion und die Länge des Hashs in den ersten zwei Bytes des Multihashs. In den obigen Beispielen sind die ersten beiden Bytes in Hex 1220, wobei 12 angibt, dass dies die SHA256-Hash-Funktion ist, und 20 die Länge des Hashs in Bytes ist – 32 Bytes.
Obwohl SHA2-256 32 Bytes groß ist und derzeit der häufigste IPFS-Hash ist, könnten andere Inhalte eine Hash-Funktion verwenden, die größer als 32 Bytes ist.
Sie können jeden IPFS-Hash in bytes32 speichern.
Sie benötigen das cids
npm-Paket.
Beispiel:
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()
}
Die ersten beiden Bytes sind Hash-Versionspräfixe, Sie brauchen sie also nicht.
JohnAllen