Dürfen Bitcoin-Transaktionen keine Ausgaben haben (dh alle Eingaben werden zu Transaktionsgebühren)?

Ich interessiere mich für die mögliche Verwendung der Bitcoin-Blockchain (oder einer anderen Altcoin-Blockchain) als allgemeines verteiltes Hauptbuch, was bedeutet, dass sie nützlich ist, um andere Informationen als eigentliche Münztransaktionen zu verfolgen. Eine Voraussetzung dafür scheint die Zahlungsfähigkeit für Transaktionen zu sein, deren Hauptzweck nicht darin besteht, Bitcoins von einer Adresse zur anderen zu verschieben. Können Bitcoin-Transaktionen also keine Ausgaben auflisten und somit alle Eingaben als Transaktionsgebührenbelohnung für den Miner hinterlassen?

Antworten (1)

Nein. Wenn Sie eines erstellen, wird es nicht von Bitcoin Core weitergeleitet oder abgebaut. Wenn es in einen Block gerät, wird es zurückgewiesen. Aus dem Quellcode für Bitcoin Core ( tx_verify.cpp:164):

if (tx.vout.empty())
    return state.DoS(10, false, REJECT_INVALID, "bad-txns-vout-empty");

Sie können jedoch ein Vout mit 0 Satoshis erstellen. Das ist keine "Standard"-Transaktion, daher wird sie standardmäßig nicht von der Software abgebaut. Wenn es jedoch in einen Block gerät, ist es gültig.

Es gibt einen anderen Weg, wie Sie es tun könnten. Verwendung des OP_RETURNOpcodes. OP_RETURNin einer Transaktionsausgabe zwingt jeden, der auf diese Ausgabe verweist, sie nicht auszugeben (das Skript kehrt zurück und die Transaktion ist ungültig). Obwohl die Ausgabe existiert, ist sie nachweislich nicht auszugeben .

Wenn jedoch ein benutzerdefinierter Bergmann eine Transaktionsgebühr von 100 % in einen Block steckt, wird dies akzeptiert und neue Blöcke werden darauf aufgebaut.
@makerofthings7 Das ist nicht richtig. Es ist eine feste Netzwerkregel, dass Transaktionen mindestens eine Eingabe und mindestens eine Ausgabe haben. Das Einfügen einer Transaktion ohne Ausgaben in einen Block würde diesen Block ungültig machen. Unter Bezugnahme auf die obigen Ratschläge können Sie jedoch tatsächlich Ausgänge mit 0 Satoshi haben. Das Netzwerk leitet solche Transaktionen auch nicht weiter, aber sie sind innerhalb von Blöcken gültig.
Ich habe gerade nach tx_verify.cppeiner Regel gesucht, die jeden voutWert von ablehnen würde 0, konnte aber keinen finden. Kann jemand darauf hinweisen, wo Bitcoin Core eine solche Transaktion ablehnen würde?