Wie login in Bitcoin wallet mit privaten Schlüssel

Wir arbeiten mit einem ICO-Projekt basierend auf NEO Blockchain. Wir haben die Anforderung bekommen, die Zahlungen durch NEO, der ETH und BTC. Wir verwenden Einzahlung-Adresse ein Konzept um Zahlungen von den Nutzern, und für die, die wir habe mit einigen Node js zu erstellen BTC-Adresse als unten:

var express = require('express');
var app = express();
var fs = require("fs");
var bitcoin = require('bitcoinjs-lib');
var lightwallet = require('eth-lightwallet');

Funktion generateBitcoinAddress(){
console.log("generateBitcoinAddress");
 const crypto = require('crypto');
 const EG = require('elliptisch').EG;
 const RIPEMD160 = require('ripemd160');
 const bs58 = require('bs58');
 const buffer = require('buffer');
 const EG = neue EG('secp256k1');

 Funktion hasha256(Daten) {
 die Rückkehr der crypto.createHash('sha256').update(data).digest();
 } // Eine kleine Funktion, die ich erstellt, da es eine Menge von sha256-hashing.

 const addrVer = Puffer.alloc(1, 0x00); // 0x00 P2PKH Mainnet, 0x6f P2PKH Testnet
 const wifByte = Puffer.alloc(1, 0x80); // 0x80 Mainnet, 0xEF Testnet

 var key = EG.genKeyPair();
 var privKey = Schlüssel.getPrivate().toString('hex');
 var pubPoint = Schlüssel.getPublic();
 var x = pubPoint.getX(); // elliptisch x
 var y = pubPoint.getY(); // elliptische y

 // Private-Key-Hashing
 var bufPrivKey = Puffer.aus(privKey, 'hex');
 var wifBufPriv = Puffer.concat([wifByte, bufPrivKey], wifByte.Länge + bufPrivKey.Länge);
 var wifHashFirst = hasha256(wifBufPriv);
 var wifHashSecond = hasha256(wifHashFirst);
 var wifHashSig = wifHashSecond.slice(0, 4);
 var wifBuf = Puffer.concat([wifBufPriv, wifHashSig], wifBufPriv.Länge + wifHashSig.Länge);
 var wifFinal = bs58.encode(wifBuf);

 // Public-Key-Hashing
 var publicKey = pubPoint.encode('hex');
 var publicKeyInitialHash = hasha256(Buffer.aus(publicKey, 'hex'));
 var publicKeyRIPEHash = new RIPEMD160().update(Buffer.aus(publicKeyInitialHash, 'hex')).digest('hex');
 var hashBuffer = Puffer.aus(publicKeyRIPEHash, 'hex');
 var concatHash = Puffer.concat([addrVer, hashBuffer], addrVer.Länge + hashBuffer.Länge);
 var hashExtRipe = hasha256(concatHash);
 var hashExtRipe2 = hasha256(hashExtRipe);
 var hashSig = hashExtRipe2.slice(0, 4);
 var bitcoinBinaryStr = Puffer.concat([concatHash, hashSig], concatHash.Länge + hashSig.Länge);

 var bitcoinWifAddress = wifFinal.toString('hex');
 var bitcoinAddress = bs58.encode(Buffer.aus(bitcoinBinaryStr));
data={};
 Daten.WIFPrivateKey = bitcoinWifAddress.toString('hex');
 Daten.BitcoinAddress =bitcoinAddress.toString('hex');
 return Daten;
}

app.get('/generateBTCAddress', function (req, res) {
res.senden(generateBitcoinAddress());
})

app.get('/', function(req, res) {
console.log("willkommen");
 var wifkey = bitcoin.ECPair.makeRandom().toWIF();
 var Schlüsselpaar = bitcoin.ECPair.fromWIF('L22fA7nJgiig78A8nubSAQPwYp4Fnqk4w6fuen7gwsqxp2h4ud2v');
 var data = {};
 Daten.Adresse = Schlüsselpaar.getAddress();
 Daten.wifkey = wifkey;
 Daten.Nachricht = "Willkommen zu Hause";
res.send(Daten);
});

