Aus den Versionshinweisen zu Bitcoin Core 0.10.0 :
Standard-Skriptregeln für P2SH-Adressen gelockert
Die IsStandard()-Regeln wurden für P2SH-Einlösungsskripte fast vollständig entfernt, sodass Anwendungen jeden gültigen Skripttyp wie „n-of-m OR y“, Hash-gesperrte Orakeladressen usw. verwenden können. Während das Bitcoin-Protokoll hat diese Arten von Skripten immer unterstützt, ihre eigentliche Verwendung im Mainnet war bisher unbequem, da Standard-Bitcoin-Core-Knoten sie nicht an Bergleute weiterleiten würden, noch würden die meisten Bergleute sie in Blöcke aufnehmen, die sie abgebaut haben.
Im Wesentlichen wird die Kernsoftware nun kompliziertere P2SH-Txns weiterleiten, die zuvor als Nicht-Standard-Transaktionen angesehen wurden .
Welche konkreten Änderungen wurden vorgenommen (z. B. gelockerte Standards)? Gilt es nur für P2SH Txns? Abschließend "n-of-m OR y"
und hash-locked oracle addresses
seien beispielhaft genannt: Worauf bezieht sich das genau?
Welche konkreten Änderungen wurden vorgenommen (z. B. gelockerte Standards)?
Gavin Andresen stellte diese Pull-Anfrage , in der er die Änderung vorschlug, sowie dieses Begründungsdokument, in dem beschrieben wird, warum er die Änderung unterstützt.
Gilt es nur für P2SH Txns?
Es gilt nur für P2SH-Einlöseskripte , das ist das Skript, das ausgeführt wird, um zu sehen, ob Sie über die erforderlichen Daten verfügen, um eine an eine P2SH-Adresse gesendete Ausgabe auszugeben.
Abschließend seien „n-of-m OR y“ und Hash-locked Oracle-Adressen als Beispiele genannt: Worauf bezieht sich das genau?
n-of-m OR y
bezieht sich auf ein Skript, das nach mehreren Signaturen von einem Satz von Schlüsseln ODER einer einzelnen Signatur von einem anderen Schlüssel sucht. Wenn Alice beispielsweise ein Unternehmen besitzt und Bob und Charlie ihre Angestellten sind, kann sie Bob und Charlie erlauben, zusammenzuarbeiten, um ihre Bitcoins (2 von 2) auszugeben, oder Alice ("y") kann ihre Bitcoins selbst ausgeben .
hash-locked oracle
bedeutet im Allgemeinen, dass Sie eine Transaktion erstellen können, die nur ausgegeben werden kann, wenn der Hash einiger Daten bereitgestellt wird. Dieses PDF (Seite 24) beschreibt beispielsweise einen Hash-Locked-Vertrag mit drei Parteien: Alice, Bob und Charlie.
Alice möchte über Bob 1,00 BTC an Charlie zahlen.
Charlie generiert zufällig eine große Zahl r und hasht diese Zahl dann (HASH160), um h zu erzeugen . Der Wert r ist das Orakel und der Wert h ist die Hash-Sperre.
Charlie gibt Alice Haschisch .
(Transaktion 1) Alice erhält Bobs Pubkey und zahlt ihm 1,01 BTC in einer Ausgabe mit einem Skript wie:<Bob's pubkey> CHECKSIGVERIFY HASH160 <hash h> EQUAL
(Transaktion 2) Bob kann diese Ausgabe nicht ohne die Nummer r ausgeben , die Hash h erzeugt hat, aber er weiß, dass Charlie die Nummer r hat , also erhält Bob Charlies Adresse und zahlt ihm 1,00 BTC mit einem Skript wie:<Charlie's pubkey> CHECKSIGVERIFY HASH160 <hash h> EQUAL
(Transaktion 3) Charlie gibt die Ausgabe von Transaktion 2 aus, indem er das Signaturskript erstellt: <number r> <Charlie's signature>
Dies bedeutet, dass r in der Blockkette aufgedeckt wird.
(Transaktion 4) Bob sieht r in der Blockchain und verwendet es irgendwann, um die Ausgabe von Transaktion 1 auszugeben:<number r> <Bob's signature>
Das obige Beispiel scheint übermäßig erfunden zu sein, aber das oben verlinkte PDF verwendet es als Teil eines Mikrozahlungskanals, der es ermöglicht, Transaktionen außerhalb der Blockchain auf verteilte und wenig vertrauenswürdige Weise abzuwickeln, wodurch Bitcoin möglicherweise viel besser skalieren kann als ohne einen solchen System.
Nick Odell
IsStandard
scheint sich überhaupt nicht verändert zu haben; vielleicht meinten die entwickler darauf zu verweisenIsStandardTx
? Jedenfalls finde ich den geänderten Code nicht.Zauberer von Ozzie
n-of-m OR y
und den Oracle-Adressen