Wie kann ich Vertrauen zu einem neuen block broadcated auf das Netzwerk?

Ich habe ein Riesen Loch in mein Verständnis!

Ich habe vor kurzem angefangen mit https://github.com/sebicas/bitcoin-sniffer

was ist ein Python-Skript, können Sie eine Verbindung zu einem beliebigen Knoten im Bitcoin-Netzwerk und Trigger-events:

  • new_block_event(block): wird Ausgelöst, wenn ein Block gefunden wird
  • new_tx_event(tx): wird Ausgelöst, wenn ein Transaktionen gefunden

Auf der Inspektion ein neuer block, ich war ziemlich überrascht, zu finden, dass das Objekt nicht enthalten, zu blockieren.Höhe!

Dann fand ich diese Frage: Ist block Höhe immer sequentiell?

Zitat:

Block Höhe ist per definition sequentiell in dem Sinne, dass benachbarte Blöcke haben immer die Höhen unterscheiden sich um 1. Aber es ist ein Huhn-und-ei-problem: um zu berechnen die Höhe, Sie haben Zugriff auf alle Blöcke zwischen den genesis-block und dem aktuellen. (Die Höhe wird nicht aufgezeichnet, die in dem block selbst.)

Es gibt auch das Problem, dass mehrere Blöcke haben die gleiche Höhe, wenn Sie in verschiedenen Filialen der Kette. Also nur weil Sie einen block in jeder Höhe, bedeutet nicht, Sie müssen alle Blöcke auf der Haupt-Kette; einige von Ihnen könnten sich auf orphan-Filialen.


Also meine Frage ist

Wie kann ich feststellen, ob der block ist offiziell / nicht verwaist und dass es nicht ersetzt werden durch eine "bessere" block?


Ich sehe, dass jeder block enthält einen vorherigen block-hash-so meine Argumentation ist, dass wenn ein block war verwaist dann die nächsten Blöcke vorherigen block-hash wäre nicht blockiert hash aber ein anderer. Aber mit, dass als ein test, um zu sehen, Ob der Letzte block wurde ein Teil des Netzes würde die Prüfung (Uhrzeit) zurück, der durch einen block... das ist nicht realtime noch ideal

Die bitcoin-sniffer nicht haben, eine neugierig-Funktion für eine block-Meldung genannt - block.is_valid am Ende des CBlock-Klasse:

Klasse CBlock(object):
 def __init__(self):
 selbst.nVersion = 1
 selbst.hashPrevBlock = 0
 selbst.hashMerkleRoot = 0
 selbst.nuhrzeit = 0
 selbst.nBits = 0
 selbst.nNonce = 0
 selbst.vtx = []
 selbst.sha256 = None
 selbst.hash = None
 def Deserialisieren(self, f):
 selbst.nVersion = struct.entpacken("<i",. f.read(4))[0]
 selbst.hashPrevBlock = deser_uint256(f)
 selbst.hashMerkleRoot = deser_uint256(f)
 selbst.nuhrzeit = struct.entpacken("<I",. f.read(4))[0]
 selbst.nBits = struct.entpacken("<I",. f.read(4))[0]
 selbst.nNonce = struct.entpacken("<I",. f.read(4))[0]
 selbst.vtx = deser_vector(f, CTransaction)
 def serialize(self):
 r = ""
 r += struct.pack("<i", self.nVersion)
 r += ser_uint256(selbst.hashPrevBlock)
 r += ser_uint256(selbst.hashMerkleRoot)
 r += struct.pack("<I", self.nuhrzeit)
 r += struct.pack("<I", self.nBits)
 r += struct.pack("<I", self.nNonce)
 r += ser_vector(selbst.vtx)
 return r
 def calc_sha256(self):
 wenn sich selbst.sha256 ist Keine:
 r = ""
 r += struct.pack("<i", self.nVersion)
 r += ser_uint256(selbst.hashPrevBlock)
 r += ser_uint256(selbst.hashMerkleRoot)
 r += struct.pack("<I", self.nuhrzeit)
 r += struct.pack("<I", self.nBits)
 r += struct.pack("<I", self.nNonce)
 selbst.sha256 = uint256_from_str(hash256(r))
 selbst.hash = hash256(r)[::-1].encode('hex_codec')
 def is_valid(self):