app.get('/generateETHAddress', function(req, res) {
 var Passwort = Math.random().toString();
 var seed = lightwallet.keystore.generateRandomSeed();

lightwallet.keystore.createVault({
 Passwort: Passwort,
 seedPhrase: Samen,
 hdPathString: "m/0'/0'/0'"
 }, function (err, ks) {

 ks.keyFromPassword(Passwort, function (err, pwDerivedKey) {
 if (!ks.isDerivedKeyCorrect(pwDerivedKey)) {
 throw new Error("Falsche abgeleiteten Schlüssel!");
}

 try {
 ks.generateNewAddress(pwDerivedKey, 1);
 } catch (err) {
console.log(err);
console.trace();
}
 var result = {};
 Ergebnis.Adresse = ks.getAddresses()[0];
 Ergebnis.prv_key = ks.exportPrivateKey(Ergebnis.Adresse, pwDerivedKey);
res.send(result);
});
});
})

var server = app.hören(8081, function () {
var host = server.Adresse().Adresse
var port = server.Adresse().port
 console.log("Beispiel-app zu hören http://%s:%s", host, port)
 }) 

Rückkehr bitcoin.ECPair.makeRandom().toWIF()

Diese Rückkehr wallet-Adresse und einem privaten Schlüssel.

{
 "WIFPrivateKey": "5XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxxxxa",
 "BitcoinAddress": "12zyHTgqfm3XT5KXXXXXHk"
}

Um diese BTC eingezahlt von user, wir haben zur Anmeldung den Geldbeutel.

Der flow ist sehr straight-forward in der NEO und des Astraleums, Benutzer können sich anmelden, um die Brieftasche mit eigenem Schlüssel, aber in Bitcoin ich bin nicht in der Lage, herauszufinden, einen Weg, um sich an den Geldbeutel.

Gibt es etwas, das ich verpasst habe?

+524
Ayse Aricioglu 11.11.2010, 21:16:46
22 Antworten

Das eigentliche Skript implementiert Blitz-Netzwerk ist ein bisschen Verschieden von dem, was du zitiert hast. Dies ist das Skript unten, und die Spezifikation ist hier

OP_IF
 # Strafe Transaktion
<revocationpubkey>
OP_ELSE
`to_self_delay`
OP_CSV
OP_DROP
<local_delayedpubkey>
OP_ENDIF
OP_CHECKSIG

Ich habe erstellt, dass die Transaktion auf dem Testnet als die folgenden,

Txid: 4f8d776c85b1fc15c1125e7043a9aee70e33f0793b472823e3946a8de075bec4

Rawdata:

6321026644cb387614f66421d14da3596c21cffa239011416c9adf3f351ee8551a9fc767029000b27521029654f80732769d7c435a184a3559f12178315526c53bbf003349390811c7590a68ac

Entschlüsselt hier

{
 "Ergebnis": {
 "asm": "OP_IF 026644cb387614f66421d14da3596c21cffa239011416c9adf3f351ee8551a9fc7 OP_ELSE 144 OP_CHECKSEQUENCEVERIFY OP_DROP 029654f80732769d7c435a184a3559f12178315526c53bbf003349390811c7590a OP_ENDIF OP_CHECKSIG",
 "type": "flippig",
 "p2sh": "35M7MGVGd3ajyiTMvriUiyUM3H2cT5sgb4"
},
 "error": null,
 "id": null
}
+964
user226316 03 февр. '09 в 4:24
Ich habe eine Frage bezüglich dieses Szenario.

scenario

  • Ein (test-gateway)

    • 28000 XRP in balance
  • B (user1)

    • Vertrauen Linie mit Einem für 1000 USD
    • 400 XRP in balance
  • C (user2)

    • Vertrauen Linie mit bitstamp für 100 BTC
    • 400 XRP in balance

  • Einen Fragen 100 USD/A-B

    • B hält nunmehr 100 DM/A in die Bilanz
  • Ein einen Handel geben 10 XRP für 1, - USD/A

  • B schicken will, 0.1 BTC/bitstamp C mit seinem USD/Erledigt als Quelle.


Wird die welligkeit tun? USD/A => XRP => BTC/bitstamp

Denn ich kann nicht damit es funktioniert.

C hat ein Vertrauen Zeile zu bitstamp. B hat kein Vertrauen Zeile mit bitstamp, sollte es eine haben?

(es gibt eine Menge Liquidität XRP<=>BTC/bitstamp in der Reihenfolge im Buch)

+819
Eric Boumendil 11.02.2016, 13:35:02

