Warum ist mein raw-Transaktion nicht-kanonischen, immer Fehler -25 und abgelehnt?

Ich versuche port TX-generation-Logik, um eine andere (und unbeliebt) Sprache. Ich habe gegen mein Kopf gegen diese viel zu lange und sollte haben ging Weg, aber, nun, Sie wissen, Schließung und Sturheit.

Hier ist mein code bisher.

Blockchain.info, Elektrum, und Bitcoin Core alle Dekodieren mein Versuch einer TX zu etwas sinnvollem suchen, wie:

{
"txid" : "49c210ae472c5b5e39447e1f6d9bc020cd0f0075cc03d919afb0857a964e1f41",
"version" : 1,
"locktime" : 0,
"vin" : [
{
"txid" : "b097384c42a3be2730db3e3720a1806c76172b6b62b2b5ee007c2c6fd295cadf",
"vout" : 1,
"scriptSig" : {
"asm" : "30460221009f478737296e39bbcff2ef7c6f013acc25bea75941acd8573bcea83ca910018b022100e9bff518297fec344d6e7e42cabc5ec793c4be507af68210bdde803a8a2958ed0104d8f39341451e2e66a00ef010c815f1284bc5e3a187476aab319b2d127b7e219c9b9e68bff311c63474242a9baab34f7ddec05de2c45bd140a74a64621ccb42cb",
"hex" : "4930460221009f478737296e39bbcff2ef7c6f013acc25bea75941acd8573bcea83ca910018b022100e9bff518297fec344d6e7e42cabc5ec793c4be507af68210bdde803a8a2958ed014104d8f39341451e2e66a00ef010c815f1284bc5e3a187476aab319b2d127b7e219c9b9e68bff311c63474242a9baab34f7ddec05de2c45bd140a74a64621ccb42cb"
},
"sequence" : 4294967295
}
],
"vout" : [
{
"value" : 0.00439999,
"n" : 0,
"scriptPubKey" : {
"asm" : "OP_DUP OP_HASH160 7847eb9e366653aeb8857d541236fe4fd90c57e7 OP_EQUALVERIFY OP_CHECKSIG",
"hex" : "76a9147847eb9e366653aeb8857d541236fe4fd90c57e788ac",
"reqSigs" : 1,
"type" : "pubkeyhash",
"Adressen" : [
"1BxzF8rgXtuiPuSN8azdMJgryzQSWt4Uoj"
]
}
}
]
}

Versuchen sendrawtransaction in Bitcoin Core, bekomme ich "error -25". Lesen durch andere StackExchange Beiträge und Googeln, die möglichen Ursachen aufgeführt sind:

"Beim Lesen der source-code, dieser Fehler wird zurückgegeben, wenn AcceptToMemoryPool ausfällt, aber nicht, wenn es fehlschlägt, weil die Transaktion ist ungültig. Hat debug.melden Sie emittieren alles, wenn dies geschieht?"

"Sie bekommen dieses obskure RPC-Fehler, wenn dein tx ist mit Ausgängen, die bitcoind noch nie gehört." Nichts wird in ~/.bitcoin/debug.log.

Zu senden versuchen, es mit blockchain.info's slash pushtx service (oh, come on, ist es nicht ernsthaft eine weiße Liste für Seiten, die ich verlinken können?), Ich erhalte die Meldung "Script resultierte in einem nicht-true, stack: []", was bedeutet, dass ich einen Fehler in meinem Unterzeichnung Logik irgendwo.

Ich habe ging durch diese:

Und andere, einschließlich der verschiedenen Ruby -, Python -, Java-und JavaScript-Implementierungen, aber ich brauche mehr als 10 Ruf zu post mehr als 2 links. Ich kann nicht für das Leben von mir herauszufinden, wo ich bin, abweichend.

Ich kenne Teile von diesen sind veraltet. Der private key ich fange an mit (aus Elektron) ist nicht gekennzeichnet als komprimierte (33 bytes nach DecodeBase58Check die Letzte wird 0x01), so dass der publicKey in die Transaktion, die ich versuche zu zeichnen, sollte nicht komprimiert werden, entweder.

