Bitcoin ist die erste Kommunikation Diagramm

Ich versuche zu verstehen, wie funktioniert das genau mit dem Bitcoin-client kommunizieren zunächst mit einem anderen client, wie mache ich meinen eigenen client und lernen neue Dinge über das TCP-Protokoll. So wie ich das verstehe, ist der Bitcoin-client verwendet den standard-port (8333) als server-port empfangsbereit ist, um anderen Kunden die Kommunikation und der client öffnet neue ports, wie es versucht, die Kommunikation mit anderen clients. Da bin ich mir nicht sicher, ob ich verstehe, ist die Kommunikation korrekt, ich habe dieses Diagramm:

Meine Frage ist: ist dieses Diagramm und meinen Annahmen richtig, oder habe ich einen Fehler im Verständnis, wie das Protokoll arbeitet?

+675
jlnorsworthy 06.03.2013, 22:39:45
15 Antworten

Es ist wahrscheinlich, dass die Adresse in Frage, ist eine Adresse ändern. Ändern von Adressen generiert werden, mit einem anderen Schlüssel-Ableitung Weg als Ihre anderen Adressen, damit Sie es nicht sehen, wenn Sie nur generiert die Schlüssel nur an einer einzigen Ableitung Weg.

Die "normalen" Schlüssel-Ableitung Pfad (.k.eine "externe keychain"), ist m/44'/0'/0'/ich. Jedoch der Schlüssel für Veränderung-Adressen werden in der Regel generiert eine sogenannte "interne Schlüsselbund", welches eine Ableitung Pfad von m/44'/0'/1'/ich. Es ist wahrscheinlich, dass Sie nur angeschaut Tasten auf der externen Schlüsselanhänger und nicht die interne Schlüsselbund, damit Sie nicht sehen, diese Adresse.

+990
Tate Hansen 03 февр. '09 в 4:24

