Im Moment speichern vollständige Clients des Bitcoin-Netzwerks jeden jemals generierten Block (während „dünne“ Clients stattdessen auf einen Knoten angewiesen sind, der dies tut). Dies erhöht die erstmalige Initialisierung für den Client erheblich und hat unter anderem auch erhebliche Auswirkungen auf den Netzwerk-Overhead. Wie würde sich das Netzwerk auswirken, wenn Knoten stattdessen nur die Header der meisten Blöcke in der Blockchain speichern würden, bis sie den eigentlichen Block „benötigten“?
Diese Situationen sind ziemlich häufig, wie zum Beispiel:
so dass Clients im Allgemeinen immer noch alle gesendeten Blöcke herunterladen würden, wenn sie online waren. Sie könnten jedoch:
Beachten Sie, dass normalerweise mehrere Unternehmen in die fortgesetzte Verfügbarkeit eines bestimmten Blocks „investiert“ sind, wie z. B. der ursprüngliche Miner, der möchte, dass seine verdienten 50 BTC gültig bleiben, und jeder, der Bitcoins aus Transaktionen in diesem Block erhalten hat. Eine faszinierende Konsequenz dieses Szenarios wäre jedoch, dass Bergleute dazu angeregt werden, so viele Transaktionen wie möglich in ihre Blöcke aufzunehmen (derzeit kann man minen, ohne irgendwelche Transaktionen einzubeziehen, wenn man dies wünscht). Was wären die anderen Auswirkungen auf Funktionalität und Sicherheit?
Bearbeiten: Ich suche hier nach einer besseren Antwort als "Ich denke, es würde das Netzwerk destabilisieren" - ich möchte einige geschätzte Auswirkungen auf die Blockverfügbarkeit, den Netzwerk-Overhead nach oben oder unten sehen, sobald die geringere Menge an Downloads mit Re- späteres Herunterladen usw. Einige Statistiken darüber, wie voneinander abhängige Blöcke allein sind, würden einen langen Weg zu einer soliden Antwort beitragen.
Bearbeiten 2: Im Moment geht dieses Kopfgeld in ein paar Stunden an Shadders. Aber wenn jemand detailliertere Informationen zu den Informationen hätte, um die ich in meiner ersten Bearbeitung gebeten habe, könnte er sie definitiv schnüffeln. Irgendwelche Abnehmer?
Derzeit wird an der Machbarkeitsstudie gearbeitet, um dieses Problem zu lösen. Im Wesentlichen durch die Erstellung von Hub-Knoten, die viele tausend Verbindungen verarbeiten können. Diese Hub-Knoten sind tatsächlich ein Proxy, der von einem echten Satoshi-Bitcoin-Daemon unterstützt wird. Dies wird Standard-Bitcoin-Knoten von vielen der Verbindungen befreien, die von diesen „egoistischen“ Knoten verbraucht werden, und es ihnen ermöglichen, so weiterzuarbeiten, wie sie es jetzt tun. Mining-Pools werden einen starken Anreiz haben, Hub-Knoten zu betreiben, da dies die Verbreitung ihrer generierten Blöcke beschleunigt und sicherstellt, dass sie die besten Chancen haben, so schnell wie möglich neue Blöcke zu erhalten.
Ich denke, wenn dies umfangreich würde, würde dies das gesamte Netzwerk destabilisieren. Da das niemand will, wird es nicht umfangreich.
Das Wichtigste, was der Client tut, ist zu entscheiden, was die aktuell gültige Blockchain ist. Angenommen, ich sehe zwei konkurrierende Hash-Ketten im Netzwerk. Woher weiß ich, welchem ich folgen soll? Die Antwort ist, zuerst sicherzustellen, dass beide Ketten gültig sind – eine ungültige Blockchain kann niemals gewinnen. Wie kann ich die Hash-Kette validieren, wenn ich nicht sicherstellen kann, dass jede Transaktionseingabe darin gültig die Ausgabe einer vorherigen Transaktion beansprucht? Wie kann ich das ohne eine vollständige Transaktionstabelle tun?
Angenommen, ich sehe eine Transaktion, die behauptet, jemand habe mir 50 Bitcoins geschickt. Wie kann ich feststellen, dass diese 50 Bitcoins tatsächlich gültig sind? Nun, ich muss sicherstellen, dass jede Eingabe in dieser Transaktion gültig eine Ausgabe aus einer vorherigen Transaktion beansprucht. Wie kann ich das tun, wenn ich nicht über den vollständigen Transaktionssatz verfüge?
Mit anderen Worten, ein Kunde kann nicht feststellen, ob er Geld erhalten hat, wenn er keinen Zugriff auf eine Karte aller nicht beanspruchten Transaktionsausgaben hat, die nach Transaktions-ID indexiert sind.
addnode
einen oder mehrere der Fallbacks verwenden, aber das ist bestenfalls ein schäbiger Workaround.Ist es möglich, dass es in Zukunft ein Geschäft mit Archivdienstleistungen gibt? Vielleicht müssen Leute, die ein sehr altes Bitcoin ausgeben möchten, das älter als x Jahre ist, ein paar Minuten länger warten, damit die Archivserver es nachschlagen. Ich verwende die Analogie des heutigen Bankwesens. Meine Bank hat 90 Tage Online-Aktivität. Wenn ich etwas Älteres will, muss ich es anfordern und warten.
gavinandresen
eMansipater