Nehmen wir an, ich möchte den Text der King-James-Version der Bibel Stück für Stück in die Blockkette codieren (ersetzen Sie dies durch eine verrückte Idee, um reichlich Blockplatz zu verbrauchen). OP_RETURN ist unpraktisch, da ich nur mit 80-Byte-Chunks arbeiten kann.
Mir ist aufgefallen, dass SegWit viel mehr Daten zulässt – bis zu 3 MB/Block – in Zeugendaten.
Natürlich kann ich kein V0-Zeugenprogramm verwenden, weil meine Zeugendaten das Formular annehmen müssen
<signature> <pubkey>
Ich glaube jedoch, dass ich ein V1-Witness-Programm verwenden kann. Skripte mit dieser Version werden nicht unmittelbar nach der SegWit-Bereitstellung unterstützt, aber ich bemerke dies in BIP-141 :
Wenn das Versionsbyte 1 bis 16 ist, findet keine weitere Interpretation des Zeugenprogramms oder des Zeugenstapels statt, und es gibt keine Größenbeschränkung für den Zeugenstapel. Diese Versionen sind für zukünftige Erweiterungen reserviert.
Also hier ist mein Plan. Ich werde ein Ausgabeskript des Formulars erstellen:
<0x01> <0x0000>
Dies ist ein V1-Witness-Programm. Gemäß BIP-141 soll das Witness-Programm nicht interpretiert werden, und der nachfolgende Witness Stack hat keine Größenbeschränkung.
Dann werde ich diese Ausgabe mit einer Zeugentransaktionseingabe ausgeben. Der Zeuge meiner Transaktion verschlüsselt tausend Bytes Text.
Wenn ich diese Ausgabentransaktion veröffentliche, wird sie von den Knoten weitergegeben. Sie können es nicht als ungültig ablehnen, da dies die Vorwärtskompatibilität beeinträchtigen würde, wenn V1-Skripte eingeführt werden. BIP-141 sagt nichts darüber aus, ob solche Transaktionen weitergeleitet werden sollten oder nicht (BIP-144 auch nicht), also gehe ich davon aus, dass dies der Fall sein wird.
Solange ich eine ausreichend hohe Gebühr zahle, sollte meine Transaktion schließlich geschürft werden. Ich bekomme sogar 75 % Rabatt auf die Verwendung von OP_RETURN, weil mein Text im Zeugen verschlüsselt ist.
Und das Protokoll wird mich nicht aufhalten. Oder gibt es?
Bearbeiten: Nehmen Sie zur Vereinfachung an, dass SegWit weit verbreitet ist und dass die meisten Knoten V0-Witness-Programme verstehen. Natürlich werden Nicht-SegWit-Knoten eine Witness-Transaktion nicht weiterleiten, da sie als nicht standardisiert betrachtet wird. Ich interessiere mich für das Verhalten von SegWit-Knoten.
Obwohl Ihre Transaktion nicht ungültig ist, entspricht sie nicht dem Standard. Da es kein Standard ist, wird es nicht verbreitet und als nicht standardisiert zurückgewiesen. Dies bedeutet jedoch nicht, dass es nicht in einen Block aufgenommen werden kann; es kann. Es erfordert nur, dass der Miner und alle Knoten zwischen Ihnen und diesem Miner eine Software ausführen, die nicht standardmäßige Transaktionen akzeptiert und weiterleitet. Allerdings tun dies nicht viele Nodes, sodass es Ihnen möglicherweise schwer fällt, eine gute Verbreitung Ihrer Transaktion zu erreichen.
CSᵠ