Warum gibt es keine OP_CODEs zum Abfragen der Blockchain und zum Abrufen von Daten auf dem Stack?

Blockchain-Daten sind unveränderlich, sodass eine einmal gültige Transaktion immer gültig ist und vollständige Knoten sie verifizieren können.

Kannst du genauer sein? Was stellen Sie sich Abfragen vor und zu welchem ​​Zweck?

Antworten (1)

Es gibt mehrere Gründe, warum ich denke, dass es eine schreckliche Idee wäre, diese zu haben.

  • Skalierbarkeit. Wenn Skripte auf beliebige Teile der Blockchain zugreifen können, würde die vollständige Validierung von Knoten einen (schnellen!) Zugriff auf die gesamte Kette erfordern. Dies ist derzeit nicht der Fall – vollständig validierende Knoten benötigen nicht die vollständige Kette, sondern nur eine kleine Datenbank mit nicht ausgegebenen Transaktionsausgaben (die weniger als 3 GiB groß ist und viel langsamer wächst).

  • Mempool-Verwaltung. Wenn die Skriptgültigkeit vom Zustand der Blockchain abhängen kann, können unbestätigte Transaktionen durch neue Blöcke ungültig gemacht werden. Es ist möglich, diese hypothetischen Blockchain-Inspektions-Opcodes so zu konstruieren, dass neue Blöcke niemals Dinge ungültig machen (z. B. nur Opcodes haben, die von einem Block abrufen, und wenn dieser Block nicht gefunden wird, einen sofortigen Skriptfehler verursachen). Aber auch in diesem Fall kann die Gültigkeit durch Reorganisationen beeinträchtigt werden. Das würde effektiv bedeuten, dass der gesamte Mempool nach jeder Reorganisation erneut validiert werden müsste.

  • Fungibilität. Bezogen auf den vorherigen Punkt ist es sogar so, dass Deeper-than-1-Reorganisationen die Gültigkeit bereits bestätigter Transaktionen beeinträchtigen können. Das bedeutet, dass Wallet-Software bei der Annahme von Zahlungen mit Transaktionen, deren Gültigkeit vom Blockchain-Status abhängt, besonders vorsichtig sein müsste, da Reorganisationen eine erhöhte Chance haben, sie auszulöschen, selbst wenn der Absender absolut ehrlich ist. Dies gilt derzeit nicht für Transaktionen - Transaktionen, die während einer Reorganisation entfernt wurden, können jederzeit in neuen Blöcken im neuen Zweig erneut akzeptiert werden.

Danke Pieter für diese ausführliche Antwort. Danke für alles, was Sie für Bitcoin tun.