Prüfen Sie, ob Ihr libleveldb.eine zusammengestellt, die alle notwendigen Dateien korrekt. Könnten Sie die folgenden Befehle ausführen bitte und poste den output zurück?

ar tv libmemenv.ein - und ar-tv libleveldb.ein. Wenn die Ausgabe ist so etwas ähnliches wie

rw-rw-rw - 0/0 432255 Apr 15 16:56 2014 memenv.o
rw-rw-rw - 0/0 21322-Apr-15 16:56 2014 port_win.o

dann könnte das problem sein, dass dein Windows find.exe ist die Aufhebung Ihrer MSYS file.exe. Sie beide arbeiten sehr unterschiedlich und sind nicht austauschbar. Das makefile von LevelDB verwendet die Unix-Stil find.exe. Sie können dieses Problem beheben, indem Sie explizit die Umsetzung Ihrer MSYS find.exe bevor das Windows-Verzeichnis find.exe Verzeichnis (das sollte so etwas wie C:\Window\System32\find.exe).

Dies war ein sehr schwieriges problem auf die Spur und Sie können sehen, meine Fortschritte (und Ron, die uns freundlicherweise haben mir sehr geholfen, danke Ron!) auf der 'offiziellen' building Bitcoin-thread auf bitcointalk.org. Ab Seite 28-und Weiterbildung nach unten, bis Sie nicht sehen, meinen Namen nicht mehr (ich bin genannt Jori gibt es auch, es ist mein richtiger name).

+785
KAKA BOOKIE 13.03.2018, 14:44:07

vielleicht wird dies helfen? https://bitcoin.org/en/developer-guide#hierarchical-deterministic-key-creation

oder überprüfen Sie die verschiedenen BIP32 Implementierungen (bitcore zum Beispiel)

+722
Krystal Bowie 23.04.2011, 17:49:15

Es wurden noch nicht alle Bitcoin schwer Gabeln in den letzten 3 Jahren so Ihre alten client sollte immer noch funktionieren. Natürlich ist es nicht in der Lage, neue features wie SegWit aber das sollte keine Rolle spielen.

Hat Ihre v0.7.2 Kunden haben die "Transaktionen" - Menü-option. Doppelklick auf die ausstehende Transaktion wird Ihnen sagen, es ist status. Wenn Sie nicht haben, die Menü-option, wo sind Sie immer die Transaktions-ID aus?

Wenn Sie noch nirgends bekommen, Ihren alten client dann in Ihre Schuhe würde ich nehmen, die folgenden Schritte aus:

  • Wenn Sie nicht bereits eine Sicherungskopie Ihrer Brieftasche, die in Ihrem v0.7.2-client-Datei->Backup-Wallet und speichern Sie es auf einem USB-Laufwerk oder irgendwo sicher,
  • Laden Sie die neueste Bitcoin-Core-client und installieren es,
  • Führen Sie den neuen client und es sollte aktualisieren Sie Ihre Geldbörse, wenn es muss,
  • Wenn Ihr blockchain ist nicht synchronisiert, dann leider müssen Sie warten, eine lange Zeit (Tage) für Sie,um aufzuholen,
  • Versuchen Sie ein anderes test-Transaktion mit dem neuen client.

Es gibt andere Optionen, die Sie könnten mit Ihren vorhandenen Kunden, wie ziehen Sie Ihre privaten Schlüssel mit dem Debug-Fenster->Konsole, aber das könnte schief gehen sehr leicht. Ihre Sorge Nummer eins ist offensichtlich nicht zu verlieren Ihren privaten Schlüssel(s) und auch wenn es eine Anzahl von Tagen für die Synchronisierung Ihrer neuen client, das ist ein kleiner Preis zu zahlen.

+683
Capitan Trueno 01.08.2010, 12:33:43

Es ist schwer zu erraten, auf "Absicht" des Senders. Aber sagen wir mal ich gesammelt, viele kleine Zahlungen (einige Satoshis) in meinem system. Ähnlich wie bei vielen kleinen Pfennig oder Cent in eine FIAT-wallet. Dann habe ich für jede Zahlung einen UTXO. Jetzt möchte ich übertragen all diese kleinen Zahlungen (oder Pfennige und Cent). Die Brieftasche hat, um alle zu sammeln UTXOs von dieser Adresse, und erstellen Sie einen Ausgang für ihn. Das macht dann erscheinen viele kleine Beträge aus der ursprünglichen Adresse.

