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?
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_RETURN
Opcodes. OP_RETURN
in 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 .
Macher7
Pieter Wuille
Jakob Ford
tx_verify.cpp
einer Regel gesucht, die jedenvout
Wert von ablehnen würde0
, konnte aber keinen finden. Kann jemand darauf hinweisen, wo Bitcoin Core eine solche Transaktion ablehnen würde?