This page has been robot translated, sorry for typos if any. Original content here.

BitCoin was ist es?

Bitcoin. Как это работает

Über Bitcoin lernte ich vor kurzem, aber er hat mir einmal seine Idee p2p bestochen. Je tiefer begraben ich in ihrem Wiki, desto mehr durchdrungen dieser Idee. Seine Umsetzung ist eine schöne und elegante aus technischer Sicht.

Suche Bitcoin gibt eine Reihe von Themen. Am auffälligsten kommentiert, dass viele Menschen, vor allem diejenigen, die nicht mit Bitcoin direkt, gibt es viele Fragen darüber, wie es funktioniert. Auch viele Vermutungen, oft falsch. Um die Situation irgendwie zu klären, wurde beschlossen, diesen Artikel zu schreiben.

Echtes Geld?

Ganz oben auf die Liste der wichtigsten Missverständnisse über Bitcoin ist die Idee, dass Bitcoin ein regelmäßiges „Papier“, wenn auch elektronisch ist, die nur „echtes“ Geld darstellen, dass Art ist Schuldscheinen. Daher stammt der verbleibenden Fehler am meisten: wenn dieses Stück Papier, sind sie nichts wert; Sie können sie eine beliebige Anzahl drucken oder löschen; können sie gefälscht werden; Sie können sie kopieren

Ich wiederhole - all dies nichts anderes als eine Täuschung ist. Die Grundlage der Idee von Bitcoin lag der Wunsch zu schaffen nicht nur ein weiteres „Stück Papier“, die echtes Geld darstellen, wie Gold, und ein Analogon des Goldes. Holen Sie sich die Eigenschaften von Gold, dank denen es ein perfektes Geld ist, und zwar E-Währung auf sich.

Die Komplexität der Produktion

Gold kann nicht kopiert werden - es ist nur bekommen kann. Aber dies ist ein sehr kostspieliger Prozess, sowohl zeitlich als auch in Ressourcen. Teilweise aus diesem Grunde, Gold ist so hoch geschätzt. Um es klarer, lassen Sie uns ein Beispiel betrachten.

Angenommen, eine Person den ganzen Tag hart, um mein Gold und als Ergebnis von 1 kg erhalten. Für ihn ist der Wert des Goldes zu einem Tag harter Arbeit gleich. Nach einem harten Tag, entschied er sich, ins Kino zu entspannen und gehen. Durch einen glücklichen Zufall Kassiererin gab die Tickets im Austausch für Gold. Warum? Da der Kassierer wie Gold, aber ich mag nicht den ganzen Tag die Arbeit mit einem Pick. Daher ist es bereit, um einen Service zu bieten - ein Ticket zu geben - im Austausch für 1 kg Gold. In der Tat, tauscht er seinen Dienst für einen Tag harter Arbeit.

Stellen Sie sich nun eine andere Situation. Wir erfanden den Kopierer, der mit Gold arbeitet. Und jeder kann in einer Minute aus einem 1 kg Gold 10 kg zu machen. In dieser Situation wird die Kassiererin nicht mehr für Gold Karten ausgetauscht werden, denn jetzt ist er einfach so viele ausdrucken zu können, wie Sie wollen. Gold hat keinen Wert mehr, und es kann nicht als Geld verwendet werden.

Der Bitcoin Münzen Produktionsprozess erfordert auch Zeit und Ressourcen. Aber in diesem Fall ist es nicht die menschliche Ressourcen und Computer.

Herkömmlicherweise ist eine begrenzte Ressource,

Je länger Gold abgebaut, desto schwieriger (teure Ressource) wird seine Produkte. Dadurch wird sichergestellt, dass die Inflation unter Kontrolle sein wird.

In Bitcoin ähnliches Verhalten wird durch Einführung einer Abhängigkeit von der Geschwindigkeit der extrahierten Gesamt Münzen Zeit erreicht. Diese Funktion ist umgekehrt proportional, t. E. Mit der Zeit und die Geschwindigkeit auf Null fällt. Wenn wir das Integral dieser Funktion über die Zeit nehmen, erhalten Sie den Aussteller. Über diese:

Bitcoin. Как это работает

