Was öffentliche Daten-sets sind verfügbar, könnte verwendet werden, um die Korrelation in der bitcoin-analytics?

Welche Datenmengen da draußen existieren, die verwendet werden können für Ingenieure statistische Analyse vor? Hoffentlich sind diese Daten nicht benötigen, gekratzt werden, aber in einem importierbaren format oder API, aber ich bin offen für Vorschläge, die auf Daten-APIs geschrieben werden müssen für.

+237
Alan Beatty 04.08.2016, 02:26:12
29 Antworten

Denn ein wichtiger Aspekt zu verstehen ist, dass die übertragung der block über das Netz Global ist nicht ganz instant. Je größer der block ist, desto länger der block Vermehrung statistisch nimmt.

Jedoch, wenn Sie die Vermehrung der block Teil des Netzes ist in der Nähe, wie die übertragung der block an sich selbst (was natürlich bedeutet, dass Sie nicht brauchen, um zu übertragen, der block überhaupt), die Latenz verschwindet. Wenn Sie einen gültigen block, das heißt, Sie haben eine leichte mining Vorteil der mir mit dem neuen block, wie die letzten gültigen block, während andere Teile des Netzwerks noch Bergbau auf alten block, wie die letzten gültigen block, während der Zeit, in dem neuen block, den Sie gerade abgebaut wird weitergegeben an den rest des Netzes. Die größere der neuen block, den Sie nur abgebaut werden, desto mehr Zeit haben Sie zu mir auf den block, während andere Teile des Netzwerks sind noch Bergbau auf alten block, wie die letzten gültigen block.

In einer Branche, wo auch nur die geringste Prozentsatz weisen von Vorteil führt, um in der Lage zu outcompete Ihre Gegner, mehr block-Vermehrung sollte mal theoretisch bedeuten höhere Konzentration der großen Parteien auf das Netzwerk.

+993
t3ln3t 03 февр. '09 в 4:24

Soweit ich weiß gibt es mehrere e-wallet-Dienste für Bitcoin, die bieten die gleichen standard integrierte API-service-Funktionalität für Benutzer. Ich bin neugierig, wo sind Sie zu finden nutzen in diesem? Diese Dienstleister berechnen für die übertragung von sich selbst und erhalten, left-overs persönlich?

+982
juliangonzalez 03.08.2010, 09:54:12
Weitere Antworten

Verwandte Fragen


Ähnliche Fragen

Ich bin auf der Suche in die Struktur der Blöcke, die in der Bitcoin-blockchain, und ich kann nicht herausfinden, Wann\wie die Gebühren erhoben, die von miner Blöcke zu übertragen Bergmann. Nach dem, was ich sagen kann, Sie sind nicht ein Teil der coinbase-Transaktion (welche wie ich verstehe, muss konstant sein, da der Wechsel nach der Entdeckung eines Blocks ändern würde, den hash block). Sind die gezahlten Gebühren als separate Transaktion? Sie sind schriftlich direkt an die UTXO ohne die auf die blockchain? Etwas anderes?

Danke!

+967
Myakish 28.12.2018, 09:02:31

Dies beantwortet nicht die Frage direkt, aber Coinomi läuft in Genymotion funktioniert und ermöglicht die Wiederherstellung von einem BIP39 Samen, pro die Anweisungen, die hier gegeben:

https://medium.com/@coinomi/collecting-your-free-bitcoin-gold-btg-coins-da937d4255d1

Genymotion läuft unter Linux, also es ist zwar ein bisschen Arbeit, kann man erreichen, das gewünschte Ergebnis mit dieser Methode.

+965
sdalida 12.07.2010, 17:39:38

Electrum wallet. Funktioniert wie ein Charme auf meinem mac.

+961
Joel Clarke 01.05.2015, 04:15:18

Ich arbeite an einem Projekt, welches muss ich nehmen ein Elektron Merksatz, bestimmen seine Art und Ableitung der entsprechenden Adressen für das Portemonnaie.

Ich fand viele Informationen, um zu bestimmen, die mnemotechnische Art und verdeckte es in die master-Saatgut, aber ich bin kämpfen, um zu verstehen, wie Adressen für die 2FA wallet abgeleitet werden. Um genauer zu sein, ich war in der Lage, abzuleiten, sowohl im erweiterten als auch Schlüsselpaare (x1/ und x2/ in der wallet-Datei), aber ich kann nicht scheinen, um in der Lage sein, um daraus die Dritte xpub (x3/ in der wallet-Datei).

Habe ich mich durch den source-code, und es scheint dieser Schlüssel wird abgeleitet, durch die Kombination der beiden xpub Schlüssel (die Schlüssel werden BESTELLT), kann abgeleitet werden aus der master-seed (x1/ und x2/), hashing, Sie mithilfe von SHA-256 und verwenden, die als index bei der Ableitung der Dritte xpub. Eine hart codierte xpub ist als die Wurzel.

Ich habe Schwierigkeiten zu verstehen / implementieren dies, weil die SHA-256 - Algorithmus zurück 32 bytes Daten und child-index werden 4 bytes lang sein (wie pro die BIP32 - Spezifikation).

Hier ist der code aus Elektron, die diese verarbeitet.