selbst.calc_sha256()
 target = uint256_from_compact(selbst.nBits)
 wenn sich selbst.sha256 > Ziel:
 return False
 hashes = []
 für tx in sich selbst.vtx:
 wenn nicht tx.is_valid():
 return False
tx.calc_sha256()
hashes.append(ser_uint256(tx.sha256 -))
 während len(hashes) > 1:
 newhashes = []
 for i in xrange(0, len(hashes), 2):
 i2 = min(i+1, len(hashes)-1)
 newhashes.append(hash256(hashes[i] + hashes[i2]))
 hashes = newhashes
 wenn uint256_from_str(hashes[0]) != selbst.hashMerkleRoot:
 return False
 return True
 def __repr__(self):
 return "CBlock(nVersion=%i hashPrevBlock=%064x hashMerkleRoot=%064x nuhrzeit=%s nBits=%08x nNonce=%08x vtx=%s)" % (self.nVersion, selbst.hashPrevBlock, selbst.hashMerkleRoot, Zeit.ctime(self).nuhrzeit), selbst.nBits, selbst.nNonce, repr(self.vtx))

Die Funktion 'Weise-über-meinen-Kopf" um ehrlich zu sein, aber es sieht aus wie könnte es versuchen, um zu bestimmen, Wetter der block vertraut werden kann (wie in; nicht manipuliert wurde, wie seine Abfragen der hashMerkleRoot das ist ein one-way-hash-Mechanismus), aber ich bin nicht kompetent genug, um zu sagen, sicher, wenn die is_valid tut mehr wie (Bestimmung, daß der block ist offiziell)

Das Letzte, was ich tun möchte ist:

  1. push-tx an das Netzwerk
  2. hören new_tx_event(tx) bekommen, mein tx-hash
  3. hören new_block_event(block) finden mein tx-hash ist akzeptiert in den block
  4. starten Sie auf Zahlung bestätigen-zählen-blocks als Bestätigungen
  5. finden später heraus, dass der block ersetzt wurde/wurde verwaist

Ihre Gedanken?

+873
Endgame 23.10.2015, 22:37:16
16 Antworten

Nur wenn Sie die micro-Instanz mit einem kostenlosen Konto für das erste Jahr.

+992
Nuts67 03 февр. '09 в 4:24

Guten Abend-

Ich versuche, führen Sie ein ungewöhnliches 3-Wege-Transaktion, wo in einer der Parteien ist nicht bekannt, am start.

PartyA initiieren der Transaktion und die Bereitstellung von Finanzmitteln. Mein Gedanke war, dass er überweisen würde 1BTC auf einem dedizierten Brieftasche.

Würde er dann auch starten Sie die Transaktion, und der name der Partei B als eine Unterschrift erforderlich.

Für die Dritte Unterschrift, würde er Ansatz 5 zufällige fremde. Er würde Ihnen jegliche und alle Informationen, die nötig sind, um die Transaktion (einschließlich der private Schlüssel aus der Brieftasche, die er nur gemacht, wenn nec).

Der erste, der könnte vorschlagen, ein Geschäft, und überzeugen PartyB, es zu akzeptieren, und würde Ihren Anteil des Geldes.

Zum Beispiel, c1 bieten könnte B nach split 80/20, wo-wie c2 bietet zu 50/50 geteilt. PartyB Zeichen des vorgeschlagenen Angebots von c2, und kann es dann ausführen.