Weitere Details: ich gesammelt hatte, viele kleine Beträge am Anfang über bitcoin faucets, hatte dann viele, viele kleine Beträge in mein Portemonnaie, und dann übertragen Sie. E. g.: https://blockchain.info/de/tx/c9908124e59a2794f3807b366be7d235ff7654251adcdf396e209236341b3c32

+604
micah williams 21.01.2015, 01:49:53

Hier ist mein Aktuelles Verständnis der Bitcoin:

Ich hab 10 bitcoins in meinem wallet.

Wenn ich 5 bitcoins zu jemand anderes, ich bin das senden der private Schlüssel aus meiner Geldbörse zu jemandem, der öffentliche Schlüssel der Adresse.

Diese sind kombiniert in einer neuen Transaktion, die später bestätigt durch die Bergleute. Die Bergleute bestätigen, dass ich im Besitz der bitcoins durch die überprüfung meiner privaten Schlüssel, und der Empfänger den öffentlichen Schlüssel gültig ist.

Dann die Bergleute einen neuen privaten Schlüssel erstellen, die an den Empfänger gesendet wird die Brieftasche.

Auf eine einfache True/False-basis, ist alles, was ich gesagt habe, richtig so weit?

Wenn ja, was passiert mit den restlichen 5 bitcoins in meinem wallet? Tun Sie magisch Holen Sie sich einen neuen privaten Schlüssel, oder was? Wie funktioniert meine Brieftasche wissen, wie viele ich noch übrig habe, und wie die verbleibenden bitcoins bekommen eine neue Identität?

+595
GoopGab 14.08.2017, 07:00:54

Führen Sie einfach bitcoind auf dem server und dann connect via API, hier der Verweis: https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)

Es gibt auch fertige (open-source) Bibliotheken in mehreren Sprachen, die Sie integrieren können in Ihre eigenen apps.

Einige Beispiele:

Aber deine Frage ist zu breit, um Ihnen eine spezifische Antwort, da müssen Sie berücksichtigen, wenn Sie wollen, zu halten, Benutzer-Mittel in eine Brieftasche und einfach zu identifizieren, Sie durch verschiedene Einzahlungs-Adressen oder in einen separaten Geldbeutel mit eigenen Tasten für jeden einzelnen Benutzer.

Im Allgemeinen: Wenn Sie nicht genau wissen, was Sie tun, speichern keine privaten Schlüssel auf dem server, vor allem, wenn Sie festhalten wollen, jemand ist Mittel.

+589
zlotnleo 03.09.2011, 02:57:27

Wie der Bitcoin Core 0.9.0 den block Fälligkeit 101 Blöcke. Dies bedeutet, dass die Referenz bitcoin Umsetzung hält es für sicher ausgeben von bitcoins generiert wurden mehr als 101 Blöcke gemeldet. Der Grund für die Wartezeit ist, weil, sobald ein block generiert wird, gibt es die Möglichkeit, dass er das Rennen verlieren werden weithin als die nächste gültige block durch das Netz. (Alle Bergleute sind im Wettbewerb, um fügen Sie den nächsten block an die blockchain, und manchmal auch zwei Parteien finden, die den nächsten block innerhalb einer sehr kurzen Zeit. Wenn dies geschieht, ein Rennen zu verbreiten, der block wird Folgen.) Wenn ein block verliert das Rennen, es ist eine "orphan" und den neue bitcoins erstellt wurden (und zugesprochen Bergmann) werden null und nichtig. Wenn diese bitcoins ausgegeben worden, diese Transaktion und alle nachfolgenden Transaktionen auf der Grundlage dieser neuen bitcoins, wäre unwirksam. Schlechte Nachrichten, wenn Sie gerade verschickt jemand einen neuen TV in Austausch für diese "unreifen" bitcoins.