Hier ist ersichtlich, dass die Gesamtzahl der Münzen bis 21 000 000. Einzelheiten des Betriebes begangen wird, werden später Bitcoin diskutiert. In der Zwischenzeit müssen Sie zwei Dinge wissen: Münzen erscheinen im System in den Reihen etwa alle 10 Minuten, die Anzahl der Münzen in einer Packung - 50, und es wird alle 4 Jahre halbiert.

Stofflichkeit

Diese Eigenschaft ist nicht so viel Gold wie jede nicht-elektronische Währung hat. Eine Goldbarren kann nicht für den doppelten Dienstleistung oder ein Produkt ausgetauscht werden. E. Zu einer Zeit, kann es entweder der Verkäufer oder der Käufer sein.

Dieses Verhalten estesstvenno für Materialaustausch, aber nicht für die E-Mail. Um dieses Verhalten von virtuellem Geld zu erreichen, müssen Sie eine Menge Einfallsreichtum setzen. Das Bitcoin dieses Verhalten Transaktionsmechanismus zur Verfügung gestellt. Alle Transaktionen vereint in Ketten. Jede Transaktion nimmt eine Münze aus einem oder mehreren bestehenden Transaktionen und geben an, die sie bestimmt sind. Daher können Sie immer die Gültigkeit der gesamten Kette überprüfen.

Die Komplexität der Produktion, eine begrenzte Ressource, das Material - diese Eigenschaften, sowie die Verwendung von Kryptographie für Sicherheit, ermöglichen die Verwendung von Bitcoin als Geld. Sie basieren Bitcoin Kern. Dies ist nicht nur eine Vereinbarung. Alle von ihnen sind in der System-Design gebaut, und in einer anderen Art und Weise wird es nicht funktionieren. Es ist Zeit, das beste Design zu berücksichtigen.

Kettenzug

Jedes elektronisches Zahlungssystem muss irgendwo und irgendwie speichert die Transaktion. Die Bitcoin alle Informationen werden in der Blockkette gespeichert. Die Blöcke werden im JSON-Format übertragen werden. Jeder Block enthält einen Header und eine Liste der Transaktionen. Der Header besteht aus einer Anzahl von Eigenschaften, unter denen ein Hash des vorhergehenden Blockes ist. So ist die ganze Kette von Blöcken speichert alle Transaktionen für alle Zeiten Bitcoin.

In den aktuellen Versionen der Software Bitcoin Blockkette wird vollständig von jedem Kunden heruntergeladen, die das System vollständig dezentral macht. Daten nicht verschlüsselt und jeder kann alle Transaktionen manuell verfolgen. Es gibt sogar eine spezielle Website - Bitcoin Block-Explorer, wo man leicht alle Informationen über die Einheiten und Transaktionen sehen können.

Zum Zeitpunkt des Schreibens dieses Artikels, die Anzahl der Einheiten in der Kette ist gleich 110 968, und, wie ich bereits sagte, diese Zahl etwa alle 10 Minuten erhöht sich um 1. Dies bedeutet, dass einige der Teilnehmer in der Lage war, einen neuen Block zu erstellen.

Es funktioniert wie folgt. Ein Kunde erstellt eine neue Transaktion und sendet sie an andere Kunden, die in der Erzeugungseinheit tätig sind. Sie fügen hinzu, diese Transaktion zu seiner Einheit und weiter zu erzeugen. Früher oder später wird jemand einen Block erzeugen. Ein solcher Block (auf die nicht mehr auf die Transaktion hinzugefügt) wird verschlossen und wird über das Netzwerk gesendet. Weitere Kunden überprüfen Einheit und Transaktionen innerhalb es für die Gültigkeit. Wenn es keine Probleme gibt, wird die Transaktion als genehmigt. An diesem Punkt hat eine neue Einheit für jeden Kunden zu erreichen und zu der Kette. Danach wird der Vorgang wiederholt - einmal Kunden beginnen Einheit zu erzeugen und in seinen neuen Transaktionen zu sammeln.

Block

