Speichern strukturierter Daten in einer privaten Blockchain

Die Aufgabe.

Entwickeln Sie eine verteilte Registrierung in einem Blockchain-Netzwerk, das öffentliche Daten bestimmter Objekte speichern kann.

Zum Beispiel:

{
  "id": 123456789012345,
  "title": "Big black box (not more than 100 characters)",
  "description": "not more than 255 characters",
  "serial_number": "SN4567RT12",
  "type": 4,
  "size": 50,
  "date_of_manufacture": 1531230018,
  "owner_local_id": 99856
}

Informationen könnten in Zukunft um Daten wie diese ergänzt werden:

{
  "id": 123456789012345,
  "arrived_to": "not more than 255 characters",
  "date": 1531230018
}

Anfangsdaten und weitere Ergänzungen sollten ein gemeinsames Objektprofil mit Historie aller Aktionen formulieren.

Das Hinzufügen neuer Objekte oder das Ergänzen vorhandener Objekte kostet eine Gebühr.

Ich habe ein privates Netzwerk mit Clique PoA auf wenigen VPS. Ich schreibe Daten in das Transaktionsfeld inputData in JSON. Für die Suche habe ich einen Indexer geschrieben, der Daten von Transaktionen zur lokalen MySQL-Datenbank sammelt.

Ist das normal oder gibt es bessere Möglichkeiten, Daten zu speichern und zu manipulieren?

Wie kann ich eine Gebühr für das Hinzufügen neuer Objekte per Smart-Contract festlegen oder in den Transaktionsalgorithmus integrieren?

Die geschätzte Menge der in der Produktion befindlichen Objekte beträgt etwa 10-50 Mio. pro Jahr

Antworten (1)

Ich finde, dass es nicht wirklich sinnvoll ist, die Blockchain zu verwenden, um so große Datenmengen zu speichern. Die Kosten wären unerschwinglich! Außerdem ist die Blockchain nicht wirklich dazu gedacht, wie eine Datenbank verwendet zu werden.

Daher ist es möglicherweise besser, IPFS/Swarm zum Speichern der Daten zu verwenden und den IPFS-Hash als Aufzeichnungshalter zum Smart Contract hinzuzufügen.

Hier ist ein großartiger Leitfaden , der Ihnen hilft zu verstehen, wie Sie IPFS nutzen können, um die Leistung der Blockchain für die Speicherung zu verstärken.

Nur zu Ihrer Information, die maximale Nutzlast, die eine Transaktion haben kann, beträgt 32 KB
Danke für deine Antwort! Ich habe darüber nachgedacht, IPFS für die Speicherung zu verwenden, aber wenn Sie für jedes Objekt eine einzelne Datei verwenden, haben wir schließlich eine riesige Menge kleiner Dateien, die für die Suche nach Parametern indiziert werden müssen. Ich denke, das könnte in Zukunft ein Problem sein, oder? Kann es sinnvoll sein, OrbitDB zu verwenden, das auf IPFS aufbaut oder so aussieht? Was denken Sie? Es ist sehr wichtig, dass Sie nicht nur Daten speichern, sondern auch die Möglichkeit haben, diese Daten zu verwenden.
Ja, OrbitDB sieht vielversprechend aus. Aber ich habe es noch nicht benutzt. :)