Es sieht aus wie es vielleicht ein Weg, dies zu tun mit mehreren Signaturen und p2sh, aber ich bin mir nicht ganz sicher, wie es funktionieren noch. Irgendwelche Gedanken oder Kommentare willkommen.

+987
King Cobra 22.07.2012, 00:08:14

Obelisk - Server implementiert werden, indem mehrere Bibliotheken, wie Pybitcointools und Libbitcoin s SX/BX-tools; es erscheint auch gemeinsame(?) repositories zwischen Spesmilo und Libbitcoin.

Was sind die Vorteile und Unterschiede zu angeboten von Obelisk-Server?

+981
RyanV 13.12.2012, 00:31:05

Hat die api_code von Blockchain.info's Erstellen Wallet-API ab?

+852
Hubert Grzeskowiak 21.01.2019, 09:11:35

Bitcoin-client stellt die RPC-Aufrufe, die in JSON, könnten Sie kommunizieren über den RPC-machen Sie Ihre app.

+740
ict4ngo 04.11.2019, 01:34:05

PBFT ist Praktisch byzantinischen Fehlertoleranz. Es ist eine "klassische" Konsensus-Algorithmus, verwendet eine state machine. Verwendet leader-und block-Wahl wählen Sie einen Anführer.

PBFT ist ein drei-Phasen -, Netzwerk -, intensiv-Algorithmus (n^2 Meldungen), so ist nicht skalierbar für große Netzwerke

+714
Seanny 10.03.2015, 12:51:55

Transaktion-Auswahl bis zu den Bergleuten. Die nur obligatorisch Transaktion ist die coinbase-Transaktion (die Transaktion, die sammelt die Transaktions-Gebühren und zahlt Sie aus mit der block-Zuschuss-wie der block-reward).

Außerdem können Sie alles zwischen keine Transaktionen an alle, die nur über regelmäßige Transaktionen oder nur SegWit Transaktionen, die Mischung von allen Transaktionen, die Ihnen die Transaktionsgebühren.

+674
max01021981 13.02.2019, 09:37:15

Sie können sich Coinograph kryptogeld-API. Es bietet raw-Daten über den Handel, Kerzen, Orderbuch und ticker.

Disclaimer: ich habe das Produkt entwickelt.

+504
Jorge Lopez San Miguel 20.11.2013, 18:00:00

Vielleicht ein konkreter helfen würde:

Senator Doe kauft 100 BTC bei der Ed-Exchange, wo sein Ausweis ist erforderlich. Dann nimmt er diese Münzen an seine eigene Adresse 1qwerty. Trägt einen Trenchcoat und eine dunkle Brille, die er verwendet diese 100 BTC um einen Kauf bei Frank 's Peinlich Waren Emporium, senden Sie Frank' s frisch generierten Adresse 1abcxyz.

Er denkt er ist sicher:

  • Ed weiß, dass 1qwerty gehört zum Senator Doe und Doe übertragen Sie die Adresse 1abcxyz, aber nur Doe und Frank wissen, dass 1abcxyz gehört Frank. Es wurde zufällig generiert, und nur einen Blick auf die Adresse nicht verraten nichts darüber, wem es gehört.

  • Frank weiß, dass er verkauft etwas peinlich, wenn der Inhaber der Adresse 1qwerty, aber nicht wissen, die wahre Identität, die verschleierte person, die kam in seinem Geschäft.

Also, denkt Doe, weiß niemand, dass es war in der Tat Doe, die aus der peinlichen kaufen.

Aber wenn Ed und Frank sind zusammen, oder sind insgeheim der gleichen person, dann Sie können Ihr wissen teilen und lernen, dass es war Doe, der die peinliche Kauf. Jetzt können Sie informieren die Zeitungen und/oder Erpressung Doe.

+434
ZerosAndOnes 10.05.2019, 01:14:14

Nein, Probleme mit der Hardwarekompatibilität wird steigen, wenn Sie versuchen, mir ZCash auf einem ASIC miner. Beide ZCash und bitcoin abgebaut werden mit verschiedenen algorithmen, so dass Sie nicht verwenden können, die gleiche hardware für den Bergbau.

