Welche Software-Muster macht die Bitcoin-source-code verwenden?

Ich bin ein Master Student in informatik und untersuchen derzeit die Bitcoin-source-code auf der Software-Muster, die verwendet werden. Teil der Aufgabe ist, zu Fragen, die community, uns zu führen.

Ich möchte Sie Fragen, ob Sie wissen, jede Software, die Muster in den source-code. Um Ihnen einen Blick auf unseren Bereich, unten ist eine Liste von Mustern, die abgedeckt werden (Entwurfsmuster und Architektur-Muster).

Vielen Dank im Voraus,

Patrick

Object-Oriented Design Patterns:

  • Fabrik-Muster
  • Adapter-Muster
  • Composite-Muster
  • Fassade-Muster
  • Proxy-Muster
  • Observer-Muster

Architektonische Muster:

  • Layered Zersetzung Muster
  • Pipes-Und-Filter-Muster
  • Daten-Repository-Pattern
  • Model-View-Controller-Muster
  • Client-Server-Muster
  • Peer-to-Peer Muster
  • Das Publish-Subscribe-Muster
  • Broker-Muster
  • Message-Queue-Muster
+379
Thomas Wrobel 25.05.2010, 23:05:05
25 Antworten

Dies könnte helfen - Sie können SQL-Abfragen auf massive Mengen von Bitcoin Cash blockchain Daten mit der Skala, die von Google BigQuery. Das ETL-system ist bereits integriert, es gibt keine Einschränkungen oder bestimmte Anforderungen benötigt, und Google bietet weitere API unterstützen durch Ihre client-Bibliotheken https://console.cloud.google.com/marketplace/details/cmorqs-public/cmorq-bch-data Diese Lösung stellt ein Beispiel der Daten, aber Sie bekommen vollen Zugriff auf die live-Daten über die Unternehmens-website.

+945
njdie 03 февр. '09 в 4:24

Teil des Problems mit reinen pos-system ohne checkpoints und voller premine ist, dass die Fonds Inhaber aller Münzen oder Jetons, die hat nichts auf dem Spiel zu verlieren. Das ist in Ordnung, wenn es keinen Wert in der Münze, aber sobald es ist es Wert den Anreiz zu verdoppeln verbringen und Geld auf Ihren großen Betrieb, während in der Lage zu verdoppeln verbringen zu viel wird, dass es getan werden. Nubits lief in dieses problem, der Notwendigkeit von 51% oder mehr auf Stimmen-pass-Anträge auf Rückkäufe auf der Münze Genehmigung durch die gleichen 51% - Beteiligung an der Münze Inhaber. Niemand hat ein reines pos system, das funktioniert, peercoin ist durch entfernen der zentralen checkpointing in der nächsten version 0.6 und ich habe nicht gesehen, alle anderen pos-Münze um die notwendige Verteilung zuversichtlich zu sein, dass das Netzwerk nicht in Gefahr, durch das entfernen der Prüfpunkte.

Jedes Reine pos-system hat man zu Fragen, distribution Methoden und wie man den Marktwert ermittelt wurde, wurde es durch den wahren Markt Schwankungen über die Zeit oder hat es schon aufgeblasen durch ein paar holding Münzen aus dem Markt zu drücken den Preis hoch?

Vertrauen muss sein, forstarbeiter, durch ein premine und zentrale Autorität, wie Sie hat kein Vertrauen wurde forstarbeiter zu investieren, in der cryptocoin?

+765
anonymox 29.09.2018, 00:48:40

Diese müssen dir helfen.

Öffnen Sie das terminal:

$ sudo su
# cd /var/lib/snapd/desktop/Anwendungen
# nano bitcoin-core_bitcoin-qt.desktop

und die Letzte Zeile muss so Aussehen, dass

Exec=env BAMF_DESKTOP_FILE_HINT=/var/lib/snapd/desktop/applications/bitcoin-core_bitcoin-qt.desktop /snap/bin/bitcoin-core.qt %U