Sie können die RPC-Befehl "getrawtransaction" erhalten Sie ein JSON-Antwort mit Informationen für die Transaktion einschließlich einer "Bestätigungen" - Feld, wenn die Transaktion in einem block (falls es gibt 0 Bestätigungen, die Bestätigungen Feld wird nicht da sein). Sie sollten aber beachten, dass, wenn Sie suchen für Transaktionen, die nicht wirklich ein Teil Ihrer Brieftasche (von oder zu einer Adresse, die Sie don ' T haben die privaten Schlüssel für die) bitcoin-qt standardmäßig nicht halten den überblick über diese Transaktionen und ausgeführt werden müssen mit der "txindex=1" - flag, um eine vollständige Transaktion index.

+929
DiaperRiot 10.06.2016, 23:06:45

Sie sollten einen Blick auf diese: Warum ist meine Transaktion nicht immer bestätigt und was kann ich dagegen tun?

Es scheint, als würde Sie nicht bringen genug der Gebühr. Wie viele sat/byte macht Ihre Transaktion zeigen?

+911
CopperCash 21.07.2010, 01:31:05

Ich bin versucht zu laufen ./bitcoind auf Ubuntu 17

Fehler: Fehler: Ein schwerwiegender interner Fehler aufgetreten, siehe debug.log für details
Segmentation fault (core dumped)

Im debug.melden

2017-12-01 20:18:50 Bitcoin-version v0.15.99.0-g9e38d357447
2017-12-01 20:18:50 InitParameterInteraction: parameter der Interaktion: -whitelistforcerelay=1 -> Einstellung -whitelistrelay=1
2017-12-01 20:18:50 Vorausgesetzt, die Vorfahren der block 0000000000000000003b9ce759c2a087d52abc4266f8f4ebd6d768b89defa50a gültige Unterschriften.
2017-12-01 20:18:50 Einstellung nMinimumChainWork=000000000000000000000000000000000000000000723d3581fe1bd55373540a
2017-12-01 20:18:50 Mit dem 'sse4' SHA256 implementation
2017-12-01 20:18:50 Mit RdRand als eine weitere Entropie-Quelle
2017-12-01 20:18:50 Standard-Daten-Verzeichnis /home/home/.bitcoin
2017-12-01 20:18:50 Mit data-Verzeichnis /home/home/.bitcoin
2017-12-01 20:18:50 Mit config file /home/home/.bitcoin/bitcoin.conf
2017-12-01 20:18:50 Mit maximal 125 automatische verbindungen (1024 file descriptors available)
2017-12-01 20:18:50 Mit 16 MB aus 32/2 angefordert für den Signatur-cache speichern kann, 524288 Elemente
2017-12-01 20:18:50 Mit 16 MB aus 32/2 beantragt für die Ausführung von Skript-cache speichern kann, 524288 Elemente
2017-12-01 20:18:50 Mit 2 Gewinden für die Skript-überprüfung
2017-12-01 20:18:50 scheduler thread starten
2017-12-01 20:18:50 HTTP: erstellen von work queue-Tiefe 16
2017-12-01 20:18:50 Keine rpcpassword set - zufällige cookie-Authentifizierung
2017-12-01 20:18:50 Generierte RPC-Authentifizierung cookie /home/home/.bitcoin/.cookie
2017-12-01 20:18:50 HTTP: ab 4 worker-threads
2017-12-01 20:18:50 Mit wallet Verzeichnis /home/home/.bitcoin/Geldbörsen
2017-12-01 20:18:50 init-Nachricht: Überprüfen wallet(s)...
2017-12-01 20:18:50 Mit BerkeleyDB version der Berkeley DB-4.8.30: (9. April 2010)
2017-12-01 20:18:50 Mit wallet Brieftasche.dat
2017-12-01 20:18:50 CDBEnv::Open: LogDir=/home/home/.bitcoin/Portemonnaies/Datenbank ErrorFile=/home/home/.bitcoin/Portemonnaies/db.melden
2017-12-01 20:18:50-Cache-Konfiguration:
2017-12-01 20:18:50 * Mit 2.0 MiB für block-index-Datenbank
2017-12-01 20:18:50 * Mit 8.0 MiB für Kette-state-Datenbank
2017-12-01 20:18:50 * Mit 440.0 MiB für in-memory-UTXO-set (plus bis zu 286.1 MB, ungenutzte mempool Raum)
2017-12-01 20:18:50 init-Meldung: Loading block-index...
2017-12-01 20:18:50 Eröffnung LevelDB in /home/home/.bitcoin/blocks/index
2017-12-01 20:18:50 Geöffnet LevelDB erfolgreich
2017-12-01 20:18:50 Mit der Verschleierung der Schlüssel für die /home - /home/.bitcoin/blocks/index: 0000000000000000
2017-12-01 20:18:50 LoadBlockIndexDB: letzter block Datei = 0
2017-12-01 20:18:50 LoadBlockIndexDB: letzter block Datei-Informationen: CBlockFileInfo(Blöcke=0, size=0, Höhe=0...0, time=1970-01-01...1970-01-01)
2017-12-01 20:18:50 Überprüfung der blk-Dateien sind vorhanden...
2017-12-01 20:18:50 LoadBlockIndexDB: Transaktion index deaktiviert
2017-12-01 20:18:50 Initialisierung der Datenbanken...
2017-12-01 20:18:50 Pre-allocating bis zu position 0x1000000 in blk00000.dat
2017-12-01 20:18:50 Eröffnung LevelDB in /home/home/.bitcoin/chainstate
2017-12-01 20:18:50 Geöffnet LevelDB erfolgreich
2017-12-01 20:18:50, Schrieb neue verschleiern Schlüssel für die /home - /home/.bitcoin/chainstate: f22764d2d2990e26
2017-12-01 20:18:50 Mit der Verschleierung der Schlüssel für die /home - /home/.bitcoin/chainstate: f22764d2d2990e26
2017-12-01 20:18:50 init-Nachricht: Zurückspulen Blöcke...
2017-12-01 20:18:50 block index 118ms
2017-12-01 20:18:50 init-Nachricht: die Belastung der Brieftasche...
2017-12-01 20:18:50 nFileVersion = 159900
2017-12-01 20:18:50 Schlüssel: 0-plaintext, 0 verschlüsselt, 0 w/ Metadaten, 0 insgesamt
2017-12-01 20:18:50 Ausführung Brieftasche upgrade auf 60000
2017-12-01 20:18:51 keypool Hinzugefügt, 2000 Schlüsseln (1000 intern), Größe=2000 (1000 intern)
2017-12-01 20:18:51 Brieftasche 1388ms
017-12-01 20:18:51 setKeyPool.size() = 2000
2017-12-01 20:18:51 mapWallet.size() = 0
2017-12-01 20:18:51 mapAddressBook.size() = 0
2017-12-01 20:18:51-FEHLER: ReadBlockFromDisk: Fehler im block-header auf CBlockDiskPos(nFile=0, nPos=8)
2017-12-01 20:18:51 *** Failed to read block
2017-12-01 20:18:51-Fehler: Fehler: Ein schwerwiegender interner Fehler aufgetreten, siehe debug.log für details
2017-12-02 00:07:28

Ich habe versucht, ./bitcoind -reindex Es ist ab sofort, aber nicht richtig funktioniert. Unter debug.log:

2017-12-02 10:38:45 init-Meldung: Loading block-index...
2017-12-02 10:38:45 Abwischen LevelDB in /home/home/.bitcoin/blocks/index
2017-12-02 10:38:45 Eröffnung LevelDB in /home/home/.bitcoin/blocks/index
2017-12-02 10:38:45 Geöffnet LevelDB erfolgreich
2017-12-02 10:38:45 Mit der Verschleierung der Schlüssel für die /home - /home/.bitcoin/blocks/index: 0000000000000000
2017-12-02 10:38:45 Initialisierung der Datenbanken...
2017-12-02 10:38:45 Abwischen LevelDB in /home/home/.bitcoin/chainstate
2017-12-02 10:38:45 Eröffnung LevelDB in /home/home/.bitcoin/chainstate
2017-12-02 10:38:45 Geöffnet LevelDB erfolgreich
2017-12-02 10:38:45 Schrieb neue verschleiern Schlüssel für die /home - /home/.bitcoin/chainstate: 5def55d4b4b2f334
2017-12-02 10:38:45 Mit der Verschleierung der Schlüssel für die /home - /home/.bitcoin/chainstate: 5def55d4b4b2f334
2017-12-02 10:38:45 block index 96ms
2017-12-02 10:38:45 init-Nachricht: die Belastung der Brieftasche...
2017-12-02 10:38:45 nFileVersion = 159900
2017-12-02 10:38:45 Schlüssel: Klartext 2001, 0 verschlüsselt, 2001 w/ Metadaten, 2001 total
2017-12-02 10:38:45 wallet 45ms
2017-12-02 10:38:45 setKeyPool.size() = 2000
2017-12-02 10:38:45 mapWallet.size() = 0
2017-12-02 10:38:45 mapAddressBook.size() = 0
2017-12-02 10:38:45-Reindexing block-Datei blk00000.dat...
2017-12-02 10:38:45 FEHLER: AcceptBlock: high-hash proof of work failed (code 16)
2017-12-02 10:38:45 Neuindizierung abgeschlossen
2017-12-02 10:38:45 Fehler beim öffnen der mempool-Datei von der Festplatte. Fortsetzung sowieso.
+729
jmccartie 08.02.2016, 14:11:04

Ich bin der Planung zu bauen, supply-chain-management-system mit Blockchain. Ich habe gelesen, dass viele blog-Beiträge mit Bezug zum Thema, und schließlich, bekomme ich Hyperledger als richtige Wahl für die Blockchain-Netzwerk. jetzt habe ich aber zwei weitere option, die.Hyperlegder Stoff & Sägezahn-See, jetzt bin ich verwirrt über die Plattform, so können Sie bitte mir empfehlen, welche Plattform besser für unsere Domain.

+707
Chris Ford 02.04.2019, 06:11:27

Bitcoin ist über die vorgeschlagenen änderungen an einem Datensatz (Transaktionen eingereicht, um die blockchain), und mit einem dezentralen Netz Konsens darüber, welche änderungen akzeptiert werden, in welcher Reihenfolge. Sie sind Fragen, über die vorgeschlagenen änderungen, die per definition bedeutet, dass Sie nicht noch vereinbart. Als solche, kann niemand sagen, welche änderungen sind "in der Schwebe", weil wir noch nicht vereinbart, welche zählen. Wenn ich 5 Knoten in meinem Keller, und Sie verloren Konnektivität zum restlichen Netzwerk, führen Transaktionen in Ihren mempool zählen? Was passiert, wenn Sie die Verbindung wieder herstellen?

In Bitcoins, nichts wirklich zählt, bis ein Konsens erreicht ist.

+662
fawjia alam 30.01.2013, 07:59:51

Sie versuchen zu ermitteln, Implementierungen für die Erstellung von BIP-38 verschlüsselte private Schlüssel für alternative coins zu entfachen, kollaborative open-source-Diskussionen zu standardisieren BIP 38 zu unterstützen altcoins. Bitte teilen BIP 38 Umsetzung URLs, die Sie bewusst sind, dass die Unterstützung von einem oder mehr altcoins für ermittlungszwecke.

+629
Trongvien 05.05.2019, 00:07:49

Wie schnell finden Sie die privaten Schlüssel aus Segwit P2SH-Adresse?

Per heute, ist es unmöglich zu finden, den privaten Schlüssel aus jedem öffentlichen Schlüssel oder Adresse. Auch von einem SegWit P2SH-Adresse. Es ist immer das hashing einbezogen, die eine ein-Weg-Funktion.

Ich denke, dass Sie vielleicht Fragen wollte, wie kommen die auf die öffentlichen Adressen (siehe unten), so dass Sie zu extrahieren, können entsprechende priv key vom bitcoin wallet...

Ich denke, es gibt keinen schnellen Weg :-(

Aber mit etwas Programmierung und web-Seite links, könnte dies erhalten Sie zu Ihrem Ziel:

Ich habe eine sehr große Liste von Segwit Adressen für bitcoin ab mit '3' und nicht wissen, die entsprechenden legacy - '1' Adresse Sie.

Die Art und Weise der Typ-3-Adressen sind so zusammengesetzt, enthält wieder einmal ein hash-Wert, so dass Sie nicht einfach "zurück" - es ist ein one-way-Funktion. Die Art und Weise, wie Sie zusammengesetzt sind, ist hier beschrieben, und hier ist eine Beschreibung im bitcointalk forum.

Wie kann ich schnell finden Sie die entsprechenden legacy-Adresse exportieren privaten Schlüssel aus dem Bitcoin-Core? Die Seqwit Adressen haben keinerlei Geschäfte, noch nicht.

Und hier wird es schwierig: es sei denn, es gibt einige Transaktionen, die Ausgaben mit dem einlösen Skript dieses segwit-Adresse (die in der Regel zeigt das einlösen script in klaren hex-format), es gibt keinen Weg, um auf die root-Daten. Aber dann wieder, wenn Sie den einlösen-Skript, es ist ein Struktur wie diese:

OP_0: 00
Länge: 14
keyhash: (20 bytes)

wieder mit den hash der entsprechenden "Typ 1" - Taste. In diesem link Pieter gesagt, Sie können nicht und sollte nicht.

Also am besten für Ihre Arbeit ist, um zu extrahieren alle priv keys aus der wallet, und die "reverse Arbeit". Nehmen Sie einen priv-Taste, und erstellen Sie den Typ 1 Adresse von ihm (setzen Sie nie Ihre priv keys online, lösen Sie den Fonds! Sie tun müssen, um diese offline!). Eine gute Seite, wie das zu tun ist hier.

Nachdem der "Typ 1" - Adresse, können Sie es konvertieren, um segwit-Adresse, und verwenden Sie wieder die gleichen pubkey, um durch diese gehen.

+517
thewriteristhereader 26.05.2019, 00:51:48

Könnte Bergleute mit genug mining-Kräfte (sagen wir mal >95% aller Blöcke) bilden ein Kartell, wo Sie verlangen absurd hohe Transaktionsgebühren? Natürlich, ich konnte immer noch hoffen konnte, ein Bergmann nicht, dass Kartell-relay meine Transaktion für einen niedrigeren Preis, aber in diesem Fall konnte ich nicht sicher sein , wenn meine Transaktion bezahlt wird, um dem Empfänger.

Ist das ein plausibles Szenario?

+511
Stepango 14.03.2017, 10:57:46

Die andere Antwort hier funktioniert wohl, hat aber viel zu viele Schritte für meinen Geschmack.

npm installieren bitcore-Knoten -g

Auch wenn Sie die Installation bitcore-Knoten, umfasst es den bitcoind Abhängigkeit, die Sie verwenden können, von selbst oder mit bitcore Sie Dienste auf der Oberseite der bitcoind

+432
SpoBo 24.09.2019, 18:22:52

Andere Optionen, über das hinaus, was Nick genannt, sind entweder mit dem toshi.io-API:

toshi.io - API - utxo für Adresse

Oder führen Sie Ihre eigenen toshi Knoten:

toshi.io

+413
Weibing Chen 31.07.2011, 02:04:21

Kann mir jemand erklären, was es ist und warum es heißt Base58Check Codierung?

Es gibt zwei Teile zu den Namen "Base58Check". Der erste Teil ist "Base58". Dies ist ziemlich selbsterklärend, die Codierung verwendet Base 58. Dies bedeutet, dass es 58 Ziffern, die dargestellt werden durch 58 Zeichen. Eine Ziffer ist eine Zahl zwischen 0 und 57, so wie im Dezimalsystem (oder Basis 10) die wir haben, die sind eine Nummer zwischen 0 und 9. Da jede Ziffer soll ein Zeichen, wir brauchen einen anderen "alphabet" für die einzelnen Ziffern. Für die base-58, verwenden wir das alphabet 123456789ABCDEFGHJKLMNPQRSTUVWXYzabcdefghijkmnopqrstuvwxyz mit der Zahl 0 wird dargestellt durch die Figur 1 und die Nummer 57 dargestellt durch das Zeichen z an. Zum Vergleich, die dezimale alphabet ist 0123456789 mit der Zahl 0 dargestellt durch die Zeichen 0 und die Zahl 9 repräsentiert durch die Zeichen - 9.

Der zweite Teil des namens ist "Check". Dies bezieht sich auf eine Prüfsumme. Der SHA256-Doppel der Daten, die wir wollen, zu Kodieren, berechnet wird, und die ersten vier bytes des hash als Prüfsumme verwendet. Dies ist ein Fehler-Erkennung-Methode, um sicherzustellen, dass die Daten, die wir erhalten, ist korrekt und nicht beschädigt sind. Diese vier bytes werden an die Daten, die wir sind-Codierung vor, führen wir einen Basis-Konvertierung zu erzeugen, die Basis 58-string.

Wie bei jedem Stück von Daten in einem computer, die gesamte pre-base58 byte-Kette interpretiert werden kann als eine sehr große ganze Zahl. Von dort aus ist es einfach, führen Sie eine Basis-Konvertierung auf Basis 58 und erzeugen so die endgültige Basis 58-string.

Werden Adressen generiert, ohne den Umweg über diese Schritte noch gültig Bitcoin?

Sie können nicht generieren, eine Adresse ohne Umweg über jene Schritte, so ist es unmöglich, nicht zu gehen über diese Schritte, die zum erstellen einer Adresse.

Um diese Frage, was tun npm-Pakete wie bs58check genau? Die Beschreibung ist wie so

Implementieren Sie die gesamte Konvertierung von bytes zu Base58Check-codierte Zeichenfolge.

+255
asoldat 26.05.2011, 05:06:06

Ich möchte die folgenden Daten für jedes Problem jemals aufgeführt auf GLBSE:

  1. Zeitreihe der Schlusskurse der seit Börsengang auf de-listing (oder schließen von GLBSE),
  2. Datum und Menge der aus-und sekundärplatzierungen, und
  3. Dividende der Geschichte.

Die motivation dahinter ist die Konstruktion eines total-return-index für das GLBSE.

Wie bekomme ich diese Daten?

+248
valeran 27.08.2013, 13:39:53

Wenn Sie einzahlen möchten, um einen Austausch verlangen Sie eine Kaution-Adresse aus dem exchange. Diese Adresse generiert wird speziell für Sie. Also der exchange weiß, dass alle Münzen erhalten, die von dieser Adresse kommen, die Sie (oder jemand, der will, Sie zu bezahlen), und sollte auf Ihr Konto gutgeschrieben.

+224
Croin 01.07.2019, 15:02:32

Sich vorstellen, wir haben ein Gleichgewicht blockchain, eine Transaktion erzeugt, welcher sendet 1 BTC von Alice zu Bob, dieser Transaktion wird gefördert, in einem block und bestätigt. Ein weiterer block kommt, die enthält die gleiche Transaktion erneut. Dies ist offensichtlich nicht richtig, aber es ist sehr schwierig für uns, ein system zu schaffen, wo dies nicht möglich ist.

Wir sind entweder müssen:

  • Speichern Sie eine Liste aller Transaktionen, die stattgefunden haben, finden Sie es in Echtzeit, und schließen Sie alle, die schon gehandelt haben (die balance abgeleitet, und erhöhte in der Finanzbuchhaltung).

  • Eine nonce, die für jede Adresse, die steigt mit jedem mal macht es eine Transaktion, und nicht zulassen, dass eine Transaktion mit einem niedrigeren nonce, als wir derzeit glauben, dass der Fall zu sein.

Die letzteren, während die meisten vernünftigen und dem system des Astraleums, ist suboptimal. Für jedes einzelne Konto ein Konsens Regel, die wir speichern müssen alle nonces für alle Ewigkeit bis zu einem maximalen Satz von der Konsens-system. Wir können auch nicht out-of-order execution von Transaktionen, da Sie sich exklusive Aktionen (wenn 1 und 3 passiert haben, 2 können nun nie passieren), dies beseitigt die Möglichkeit der Speicherung von pre-unterzeichnet, aber un-broadcast-Transaktionen verwendet wird in Bitcoin.

Statt dessen speichern wir nur eine Liste von Transaktions-Ausgänge in der UTXO, die nie ausgegeben worden sind, und schlagen Ihnen aus der Datenbank, wenn Sie ausgegeben wurden. Wiedergabe einer bereits bestehenden Transaktion kann nicht passieren, weil Sie verbringen eine Ausgabe, die nicht vorhanden ist. Dies ist letztlich die meisten skalierbar verbrachte Transaktionen hinterlassen Sie keine Fingerabdrücke auf den Knoten, der Lagerung, und können auf Ihre Gültigkeit überprüft geschehen in Millisekunden.

Mit einem UTXO bewirkt, dass Transaktionen atomar sind, und nicht automatisch wieder spielbar.

+112
Jake 16.11.2013, 13:45:03

Fragen mit Tag anzeigen