Betrachten Sie den Inhalt des Blocks und seiner Generation Prozess im Detail. Einheit Beispiel kann bei allen gleich finden die Bitcoin Block - Explorer . Die Box besteht aus einem Kopf und trantsaktsy Liste. Der Header besteht aus den folgenden Eigenschaften:

  • Hash - SHA-256 - Hash des Blockkopfes. Dieser Hash ist ausreichend zufällig, und dessen Rechenzeit vorhersagbar. Ich nehme zur Kenntnis, dass Titel ohne Transaktionen nur gehasht. So dass die Anzahl der Transaktionen wird nicht viel Einfluss auf die Rechenzeit des Hash sein.
  • ver - Version Blockdiagramm. Im Moment sind alle Blöcke eine Version - 1.
  • prev_block - Hash des vorhergehenden Blockes in der Kette. Aufgrund dieser Eigenschaft kann nicht Kette geschmiedet werden, ist es in einem der Blöcke zu ersetzen, da der Block Hash auf dem Hash-Wert des vorherigen Block in der Kette immer abhängt. Ändern man alle nachfolgenden Blöcke neu erstellen haben.
  • mrkl_root - Merkle Wurzel - eine Liste von Hashes Transaktionen. Hash-Einheit muss unbedingt bei der Transaktion abhängen, können sie nicht gefälscht werden. Aber Figur wird es direkt lange Zeit, wenn die Anzahl der Transaktionen groß ist. Daher gehasht sich erste Transaktion, und dann hasht sie für die Berechnung des Hash aller Blöcke verwendet werden.

Es mag absurd erscheinen - warum doppelte Rechen ein Hash-Wert des gleichen. Aber die Tatsache, dass die Transaktion Hash nur aktualisiert, wenn Sie einen neuen Transaktionsblock hinzufügen, und der Block-Header-Hash sind tausend Mal pro Sekunde neu berechnet. Außerdem, je näher die Größe des Headers in einer konstanten, desto besser können Sie die Zeit der Berechnung seiner Hash vorhersagen.

  • Zeit - uint32_t stellt die Schaffung der Einheit. Maximal zulässiges Jahr - 2106.
  • Bits - eine der wichtigsten Eigenschaften. Es ist eine abgekürzte Form des Zielwertes des Hash. Ein Block erzeugt (gültig) hash, wenn es kleiner als dieser Sollwert ist. Der Zielwert bestimmt die Schwierigkeit, den Block zu schaffen. Je kleiner sie ist, desto weniger wahrscheinlich, dass eine geeignete Hash in einer einzigen Iteration zu finden. Diese Eigenschaft wird alle zwei Wochen aktualisiert.

Dies geschieht wie folgt. Zählen der Anzahl der erzeugten Blöcke in den letzten zwei Wochen und im Vergleich mit dem Standard (1 Einheit alle 10 Minuten). Wenn die Blöcke zu viele sind, erhöht sich die Komplexität. Wenn der Block ist zu klein - kleiner. Somit wird das System die Anzahl der Benutzer zu erhöhen angepasst und als eine Folge, die Gesamtleistung des Computers.

  • Nonce - Eine Zahl, die, ausgehend von Null nach jeder Iteration der Hash - Berechnung erhöht wird. Eigentlich kommt es zu viel, solange der Hash nicht geringer sein wird als der Zielwert. Zu jedem neuen Hash verschieden ist, zu sein, zumindest andere der Eigenschaften des Block-Headers.

Zum Beispiel ändert eine Version nie. Hash-Wert des vorherigen Blocks aktualisiert, wenn jemand vor uns und werden einen neuen Block erzeugen. Merkle Wurzel wird durch Addieren der Transaktion aktualisiert. Time - alle paar Sekunden. Bits (Zielwert, Komplexität) - alle zwei Wochen. All dies ist zu lang. Um für eine der Eigenschaften zu warten, nicht aktualisiert und es gibt eine Nonce.