Den TX, den ich versuche zu verbringen (b097384c42a3be2730db3e3720a1806c76172b6b62b2b5ee007c2c6fd295cadf, zweite Ausgabe, aka 1) mit dieser TX hat einen output-script, das Zahlen zu Public Key Hash (d9495c762aed3dba15eec648beb55a8a43b8d1bd) nach blockchain info. Die volle scriptPubKey der prevout ist:

OP_DUP OP_HASH160 d9495c762aed3dba15eec648beb55a8a43b8d1bd OP_EQUALVERIFY OP_CHECKSIG

Meine privaten Schlüssels, entschlüsselt von WIF und führen Sie durch ecdsa::pub_from_priv(), ecdsa::pub_encode(), entspricht dieser Wert.

Wie es scheint, immer die richtigen Sachen gehasht, bevor der hash wird unterschrieben in der Signatur wäre der harte Teil. Ich bin Anhängen von 0x01 auf die Signatur, nachdem Sie es aus der ecdsa::Melde(). Bevor das TX-signiert ist, wird es 01000000 angehängt. scriptSig (das Script in den input für die TX, die ich Baue) ist "OP_DUP, OP_HASH160, PUSHDATA, Bitcoin Adresse (public key hash), OP_EQUALVERIFY, OP_CHECKSIG", bevor es unterzeichnet ist, dann wird es ein varstr des sig und der pubKey, und decodiert, um vernünftig aussehende bytecode:

scriptSig:

0: OP_PUSHDATA 0x304602210094c538663c149f40929bb787d6174104a694181d063943a745e558b17d09e276022100b1812105ea6d7a8206c9019303a6459a9a2b2524b364debe69405b5d8b90c6c301
74: OP_PUSHDATA 0x04d8f39341451e2e66a00ef010c815f1284bc5e3a187476aab319b2d127b7e219c9b9e68bff311c63474242a9baab34f7ddec05de2c45bd140a74a64621ccb42cb

scriptPubKey:

0: OP_DUP
1: OP_HASH160
2: OP_PUSHDATA 0x7847eb9e366653aeb8857d541236fe4fd90c57e7
23: OP_EQUALVERIFY
24: OP_CHECKSIG

Mit dem alten scriptPubKey als scriptSig ist angenähert und geht von einem einfachen pay-to-Unterschrift, sondern tatsächlich ziehen die genaue scriptPubKey aus der TX-gezeichnet wird, auf, aber in diesem einfachen Fall, Sie scheinen zu passen.

Hier ist das rohe, (falsch?) unterzeichnet TX:

0100000001dfca95d26f2c7c00eeb5b2626b2b17766c80a120373edb3027bea3424c3897b0010000008b48304502202647239b48610693967a24c7c976f0df903891113c56f50b6e3368c3f73eefb0022100e372ab8bf76ab35cba1ce6c1890fb6b27bb4d6d54f080180b46a6ecc2ae09248014104d8f39341451e2e66a00ef010c815f1284bc5e3a187476aab319b2d127b7e219c9b9e68bff311c63474242a9baab34f7ddec05de2c45bd140a74a64621ccb42cbffffffff01c0b60600000000001976a9147847eb9e366653aeb8857d541236fe4fd90c57e788ac00000000

Hier der code:

https://gist.github.com/scrottie/15f2fca963d164306dcb

PrivateKey auf Anfrage (es gibt $1 in es).

Wenn jemand in der Lage, dump, und herauszufinden, wo ich schief gelaufen ist, ich würde ewig dankbar sein.

+176
rodges 30.01.2013, 11:04:33
17 Antworten

Ich habe meinen pc formatieren, also heruntergeladen habe ich eine BTC-wallet auch auf meinem tablet. Gibt es eine Möglichkeit zum senden von BTC ohne Provisionen?

+951
karsten314159 03 февр. '09 в 4:24

Hier ist, wie den export von privaten Schlüsseln auf blockchain.info: https://medium.com/@bL4nkcode/how-to-export-blockchain-infos-private-key-2ac84057d2d1