Strg + X beendet den editor, und Sie werden gefragt, ob Sie Ihre änderungen speichern möchten. Drücken Sie Y für ja.

Jetzt starten Sie die app.

+685
somsyg 04.10.2018, 04:03:03

Sie müssen nicht senden Sie die Münzen überall. Nur neu erstellen, die alte wallet mit dem recovery-Satz.

Digital assets nicht buchstäblich in die Brieftaschen. Brieftaschen halten Sie einfach die Tasten nötig, um Zugriff auf die Vermögenswerte.

+678
dede han 23.06.2017, 16:24:46

Wenn Sie Ihre bitcoins gestohlen worden war (von jemand anderem erworben, die die privaten Schlüssel), Ihr Kunde würde zeigen, Transaktionen senden, die Münzen zu den Diebes-Adresse. Die Tatsache, dass Sie keine Transaktionen auf alles deutet darauf hin, dass aus irgendeinem Grund der Kunde nicht importiert den Schlüssel korrekt, oder vielleicht, dass dein backup korrupt ist.

Wenn Sie wissen, die Adressen aus der Brieftasche, können Sie Sie auf eine Website wie http://blockchain.info und sehen, ob die Münzen sind noch in diese Adressen, oder, wenn Sie übertragen werden.

+676
Na02 16.04.2019, 17:02:05

Jirico s Antwort ist die richtige. Musst darauf achten, stellen Sie die Adresse ein, die Sie sind Abfragen, die in params.

Wenn Sie brauchen mehr Tiefe, als nur ein Gleichgewicht, können Sie auch getaddresshistory

{"id":"myquery","Methode":"getaddresshistory","params":["14vuRY354EaxDu4WrgjtvoDEwntDNwMVbx"]}

Sie finden eine Liste der Befehle hier: Eine Einführung in die Elektron Python-Konsole

+667
theCakeCoder 01.11.2013, 15:26:04

Haben Sie einen Blick auf die frühen Quellen hier: http://www.bitcointrading.com/forum/bitcoin-clients/original-bitcoin-source-code-archives/

es ist ein kleines Stück code in script.cpp:

 Fall OP_RETURN:
{
 pc = pend;
}
break;

die es erlaubt, zu verbringen UTXO mit nur einer sehr einfachen scriptSig OP_1 OP_RETURN

+655
Thilina Ashen Gamage 21.11.2010, 14:31:33

Gehe in die Konsole und geben Sie ein : dumpprivkey litecoinaddress

Verwenden Sie die Hilfe, wenn nessassary.

Die Konsole ist in : Hilfe\Debug Windows

+613
Wilburyaya 24.07.2017, 23:53:06

Ich bin versucht zu importieren, private Schlüssel wurde in Multibit, in die Waffenkammer. Ich bin in der Lage, die Wiederherstellung dieser Schlüssel in andere Portemonnaies wie der Android Bitcoin Wallet, Mycelium und Elektron, aber wenn ich Versuch, es zu tun in der Waffenkammer bekomme ich eine Fehlermeldung besagt, dass Der private Schlüssel, den Sie eingegeben haben, ist eigentlich nicht gültig für die elliptische Kurve verwendet, die durch Bitcoin (secp256k1). Fast alle 64-Zeichen hex ist ein Gültiger privater Schlüssel, außer für diejenigen, die größer als fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"

Mein Schlüssel ist das falsche format oder so?

+533
user1023102 05.09.2017, 01:12:00

Ich benutze das internet bei meiner Arbeit, in meinem Haus, und an verschiedenen anderen Orten. Der server kann eine Verbindung mit anderen peers und get-block Daten-an allen diesen Standorten mit Ausnahme meiner Heimat. Was könnte der Grund dafür sein? Ich kann mir auch nicht push zu GitHub SSH zu verwenden, Wann immer ich zu Hause bin, so dass ich vermute, diese Probleme sind verwandt.

Ich habe versucht, drehen firewalls ausschalten und zurücksetzen des Routers. Ich habe noch immer das "Kein" block "- Quelle verfügbar Fehler".

