Wie speichert man Bilder effizient in der Ethereum Blockchain? [Duplikat]

Ich halte es nicht für sinnvoll, das „Gesamtbild“ auf der Blockchain zu speichern. Ich dachte, es wäre besser, einen Verweis auf dieses Bild zu speichern, aber das bedeutet, dass sich die eigentliche Bilddatei immer noch in einem "zentralisierten Speicher" wie s3 befindet.

Welche Möglichkeiten gibt es, ein Bild in der Blockchain zu speichern? Und was sind die derzeit „bekannten Wege“, sie effizient zu speichern?

Ich habe Projekte wie Filecoin, Storj, Tiesdb und viele mehr gesehen, bin mir aber immer noch nicht sicher, was eine ideale Lösung wäre. Ich möchte ein Blockchain-basiertes Bilderalbum erstellen.

Mögliche Antwort auf die Frage.
@Grady Wenn meine Ans eine Richtung vorgibt, bitte als akzeptiert markieren.

Antworten (1)

Ja, du hast Recht. Das Speichern des gesamten Bildes in eth ist sehr kostspielig. Ich empfehle Ihnen, Kettendatenspeicher wie IPFS oder Swarm abzuhaken (die Ethereum-Community empfiehlt dies normalerweise).

Es sind alternative APIs verfügbar. Erwähnt werden zwei beliebte Dienste, die von den meisten Entwicklern verwendet werden. Beide werden von Kettenspeichern vertrieben.

Ich empfehle Ihnen, den folgenden Link einmal zu überprüfen.

Kommen wir zu Ihrer Frage. Dies ist ein Beispiel dafür, wie ein Verweis auf ein in IPFS gespeichertes Bild in einem Ethereum Smart Contract gespeichert wird.

contract ImageInfo{
   mapping(address=>Image[]) private images;
   struct Image{
      string imageHash;
      string ipfsInfo;
   }
   function uploadImage(string hash, string ipfs) public{
       images[msg.sender].push(Image(hash,ipfs)); //
   }
}

Der obige Code dient nur zur Veranschaulichung. Ändern Sie die Datenstruktur gemäß Ihren Anforderungen. Ich habe keine Sicherheitsüberprüfungen hinzugefügt.

Die Idee ist, das Bild zuerst in ipfs/swarm/irgendeinen anderen Off-Chain-Datenspeicher hochzuladen, um den Wert zu berechnen, der den Hash des Bildes zum Vertrag berechnet. Laden Sie Daten (Bild) von Offchain herunter und berechnen Sie den Hash und überprüfen Sie den im Vertrag gespeicherten Hash.

Ich bin der Meinung, dass die obige Lösung eine der besten Möglichkeiten zum Umgang mit Bildern ist, da alle Daten mithilfe einer serverlosen Architektur verteilt werden.