Transaktion Reife unterschiedlich ist. Jedes mal, wenn eine Transaktion in einem block, es wurde bestätigt, dass die gültig durch das Netz und wird dann verteilt an alle Knoten im Netzwerk. Jetzt wäre der früheste, sollten Sie jemals E-mail die neuen TV. Jedoch, wie im Fall der block-Reife, dieser block könnte möglicherweise das Rennen verlieren werden weithin als die nächste gültige block. Wenn Sie waren verwaist, die Bestätigung für eine Transaktion verloren gehen würde. Unter normalen Umständen ist dieses nicht eine große Sache - den nächsten block (oder die nächsten paar blocks) enthält alle Transaktionen, die von den verwaisten block. Aber eine angreifende Partei kann aktiv versuchen, legen Ihre eigenen Blöcke der blockchain enthalten können doppelt ausgegeben, Münzen oder andere nicht-koschere Geschäfte. Die konventionelle Weisheit ist, dass eine Transaktion in einem block, dass mindestens fünf weitere oben drauf (6 Bestätigungen) ist wahrscheinlich nicht das Ergebnis einer angreifenden Partei. Dies ist, da die hashing-power benötigt zum umschreiben einer Transaktion, die bereits passiert ist, und dann konsequent als die "ehrliche" Bergleute für 6 geraden Blöcke zu groß wäre.

+548
Ufder 12.03.2019, 12:19:23

Ich habe das gleiche problem und versucht, verschiedene "fixes" - ohne Erfolg. Ich habe ein WLAN-modem mit cat5-Ethernet-ports auf der Rückseite. Es ist ein VOIP-adapter eingesteckt in einen von Ihnen und es funktioniert gut. Alle Lichter Leuchten auf der Bergmann als auch der router/modem, aber wenn ich log in meinem LAN-Netz bekomme ich ein "Netzwerk-Kabel unplugged" - Meldung. Ich kann mich einloggen in die miner durch den Anschluss direkt an mein laptop mit der Standard-IP (192.168.1.99) und können auf den voreingestellten Wert zurückgesetzt durch die kleine öffnung rechts neben der rot/grünen Lichtern der antminerS3. Ich habe das getan, aber trotzdem mein Netzwerk kann nicht sehen, mein miner. Ich wäre sehr daran interessiert zu hören, Anregungen.

mutt6249

+507
Sergey Romanov 29.01.2019, 04:17:31

Ein market maker wird immer match-Aufträge. Sie müssen jemanden haben, der kaufen möchte, an der Preis, den Sie verkaufen wollen, und Umgekehrt. Wenn Sie in einem niedrigen Preis zu verkaufen, Sie sind nicht garantiert, zu verkaufen, zu diesem Preis. Zugegeben, die market-maker füllen können, andere kaufen Bestellungen, die höher sind als das, was Sie Fragen, aber, wieder, es ist nicht garantiert.

Der Schlüssel zum high-volume-kaufen-verkaufen-bots zu suchen ist für die Lautstärke. Mehr Volumen bedeutet einen größeren Markt und mehr Möglichkeiten zum kaufen und verkaufen. Es gibt eine Reihe von websites, wie Cluedex.com, Rang, Märkte und bestimmen Sie, welche Trends sind zu jeder gegebenen Zeit, und geben auch einige Hinweise auf Dynamik. Mithilfe dieser Daten können Sie entscheiden, welche Märkte Sie sind geeignet, den Handel schneller. Dann, es ist nur eine Frage der bid - /ask-Preis und den Verkauf/Kauf auf die Preise.

+468
snoram 27.06.2013, 09:20:15

Die meisten crypto-Börsen haben irgendeine Art von Puffer-Adresse (einzigartig für jede person), wo Sie zahlen Sie Ihre bitcoin und dann wird gesendet, um Ihre Brieftasche und Ihr Konto ist die Gutschrift mit dem Betrag, den Sie hinterlegt. Wie funktioniert das?

+451
Andy De Guzman 01.02.2011, 02:30:43

Ein "sequential-memory-hard" - PoW-Schema nicht parallelisiert werden kann effektiv so Stelle ich mir Sie auch nicht verbreiten können des Rätsels Lösung zwischen Teilnehmer in einem pool? Wie funktioniert das mit scrypt dann - zum Beispiel wie litecoin mining-pools arbeiten?

Korrigieren Sie mich, wenn ich falsch bin, aber equihash ist "nur" Speicher-Festplatte. Ich verstehe, dass Sie die Lösung eines generalized birthday problem unter zufällig generierten bitstrings. Aber meine Frage hier ist: wie funktioniert die pool stellen Sie sicher, die Sie tatsächlich tun, sinnvolle Arbeit. Wie bei einer "traditionellen" PoW, die Sie Einreichen, Teillösungen, die nicht mit dem Netzwerk Schwierigkeiten, aber immer noch einige Schwierigkeiten haben, "befestigt", die beweisen, dass Sie gearbeitet hatte.