Betrachten wir eine hypothetische Situation. Alle wurden die Nonce getestet und keiner von ihnen sind nicht geeignet. Während dieser Zeit hat keine andere Eigenschaft geändert. Nonce Überlauf auf, es beginnt wieder von vorne. Es stellt sich heraus, dass weitere Hashes wiederholt werden. Zur Vermeidung solcher Situationen, nach dem Überlauf nonce, wechselnde besondere Eigenschaft eines der Transaktionen. Danach aktualisiert Hash Merkle Wurzel und der Block-Header wird nicht wiederholt werden.

  • n_tx - Die Zahl der Transaktionen auf der Liste.
  • Größe - die Blockgrße in Bytes.

Transaktionen

Die Transaktionen werden in den Blöcken in Form einer Liste enthalten. Sie, wie auch die Blöcke in einer Kette angeordnet sind. Jede Transaktion sollte angeben, wo es Geld braucht (aus einer aktuellen Transaktion), und wo zu senden.

So geben Sie ein Ziel seinen öffentlichen Schlüssel. Um die Empfänger das Geld verwenden können, muss es eine neue Transaktion erstellen, die Geld aus dem vorherigen nehmen und leiten sie an eine andere Adresse. Um zu beweisen, dass eine Person nutzt sie ihr Geld zu übersetzen, nicht jemand anderes, muss er seine digitale Signatur in ihre Geschäfte verlassen. Dann jederzeit können Sie sicherstellen, dass alle Transaktionen in dem System gültig sind.

Auf der Praxis all dies ist mit den folgenden Eigenschaften realisiert:

  • Hash - Hash der gesamten Transaktion. Es stellt sich heraus, dass die Transaktion zweimal gehasht. Origin Zeiten während Hash-Berechnung Transaktion. Das zweite Mal während Hash-Berechnungseinheit. Darüber hinaus bezieht sich jeder Block auf einen Hash des vorhergehenden Blockes, und jede Transaktion - ein Hash-Wert der vorherigen Transaktion (oder Transaktion). Wenn Sie die Transaktion und durch ein Wunder ihr Hash ist nicht gebrochen ändern, dann zerschlagen alle anderen Hash-Kette und modifizierten Blöcke werden von allen Kunden abgelehnt.
  • ver - Version Transaktionssysteme. Während sie sich nie verändert, so ist es auf 1 überall gleich.
  • vin_sz - Die Anzahl der bisherigen Transaktionen, von denen Geld an die neue Adresse übertragen wird. Ein oder mehrere.
  • vout_sz - Anzahl der Adressen , an das Geld zu übertragen. Ein oder mehrere.
  • lock_time - Es ist nicht überall auf 0. Die Idee verwendet, um eine verzögerte Transaktionen zu schaffen , damit sie nicht auf den vom Gerät erzeugte Strom hinzugefügt werden, wie zum Beispiel in sleschuyuschy. Es versteht sich, dass diese Eigenschaft die Anzahl der Blöcke angibt, die Transaktion vor der Zugabe überspringen müssen. Dies macht es möglich, dass einige Zeit, um die Transaktion zu ändern und neu zu unterschreiben.
  • Größe - Größe in Bytes der Transaktion. die Größe der Transaktion im JSON-Format sollte.
  • in - Enthält eine Liste der Eingänge (Quellen) Transaktion. Verwendet als eine Eingabe die Ausgänge der früheren Transaktionen (prev_out). Jeder Ausgang verfügt über die folgenden Eigenschaften:
    • Hash - Hash der vorherigen Transaktion.
    • n - Da die Transaktion mehrere Ausgänge sein können, müssen Sie angeben , aus denen ihr Geld herkommt. Um dies zu tun, und es ist diese Eigenschaft. Es enthält die Seriennummer der Ausgabe der vorherigen Transaktion, mit 0 beginnen.
    • scriptSig - In dieser Eigenschaft hat der Absender zu beweisen , dass es trägt , ist ihr Geld, nicht jemand anderes. Dazu ukazavaet er öffentliche Schlüssel der vorherigen Transaktion des Empfängers, t. E. Ein Schlüssel, so sollte er der Empfänger sein. Darüber hinaus fügt er hinzu ECDSA Signatur der gleichen Transaktion, die seinen privaten Schlüssel gemacht. Dies beweist, dass er von ihrem eigenen Geld verfügt, nicht jemand anderes.