Ich weiß, das ist ähnlich wie die Frage hier, aber ich denke, es ist anders, weil diese Frage fragt, warum wäre es passiert nur auf einer bestimmten internet-Verbindung.

+447
Youssef11 01.05.2017, 18:15:04

Ich sehe in das bitcoin-wiki gibt es etwas namens "Skript", die kompiliert unten einige bytecode ausgeführt werden, indem eine sehr sehr basic virtual machine.

Script ist eine stack-basierte Sprache, die verwendet wird, um die Validierung der input-und output-Skripte in Transaktionen. Skript ist absichtlich so ausgelegt, Mangel Turing-Vollständigkeit (keine Schleifen), so dass es ist deterministisch, in der Natur. (Keine unendlichen Schleifen, etc). Ein Eingang/Ausgang ist als "gültig", wenn das oberste stack-Element wird auf true (oder 0x01).

Bedeutet dies, dass jeder block ist eigentlich nur ein string/array von bytes ist, wenn es in kommt und verarbeitet wird, durch einen Knoten?

Bitcoin-Knoten überprüfen Transaktionen, Bitcoin Miner compute-Blöcken in übereinstimmung mit dem Proof-of-Work-Modell definiert in das Bitcoin-Protokoll. That being said, ja, technisch ist der raw - block-Daten ist ein array von hexadezimalen bytes. Wenn die Bergleute beginnen, Bergbau-block, sind Sie nur die Vermischung der Kopfzeile des Blocks (die ersten 80 bytes) enthält die folgenden Informationen:

nVersion|hashPrevBlock|hashMerkleRoot|Zeit|Bits|Nonce

Sie können sich mit dies zu tun, weil die hashMerkleRoot Wert ist eine Referenz auf den hash, der alle Transaktionen in den block, die Sie Bergbau sind. Diese Transaktionen wurden validiert von Knoten.

In Bitcoin-core können Sie festlegen, Serialisierung, die als zweiter parameter in der getblock Befehl. Standardmäßig wird es schön anzeigen der Daten in einem JSON-wie output, es ist zwar wirklich eine lange hexadezimale Ausgabe.


Beispiel:

getblock 00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09 0

Ausgabe: 010000007de867cc8adc5cc8fb6b898ca4462cf9fd66...

+444
Nader Namini 07.04.2015, 11:58:29