Für equihash ich glaube, es ist kein "Teil" - Lösung, entweder man findet die Eingänge des xor null ist oder nicht. Was bin ich?

Gibt es irgendwelche zcash mining-pools, die noch draußen? Wie sorgen Sie für "fairness"?

+299
gamerson 18.05.2011, 21:52:34

Sie können SCIP (prägnante computational Integrität und Vertraulichkeit) für diese. (siehe auch http://www.scipr-lab.org/)

SCIP ist eine Allgemeine Methode, die ermöglicht es Ihnen, eine kurze, leicht überprüfbar, die Beweis für die Tatsache, dass Sie wissen, einige Informationen, die, wenn die Eingabe in ein bestimmtes Programm, die Ergebnisse in einem bestimmten Wert.

So konnten Sie das Programm, das überprüft, der tx hat alle diese Bestätigungen dem normalen Weg, und die Verwendung SCIP zu generieren, einen kurzen Beweis dieser Tatsache. Der Nachweis der Länge nicht erhöht mit der Größe der Daten bzw. die Laufzeit des Programms, und somit Ihren Anforderungen genügt. Und Sie können dies tun, ohne änderungen an Bitcoin selbst.

Aber mit den derzeit bekannten Methoden, die Generierung der Nachweis dauert eine lange Zeit. Siehe Nick ' s Antwort für eine schnellere Methode, die bezieht sich spezifisch auf diesen Fall.

+263
akella070 06.04.2011, 15:02:16

Diese Frage dreht sich rund um Bitcoin Optech-newsletter #51 (1) und ein E-Mail-thread aus der bitcoin-dev-mailing-Liste (2). Ich fragte die gleiche Frage in einem Antwort-E-Mail-newsletter-und die Resonanz war so aufschlussreich, dass ich dachte, ich würde teilen meine Frage und Zitat David Harding Antwort-E-Mail in eine Antwort (ich habe seine Erlaubnis, dies zu tun).

Im newsletter text, beschreibt der Autor das, was ist angeblich eine Kollision Angriff auf RIPEMD160(SHA256):

Allerdings, wenn die multisig-Adressen verwendet werden, kann der Angreifer eine der beteiligten Parteien in der generation der Adresse und so möglicherweise in der Lage zu manipulieren, was die Adresse ist schließlich gewählt. Zum Beispiel, Bob sendet seinen pubkey Mallory erwarten, dass Mallory schickt Ihr pubkey zurück. Dann erwartet er, daß Sie jeden legen Sie die pubkeys in eine multisig-Skript-Vorlage, hash, in eine Adresse, und jemand wird Geld auf, das Adresse.

Mallory nimmt statt dessen die Skript Vorlage und Bob-pubkey", fügt eine Ihrer pubkeys, ohne dass Bob über ihn, und hashes in einer Adresse. Dies ermöglicht Ihr, um zu sehen, die Adresse wird Bob akzeptieren, bevor Mallory hat sich verpflichtet, dass pubkey. Mallory kann dann vergleichen diese Adresse mit einer Datenbank von Adressen erzeugt, die von Skripts, die Sie zahlen nur Ihr. Wenn es eine übereinstimmung gibt (Kollision) zwischen zwei Adressen, schickt Sie die pubkey zurück zu Bob, wartet die für Geld hinterlegt werden, in dem Adresse, und verwendet dann das Skript aus Ihrer Datenbank, das Geld zu stehlen. Wenn es nicht passt, Mallory kann versuchen Sie es erneut mit einem anderen pubkey über und über, bis es gelingt Ihr, (wenn wir davon ausgehen, Sie hat unbegrenzte Zeit und Ressourcen).

Obwohl dies scheint, wie die gleiche brute-force-Angriff zuvor beschrieben mit 1-in-2^160 Erfolgsaussichten pro Versuch müssen wir die Größe von Mallory Datenbank. Wenn wir uns vorstellen, die Datenbank verfügt über 100 Adressen, die dann jeweils unterschiedliche pubkey Sie versucht hat, eine 100-in-2^160 chance auf Erfolg, weil es erfolgreich ist, wenn Sie mit einer der Adressen in Mallory ' s Datenbank.

Diese Art von Angriff nennt eine Kollision Angriff.

Meine Frage ist: Ist das nicht der beschriebene Angriff eigentlich eine second-preimage-Angriff, und nicht eine Kollision angreifen?

Der Angriff beschrieben wird, basiert auf einer Datenbank von preimages und hashes, also ich würde sagen der Angriff ein second-preimage-Angriff (auch wenn Sie möglicherweise in einem stark konkurrierenden eins). Ich würde nicht nennen es eine Kollision Angriff, weil eine Kollision Angriff ist der Prozess der Suche nach zwei verschiedenen preimages mit dem gleichen hash-Wert, unabhängig von der hash-Wert. In diesem Angriff der Angreifer ist auf der Suche nach einem bestimmten hash-Werte. Ihr Beispiel mit einer Datenbank von 100 Adressen macht es ziemlich klar, was wir zu tun mit einem second-preimage-Angriff. Es ist noch mehr klar, ob die Datenbank enthält nur 1 Eintrag. Die Linie zwischen einer Kollision angreifen und eine second-preimage-Angriff wird ein wenig verschwommen, wenn die Datenbank wächst, aber ich denke immer noch es ist falsch zu nennen es eine Kollision Angriff.

Der Angriff beschrieben von Pieter Wuille in der E-Mail verbunden mit (3) von der newsletter ist ein reines Kollision Angriff, wo der Angreifer nicht einer bereits erstellten Datenbank von preimages und hashes. Stattdessen wird der Angreifer berechnet eine Kollision nach dem Opfer pubkey empfangen wird, und kümmert sich nicht, was der hash-Wert ist. Siehe zum Beispiel Ethan Heilman-Algorithmus (4), die ich noch nicht vollständig verstanden, aber es ist ein Algorithmus, der nicht eine Datenbank verwenden, finden Kollisionen mit der Ordnung ~2^80 arbeiten. Anthony Towns später (5) berichtet aus einem expliziten Algorithmus für das finden einer Kollision mit einem gewählten Präfix und suffix mit etwa der gleichen Komplexität.

Einen wichtigen Unterschied zwischen dem Angriff beschrieben in den newsletter ein und Wuille ist, dass Sie eine riesige Datenbank (~2^80 Einträge) zu erreichen, Komplexität ~2^80, während Wuille braucht keine Datenbank-zu erreichen über die gleiche Komplexität. Sie Art von emulieren eine Kollision Angriff mit einer großen Anzahl von gleichzeitigen second-preimage-Angriffe. So ist der newsletter wirklich beschreiben, eine Kollision angreifen?


(1) https://bitcoinops.org/en/newsletters/2019/06/19/

(2) https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2016-January/012198.html

(3) https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2016-January/012205.html

(4) https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2016-January/012202.html

(5) https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2016-January/012218.html

+258
namezero 29.09.2012, 02:36:50

Hier ist ein Ausgangspunkt fand ich bei Btc-e mit Pastebin, Quelle hier http://pastebin.com/Xu64wH1e:

# BTC-e handeln, übernimmt das Modul Optionen, pair das paar gehandelt zB. ltc_usd, ltc_btc,
# btc_usd. geben Sie den Typ der Transaktion zu kaufen oder zu verkaufen, die rate der Preis, den Sie kaufen oder verkaufen
# bei der Zahl mit führender null an, wenn die Dezimalzahl (0.025 nicht .025) und-Menge, die Menge zu kaufen oder zu verkaufen.
# Usage ./trade.py ltc_btc verkaufen 0,0075 notiert wird 568
# Aufbauend auf den bereits vorhandenen Beispiel-code platziert auf dieser Website mit meinen Ergänzungen
# ein Beispiel.

import sys
import httplib
das urllib import
importieren json
import hashlib
import hmac

# Ersetzen Sie diese mit Ihrer eigenen API-Schlüssel Daten bei der Generierung der Schlüssel werden Sie sicher, überprüfen Sie die Handel
# box.
BTC_api_key = "your-api-key hier"
BTC_api_secret = "your-api-secret-hier"

# Lesen der Datei zu bekommen, nonce, die zuletzt benutzt dann Inkrementieren und speichern für die nächste Benutzung.
# Sie müssen die Datei erstellen nonce.txt bei der ersten Benutzung der Handel api setzen die Nummer 1 in der it.
# Es muss im aktuellen Verzeichnis sein, wie Sie ausgeführt werden .py-Datei ändern oder zu korrigieren
# Pfad in der open(....).

mit open('nonce.txt') as f:
n = int(f.read()) + 1
f.close()
mit open('nonce.txt', 'w') as f:
f.write(str(n))
f.close()
nonce = n

# name der Methode, die Optionen und die nonce gehen in die POST-Parameter
params = {"method":"Handel",
 "pair" : sys.argv[1] ,
 "type" : sys.argv[2] ,
 "rate" : sys.argv[3] ,
 "Betrag" : sys.argv[4] ,
 "nonce": nonce}
params = das urllib.urlencode(params)

# Hash params string zu produzieren, die die Zeichen-header-Wert
H = hmac.neue(BTC_api_secret, digestmod=hashlib.sha512)
H.-update(params)
Zeichen = H. hexdigest()

headers = {"Content-type": "application/x-www-form-urlencoded"
"Schlüssel":BTC_api_key,
"Zeichen":Zeichen}
conn = httplib.HTTPSConnection("btc-e.com")
conn.request("POST", "/tapi", params, headers)
Antwort = conn.getresponse()

print Antwort.status, Antwort.Grund
drucken json.Belastung(Antwort)

conn.close()
+196
Mark Wohlgemuth 01.09.2014, 19:37:37

Ich habe die Fragen, die über die längste Verzögerung zwischen den Blöcken und bin bewusst, dass einige Blöcke, die auftreten, kurz hintereinander. Allerdings habe ich selten sehen, viele blocks auftreten einander sehr nahe (die ich nehme an das ist normal, da die Durchschnittliche Zeit, die zwischen den Blöcken 10 Minuten)

Was ist die höchste Anzahl der Blöcke, die je passiert sind in 1 Stunde?

Wie kann ich die Suche der blockchain um diese Frage zu beantworten für mich?

+194
2010 Macbook pro user 14.02.2015, 21:25:35

Wenn Sie brauchen, Formel

108 Satoshis == 1 BTC

oder in Python

def btc2satoshi(btc):
 Rückkehr btc ** 8

BTC = 1.0
print(btc2satoshi(BTC))
+182
Maurizio Avati 16.08.2011, 02:33:44

Beim erstellen eines privaten Schlüssels, wie würde ich sicherstellen, dass es eine mini privaten Schlüssel entspricht, der konnte ersetzt werden, an die Stelle der den vollständigen private key? Was Mathe würde ich verwenden, um zu schaffen, wie einen privaten Schlüssel für bitcoins?

+176
Endareth 01.12.2012, 18:47:54

Endlich bekomme ich Antwort auf diese Frage durch das surfen sehr viel für dieses Thema.

Ich fand source code für den transfer Bitcoin von einem einzigen Konto zu einem anderen.

"https://github.com/Blank101/bitcoin-transaction/blob/master/index.js"

und da ich feePerByte = 3 als pro meine Anforderung. Also durch diese Transaktion Gebühren Meine Transaktion nicht abziehen, viel mehr Gebühren.

+145
Wayne Fitz 20.04.2012, 00:38:59

Der Satz, den Sie zitiert wird, aus der Mit passphrase verschlüsselt Saatgut Abschnitt. Wie der Titel schon sagt, der eigentliche Samen ist nicht gespeichert in Ihrem Trezor wenn Sie die passphrase Schutz. Stattdessen wird eine passphrase verschlüsselte version der Samen wird in dem Gerät gespeichert sind (und auch so exportiert, wie Sie einen erholsamen, wenn nötig).

Natürlich, wenn ein Angreifer waren zu erhalten, die unverschlüsselt (plain) Samen, er wäre in der Lage, die Wiederherstellung Ihrer Brieftasche und stehlen die Münzen leicht. Es ist jedoch nicht möglich, extrahieren Sie die Ebene Saatgut aus der verschlüsselt, wenn eine ausreichend komplexe passphrase verwendet wird.

+143
sigkill 26.06.2011, 00:32:47

Wenn ein altcoin verwendet die SHA256-Doppel-hash-Algorithmus für Ihren proof of work algorithm, dann ja, können Sie antminers oder andere Bitcoin-mining-hardware, um mir diese altcoins. Sie müssen zum ändern der antminer um andere mining-software (Sie sollten in der Lage sein, um ssh in es und laden, je nachdem welche mining-software, die Sie wollen).

+83
jefferson jesus de paula 01.07.2016, 16:33:07

Fragen mit Tag anzeigen