def get_user_id(Lagerung):
 def make_long_id(xpub_hot, xpub_cold):
 Rückkehr bitcoin.sha256(".join(sorted([xpub_hot, xpub_cold])))
 xpub1 = Lagerung.get('x1/')['xpub']
 xpub2 = Lagerung.get('x2/')['xpub']
 long_id = make_long_id(xpub1, xpub2)
 short_id = hashlib.sha256(long_id).hexdigest()
 zurück long_id, short_id

def make_xpub(xpub, s):
 version, _, _, _, c, cK = deserialize_xpub(xpub)
 cK2, c2 = bitcoin._CKD_pub(cK, c, s)
 Rückkehr bitcoin.serialize_xpub(version, c2, cK2)

Die Funktionen werden dann so aufgerufen:

xpub1 = - Assistenten.storage.get('x1/')['xpub']
xpub2 = - Assistenten.storage.get('x2/')['xpub']
# Generieren Dritten Schlüssel deterministisch.
long_user_id, short_id = get_user_id(Assistenten.Speicher)
xpub3 = make_xpub(signing_xpub, long_user_id)

Die long_user_id ist 32 bytes lang sein, da es das Ergebnis des SHA-256 - Funktion und wird dann verwendet, um rufen Sie die make_xpub() - Funktion, die angeblich in der 4 Daten-bytes als das Kind-index.

Was vermisse ich hier? Jede Eingabe wird sehr geschätzt.

+854
quardas 18.02.2010, 13:48:44

Ich leite ein hotel und der Besitzer ist daran interessiert, mit Bitcoin als Zahlungsoption. Wie können wir beginnen, verwenden Sie diese option, und was werden wir brauchen? Es gibt mehrere hotels, die er besitzt und möchte irgendwann alle von Ihnen mit dieser option als gut.

+842
Wesly Mwaliro Akonya 06.02.2015, 11:10:01

Erste Konto bekommt nichts.

Zweiten account kauft Ihnen ab das niedrigste Angebot an, nach oben gehen.

Wie, es sind verkauft:

  • 0.30 Einheiten @ einen Preis von 100
  • 0.10 @ 150
  • 0.40 @ 650
  • 0.80 @ 850
  • 1.00 @ 1000 (dein Erster Vorschlag)

Buchen Sie eine limit-order zu kaufen, 1.00 Einheit @ zu einem Preis von maximal 1000, erhalten Sie:

  • 0.30 @ 100 (insgesamt verbrachte 30)
  • 0.10 @ 150 (insgesamt 45)
  • 0.40 @ 650 (Gesamt 305)
  • 0.20 @ 850 (insgesamt 475)

Sie haben den beantragten Betrag (1.00 units), die Ausgaben 475, anstatt 1000 (die maximale Sie bereit waren zu verbringen).

Der neue Markt Tiefe:

  • 0.60 @ 850
  • 1.00 @ 1000 (dein Erster Vorschlag)
+829
kadyshkin 04.09.2019, 08:28:32

Beide sind gültige öffentliche Schlüssel nur, dass im ersten Fall die unkomprimierten öffentlichen Schlüssel ist nicht durch ein gültiges hexadezimal-format. Wenn Sie genau hinsehen, werden Ihre Qy 63 hexadezimal-Ziffern (also es ist ein 'halb-byte'). Obwohl hashing kann getan werden, in bit-Grenzen, die meisten standard-Implementierungen gibt, nicht unterstützen. Versuchen Sie einfach zu verketten, '0' am Anfang der Qy zu bekommen Qy = 0691AA44502212591132AA6F27582B78F9976998DE355C4EE5960DB05AC0A2A3 , so dass Sie erhalten eine volle byte. So, jetzt das unkomprimierte öffentliche Schlüssel ist 04B8F0170E293FCC9291BEE2665E9CA9B25D3B11810ED68D9EA0CB440D7064E4DA0691AA44502212591132AA6F27582B78F9976998DE355C4EE5960DB05AC0A2A3,, die würde hash zu P2PKH Adresse: 17Y1XJiC72f2kyJnzwBdkaPQEGgaD1aror

+774
Beni Ben 16.06.2019, 09:48:12

Nein, gibt es nicht. Der Punkt des Bergbaus zu lösen, das Konsens-problem. Nehmen Sie Ihre Logik weiter, wenn jeder glaubt, in Ihren Gott-Maschine, es könnten genauso gut klar, die Geschäfte selbst.

+709
alanecode 16.07.2013, 21:32:41

Von einem Beispiel in der Dokumentation:

$ bx Samen | bx-Mnemonik-neu | bx-Eselsbrücke-zu-Samen | bx-hd-neu

655a1ed2d4fef69bb314198c7327f23c greifen spezielle bedauern bereiten Sie fordern Beweise Matsch HUMMER Mitternacht Geruch Wunsch ketchup 57bae342ae8e69eb63f17ef993a90a59159e0f78114b602bf0ebabfec0e5d086e883c31975bf03f8a47a32853452623094d1303fd0549745db457145e5756582 xprv9s21ZrQH143K43CUCgNp5SmXzg2axqx2p4wupa2zenkpfm19qfqfdqfpjr3yfzaxznsheuaqhwqmwyuql8dbdelecbdmoknn6pcy4run2pk

Im Mastering Bitcoin, das Beispiel hier zeigt, dass es geht zurück auf den Samen, die ursprünglich erstellt wurde; dies wurde mit einer älteren version des bx obwohl. Kann mir jemand erklären, wie der Samen aus Zeile 1 und Zeile 3 im Beispiel sind codiert/Verwandte?

+698
creimers 13.03.2017, 16:04:30

Wie bekomme ich die Schwierigkeit, Fairbrix oder Tenebrix direkt aus dem client? Ohne Verwendung einer externen Website.

Ich benutze "getinfo" mit Bitcoin aber mit Fairbrix/Tenebrix, "getinfo" nichts zurückgibt. Bei mir läuft es mit Ihrer etwas instabil "portable launcher".

Danke!

+677
subrata 26.08.2013, 19:26:15

Jeder 256-bit Wert eine gültige secp256k1 ECDSA privaten Schlüssel. Streng genommen, gibt es eine Obergrenze, die etwas weniger als 2^256, aber Sie können einfach wickeln Sie um.

Also ja, können Sie einfach SHA256(passphrase), um einen privaten Schlüssel generieren.

+665
EBATO 26.11.2018, 21:00:23

Sie haben Recht, dass es einige Nachteile, um die Wiederverwendung einer bitcoin-Adresse, während zur gleichen Zeit, kann es unbequem sein, generieren Sie eine neue Adresse jedes mal.

Ich glaube, Sie finden es nicht mehr möglich machen, eine unauffindbar Zahlung-system, wo die Geldmenge begrenzt ist. Wenn die Geldschöpfung kontrolliert wird (wie bei bitcoin), Knoten müssen einen Weg zu verfolgen, das Geld zurück, wenn ein Gültiger origin.

Für die Einschränkungen des bitcoin, Lesen Sie weiter.

Vielleicht haben Sie Interesse in Bulletin 21 (Bitcoin Verbesserungsvorschlag 21), das ist ein offizieller URI-Erweiterung, die bitcoin-clients oder wallets verwenden können, um Zahlungen zu erleichtern. Im Grunde ein Verkäufer kann ein bitcoin-URI (z.B. ein link) auf den Käufer und wenn der Käufer seinen bitcoin-client kompatibel ist, den bitcoin-client stellt eine Zahlung Bildschirm sagen z.B., "möchten Sie Bob 20 bitcoins?". Was man beachten sollte ist der Verkäufer können jede bitcoin-Adresse in der URI, das heißt, wenn die meisten bitcoin-Kunden + Verkäufer unterstützt diese Regelung, die viele Transaktionen, könnte leicht zu verwenden, einmalige bitcoin-Adressen, die hilft, erreichen die Privatsphäre die Sie suchen.

Hinweis: es ist immer noch das problem, dass kann schwierig sein, zum senden von bitcoins an z.B. einen Freund, und, wie Sie sagte, in der Lage zu "entdecken" someones bitcoin-Adresse mit z.B. Ihre E-Mail-Adresse, die nützlich sein würde. Ich habe ein side-Projekt Bitcoin-Zahlungsdienstleister , die versucht, dieses problem zu lösen. Im Grunde ist es ein open-source-web-app, mit der jeder zu initiieren, eine bitcoin-Zahlung zu der Website-Besitzer. Sie können sich eine demo von BPS.

+631
UnConundrum 25.05.2018, 01:44:18

https://en.bitcoin.it/wiki/Bitcoin-Powered_Database

So weit ich weiß, ist die Bitcoin blockchain ist so ziemlich das einzige Datenstruktur sein, die sowohl Globale als auch manipulationssicher.

global - Es ist eine Globale Instanz der blockchain (bis zu Gabeln ... die dann gelöst werden). tamper-proof - Wenn Sie einen block in der blockchain, nach 6+ Bestätigungen dieser block kann nicht wirklich sein, gefälscht oder verändert werden.

Eine Bitcoin-powered-Datenbank wäre eine API, über die blockchain, das würde aussetzen eine Teilmenge der üblichen CRUD - Datenbankoperationen. In der Tat, es wäre ein append-only-Daten-Struktur, denn nichts kann jemals sein gelöscht von der blockchain - also nur ANLEGEN und LESE-Operationen implementiert werden. Objekt die Versionierung verwendet werden, um zu emulieren, Aktualisierungen und Löschungen.

Gab es frühere versuche zum erstellen einer solchen Datenbank? Ich habe gesehen, das MerkleWeb Vorschlag, aber ich habe nicht wirklich verstanden, also bin ich mir nicht sicher, ob es Antworten auf meine Frage.

+620
HyperNeutrino 14.09.2016, 16:26:34

Von was ich gelesen habe über Bitcoin Transaktion Bestätigung (aka mining), eine Transaktion kann nicht aufgenommen werden in einem block von Gründen, aber der häufigste Grund ist, dass die Gebühr zu niedrig für die Größe der Transaktion. Eine höhere Gebühr erhöht sich die chance, dass die Transaktion in einem block von Bergmann. Eine Transaktion ohne Gebühr kann schließlich bestätigt werden, aber es könnte lange dauern, dies zu tun.

Bestimmte Transaktionen können nicht in einem block, weil Sie gegen das Bitcoin-Protokoll und werden verworfen. Unter anderem sind diese Transaktionen, die versuchen, um mehr Bitcoins als ist im Sie ein Konto und tranactions, die versuchen zu verdoppeln verbringen Sie einen Account balance. Transaktionen, die abhängig von anderen Transaktionen, die nicht bestätigt worden sind und noch aufbewahrt werden, bis Sie entweder gelöscht wird, da würde es gegen das Bitcoin-Protokoll, oder es wird Hinzugefügt, um eine bestätigte Transaktion blockieren.

(Quelle: https://www.rugatu.com/questions/42/why-do-some-transactions-take-months-to-get-into-a-block)

+574
Erik Brynjolfsson 01.01.2010, 15:46:19

65000 Transaktionen abgezogen wird. Sie sind immer noch da (55441+14199), so lange Sie sind nicht abgebrochen. Der Grund des Abzugs zu sein scheint, zu niedrige Gebühren, weniger als 30 satoshi. Vielleicht blockchain.info will nicht zählen "spam und Angriffe" in der Statistik? Es geschah um 12:00 hier in Schweden. Und eine break-out +$200 in Bitcoins Preis, gefolgt um 15:30.

Die pools sind nur in den Knoten. Was tun Sie, wenn es voll ist bis zu Ihnen.

https://bitcoinfees.21.co

+447
AspiPhD 17.03.2018, 22:54:18

Es gibt keinen Anreiz zu dienen historische Blöcke jenseits von Altruismus, in der Regel gilt für alle Facetten der Teilnahme am p2p-Netzwerk. Knoten ohne eingehende verbindungen werden im Allgemeinen nicht verlangt werden, senden alle alten Blöcke, und dies ist ein standard-Betriebsart für Menschen, die deaktiviert haben, hören oder sind hinter restriktiven NAT, ohne die Fähigkeit zu Loch-punch-through-port 8333.

+436
user1211030 26.04.2010, 21:02:25

Aus den release notes https://bitcoin.org/en/release/v0.11.0 :

Für jetzt, block beschneiden deaktiviert block-relais. In der Zukunft werden die Knoten mit block Rebschnitt wird auf ein minimum relais "neuen" Blöcke, d.h. Blöcke, die Sie erweitern Ihren aktiven Kette.

In der aktuellen version beschneiden Knoten nicht sich werben, als dass alle Blöcke, sodass Sie nicht hochladen blockiert. Das erklärt Ihre hohe Reduzierung der upstream-Daten. Einem zukünftigen update wieder aktivieren block relais in der Weise, dass Ihre Knoten können effizient lassen Sie Ihre Kollegen wissen, welche Blöcke es besitzt und was nicht.

Ja, deine Beschneidung Knoten wird eine vollständige Validierung und it-service wird leichte Knoten.

+425
neutrin0 20.03.2018, 07:33:56

Leider ist die chance, randomlly mit private key ist Super , weil die Brieftaschen verwendet fast die gleichen algoritm zum generieren von privaten Schlüsseln

+411
Jim Ford 30.04.2016, 08:39:00

Wenn ich $1000 im Wert von bitcoin mit dem aktuellen Preis von bitcoin bei $7000, später dann auf bitcoin dropa bis $6500, normalerweise weiß ich, ths Geld in meiner Brieftasche fallen wird. Aber meine Frage ist, was passieren wird, wenn ich mehr Geld in meinem Geldbeutel dann später bitcoin geht zurück auf $7000, ich habe mehr als $1000?

Ich habe mich für eine Weile und haben immer noch nicht eine klare Erklärung.

+300
Marie Catterson 31.05.2014, 00:56:51

Muss ich beobachten, dass viele wallet-Adressen für neue bitcoin Transaktionen, wie Sie in neue Blöcke. Ich brauche auch diese Transaktion Daten, um updates auf mein Ende

Was sind meine Optionen?

+226
Sue Rogers 15.02.2018, 13:46:39

Es gibt einen Unterschied zwischen einem software-thread und einen CPU-thread. Die Anzahl der threads, die du siehst, ist nicht die Anzahl der CPU-threads, die bitcoind ist mit. Es ist die Anzahl der software-threads, die er erstellt hat, die unterschiedlich von CPU-threads. Sie können nicht mit der software erstellen Sie mehrere software-threads, das ist nicht möglich und nicht, wie die software konzipiert ist. Auch Sie können es nicht verwenden, mehr CPU-threads oder was auch immer; das ist nicht, wie Computer funktionieren.

+198
rom 03.07.2012, 00:21:39

Ich bin ein post-graduate student der Elektrotechnik, spezialisiert in der digitalen Elektronik. Ich möchte Streifzug von ASICs für bitcoin-mining. Aber zuerst muss ich die verstehen, die Mathematik Bitcoin-mining. Welche Fächer muss ich studieren, um eine gute Vorstellung von dem, was meine ASIC bewältigen?

+155
truongtx 22.01.2014, 13:20:06

Es wurden ein paar neue sighash Arten vorgeschlagen.

  • SIGHASH_NORMALIZED : Verwenden Sie eine 'normalisierte' TXID in die Eingänge beim serialisieren für die Unterzeichnung. Diese normalisierten Transaktions-id wird berechnet, indem das entfernen der scriptSigs der Transaktion, die Sie verbringen von vor dem serialisieren.
  • SIGHASH_NOINPUT : entfernen Sie Einfach TXIDs von den Eingängen ganz. Nützlich für die Abwehr der Formbarkeit, ermöglicht aber die Mittel gesendet, um die gleiche scriptPubKey wieder gestohlen werden, so würden Sie nur melden Sie einen Eingang mit diesem, wenn Sie sicher sind, dass Sie nie gehen, um zu verwenden, dass scriptPubKey wieder.
  • SIGHASH_WITHINPUTVALUE : schließen Sie die Eingabe mit dem Wert beim Austausch der scriptSig mit der vorherigen scriptPubKey, so Unterzeichner nachweisen können, wissen genau, was Sie verschenken (nützlich für die hardware-wallets).

Soweit ich weiß, jedoch, wenn ein nicht identifiziertes sighash flag verwendet wird, dann wird der standard-client behandelt es wie SIGHASH_ALL (Quelle). Ist nicht die Einführung einer neuen sighash Flagge, eine harte Gabel, dann? Die Quellen, die im Zusammenhang mit oben geben widersprüchliche Aussagen, ob eine neue sighash Flaggen erfordern eine harte oder weiche Gabel.

+129
Naveed Ur Rahman 24.09.2017, 20:42:23

In dieser Antwort, ich werde gehen Sie durch die erforderlichen Schritte zum einlösen der zweite Ausgang der Transaktion, die oben aufgeführt sind. Die Antwort beschränkt sich auf die Einlösung einer Leistung der jeweiligen Art, die in dieser Transaktion (eine Leistung, die erfordert die Bereitstellung einer neuen Transaktion unterzeichnet mit einem privaten Schlüssel mit dem zugehörigen öffentlichen Schlüssel-hashes hash im Skript die Ausgabe in Frage), da ist diese Antwort schon ziemlich lange, auch ohne Berücksichtigung der Ausgabe anderer Arten.

Kurze Inhaltsangabe: Wir beginnen mit der Erstellung einer neuen Transaktion, mit einem scriptSig mit der scriptPubKey der Ausgabe, die wir einlösen wollen. Die scriptPubKey dieser Transaktion wird ein Skript enthalten, das zahlt sich für ein hash des public key (Bitcoin-Adresse). Wir führen ein Doppel-SHA256-hash auf diese Transaktion mit den vier-byte-hash-code-Typ SIGHASH_ALL am Ende angehängt. Wir Unterschreiben diesen hash mit dem privaten Schlüssel oben angegeben. Die scriptSig diese neue Transaktion wird dann ersetzt durch ein script, das erste schiebt der DER-codierte Signatur, plus die ein-byte-hash-code-Typ SIGHASH_ALL, auf den Stapel, gefolgt von dem DER-kodierten privaten Schlüssel den entsprechenden öffentlichen Schlüssel.

Schritt-für-Schritt-Beschreibung:

Wir beginnen mit dem erstellen einer neuen raw-Transaktion, die wir hash und sign.

  1. Fügen Sie vier-byte-Feld version: 01000000
  2. Ein-byte-varint Angabe der Anzahl der Eingänge: 01
  3. 32-byte-hash der Transaktion aus, die wir einlösen wollen, eine Ausgabe: eccf7e3034189b851985d871f91384b8ee357cd47c3024736e5676eb2debb3f2
  4. Vier-byte-Feld für die Ausgabe index wir wollen erlösen aus der Transaktion mit den oben genannten hash (Ausgabe Nummer 2 = output index 1): 01000000
  5. Jetzt kommt der scriptSig. Für den Zweck der Unterzeichnung der Transaktion, ist dies vorübergehend gefüllt mit den scriptPubKey der Ausgabe, die wir einlösen wollen. Zuerst schreiben wir eine ein-byte-varint " bezeichnet die Länge des scriptSig (0x19 = 25 bytes): 19
  6. Dann schreiben wir die temporäre scriptSig, die wieder die scriptPubKey der Ausgabe, die wir einlösen wollen: 76a914010966776006953d5567439e5e39f86a0d273bee88ac
  7. Dann schreiben wir eine vier-byte-Feld mit der Kennzeichnung der Sequenz. Dies ist aktuell immer auf 0xffffffff: ffffffff
  8. Als Nächstes kommt ein ein-byte-varint mit der Anzahl der Ausgänge in unsere neue Transaktion. Wir werden diese Einstellung auf 1 in diesem Beispiel: 01
  9. Wir schreiben dann eine 8-byte-Feld (64-bit-integer) und enthält die Menge, die wir einlösen wollen, aus der angegebenen Ausgabe. Ich werde setzen Sie dieses auf die Gesamtmenge, die in der Ausgabe zur Verfügung, abzüglich einer Gebühr von 0.001 BTC (0.999 BTC, oder 99900000 Satoshis): 605af40500000000
  10. Dann starten wir schreiben unsere Transaktion ist die Ausgabe. Wir beginnen mit einem ein-byte-varint bezeichnet die Länge der Ausgabe-Skript (0x19 oder 25 bytes): 19
  11. Dann die eigentliche Ausgabe Skript: 76a914097072524438d003d23a2f23edb65aae1bb3e46988ac
  12. Dann schreiben wir die vier-byte - "lock-Zeit" - Bereich: 00000000
  13. Und endlich schreiben wir eine vier-byte - "hash-code-Typ" (1 in unserem Fall): 01000000

    Wir haben jetzt folgende raw-Transaktion-Daten:

    01000000
    01
    eccf7e3034189b851985d871f91384b8ee357cd47c3024736e5676eb2debb3f2
    01000000
    19
    76a914010966776006953d5567439e5e39f86a0d273bee88ac
    ffffffff
    01
    605af40500000000
    19
    76a914097072524438d003d23a2f23edb65aae1bb3e46988ac
    00000000
    01000000
    
  14. (Unterzeichnung der Bühne) Jetzt doppelklicken wir-SHA256-hash-diese ganze Struktur, das ergibt den hash - 9302bda273a887cb40c13e02a50b4071a31fd3aae3ae04021b0b843dd61ad18e

  15. Wir erstellen dann ein public/private key-pair-Mädchen aus den bereitgestellten privaten Schlüssel ein. Wir signieren des hash aus Schritt 14 mit dem privaten Schlüssel ergibt die folgenden DER-kodierte Signatur (diese Signatur wird anders sein in Ihrem Fall): 30460221009e0339f72c793a89e664a8a932df073962a3f84eda0bd9e02084a6a9567f75aa022100bd9cbaca2e5ec195751efdfac164b76250b1e21302e51ca86dd7ebd7020cdc06 diese Signatur wir hängen Sie den ein-byte-hash-code-Typ: 01. Der öffentliche Schlüssel ist: 0450863ad64a87ae8a2fe83c1af1a8403cb53f53e486d8511dad8a04887e5b23522cd470243453a299fa9e77237716103abc11a1df38855ed6f2ee187e9c582ba6
  16. Wir konstruieren die Letzte scriptSig durch verketten:

    • Ein-byte-Skript OPCODE enthält die Länge des DER-codierten Signatur plus 1 (die Länge der ein-byte-hash-code-Typ)
    • Die aktuellen DER-kodierte Signatur plus die ein-byte-hash-code-Typ
    • Ein-byte-Skript OPCODE enthält die Länge des öffentlichen Schlüssels
    • Die tatsächliche öffentliche Schlüssel
  17. Wir ersetzen Sie dann die ein-byte -, varint Länge-Feld aus Schritt 5 mit der Länge der Daten von Schritt 16. Die Länge ist 140 bytes, oder 0x8C Byte: 8c

  18. Und wir ersetzen die temporäre scriptSig aus Schritt 6 mit der Daten-Struktur, konstruiert in Schritt 16. Das wird zu: 4930460221009e0339f72c793a89e664a8a932df073962a3f84eda0bd9e02084a6a9567f75aa022100bd9cbaca2e5ec195751efdfac164b76250b1e21302e51ca86dd7ebd7020cdc0601410450863ad64a87ae8a2fe83c1af1a8403cb53f53e486d8511dad8a04887e5b23522cd470243453a299fa9e77237716103abc11a1df38855ed6f2ee187e9c582ba6
  19. Wir beenden Sie durch entfernen der vier-byte-hash-code-Typ Hinzugefügt wird in Schritt 13, und wir am Ende mit den folgenden stream von bytes, welche die Letzte Transaktion:

    01000000
    01
    eccf7e3034189b851985d871f91384b8ee357cd47c3024736e5676eb2debb3f2
    01000000
    8c
    4930460221009e0339f72c793a89e664a8a932df073962a3f84eda0bd9e02084a6a9567f75aa022100bd9cbaca2e5ec195751efdfac164b76250b1e21302e51ca86dd7ebd7020cdc0601410450863ad64a87ae8a2fe83c1af1a8403cb53f53e486d8511dad8a04887e5b23522cd470243453a299fa9e77237716103abc11a1df38855ed6f2ee187e9c582ba6
    ffffffff
    01
    605af40500000000
    19
    76a914097072524438d003d23a2f23edb65aae1bb3e46988ac
    00000000
    

Python-Beispiel-code:

Ich habe ein Beispiel erstellt, um Python-Skript, die nicht alle der oben genannten. Es ist absichtlich so ausführlich wie möglich, und stark kommentiert, mit so wenig Funktionen wie möglich, um zu ähneln die Schritt-für-Schritt-Anleitung oben. Die Anzahl der code-Zeilen kann leicht reduziert werden auf die Hälfte, aber ich wähle, um es zu veröffentlichen in diesem ausführlichen format wie beurteile ich, dass es am einfachsten zu Folgen (dh. kein "springen" rückwärts und vorwärts durch die Funktionen). Das Skript enthält 76 nicht-leeren, nicht-Kommentarzeilen. Das Skript hängt von Gavin Andresen ist bitcointools (zum serialisieren und Deserialisieren von Transaktionen, und base58-Kodierung/Dekodierung) und ecdsa_ssl.py von meiner Gabel von joric ' s brutus repository (für den Bau von öffentlichen/privaten EG-key-Paare und ECDSA Signatur). Der einfachste Weg, um das Skript zum laufen zu Klonen bitcointools in einem Ordner, und legen Sie ecdsa_ssl.py aus der obigen URL im gleichen Ordner mit dem Skript und das Skript von dort aus. Sie ersetzen möchten, und die Adresse in der SEND_TO_ADDRESS variable in diesem Skript mit der Adresse, die Sie möchten, dass die Münzen, die gesendet werden, es sei denn, du großzügig bist :).

#bitcointools
von Deserialisieren import parse_Transaction, opcodes
von BCDataStream import BCDataStream
von base58 import bc_address_to_hash_160, b58decode, public_key_to_bc_address, hash_160_to_bc_address

import ecdsa_ssl

import Crypto.Hash.SHA256 als sha256
import Crypto.Random

#Transaktion aus, die wir einlösen wollen, eine Ausgabe
HEX_TRANSACTION="010000000126c07ece0bce7cda0ccd14d99e205f118cde27e83dd75da7b141fe487b5528fb000000008b48304502202b7e37831273d74c8b5b1956c23e79acd660635a8d1063d413c50b218eb6bc8a022100a10a3a7b5aaa0f07827207daf81f718f51eeac96695cf1ef9f2020f21a0de02f01410452684bce6797a0a50d028e9632be0c2a7e5031b710972c2a3285520fb29fcd4ecfb5fc2bf86a1e7578e4f8a305eeb341d1c6fc0173e5837e2d3c7b178aade078ffffffff02b06c191e010000001976a9143564a74f9ddb4372301c49154605573d7d1a88fe88ac00e1f505000000001976a914010966776006953d5567439e5e39f86a0d273bee88ac00000000"
#Ausgabe auf "einlösen". gibt es in HEX_TRANSACTION
OUTPUT_INDEX=1
#Adresse, die wir senden wollen, die eingelösten Münzen zu.
#ERSETZEN Sie MIT IHRER EIGENEN ADRESSE, es sei denn, du großzügig bist 
SEND_TO_ADDRESS="1L4xtXCdJNiYnyqE6UsB8KSJvqEuXjz6ak"
#Gebühr, die wir bezahlen wollen (in BTC)
TX_FEE=0.001
#Konstante, definiert die Anzahl von Satoshis pro BTC
MÜNZE=100000000
#Konstanten verwendet, um zu bestimmen, welcher Teil der Transaktion ist ein Hashwert.
SIGHASH_ALL=1
#private key, dessen öffentlicher Schlüssel-hashes hash enthalten in scriptPubKey der Ausgabe Nummer *OUTPUT_INDEX* in der Transaktion beschrieben in HEX_TRANSACTION
PRIVATE_KEY=0x18E14A7B6A307F426A94F8114701E7c8e774e7f9a47e2c2035db29a206321725

def dsha256(Daten):
 zurück sha256.neue(sha256.neue(Daten).digest()).digest()

tx_data=HEX_TRANSACTION.decode('hex_codec')
tx_hash=dsha256(tx_data)

#wir verwenden hier bitcointools zum analysieren einer Transaktion. diese bietet einen einfachen Zugriff auf die verschiedenen Felder der Transaktion aus, die wir einlösen wollen, eine Ausgabe
stream = BCDataStream()
stream.schreiben(tx_data)
tx_info = parse_Transaction(stream)

if len(tx_info['txOut']) < (OUTPUT_INDEX+1):
 erhöhen Absturz mit Laufzeitfehler, "es sind nur %d Nachricht(en) in der Transaktion, die Sie versuchen zu erlösen aus. Sie möchten einlösen output index %d" % (len(tx_info['txOut']), OUTPUT_INDEX)

#dieses Wörterbuch wird verwendet, um die Werte zu speichern der verschiedenen Transaktions-Felder
# dies ist nützlich, weil wir konstruieren müssen, eine Transaktion hash und sign
# und anderen, dass die Letzte Transaktion
tx_fields = {}

##hier wir beginnen mit dem erstellen der Transaktion, dass wir hash-and-sign
sign_tx = BCDataStream()
##zuerst schreiben wir die Versionsnummer, die ist 1
tx_fields['version'] = 1
sign_tx.write_int32(tx_fields['version'])
##dann schreiben wir die Anzahl der Transaktion Eingänge, die eine
tx_fields['num_txin'] = 1
sign_tx.write_compact_size(tx_fields['num_txin'])

##dann schreiben wir die tatsächlichen Bewegungsdaten
#'prevout_hash'
tx_fields['prevout_hash'] = tx_hash
sign_tx.schreiben(tx_fields['prevout_hash']) #hash der Transaktion aus, die wir einlösen wollen, eine Ausgabe
#'prevout_n'
tx_fields['output_index'] = OUTPUT_INDEX
sign_tx.write_uint32(tx_fields['output_index']) #die Ausgabe der Transaktion mit tx-id 'prevout_hash wollen wir einlösen?

##als Nächstes kommt der Teil, der die Transaktion Eingang. hier legen wir das Skript von der *output****, die wir einlösen wollen
tx_fields['scriptSigHash'] = tx_info['txOut'][OUTPUT_INDEX]['scriptPubKey']
#schreiben zunächst die Größe
sign_tx.write_compact_size(len(tx_fields['scriptSigHash']))
#dann die Daten
sign_tx.schreiben(tx_fields['scriptSigHash'])

#'Sequenz'
tx_fields['Reihenfolge'] = 0xffffffff
sign_tx.write_uint32(tx_fields['Reihenfolge'])

##dann schreiben wir die Anzahl der Transaktion Ausgänge. wir müssen nur eine einzige Ausgabe in diesem Beispiel
tx_fields['num_txout'] = 1
sign_tx.write_compact_size(tx_fields['num_txout'])
##dann schreiben wir, wie die Transaktion die Ausgabe von Daten
#wir werden einlösen, alles aus der original-Ausgabe minus TX_FEE
tx_fields['Wert'] = tx_info['txOut'][OUTPUT_INDEX]['value']-(TX_FEE*MÜNZE)
sign_tx.write_int64(tx_fields['Wert'])
##dies ist, wo unsere scriptPubKey geht (ein Skript, das zahlt sich aus zu einer Adresse)
#wir wollen, dass Sie das folgende Skript:
#"OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG"
address_hash = bc_address_to_hash_160(SEND_TO_ADDRESS)
#chr(20) ist die Länge der address_hash (20 bytes oder 160 bit)
scriptPubKey = chr(opcodes.OP_DUP) + chr(opcodes.OP_HASH160) + \
 chr(20) + address_hash + chr(opcodes.OP_EQUALVERIFY) + chr(opcodes.OP_CHECKSIG)
#schreiben zunächst die Länge dieser Datenberg
tx_fields['scriptPubKey'] = scriptPubKey
sign_tx.write_compact_size(len(tx_fields['scriptPubKey']))
#dann die Daten
sign_tx.schreiben(tx_fields['scriptPubKey'])

#schreiben locktime (0)
tx_fields['locktime'] = 0
sign_tx.write_uint32(tx_fields['locktime'])
#und hash-code-Typ (1)
tx_fields['hash_type'] = SIGHASH_ALL
sign_tx.write_int32(tx_fields['hash_type'])

#dann erhalten wir den Hashwert der signature-abzüglich Transaktionskosten (der hash ist, Unterschreiben wir mit unserem privaten Schlüssel)
hash_scriptless = dsha256(sign_tx.Eingang)

##nun fangen wir mit dem ECDSA-Zeug.
## wir erstellen einen privaten Schlüssel aus dem privaten Schlüssel Daten, und melden Sie hash_scriptless mit es
## wir prüfen auch, dass die privaten Schlüssel den entsprechenden öffentlichen Schlüssel hat, kann tatsächlich einlösen der angegebenen Leistung

k = ecdsa_ssl.- TASTE()
k.generate(('%064x' % PRIVATE_KEY).decode('hex'))

#hier rufen wir die public-key-Daten, erzeugt aus der bereitgestellten privaten Schlüssel
pubkey_data = k.get_pubkey()
#dann erstellen wir eine Signatur über den hash der Signatur-Transaktion weniger
sig_data=k.Zeichen(hash_scriptless)
#ein byte "hash-Typ" an das Ende der Signatur (https://en.bitcoin.it/wiki/OP_CHECKSIG)
sig_data = sig_data + chr(SIGHASH_ALL)

#wir überprüfen, dass der bereitgestellte private Schlüssel kann tatsächlich einlösen der Ausgabe in Frage
wenn (bc_address_to_hash_160(public_key_to_bc_address(pubkey_data)) != tx_info['txOut'][OUTPUT_INDEX]['scriptPubKey'][3:-2]):
 bytes = b58decode(SEND_TO_ADDRESS, 25)
 erhöhen Absturz mit Laufzeitfehler, "Die bereitgestellte private Schlüssel nicht verwendet werden, um zu erlösen output index %d\nSie brauchen zu liefern, die den privaten Schlüssel für Adresse %s" % \
 (OUTPUT_INDEX, hash_160_to_bc_address(tx_info['txOut'][OUTPUT_INDEX]['scriptPubKey'][3:-2], bytes[0]))

##nun beginnen wir die Erstellung der Transaktion. dies ist ein Duplikat der Unterschrift-weniger-Transaktion,
## mit dem scriptSig ausgefüllt mit einem Skript, das drückt die Signatur sowie eine ein-byte-hash-code-Typ, und einen öffentlichen Schlüssel von oben auf den Stapel

final_tx = BCDataStream()
final_tx.write_int32(tx_fields['version'])
final_tx.write_compact_size(tx_fields['num_txin'])
final_tx.schreiben(tx_fields['prevout_hash'])
final_tx.write_uint32(tx_fields['output_index'])

##jetzt brauchen wir zum schreiben der eigentlichen scriptSig.
## diese besteht aus der DER-kodierten Werte r und s aus der Signatur, ein ein-byte-hash-code-Typ, und der öffentliche Schlüssel im unkomprimierten format
## wir müssen auch voran, die Länge dieser zwei Daten-Stücke (codiert als ein einziges byte
## mit der Länge), wird vor jeder Datenübertragung Stück. diese Länge ist eine script-Befehl, der sagt, die
## Bitcoin-Skript-interpreter, um drücken Sie die x folgenden bytes auf den stack

scriptSig = chr(len(sig_data)) + sig_data + chr(len(pubkey_data)) + pubkey_data
#Erster schreiben, die Länge dieser Daten
final_tx.write_compact_size(len(scriptSig))
#dann die Daten
final_tx.schreiben(scriptSig)

##und dann haben wir einfach das gleiche schreiben Daten nach dem scriptSig, dass ist in der Signatur abzüglich Transaktionskosten,
# das weglassen der vier-byte-hash-code-Typ (wie dieses codiert ist, in der single-byte folgenden die Daten der Unterschrift)

final_tx.write_uint32(tx_fields['Reihenfolge'])
final_tx.write_compact_size(tx_fields['num_txout'])
final_tx.write_int64(tx_fields['Wert'])
final_tx.write_compact_size(len(tx_fields['scriptPubKey']))
final_tx.schreiben(tx_fields['scriptPubKey'])
final_tx.write_uint32(tx_fields['locktime'])

#druckt die Letzte Transaktion im hex-format (kann als argument genutzt werden, um bitcoind ist sendrawtransaction)
drucken final_tx.input.encode('hex')
+83
fraxture 27.06.2018, 23:12:50

Ich will erstellen Sie eine coinbase-Transaktion zu gehen mit einem neuen block minned durch mein Programm. Ich Schaffe es mit der json-rpc Befehl createrawtransaction. Was die Werte für txid und vout in diesem Fall?

+47
senschen 25.12.2012, 12:32:05

Ich bin mit Elektron 3.2.2, ich habe die wallet-Datei generiert aus Elektron und ein Passwort um die Datei zu entschlüsseln. Es ist ein Fehler, wenn ich versuche zu senden, Bitcoin aus der Brieftasche, so dass ich entscheiden, erstellen Sie eine neue wallet mit dem gleichen seed.

Aber mit dem gleichen Saatgut und der gleichen Electrum client-version, die Bitcoin-Adressen in beiden wallets sind völlig Verschieden, und es gibt keine balance in der neu erstellen Geldbeutel.

Ich habe versucht, direkt importieren Sie den privaten Schlüssel anstelle von Samen, um ein neues Portemonnaie, aber ich bin immer eine andere Bitcoin-Adresse als gut.

In Fall gibt es eine Lösung für die Fehler, die ich bereits erwähnt, hier ist die Meldung bekomme ich:

Fehler: {'Nachricht': 'die Transaktion wurde abgelehnt, Netzwerk - Regeln.\n\n16: zwingend erforderlich-script-verify-flag-Fehler (Script konnte einen OP_EQUALVERIFY operation)\n[010000000299e8fae8016f8a522bae07139c8a25e7aba82f363c3ef67481686f72f796b90d060000006a4730440220474f74cddda1f944b71f73d919ad78752176ca3335ecc5fc081ca531e5a69f9b022079efdc804841f96ccd2e80625d0c88e04ce1c4f2edf720448c0d84b4bf6a25d00121028fe4be5e66fa6ec8701a372d91d94fb5a07e133e4c91c57d1af07678dc29a228fdffffff04bd4f7d392e23482b650cf8824fa147fe0dc286177c5a2d3e1d5c32a33cfb21010000006a473044022023fcd70a5a4ee29c57a63884337ff3a5482537610d43aabf1d87093b19f7dde3022077245d5409e01eb7045e9b436c2a7455de9eed9e03296f9bea5290af85a1a8b90121028fe4be5e66fa6ec8701a372d91d94fb5a07e133e4c91c57d1af07678dc29a228fdffffff02b6040100000000001976a9140bdc1d5780d7c5544fec545a29e306f19115662588aca037a0000000000017a914882dd5029d788855b32e3656c1aa96ba4c3488e787403b0800]', 'code': 1}

Edit: ich habe versucht, überprüfen die privaten Schlüssel, den ich vom Elektron auf bitaddress.org offenbar der private Schlüssel nicht mit meinem vorherigen wallet-Adresse, möglicherweise gibt es einige Problem mit meiner alten wallet-Datei.

Edit2:

  • Ich habe versucht, Zeichen-Nachricht mit der Adresse, aber nicht, um zu überprüfen, mit der gleichen wallet-Datei unter dem gleichen Electrum-client.

  • Nach dem Export der Samen und die Verwendung der Samen auf eine neu erstellte wallet, sowohl in der alten Geldbörse und neue Geldbörse zeigen die gleichen master-public-key, aber mit völlig unterschiedlichen Adressen-Liste.

  • Bewegen Sie die wallet-Datei auf einem anderen computer, mit den neuesten Elektron-und entschlüsseln der Datei zeigt die gleichen alten Adressen, aber die Transaktion Fehler weiterhin bestehen.

Das Problem könnte mit der wallet-Datei. Ich war mit Elektrum 3.1.3 zu generieren, die Brieftasche vor einigen Monaten. Ich könnte verwendet haben, eine infizierte client generiert die wallet-Datei.

Edit3: Vergessen zu erwähnen, dass ich die portable version des Elektron die ganze Zeit, und es scheint angreifbar.

Zu der Zeit von mir generieren die Brieftasche, mein Rechner ist erst einen Monat alt ist, nicht einen laptop, und die windows os direkt von Microsoft zum Download bereitgestellt und ist noch nicht freigeschalteten. Kein anti-virus installiert, keine verdächtigen Programme oder Dateien immer heruntergeladen, und hat nie bemerkt seltsame Aktivitäten passiert in meinem computer. So, die Wahrscheinlichkeit, sich zu infizieren, ist sehr gering.

Ich glaube, ich bin über die offizielle portable Elektron aus electrum.org die wallet-Datei kann geändert werden, die ich zu der Zeit generieren.

+47
peddars 25.04.2010, 23:03:15

Ich machte Zwietracht bot für Spaß mit Tipps, tränken und Regen von altcoin. Wenn ich versuche zu senden, die große Menge, die durch das gleiche bot. Es ist mir "Transaktion zu groß" Fehler. Ich habe den Grund gefunden hier: Transaktion-Erstellung ist fehlgeschlagen

Ich brauche Hilfe bei der Lösung dieses Problems. Kann mir jemand helfen?

Vielen Dank im Voraus

+19
Christos Stathopoulos 01.11.2010, 04:27:01

Fragen mit Tag anzeigen