+784
M Taitano 20.02.2010, 15:03:40
"Know your customer", die sich auf Identität prüft der Benutzer erforderlich, der Unternehmen.
+728
eric f 26.08.2012, 22:28:59
Der Benutzer Aktiviert Softfork ist eine alternative Aktivierungsmethode für softforks durch flag-Tag anstelle der version bits Ansatz.
+719
David Vandiver 16.08.2010, 12:05:21

Davon ausgehen, dass böswillige Benutzer machen will bitcoins durch mining. Ein Benutzer kann eine Transaktion erstellen (lassen Sie uns annehmen, dass es eine Reale Transaktion) und dann einen block erstellen, mit dem einzigen Transaktion. Der böswillige Benutzer arbeitet dann auf die Suche nach dem richtigen nonce für die Sperrung vor der Freigabe der Transaktion mit dem Netzwerk. Sobald der Wert gefunden ist, der böswillige Benutzer löst die Transaktion. Aber er/Sie bereits über einen gültigen proof of work und hat den Vorteil über alle anderen Bergleute. Deshalb die böswillige Benutzer können die Belohnung erhalten.

Ist dieses Szenario möglich zu geschehen?

+660
Viledio Cailo 24.06.2010, 11:19:44

Es war eine Ankündigung gesendet, die von Coinbase auf der 27th erklären, dass Sie nicht ehrt BCH. Coinbase effektiv geschluckt angeschlossenen BCH, aber sollte die Ehre Ihrer BTC. Ihre Transaktion kann nicht storniert werden, nur weil die Kette noch nicht fertig, überprüfen Sie es. Darüber hinaus, da der replay-Sicherheit in der BCH blockchain Ihren transfer schon passiert und das BCH wird für das Konto erstellt, dass der BTC übertragen wurde, nämlich Coinbase Konto, was wiederum nicht erkennen, BCH.

+620
Jonathan Good 15.05.2018, 12:57:37

Es scheint mir, dass jede neue Münze eingeführt, Sie Liste source code in Github. Ist das üblich in der Branche?

+561
Luca Giorgi 16.08.2012, 16:36:51

Ein miner kann mir einer ansonsten komplett leeren block, und noch sammeln die Auszeichnung von 12,5 BTC für den Abschluss eines Blocks.

+510
hpU 28.09.2014, 05:17:06

Nein, wird die Transaktion nicht genehmigt. Gibt es Unterschiede in der Transaktion format. Transaktionen werden nicht gültig zwischen 2 Gabeln.

+476
altagir 15.05.2019, 10:01:54

Ich arbeite als freiwilliger für eine steuerbefreite Organisation in den USA. Wir sind derzeit die Annahme von Spenden in bitcoin aber nicht die Erteilung von Quittungen für die Spenden. Beginnen möchte ich ausstellen von Quittungen. Gibt es irgendwelche juristische Beratung online über diese? Ich habe nicht in der Lage, etwas zu finden.

+385
alj 06.02.2017, 00:23:39

[--------------

Update: Offenbar Kaution in Bar bei Barclays ist nicht mehr möglich.

Zum Glück, Den Mt. Gehex hat eine Kaution in Bar wird die Methode mit Barclays. Es erfordert eine physische Reise, auf der bank, glaube ich, aber mindestens Sie Bargeld abheben und dann einzahlen Geld in einem einzigen Besuch zu Ihrer bank.

Es ist eine Gebühr von 1,5% für die Hinterlegung von Bargeld.

-----------------]

Wenn Sie die übertragung einer größeren Menge (z.B., vielleicht mehr als £300 oder so) möchten Sie vielleicht zu tun, eine elektronische überweisung und die überweisung Gebühr statt.

Sie können das auch aus Mt. Gehex (Finanzierung) als auch.

Dann, wenn Ihre Fonds sind in Mt. Gehex Sie einfach diese Mittel zu verwenden, um eine Bestellung zum Kauf von bitcoins, und dann ziehen Sie Münzen, um Ihre eigenen Geldbeutel, wenn Sie fertig sind trading.