+369
Emily Rielly 16.03.2011, 22:07:15

Diese Grenze (was ist heute anders) bezieht sich auf Knoten Politik und Transaktion standardness. Es ist wichtig, im Auge zu behalten, dass etwas, das nicht dem standard entspricht, ist nicht notwendigerweise ungültig. Gültigkeit und standardness sind zwei verschiedene Dinge, obwohl standardness ist eine Teilmenge der Gültigkeit.

Eine Transaktion, die kleiner als die standardness minimum kann immer noch gültig sein. Es wird nur als nicht-standard und nicht akzeptiert werden Knoten nach bestimmten Richtlinien (die meisten Knoten, die Teil des Bitcoin-Core). Die Grenze ist heute 82 Byte ist die kleinste Größe einer standard-Transaktion werden können.

Sofern relevant für die minimale Transaktionsgröße, meine Frage wäre dann, wurde dieser standard eingeführt, nach oder vor der Antwort.

Diese Richtlinie wurde 2010 eingeführt, lange bevor die verwiesen wird, in Frage und Antwort. Darüber hinaus, dass der wiki-Seite wurde geschrieben, dass die Informationen in 2011. Beachten Sie auch, dass die wiki-Seite ist veraltet, wie die Regel in Frage stellen, ist falsch.

Auch habe die Antwort Anbieter Betreuung über die Unterscheidung zwischen gültigen Transaktionen und ungültige Transaktionen ?

Die Beantworter (mich) nicht. Der kleinste gültige Transaktion ist, wie ich in diese Antwort. Eine solche Transaktion wird als nicht-standard und nicht weitergeleitet werden gemäß der Richtlinie Regel, aber wenn ein Bergmann wurden zu gehören, eine solche Transaktion in einen block, es würde akzeptiert werden, indem Knoten als völlig gültig.

+340
BIsh 28.07.2018, 06:44:13

Eine schnelle Suche im internet liefert mir dieses Ergebnis:

Kaufen Sie Bitcoin in Südafrika
https://www.buybitcoinworldwide.com/south-africa/

+298
prasshant 03.01.2014, 13:34:04

In 50 Jahren oder mehr ab jetzt, was passiert mit bitcoins, wenn alle von Ihnen erteilt werden? Werden mining aufhören wird und es nur eine begrenzte Menge an bitcoins im Umlauf?

+297
hildoceras 31.05.2019, 12:23:56

Es gibt ein paar Dinge hier:

Erstens, wenn Sie erstellen Sie Ihre eigene Münze, ohne die Infrastruktur geschaffen, in der Münze, die Gemeinschaft, Sie könnte sehr leicht eine unendliche Versorgung Ihrer Währung und können in der Lage sein, es zu nutzen, bevor das ganze zusammenbricht. Es ist sehr unwahrscheinlich, da Währungen jeglicher Art müssen unterstützt werden, indem Sie glauben, dass es Wert hat und wird auch weiterhin Wert haben.

Bitcoin und andere alt-coins, eine Grenze haben, die in diese integriert. Ohne zu weit in die Geschichte und Zukunft des bitcoin, die im Grunde jeder so oft, nur einen block von Münzen ist "abgebaut", die Zuschüsse einen Betrag von Münzen zu abgebaut wer den block. Jeder so oft (ich glaube, gezielt auf 4 Jahre für Bitcoin) der Wert dieser Blöcke halbiert wird. Am Anfang war es 50 coins pro block, und ich glaube, es ist bei 12,5 Münzen pro block. Irgendwann wird es keine mehr Münzen erstellt für diese Blöcke. Diese Blöcke repräsentieren Transaktionen, die auftreten, auf die blockchain, und "Bergleute" wer sind versuchen zu lösen, die Blöcke sind die überprüfung und Bearbeitung von Transaktionen. Die Lösung der block auch Netze Sie jede Transaktion Gebühren zusätzlich zu den geprägten Münzen für den block (also wenn alle Münzen verschwunden sind, in der Theorie, die Blöcke werden immer noch "abgebaut" für die Transaktion Gebühren).

