Was ist ein Shard?

Proof of Stake bringt neue Konzepte in das Blockchain-Ökosystem. Im Wörterbuch wird "Scherbe" definiert als "ein zerbrochenes Stück oder Fragment, wie von Keramik oder Glas".

Antworten (3)

Shard ist ein Konzept, das nicht so sehr mit dem Proof-of-Stake zu tun hat, sondern eher mit der Verbesserung der Skalierbarkeit. Die Idee des „Sharding“ besteht darin, den Raum möglicher Konten (auch Verträge sind Konten) in Unterräume aufzuteilen, beispielsweise basierend auf den Anfangsziffern ihrer numerischen Adressen.

Jeder Shard erhält seinen eigenen Satz von Validatoren (daher ist PoS eine Voraussetzung), und diese Validatoren müssen normalerweise nicht alle Shards validieren. Nachrichten (Transaktionen) zwischen den Konten innerhalb desselben Shards würden genauso funktionieren wie heute.

Verträge, die über mehrere Shards hinweg kommunizieren möchten, müssen einige spezielle Techniken anwenden, die auf dem Konzept der Transaktionsbelege basieren. Der entscheidende Unterschied zwischen dem direkten Aufrufen eines Vertrags und der Überprüfung der Quittungen besteht darin, dass für den direkten Anruf der Code des Vertrags ausgeführt werden muss, den Sie aufrufen, aber für die Überprüfung einer Quittung müssen Sie nur sicherstellen, dass die Quittung nicht durch etwas anderes erstellt werden kann als die gewünschte Transaktion.

Wenn Sie beispielsweise eine Zahlung in Token akzeptieren möchten, die von einem anderen Shard verwaltet werden, würden Sie die Zahlungs-ID generieren, sie dem Zahler geben, den Zahler bitten, im Remote-Shard (mit Zahlungs-ID) zu bezahlen, und „Bring you zurück' die Quittung.

Sharding ermöglicht die weitere Skalierung von Ethereum, da nicht alle Knoten des Netzwerks alle Transaktionen ausführen müssen.

Hier ist der DEVCON1-Vortrag von Vitalik Buterin, der dies erklärt: https://www.youtube.com/watch?v=-QIt3mKLIYU

Wie würde sich bei Shard-übergreifenden Transaktionen die „Quittung“ von der Bezugnahme auf den Block unterscheiden, der die gewünschte Transaktion enthält? Während jeder Knoten nicht mehr jede einzelne Transaktion für jeden Vertrag ausführen muss, wäre die Blockchain nicht immer noch eine universelle Blockchain, auf die alle Knoten Zugriff haben? Sagen wir in diesem Fall nicht effektiv, dass wir, anstatt von jedem zu verlangen, jede Transaktion zu prüfen, einer kleinen repräsentativen Population von Nodes vertrauen werden, um einen Block unabhängig zu verifizieren, solange diese Population genug Diversität aufweist, um Foulspiel zu verhindern?

Bei Ethereum arbeiten alle Miner gleichzeitig an demselben Problem. (Deshalb sagen die Leute normalerweise: "Gleichen Sie den Ethereum-Computer mit einem Commodore 64". Es braucht viel, um alles synchron zu halten.)

Meine Vermutung ist, dass Sie mit Sharding verschiedene Segmente von Minern haben könnten, die gleichzeitig an verschiedenen Problemen arbeiten, und sie würden sich irgendwie gegenseitig überprüfen, um einen globalen Konsens zu bilden. (Das erscheint mir schwierig, denn was ist, wenn Sie Ether in einem Vertrag, der auf einem Shard läuft, zu einem Vertrag schicken, der auf einem anderen Shard läuft? Rennbedingungen? Ich bin mir jedoch sicher, dass Leute, die schlauer sind als ich, daran arbeiten.)

Es scheint mir, dass die naheliegende Lösung für das Skalierungsproblem die Fragmentierung oder Spezialisierung ist. Ihr könnt es Sharding nennen, ich nenne es einfach unvermeidlich. Nicht anders als die Evolution eines biologischen Organismus, wenn man darüber nachdenkt. Ich nehme an, dass die Frage nicht so sehr lautet, was Sharding ist, sondern wie es effektiv implementiert werden kann. Mit anderen Worten, die technische Herausforderung, ein robustes Protokoll zu entwerfen, das die Essenz von Ethereum nicht beeinträchtigt.