Ist Smart Contract angesichts des aktuellen Wachstumstrends des Ethereum-Netzwerks für die langfristige Nutzung/Speicherung praktikabel?

Meine Frage besteht eigentlich aus drei Teilen (ja, ich weiß über die bevorstehende Sharding-Entwicklung Bescheid):

  1. Es ist kostenlos, auf Daten des Ethereum-Netzwerks zuzugreifen (normalerweise brauchen wir den Rest der Blockchain nicht, aber wir müssen alles speichern, um auf einen winzigen Teil zugreifen zu können? Wo ist der wirtschaftliche Nutzen davon? Keine Miner-Belohnung ... ich kenne ipfs auch btw)
  2. Das Speichern von Smart Contracts und deren Verarbeitung usw. kann höhere Kosten (in Gas) erfordern, wenn die teilnehmenden Benutzer in einer Art Liste (Mapping) enthalten sein müssen. Ist es auf Dauer wirtschaftlich sinnvoll, all diese zu speichern und auch mit Gas zu verarbeiten? Denn wenn ich mich nicht irre, benötigt der aktuelle Ethereum-Knoten wirklich eine SSD (ja, es braucht einen vollständigen Knoten), um darauf zu laufen, und das kann in naher Zukunft leicht in TBs an Daten gehen. (Speicher-/Verarbeitungspreise im Vergleich zur Blockchain-Größenverarbeitung ... ist das Ethereum-Netzwerk nachhaltig / rentabel für einen sehr beliebten Smart Contract?)
  3. Wie viele Daten können wir noch einmal im Ethereum-Netzwerk speichern? Unbegrenzt? Aus der Sicht eines Einzelvertrags. Ich habe gehört, dass Sie so viele Daten speichern können, wie sie 100 GB nicht überschreiten. Ich verstehe, dass die zugrunde liegende Backend-Datenbank leveldb ist ... LEVELDB ... 100 GB? Das wird kein praktischer Speicher für IOT sein.

Bitte beantworten Sie diese nur, wenn Sie ein fortgeschrittener Programmierer sind. Vielen Dank.

Antworten (2)

  1. Ja, das Abrufen von Daten aus der Blockchain ist kostenlos. Sie können entweder einen vollständigen Knoten selbst synchronisieren (derzeit werden ca. 50 GB benötigt, je nach System/Netzwerk einige Stunden bis zu einem Tag für die Synchronisierung), einen leichten Knoten (maximal einige GB und einige Minuten für die Synchronisierung) oder Verwenden Sie infuras öffentliche Knoten (sofort, keine Synchronisierung erforderlich, aber auch vertrauenswürdig).

  2. Natürlich sollte man die benötigte Menge im Vertrag so gering wie möglich speichern. Wenn Sie die Daten nicht on-chain betreiben/abrufen müssen, sollten Sie im Allgemeinen einfach so etwas wie einen IPFS-Hash speichern und die tatsächlichen Daten auf IPFS speichern. Speichern Sie nur, was in der Kette benötigt wird. Damit sind Guthaben, Berechtigungen usw. gemeint, aber nicht Dinge wie Benutzer-Avatare oder Kommentare.

  3. Die Menge an Daten, die Sie speichern können , ist unbegrenzt. Der einzige verlangsamende Faktor ist, dass es teuer ist. Es kostet 20.000 Gas, ein 256-Bit-Wort im Speicher zu erstellen, und 5.000 Gas, um es anschließend zu aktualisieren. Bei aktuellen Gaspreisen sind das 4-5 Cent und 1 Cent. Wenn man den Gaspreisverfall ignoriert und es nur 8 Millionen Gas pro Block gibt, um 1 GB Speicher in der Kette zuzuweisen, würde es allein für die Zuweisung etwa 500.000 US-Dollar kosten, ohne die 21.000 TX-Kosten und die anderen erforderlichen Opcodes.

Zur Ergänzung der bestehenden Antwort.

  1. ... wo ist der wirtschaftliche Nutzen?

Ein paar Ideen:

  1. Sie tragen dazu bei, das Netzwerk und damit auch Ihre ETH zu schützen. Indem Sie einen ehrlichen, vollständigen (Nicht-Mining-)Knoten ausführen, fügen Sie dem Pool von Knoten hinzu, auf denen eine ehrliche Version der Konsensalgorithmen ausgeführt wird. Ihr Node ist in der Lage, Blöcke und Transaktionen zu validieren und die Verbreitung unehrlicher zu verhindern. Je gesünder das Netzwerk, desto sicherer ist es für Ihre Investitionen.

  2. Sie können Ihr eigenes Wallet betreiben. Es besteht keine Notwendigkeit, sich auf Dritte zu verlassen, unabhängig davon, wie vertrauenswürdig sie angeblich sind. Auch hier sind Ihre Gelder sicherer.

  1. ... und das kann in naher Zukunft leicht in TBs von Daten fließen.

Siehe Die Größe der Ethereum-Blockchain wird in absehbarer Zeit 1 TB nicht überschreiten, um eine Beschreibung der bestehenden Pruning- und Syncing-Modi zu erhalten. Sharding wird dabei nicht berücksichtigt. (Vitalik: „ Sharding is coming “)

  1. ... Ich verstehe, dass die zugrunde liegende Backend-Datenbank leveldb ist ... LEVELDB ... 100 GB?

Hängt von der Client-Implementierung ab. Geth verwendet LevelDB. Parität verwendet RocksDB (ja, gut, es ist ein Fork von LevelDB). Es steht Ihnen frei, eine Implementierung mit einer beliebigen Datenbank zu schreiben - die Yellow Paper-Spezifikation - soweit es sich um eine Spezifikation handelt - erwähnt die zugrunde liegende Datenbank nicht.

Das wird kein praktischer Speicher für IOT sein.

Vielleicht nicht jetzt. Pruning-Modi und Sharding helfen dabei. Ebenso wie Kryders Gesetz, wenn es auf IOT-Hardware angewendet wird.