Nachdem die Transaktion Listeneinträge (in) zeigen eine Liste von Ausgängen (Out), m. E. Recipients. Jeder Ausgang verfügt über die folgenden Eigenschaften:

  • Wert - Enthält die Menge an Geld , die an die neue Adresse übertragen werden. Sie werden aus der vorherigen Transaktion übernommen. Daher sollte diese Zahl nicht ihre Summe nicht überschreiten. Zum Beispiel wollen wir 10 Münzen pro Transaktion herauszunehmen und 20 von einem anderen und 25 an einer neuen Adresse. Um die restlichen 5 Münzen in nicht gewesen sein, senden wir sie als Veränderung für sich. So ist in dieser Transaktion werden zwei Ziele sein, von denen wir sind. Der Wert wird immer in nanomonetah angegebenen Bruchzahl zu vermeiden.
  • scriptPubKey - Diese Eigenschaft, zusammen mit scriptSig bis das Skript auf dem modifizierten

Die Gesamtmenge an Geld auf dem Transaktions Eingang ist immer gleich die Gesamtmenge des Ausgangs. Andernfalls wird das Geld entweder entstand aus der Luft oder aus dem Verkehr verschwinden. Aber am Anfang war ein Diagramm, das zeigt, dass die Zahl des Geldes exponentiell wächst. Also, wo ist das neue Geld im System?

Für meinen Geschmack ist die Frage des Geldes einfach und elegant realisiert. Jeder Block der ersten Transaktion in der Liste ist eine spezielle Transaktion. Sie hat immer einen Eingang, die stattdessen eine Eigenschaft von Eigenschaften scriptSig coinbase ist. Diese Eigenschaft kann alles enthalten.

Die Stabilität des Systems basiert auf der Anzahl der Nutzer basiert, die die offizielle Client gestartet. Während die meisten von ihnen ist Bitcoin nicht in Gefahr.

Abschluss

Arbeit des Nachweises (Nachweis der Arbeit) - das Ergebnis der Arbeit, die nur schwer zu erreichen, aber es ist leicht zu überprüfen. Bitcoin-Netzwerk ist auf diesem Prinzip beruht. Überprüfen Sie die hash (Ausgabeoperation) kann ein Bruchteil einer Sekunde sein. Und um es zu holen, dauert es eine Menge Arbeit.

Hier können wir die Analogie der Goldgewinnung erinnern, die viel Zeit und Ressourcen nimmt. Aber um zu verstehen, dass, bevor Sie Gold, kann fast sofort. In diesem Sinne hat Bitcoin auch seinen Wert. Aber es ist nicht notwendig, es als Preis in Dollar oder in den Konten der Elektrizität zu verstehen, die einen Computer bei der Auswahl des Hash verwendet wird.

Preis in US-Dollar - ist ein wenig anders. Sie hatte sich nicht in Bitcoin gelegt und wird allein durch den Markt bestimmt. Schließlich ist Gold in sich auch einen Preis in Dollar nicht garantieren. Es garantiert nur einen Mann, das Gold gegen Dollar tauschen will.

Der ursprüngliche Preis des Goldes wird allein durch diejenigen, die sie erhalten, bestimmt. Für abgebauten Gold als er gefragt für die Bemühungen seiner Produktion kompensieren zu können. Und danach in dem Goldpreis beginnt, den Markt zu beeinflussen.

Sobald Bitcoin auf den Markt kommen, wird dessen Wert allein durch den Grad des Vertrauens in das System bestimmt. Je mehr Menschen vertrauen, kaufen, je mehr die Bitcoin ist, desto mehr Dollar in ihr, und als Folge zu investieren, desto teurer Bitcoin sein wird.

Bevor die Menschen den Bitcoin vertrauen können, müssen sie wissen, ob das System ein ausreichendes Maß an Sicherheit hat, als auch, ob es kann als Geld verwendet werden, t. E. Ob es die Eigenschaften von Geld hat, die ich am Anfang aufgeführt habe. Weiß sicher nur razobravshit in den Prinzipien der Bitcoin.

Ich hoffe, dass nach diesem Artikel mit Habarhabar Niveau des Vertrauens in Bitcoin zumindest ein wenig wachsen wird.