Gehen zum zweiten Punkt, wie die bitcoin Wert, es funktioniert nicht wie die meisten Währungen, ist es keine bank, die können einfach drucken Sie mehr Geld, anstatt es funktioniert wie eine endliche Ressource. Es gibt nur so viele bitcoins in der Existenz, und es gibt nur einmal so viele. Zusätzlich gibt es einige "tote" bitcoins, die in den Konten, die Sie nicht verwenden oder verloren gegangen (zum Beispiel, es gibt eine anekdotische Geschichte über einen Mann, der abgebaut, von den 16.000 bitcoins und warf den computer, er förderte Sie auf, ohne Zugriff auf den privaten Schlüssel für seine Brieftasche anderswo. Nun, die bitcoins haben einen Wert von $2500+, das ist eine Menge Geld verloren sitzen in einer Deponie irgendwo). Es ist der Wert sowohl in seiner Seltenheit und der Bereitschaft der Menschen, es zu akzeptieren als Währung. Da immer mehr Menschen benutzen Bitcoins, es wird mehr Wert (das ist, warum so viele bitcoin-Nutzer scheinen, wie die Missionare, die versuchen, um die Menschen zu konvertieren, um mit bitcoin).

Bitcoin hat keinen wirklichen nutzen, außer es ist die Fähigkeit, sein akzeptiert als eine form des Austauschs. Wenn, zum Beispiel, in allen Ländern der Welt verboten die Verwendung von bitcoin, es ist Preis würde sinken und es würde sich im Wert von fast nichts. Auf der anderen Seite, wenn ein Land Gesetze verabschiedet, mit der Forderung alle Anbieter, die bitcoin akzeptieren, würde der Preis steigen (Nachfrage steigt). In jedem Fall, es hat keinen Wert, über die Tatsache, die Menschen bereit sind zu akzeptieren, es als ein Tauschmittel. Dieser unterscheidet sich von den meisten fiat-Währungen, in, dass, während die meisten haben keinen wahren Wert auf Ihre eigenen, die meisten Staaten haben ausreichend macht, um sicherzustellen, Sie sind akzeptiert als ein Mittel, den Austausch und den glauben an die Regierung enthält einige implizite Unterstützung (plus in vielen Ländern die Anbieter gesetzlich verpflichtet sind, zu akzeptieren lokalen Währungen, Sie sind nicht verpflichtet, die bitcoin akzeptieren).

+280
Raider 11.10.2019, 12:12:09

8 Kollegen ist die Anzahl der ausgehenden verbindungen der client macht. Also, wenn Sie immer haben 8 Anschlüsse, das bedeutet wohl, dass die Menschen nicht machen, eingehende verbindungen zu Ihrem Computer. Das hat keine schädlichen Auswirkungen. Sie kann nicht Vertrauen Menschen, die mit Ihnen verbunden sowieso. (Haben Sie vielleicht 70 eingehende verbindungen, die alle aus der gleichen Bösewicht.)

Der wahrscheinlichste Grund für den Unterschied ist, dass ein client, UPNP-Unterstützung und der andere nicht oder hat es nicht aktiviert. Wenn Ihr Rechner hinter einem NAT-Gerät, das UPNP unterstützt, dann ist das wahrscheinlich der Grund.

+209
Jay Jo 05.04.2011, 21:24:13

Überprüfen Sie Ihre wallet-Adresse mit blockchain.info. stellen Sie sicher, es gibt keine fehlerhaften Transaktionen / dass Ihr mit theright Brieftasche.dat-Datei

+85
Alexey1204 19.09.2011, 07:26:13

Fragen mit Tag anzeigen