Ich versuche zu verstehen, wie ein Skript funktioniert, habe aber Probleme, ein Skript zu lesen (die Ausgabe eines Tx ... und die Eingabe eines zweiten Tx) und herauszufinden, woher der Computer (bitcoin-qt) weiß, welche Eingabe im script sind Daten und was ist ein Befehl.
Bitte korrigieren Sie meine Vermutung:
Das Skript wird von links nach rechts gelesen und ist die Verkettung der Ausgabe einer vorangehenden Transaktion mit der Eingabe einer verbrauchenden Transaktion
Eine Skriptausgabe kann nur ein entsprechendes Transaktionsskript haben, das sie verarbeitet.
Es gibt mehrere Skriptbefehle und einige sind in der aktuellen Version des Clients deaktiviert
Das Skript kann sich nicht auf Informationen von außen (Börsenticker) verlassen, sondern auf ein Oracle für diese Abhängigkeiten.
Die Skriptbefehle, die "Befehle" sind, erfordern, dass sich bestimmte Daten auf dem Stapel befinden, um richtig zu funktionieren
Es gibt "Standardskripte" (aber ich bin mir nicht sicher, ob dies bedeutet, dass nicht standardmäßige Skripte möglicherweise niemals in einen Block integriert werden.)
Wenn die verkettete Auswertung einer vorangehenden Tx-Ausgabe und einer nachfolgenden Tx-Eingabe wahr ist, dann ist die Transaktion gültig.
Frage
Das Skript wird von links nach rechts gelesen und ist die Verkettung der Ausgabe einer vorangehenden Transaktion mit der Eingabe einer verbrauchenden Transaktion
Grundsätzlich, obwohl die Skripte nicht wirklich verkettet sind. Das scriptSig wird ausgeführt, und dann wird das scriptPubKey auf dem resultierenden Stack ausgeführt. Diese Unterscheidung ist gelegentlich wichtig.
Eine Skriptausgabe kann nur ein entsprechendes Transaktionsskript haben, das sie verarbeitet.
Es gibt viele mögliche scriptSigs, die jeden scriptPubKey „lösen“ könnten, aber jede Ausgabe kann nur einmal in einer gültigen Blockchain ausgegeben werden.
Ich bin mir jedoch nicht sicher, ob dies bedeutet, dass nicht standardmäßige Skripte möglicherweise niemals in einen Block integriert werden
Sie können in Blöcke gelangen, obwohl Bergleute, die den Standard-Client verwenden, sie niemals zu ihren Blöcken hinzufügen werden.
Woher kennt der vierte ähnliche Prozessor den Unterschied zwischen Daten auf dem Stack und Befehlen auf dem Stack?
Den Daten gehen die Bytes 1 bis 78 voraus, die Pushdata-Operationen.
Pieter Wuille