Ich habe mehrere Probleme die tests erfolgreich laufen unter meiner Gabel (oder vbuterin ist pybitcointools, und ich bin der Hoffnung, jemand mit einem kombinierten Python / Bitcoin wissen können Einblicke ermöglichen.

Hier ist die Fehlermeldung (wie vorgelegt zu #145):

======================================================================
FAIL: test_all (__main__.TestTransaction)
----------------------------------------------------------------------
Traceback (most recent call last):
 Datei "/private/var/mobile/Containers/Shared/AppGroup/AA78F2EC-3EE8-40F4-A318-8A9AB1BCB5FF/Pythonista3/Documents/pybitcointools-vbuterin/test.py", line 179, in test_all
 selbst.assertTrue(verify_tx_input(tx1, 0, mscript, sig1, Kneipen[1]), "Verification Error")
AssertionError: Fehler Bei Der Überprüfung

======================================================================
FAIL: test_all (__main__.TestTransactionSignVerify)
----------------------------------------------------------------------
Traceback (most recent call last):
 Datei "/private/var/mobile/Containers/Shared/AppGroup/AA78F2EC-3EE8-40F4-A318-8A9AB1BCB5FF/Pythonista3/Documents/pybitcointools-vbuterin/test.py", line 133, in test_all
 "Fehler bei der überprüfung"
AssertionError: Fehler bei der Überprüfung

----------------------------------------------------------------------
Lief die 18-tests in 6.944 s

FEHLGESCHLAGEN (Fehler=2 Fehler=2)

Ich habe eine Vermutung, dies hat zu tun mit der Einführung der low_s (dh s = N-s falls s>N//2 else s) für ECDSA-Signatur -, kann aber nicht sicher sein.

Kann mir jemand zeigen, wo die Dinge laufen in die Irre?

+439
mZaragoza 27.04.2016, 12:34:04

Starten Sie eine neue Kette verwenden Sie ein genesis-generator, gelten die neuen genesis zu der Quelle, und entfernen Sie die Prüfpunkte.

Wenn Sie sich bewerben möchten neue/andere Regeln, werden vorbereitet für eine schwierige Aufgabe. Das ändern auch nur die geringste Protokollregel wird wahrscheinlich Auswirkungen auf alle anderen Regeln wegen der Komplexität der PoW.

Wenn das einzige, was Sie ändern wollen, ist die maximale Münzen, dies sollte relativ einfach zu ändern, in der Quelle.

+436
user8296 14.05.2010, 09:55:28

Szenario: Sie haben eine website auf einem remote - server, und Sie möchten, zu akzeptieren, BTC Spenden an eine bestimmte Adresse (wahrscheinlich deine) und anzeigen eine "Danke" - Nachricht automatisch.

Wie Sie programmgesteuert bestimmen, wenn eine Zahlung an Sprach-Adresse ist passiert? Ist es überhaupt möglich?

Mit bitcoind ist in diesem Fall nicht möglich, da die Bitcoin-wallet ist nicht auf dem server, so was kann man verwenden? blockchain.info's API?

Danke!

+397
tloz6996 02.02.2012, 05:43:26

Ich denke, Ihre beste Wette ist, um Ihren eigenen Knoten, und rufen Sie dann getpeerinfo auf Sie. Dies wird Ihnen eine Liste aller angeschlossenen peers, einschließlich Informationen wie die version berichtet. Sie können auch die addnode - option, um sicherzustellen, dass Sie versuchen, eine Verbindung zu allen Knoten in der Liste.

+373
Jeanne D Taylor 27.01.2010, 04:26:01

Warum Bergleute erhöhen die nonce zur Berechnung der block-hash-vielmehr als nur die Erzeugung eines random-block-hash? Es scheint mir, dass beide Ansätze die gleiche Möglichkeit zu finden, ein Ergebnis, das unter dem Zielwert.

Wenn die Antwort ist, dass es schneller zu erhöhen, die nonce, anstatt nur die Generierung einer zufälligen hash zu einem gültigen Ergebnis, könnten Sie diese in eine mathematische/statistische Methode?

+360
ZeroSpectr 02.10.2014, 20:55:24

Pre-mining bedeutet, dass die neuen Münzen wurden abgebaut, bevor die Münze der öffentlichkeit zugänglich gemacht worden. Was bedeutet, dass der Schöpfer der neuen Währung hatten einen unfairen Vorteil und startete mit einer großen Menge von Münzen, bevor jemand anderes die chance dazu hatte. Pre-mining oft schreckt andere Menschen von der Teilnahme und eine Währung ist nutzlos, ohne die Benutzer.

+295
user10366716 16.12.2017, 15:01:35

Soweit ich weiß gibt es keine Möglichkeit zu wissen, das auf einer Protokoll-Ebene... Was Sie tun können, um Ihre eigenen Knoten (jeder Knoten mit einer bestimmten Implementierung) oder einige Leute öffentlich sagen, welche Knoten Sie ausgeführt werden. Zum Beispiel mein Knoten c Lightning, ACINQ ist mit eclair, und ich glaube, rompert Betrieb ist, der lnd. Auch auf 1ml.com einige Besitzer registrieren Ihre Knoten und sagen, was Sie ausgeführt werden. Natürlich könnten Sie liegen...

+290
Adam Zerner 16.03.2016, 01:07:27

Sie brauchen beide, um bitcoin wallet und sich gegenseitig kennen BTC Adresse.

Wenn Sie beide haben sowohl bank-Konten in jedes Land macht es einfach.

  • Kaufen BTC in Ihrem Land mit BRL.
  • Senden Sie BTC an die person, die das Leben überall auf der Welt.
  • Kann er wandelt seine bitcoin gegen EUR über lobalbitcoins, den Austausch oder die Geldautomaten in einigen Städten. Umwandlung von bitcoin zu Euro könnten nicht einfach sein. Der Austausch erfordert die überprüfung von Dokumenten. Wenn er Kontakt zu Personen oder gehen Sie zu einem bitcoin-ATM-Maschine, das wird wohl nicht die eine überprüfung erforderlich ist-Prozess.
+192
jigzat 14.11.2014, 12:38:12

In dieser Frage haben wir eine oberflächliche Erklärung von vSeeds (seednodes), aus dem Bitcoin-wiki, wir haben:

DNS-Adressen Nach dem Start, wenn der peer-node discovery erforderlich ist, der client gibt dann die DNS-Anfragen, um Informationen über die Adressen von anderen peer-Knoten. Der client enthält eine Liste von host-Namen für DNS-Dienste sind ausgesät. Als-Mai 17, 2012 die Liste (von chainparams.cpp) enthält:

bitseed.xf2.org
dnsseed.bluematt.mir
Samen.bitcoin.sipa.werden
dnsseed.bitcoin.dashjr.org
seed.bitcoinstats.com

Eine DNS-Antwort enthalten kann, die mehrere IP-Adressen für einen gewünschten Namen. Adressen entdeckt, über die DNS sind zunächst auf null timestamp, daher sind Sie nicht angekündigt, in Reaktion auf eine "getaddr" - Anfrage.

Hart Codierte "Saatgut" Adressen Der client enthält hart codierte IP-Adressen, die Sie vertreten bitcoin-Knoten. Diese Adressen sind nur als letztes Mittel eingesetzt, wenn keine andere Methode produziert hat alle Adressen. Wenn die Schleife in das connection handling thread ThreadOpenConnections2() sieht eine leere map Adresse, verwendet er die "seed" - IP-Adressen als backup.

In der Bitcoin-Kern code-Basis sieht es wie folgt aus:

// Beachten Sie, dass dieser mit der bits-Dienst flag, die meisten unterstützen nur eine Teilmenge der möglichen Optionen
vSeeds.push_back(CDNSSeedData("bitcoin.sipa.werden", "Saatgut.bitcoin.sipa.sein", true)); // Pieter Wuille, nur unterstützt x1, x5, x9 -, und xd
vSeeds.push_back(CDNSSeedData("bluematt.mich", "dnsseed.bluematt.mich", true)); // Matt Corallo, unterstützt nur x9
vSeeds.push_back(CDNSSeedData("dashjr.org", "dnsseed.bitcoin.dashjr.org")); // Lukas Dashjr
vSeeds.push_back(CDNSSeedData("bitcoinstats.com", "seed.bitcoinstats.com", true)); // Christian Decker, unterstützt x1 - xf
vSeeds.push_back(CDNSSeedData("bitcoin.jonasschnelli.ch", "Saatgut.bitcoin.jonasschnelli.ch", true)); // Jonas Schnelli, nur unterstützt x1, x5, x9 -, und xd
vSeeds.push_back(CDNSSeedData("petertodd.org", "seed.btc.petertodd.org", true)); // Peter Todd, unterstützt nur x1, x5, x9 -, und xd

Wenn Sie tatsächlich gehen, um diese Adressen in einem browser bekommen Sie etwas unverständlich, wie diese:

enter image description here

Alle schließen Gabel des Bitcoin haben Sie in irgendeiner Weise, einschließlich Dogecoin hier:

vSeeds.push_back(CDNSSeedData("dogecoin.com", "seed.dogecoin.com"));
vSeeds.push_back(CDNSSeedData("multidoge.org", "seed.multidoge.org"));
vSeeds.push_back(CDNSSeedData("multidoge.org", "seed2.multidoge.org"));
vSeeds.push_back(CDNSSeedData("doger.dogecoin.com", "seed.doger.dogecoin.com"));

und hier Litecoin:

vSeeds.push_back(CDNSSeedData("loshan.co.uk", "Saatgut-ein.litecoin.loshan.co.uk", true));
vSeeds.push_back(CDNSSeedData("thrasher.io", "dnsseed.thrasher.io", true));
vSeeds.push_back(CDNSSeedData("litecointools.com", "dnsseed.litecointools.com"));
vSeeds.push_back(CDNSSeedData("litecoinpool.org", "dnsseed.litecoinpool.org"));
vSeeds.push_back(CDNSSeedData("koin-project.com", "dnsseed.koin-project.com"));

Die Frage ist, was sind Sie genau, d.h. welche Daten Sie in welchem format? Wie sind Sie konfiguriert?

Ich wäre in der Lage zu erstellen seednodes aus docker-Containern für ein neues Netzwerk?

Welche tools könnte ich verwenden, um die Abfrage von Knoten, die weiter oben aufgeführt?

Hat jemand eine Referenz-Implementierung für eine dieser?

+189
Rahul Nori 11.07.2013, 19:59:36

Es gibt so viele Börsen und der lokalen Börsen die es gibt. Wenn ich will, zu kaufen ein bitcoin, wie Sie sich entscheiden, welchen Wert ein, um durch zu gehen? Einige dieser Börsen variieren von ein paar Dollar zu $200 Unterschied. Ich weiß, es ist immer schwankend und oft irgendwann gleicht sich aus, aber wie bestimmen Sie den Preis, der bezahlt werden sollte?

+141
MountainX 18.12.2011, 11:43:30

Sie können versuchen, https://localbitcoins.com Es ist ein p2p crypto exchange market, mit Ihnen zu interagieren und den Austausch von Währungen mit Ihrem Zähler-Partei direkt, keine Zwischenhändler.

Siehe auch:

+117
Mik123456 04.12.2015, 01:23:56

Bitcoin ist nicht anonym in irgendeinem strengen Sinn, und die Entwickler nie behauptet, es war. Siehe zum Beispiel https://en.bitcoin.it/wiki/Anonymity. Wenn jemand hat Ihnen gesagt, dass Sie es ist, dann in der Tat, dass "Bluff machen könnten".

Jedoch das spezifische Problem, das Sie beschreiben, ist ziemlich leicht zu vermeiden ist, praktisch gesprochen. Wenn John nicht will, dass Sie wissen, seine gesamten Bestände, dann sollte er Sie teilen Sie Sie über eine große Anzahl von Adressen. Zum Beispiel, es gibt nichts hindert ihn damit, seine Münzen über 10.000 Adressen, jeweils mit 0.1 BTC. (Es werden einige sein die Transaktionsgebühren aber klar, er kann Sie sich leisten.) Dann kann er senden Sie Münzen aus nur einer von Ihnen, und Sie werden nicht wirklich wissen über die anderen. Wenn er will, kann er verwenden Sie einen mixer oder einen ähnlichen Dienst, um weiter zu verschleiern, die Tatsache, dass diese Adressen wurden finanziert aus einer gemeinsamen Quelle.

+95
exceltior 02.06.2010, 01:36:13

Ich habe einen server mit bitcoind 9.x, wie kann ich Funktionen wie return-Adressen meiner Kunden, die mit BIP 70? Ich habe gesehen, das GIT-repo, aber es ist etwas, das ich herunterladen muss oder ist es schon implementiert, in der bitcoind daemon ich laufen?

Dank

+34
Carta Genero 16.10.2014, 15:46:30

Blockchain ist eine bloße Kette von Blöcken und dieser Respekt ist schlimmer als jede Datenbank, die auf der Erde. Was macht die öffentliche blockchain einzigartig ist die proof-of-Arbeit, die dafür sorgt, dass Tausende von Kopien der blockchain sind probabilistisch identisch in der ganzen Welt und mit keine diskreten Autorität vertrauenswürdig zu verwalten. Eine private blockchain ist eine Finanzbuchhaltung verwaltet von einer Behörde, so ist eine Abstraktion, die implementiert werden kann, mit irgendwelchen db-Technologie

+19
user123287 10.01.2014, 05:00:53

Fragen mit Tag anzeigen