[Update: Auch BlockChain.info/wallet jetzt bietet der Kauf von bitcoins mit Barclays Pingit:

+371
Intara Tanlamai 10.05.2013, 12:00:32

Ich Frage mich, warum MtGox ist ein japanisches Unternehmen. Der Gründer war in der amerikanischen, und der aktuelle Besitzer ist Französisch, so gibt es einen besonderen Grund, warum Japan war attraktiv für Sie?

+330
Kutik 19.08.2011, 00:13:36

Beim ausführen von Ardor 2.2.1 auf Windows 10, ich bin immer "nicht ausgeführt werden Kann die JVM" - Fehler. Auch versuchte es mit der Befehlszeile und gehen zu:

C:\Program Dateien\Ardor

und laufen laufen.Fledermaus

Es erscheint nur ein Fenster öffnen und schließt.

+276
Air1 08.10.2019, 04:23:43

Fegen umfasst den Import eines privaten Schlüssels, dann senden Sie das gesamte Gleichgewicht, zu einer neuen Adresse in Ihrer Brieftasche über eine neue Transaktion. Dies würde schützen Sie Ihre paper wallet ist bitcoins gestohlen werden, wenn jemand anderes jemals Zugriff auf Ihre paper wallet, oder erhält Zugriff auf Ihre paper wallet in die Zukunft.

Ich würde gerne wissen, alle die nitty-gritty Schritte mit Bitcoin-Qt.

+169
Jojodwolf 19.09.2014, 11:01:31

Ich habe einige bitcoins und äther an Blockchain.info und ich bin wirklich Angst, Sie zu verlieren.

Wie kann ich am besten sichern? Jetzt habe ich ein Papier mit dem code wieder meine Brieftasche, aber meine Münzen sind noch gespeichert Blockchain.info.

Wäre es nicht besser, speichern Sie Sie komplett offline? Wie mache ich das? Was ist der Unterschied von der Ablage an Blockchain.info und halten Sie ein Papier mit dem code zum wiederherstellen der Brieftasche?

Ich denke, wenn ich meine Münzen an Blockchain.info ich habe Vertrauen, dass Sie nicht in Konkurs gehen, Sie nicht stehlen meine Münzen, und niemand hacks Ihren Servern und stehlen meine Münzen.

Also, ich denke, es ist mehr sicher zu speichern Sie körperlich, aber ich verstehe nicht, wie Sie gespeichert sind, physisch. Von meinem Verständnis, ich nehme einfach ein code, der kann überprüfen, dass ich bin der Besitzer der Münzen. Also, wenn ich in die Zukunft sehen wollen, meine Münzen habe, kann ich ein online-wallet mit dem physisch-code?

Was ich im Grunde will, ist die Speicherung meiner Münzen offline, aber habe eine Brieftasche, wo ich genau sehen kann, wie viele Münzen die ich zugreifen kann mit den offline gespeicherten code (ohne den code zu einer online-Geldbörse).

Ich habe auch angeschaut Ledger, aber Sie sind sehr teuer und ich weiß nicht wirklich sehen, den Wert in Ihnen, da ich immer noch zum speichern eines Codes auf ein physisch gedrucktes Papier, um sicher zu sein, kann ich immer noch Zugriff auf die Münzen, falls ich brechen oder verlieren den Ledger.

+131
Sn3akyP3t3 24.06.2014, 12:58:22

Wenn es ein P2SH Ausgabe und das einlösen Skript ist OP_TRUE dann ist es ein jeder-kann-verbringen, und Sie nicht haben, um nichts in der scriptSig

+86
Ciofira 07.06.2019, 01:03:53

Knoten mehrere Datenbanken, die Sie nicht speichern nur die blockchain und Scannen Sie es jedes mal, wenn es etwas tun will. Diese Datenbanken enthalten eine block-index (so dass er weiß, wo zu finden, ein block) und der UTXO gesetzt. Die Datenbank mit den UTXO Satz ist hier von Bedeutung. Die Datenbank enthält die Bezeichner für jedes einzelne UTXO und die UTXO selbst. Ein UTXO besteht aus einer Ausgaben-Bedingung (bekannt als " scriptPubKey) und einen Betrag.

Ein Knoten beginnt mit dem Bau Ihrer UTXO-Datenbank beim Start synchronisieren der blockchain. Als er überprüft, Blöcke, geht es durch jede Transaktion, die in diesem block ein und fügt zu seinem UTXO Datenbank die Ausgaben, die für jede Transaktion erstellt. Es entfernt auch alle UTXO, der ausgegeben wird, durch eine Transaktion. Also sobald ein Knoten voll synchronisiert, die UTXO Datenbank enthält jeder nicht ausgegebene Transaktion die Ausgabe in einer Weise, die einfach zum nachschlagen.

Also, wenn die Validierung einer Transaktion, um festzustellen, ob die Eingänge noch nicht ausgegeben worden ist, wird der Knoten wird versuchen zu finden, die UTXO mit der txid-und output-index (ein UTXO unique identifiers) in seiner UTXO Datenbank. Wenn es erfolgreich ist, und bekommt genau ein Ergebnis, dann weiß es, dass die UTXO wurde nicht ausgegeben. Wenn es bekommt keine Ergebnisse, die UTXO wurde bereits ausgegeben, und somit kann die Transaktion als ungültig gekennzeichnet werden.

Sobald die Knoten die UTXO für eine Eingabe, es kann gehen, um zu überprüfen, dass die Eingabe erfüllt die Bedingungen verbringen. Die Ausgaben Konditionen sind innerhalb der UTXO in einem Gebiet, bekannt als die scriptPubKey. Die scriptPubKey ist ein script geschrieben in Bitcoin Transaktion scripting-Sprache. Es ist die Hälfte eines Programms. In Kombination mit der scriptSig, die in der Transaktion die Eingabe, das Programm sollte vollständig sein und ausführbar.

So wird der Knoten (im wesentlichen) nehmen Sie die scriptSig, fügen Sie die scriptPubKey zu Ende, und führen Sie die resultierende Programm. Wenn das Programm die Ausführung abgeschlossen ist und gibt true zurück, dann wird das Skript gültig ist und die Ausgaben Voraussetzungen erfüllt sind. Dadurch, dass die Eingabe gültig ist. Wenn alle Eingaben gültig sind, und der rest der Transaktion prüft pass (locktime überprüft, Ausgänge gültige Beträge, etc.) dann wird die gesamte Transaktion als gültig akzeptiert.


Wenn Sie bemerkt haben, ich erwähnte, dass UTXOs haben ausgabeneinschränkungen, nicht Eigentümer. Dies ist, weil UTXOs nicht Eigentümer. Einige können ausgegeben werden, von niemandem, weil die Ausgaben constraint besagt, dass jeder verbringen kann den Ausgang. Alle, die ein Knoten interessiert, ist, dass die Ausgaben constraints erfüllt sind.

Aber wir als Menschen interessieren Eigentümer, so gibt es eine Teilmenge der Ausgaben-Zwänge, die Häufig verwendet, um anzuzeigen, dass jemand ein "Besitzer" eines UTXO und ist die einzige person, die erlaubt, um es auszugeben. Diese ausgabeneinschränkungen im Grunde nur Folgendes sagen:

"um zu verbringen Sie in dieser Ausgabe, die spender müssen sowohl einen öffentlichen Schlüssel, die Spiele in dieser bestimmten hash-und Signatur über die Ausgaben-Transaktion erzeugt, die mit dem privaten Schlüssel des public-key mit den oben genannten hash"

Diese Ausgaben Bedingung abstrahiert werden kann, in menschlicher Hinsicht, als zu sagen "die person, die mit dem privaten Schlüssel entspricht, der zum öffentlichen Schlüssel, dessen hash im Skript besitzt, die Ausgabe -".

+74
harpgirl 20.02.2012, 06:36:52

Fragen mit Tag anzeigen