Bitcoin Forum
April 27, 2024, 03:34:05 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Bitte helft mir! Ich verstehe das System einfach nicht!  (Read 1420 times)
FordPerfect (OP)
Newbie
*
Offline Offline

Activity: 3
Merit: 0


View Profile
June 03, 2017, 02:56:23 AM
 #1

 
Huhu alle zusammen.

Ich wollte mich heute mal ein bisschen über Bitcoins schlau machen - nach 3 Stunden qualmt mir der Kopf und ich hab’s immer noch nicht begriffen!  Cry

Ich wäre froh, wenn ihr mir im Text markierte Aussagen [¿¿¿] bestätigen oder widerlegen würdet.
Das sind von mir gemachte Schlussfolgerungen, bei denen ich gerne wissen würde ob diese zutreffend sind oder nicht.


Mal zum Anfang:

Natürlich habe ich über google, wiki etc. etc. recherchiert und so grundlegendes gelesen.
Als Hobby-Programmierer bzw. IT nerd interessiert mich eigentlich nur das System an sich und nicht wie man mit Mining Hardware im Keller oder als Investor gross Profit machen kann.
Hardware ist für mich schon interessant – sowohl im Keller als auch bei Frauen – aber mir geht’s jetzt mehr um die Software.  Wink


Was mein Gehirn dann soweit gefressen hat, ist (chronologisch, nicht alphabetisch):

- Kurs:
1 Bitcoin = 2'150.7400 Euro (Wow, einen Gebrauchtwagen kaufen - Coin dem Händler in die Hände schnippen, tolle Sache)

- Handel:
Wie handelt man denn nun mit den Dingern?
Das mit dem in die Hände schnippen geht ja leider doch nicht.
Ich hab mich nicht lange damit beschäftigt, aber es soll möglich sein die beliebig auf z.B. ein Kreditkarten-Konto zu transferieren mit Umrechung des Kurses und natürlich (wie immer) einer Gebühr.
(https://cex.io/topup / Cash out Bitcoins to your ordinary VISA or MasterCard. Instant. No hidden fees. No pre-order.) ¿¿¿
Was mich dann auch zum nächsten Punkt brachte:

- „Wallet“ bzw. „Bitcoin Core Client“ bzw. „Bitcoin-Qt“ (da ja das ganze Webbasierend ist und es daher auch von Linux stammen muss Wink ):
Natürlich gibt es auch andere Clients, da ich aber ein artiges Bübchen bin, habe ich natürlich die offizielle Version genommen.
Zuerst habe ich nicht gelesen, dass da was von ~122GB stand also hat die App flott begonnen meine SSD vollzuladen.
Naja nicht so schlimm %appdata% auf ein anderes Laufwerk, feinifeini.
Die Frage ist dann, warum soviel Daten? Scheint so als würde eine Bank alle Transfers der letzten 5 Jahren aller Kunden auf deine Festplatte laden… ¿¿¿
Naja geht ne Weile bis die Platte gefüllt ist, also fix mal die Optionen durchschauen - viel gibt’s da ja nicht zu sehen, vor allem wenn man Erklärungen sucht.
Was mich zu den ersten zwei Mysterien in Sachen Transparenz brachte und ich mich dann über genauere Erklärungen freuen würde.
Also einerseits den Adress-Hash der ja das Pendant zu einem Einzahlungsschein bei der Post ist / sein sollte und eine Transaktion Identifiziert.
Zum anderen die Passphrase die ja irgendwie generiert wird. Damit das ganze chronologisch korrekt bleibt gehe dann später darauf ein.

- Währung:
Naja, ich wollte natürlich zuerst einmal an ein paar Bitcoins kommen (besser gesagt an ein paar 0.0xBitcoin).
Also habe ich mir die nächstbeste App geschnappt und meine Test-Transaktions-ID (oder wie man das auch immer nennen soll - Bitcoin-Adresse - ok) eingetragen und Start geklickt.
Im Winter ist das eine tolle Sache, da kann man mit der CPU/GPU die Wohnung heizen, im Sommer nervt es eher ein bisschen.
Eine Bitcoin-Adresse löschen kann man nicht, also man kann schon, nur nicht mit dem Programm. Soll wohl verhindern, dass man seine Coins in den Himmel schiesst und niemand davon profitiert...  Tongue

How ever - bei Euro gibt’s Cents, bei Bitcoin anscheinend Satoshis, wobei Dagobert Duck seine reine Freude hätte, wenn er auf einen Bitcoin in Satoshis rausgeben müsste: „It is a one hundred millionth of a single bitcoin (0.00000001 BTC).“ und „As of August 2015, 1 US cent is worth approximately 4400 satoshi“. Schade, dass er sich nicht um eine 0 vertan hat, sonst könnte ich das hier jetzt des Langen und Breiten postulieren… Wink
Wenn ich das recht verstanden habe entspricht 1 Satoshis 1 nonce ¿¿¿ aber dazu kommen wir ja später noch…


- Transparenz/Server/Pools:
Nachdem ich das ganze mal schnell getestet, ein paar Satoshis generiert habe und nun ein reicher Mann bin, kamen weitere Fragen auf.
Google brachte bis jetzt nicht die gewünschten Ergebnisse.

> Bitcoin Bank Host: Warum finde ich nirgends URL(s)/IP(s)(:Port von mir aus) vom/zum Betreiber von den Bitcoin Server? Die sollten doch klar irgendwo aufgelistet sein oder?
Ich mein es sollte doch Server geben die man per Request nach neuen Rechenaufgaben anfordern kann? Und noch wichtiger, die per Post (von mir aus auch Get) die Lösungen der Schulaufgaben zum korrigieren empfangen können.
Oder wenigstens ein Schema. Infos zum Hardware kaufen und Software gibt’s überall. Eine strukturierte Dokumentation für die Grundlegende API finde ich hingegen nirgends.
Ich will ja nicht einen Server basteln, eine Software herunterladen und mich bei einem Pool anmelden - schon klar ich könnte mich durch die ganzen Quellcodes durchackern, aber ich weiss nicht ob mein Kopf das aushalten würde.

> Pool: Die einfache Art?  Geräte machen die Berechnungen und der Ertrag wird fair(?) verteilt.
Bei meinem Test mit „groupfabric.com/pool/“ stachen mir 2 Sachen in die Augen:
1. Die Werbung im Programm,
2. Die wirkliche Adresse zum Pool wird nirgends erwähnt. Muss ich die denn nun selber über den Netzwerkmonitor raussuchen?
Naja egal gehen wir mal ein bisschen weiter in die tiefe und schauen was so eine App grundlegend eigentlich macht.


- github.com/lithander/Minimal-Bitcoin-Miner:
Ich mag C#. Wenigstens ein kleiner Einblick. So der Wahnsinn ist das ganze eigentlich nicht. Leider pools – ich will aber die Quelle anzapfen.
Eigentlich sollte es „Minimal-Bitcoin-Pool-Miner“ heissen.
Aber das war eigentlich das einzige am ganzen Bitcoin System, dass ich grösstenteils verstanden habe und nachvollziehen kann.




Da stehe ich nun, habe so gut wie nichts begriffen und bitte um eure Hilfe… ;-)

1. Die mysteriöse Transaktion und das noch mysteriöse Konto dahinter

„Es gibt keine Bitcoins, nur die Aufzeichnungen über Bitcoin-Transaktionen“
Ok soweit angekommen. Jetzt würde ich gerne konkrete Beispiele haben wie der Prozess auszusehen hat.
Was braucht man um mit Bitcoins zu arbeiten? Ein Konto. Ein Konto ist ja nichts anderes als ein geschützter Bereich auf den nur der/die Besitzer Zugriff haben.
Und da blick ich überhaupt nicht durch. Ausgangspunkt ist ja die sogenannte „Bitcoin-Adresse“.
In meinem Fall z.B.: „1DRed1fS1X1um4eVemLjdYZrNYkZ9CJqDg“. 1 für Einzelkonto 3 für irgendwas anderes (mehrere Besitzer). ¿¿¿
Wie was wo in der Adresse definiert, dass ich der Besitzer bin und gewährleistet, dass nur ich Zugriff auf den „Betrag“ der Transaktion habe?
Da sollte es doch ein Gegenstück geben, einen Hash oder was auch immer den nur ich kenne und der das „von – nach“ definiert…?
Also wenn ich jetzt mit irgendeiner Programmiersprache ein „Konto“ mit einer Passphrase erstellen möchte wie müsste das aussehen?
Welche Daten/Variablen bräuchte man zu sichern um den Prozess zu reproduzieren?
Wie kann es möglich sein das auch Offline zu machen ohne die Daten über einen Server zu verifizieren?
In meinem Kopf sieht das im Moment etwa so aus:
- Generierung der Passphrase bzw. Public-Private Key (wie hat das auszusehen) ¿¿¿
- Verschlüsselung der Passphrase ¿¿¿
- Generierung einer Bitcoin-Adresse ¿¿¿
- Wie wird der Besitzer definiert ¿¿¿
- Wie wird die Bitcoin-Adresse generiert ¿¿¿
- Wie werden die Daten beim Server registriert ¿¿¿


2. Die mysteriöse Verifizierung der Transaktion durch die Miner
Das Szenario wäre ja dann:
- Ich schicke jemandem die „Bitcoin-Adresse“
- Der andere überweist 1 Bitcoin an mich
- Die Transaktion wird auf einen der mysteriösen Server geladen ¿¿¿
- Die Miner laden die Transaktion herunter und beginnen mit der Verifizierung (6 = totales ok) und senden mysteriöse Daten and den mysteriösen Server ¿¿¿
- Mein Client sucht nach der Verifizierung und bestätigt den „erhalt“ ¿¿¿
Wie würde dann dieser Ablauf programmiertechnisch aussehen? Also nicht über einen Pool sondern direkt.


3. Der mysteriöse Block der die ganze Geschichte zusammenhält
- Wie besteht die Verbindung zwischen einem Hash Block und einer Transaktion?
- Ist es richtig, dass im Moment 1 Block alle ca. 10 Minuten von allen Miner Weltweit generiert werden können was dem Output von Maximal 12.5 Bitcoins für alle Miner Weltweit in ~10 Minuten entspricht?
Also (ohne pools) defacto 1 einzige Person von allen 12.5 Bitcoins bekommt und alle anderen „leer ausgehen“? Oder habe ich da was falsch verstanden ¿¿¿

Wie unterscheidet sich die Prozedur (siehe oben „Minimal-Bitcoin-Miner“) von einem Pool als wenn man direkt über die Bitcoin Server arbeiten würde?



So ich hoffe, meine Fragen sind nicht allzu blöd oder unverständlich.

Bei meinen Recherchen bin ich noch über diesen Artikel gestossen, vielleicht interessiert der euch ja auch ;-) :
https://motherboard.vice.com/de/article/ich-habe-eine-woche-lang-nur-mit-bitcoins-ueberlebt-330
 
 
1714188845
Hero Member
*
Offline Offline

Posts: 1714188845

View Profile Personal Message (Offline)

Ignore
1714188845
Reply with quote  #2

1714188845
Report to moderator
1714188845
Hero Member
*
Offline Offline

Posts: 1714188845

View Profile Personal Message (Offline)

Ignore
1714188845
Reply with quote  #2

1714188845
Report to moderator
The grue lurks in the darkest places of the earth. Its favorite diet is adventurers, but its insatiable appetite is tempered by its fear of light. No grue has ever been seen by the light of day, and few have survived its fearsome jaws to tell the tale.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1714188845
Hero Member
*
Offline Offline

Posts: 1714188845

View Profile Personal Message (Offline)

Ignore
1714188845
Reply with quote  #2

1714188845
Report to moderator
1714188845
Hero Member
*
Offline Offline

Posts: 1714188845

View Profile Personal Message (Offline)

Ignore
1714188845
Reply with quote  #2

1714188845
Report to moderator
Wellensurfer
Full Member
***
Offline Offline

Activity: 232
Merit: 100


View Profile
June 03, 2017, 04:32:18 AM
 #2

ich denke, das einzige, das Du nicht so ganz verstanden hast, ist, dass Kryptowährungen dezentral funktionieren. Den mysteriösen Server, nach dem Du suchst, gibt es also gar nicht.
nasenbart
Sr. Member
****
Offline Offline

Activity: 317
Merit: 255


View Profile
June 03, 2017, 05:25:00 AM
 #3

Wellensurfer hat ja schon deinen grössten Denkfehler klar gemacht. Kleine Ergänzung:

Jede Adresse ist mit einem Privat Key verschlüsselt. Derjenige welcher diesen besitzt verfügt über diese Adresse und somit über das Guthaben. Da deine Wallet ja viele Adressen beinhaltet hast du mit einem Privat Key zugriff auf all diese Adressen. Meiner befindet sich bsw. auf einer Truecrypt verschlüsselten SD Karte.

Gehandelt werden diese "Dinger" übrigens an Marktplätzen sogenannten Börsen.
Ich kann nur abraten irgendwelche Kreditkartendienste zu nutzen, die Gebühren sind unverschämt hoch. Ich versuche immer direkt mit BTC zu bezahlen. Bitpay ist ein Zahlungsdienstleister der das ermöglicht, ähnlich wie Paypal. Viele Shops, vorallem was Software und Computerhardware, ermöglichen das. Du brauchst dann auch keine Bank, worum es ja im Grunde auch geht.

Die Full Wallet mit 120GB beinhaltet alle Tx die jemals getätigt wurden. Du kannst auch eine Light Wallet nutzen wie z.B. Electrum. Bei grossen Summen würde ich aber eine externe Variante empfehlen, Hardware-oder Paperwallet.

So mal kurz und knapp. Informiere dich einfach noch ein bisschen und denke immer daran das es keinen zentralen Server gibt. Das ist der Grund warum es so genial ist.
FordPerfect (OP)
Newbie
*
Offline Offline

Activity: 3
Merit: 0


View Profile
June 03, 2017, 05:59:02 AM
Last edit: June 03, 2017, 06:16:19 AM by FordPerfect
 #4

Mhh danke für die Antworten.

Wenn es keine zentrale Schnittstelle gibt, wer zum Kuckuck definiert dann den Schwierigkeitsgrad für den nächsten Block?

Eigentlich hätte ich mir ein bisschen konkretere Infos erhofft.

Aber das mit den Blocks ist richtig? Also ~12.5 / ~10 Minuten?

https://btc.com/?utm_source=bmhomepage&utm_medium=web&utm_campaign=bigbanner

Als Beispiel.

Edit: Einfach nochmals zum Thema Transparenz: Mir fehlt echt eine strukturierte Dokumentation wie man sie von allen grösseren Plattformen kennt. Sei das nun so etwas wie P2P z.B. BitTorrent, eine API wie zum Beispiel jQuery, einer Serversprache wie PHP, eine mod Bibliothek für irgendein grösseres Programm oder sogar ein Plugin für WinAmp... Wink

Es scheint mir fast so, als wolle man nicht, dass jemand den technischen Hintergrund versteht, obwohl ja eigentlich alles Open-Source ist...
Wellensurfer
Full Member
***
Offline Offline

Activity: 232
Merit: 100


View Profile
June 03, 2017, 07:14:13 AM
 #5

der Schwierigkeitsgrad wird laufend vom Protokoll aus der vergangenen Blockzeit errechnet und so angepasst, dass in Zukunft eine Blockdauer von ungefähr 10 Minuten erwartet werden kann.

Wenn Du das Ganze jetzt nicht auf Anhieb verstehst, bist Du nicht allein. Man schätzt, dass es auf der ganzen Welt nur etwa 100 Menschen gibt, die die Blockchain wirklich verstanden haben.
husel2000
Hero Member
*****
Offline Offline

Activity: 581
Merit: 504


View Profile
June 03, 2017, 10:11:21 AM
 #6

die zahlen sind vereinfacht um das system zu erklären
es wird definiert die zeit für einen Block ist 10 Minuten.

Nach 6 Blöcken müssten also 10Min * 6 Blöck = 60 Minuten rum sein.
Hat das Erzeugen jedoch nur 50 Minuten gedauert wird erkannt: es war zu schnell --> Schwierigkeit anheben.

WIe lange die Zeit zwischen den 6 Blöcken war kann jeder Client selbst berechnen und weiß daher wieviel zu schnell und entsprechend wieviel die Diff angehoben werden muss.
Das war komplett ohne technische Details, nur dene Schematische Erklärung.
FordPerfect (OP)
Newbie
*
Offline Offline

Activity: 3
Merit: 0


View Profile
June 03, 2017, 06:59:37 PM
 #7

Das mit den Blöcken lass ich mal für den Moment...

Ich bin inzwischen soweit, dass ich mich durch den Core Quelltext ackere um herauszufinden wie und wohin der die Verbindung mit dem Netzwerk herstellt.

https://de.wikipedia.org/wiki/Bitcoin#Peer-to-Peer-Netz

War auch schon auf dem irc channel, scheint mir aber nicht der richtige Weg zu sein. Ausserdem steht da was von wegen, dass das IRC-Bootstrapping entfernt wurde im Quellcode sieht's aber nicht danach aus...

Finde die Idee noch lustig / interessant, irc dafür zu "missbrauchen" Wink


Wobei ich nebenbei auch nach dem Test-Net suchen würde, was sicher ne gute Idee um einige Tests durchzuführen, sonst kille ich am Schluss noch das ganze Bitcoin Netzwerk Wink
david123
Legendary
*
Offline Offline

Activity: 1022
Merit: 1004


View Profile
June 03, 2017, 07:45:03 PM
 #8

Wenn du des Englischen mächtig bist und einen IT-Hintergrund hast, wäre es vielleicht
hilfreich, einfach mal das white paper von Satoshi zu lesen. Ich finde, das ist die beste
Erklärung:
https://bitcoin.org/bitcoin.pdf
shorena
Copper Member
Legendary
*
Offline Offline

Activity: 1498
Merit: 1499


No I dont escrow anymore.


View Profile WWW
June 17, 2017, 01:22:11 PM
 #9


Huhu alle zusammen.

Moin

Ich wollte mich heute mal ein bisschen über Bitcoins schlau machen - nach 3 Stunden qualmt mir der Kopf und ich hab’s immer noch nicht begriffen!  Cry

Ich wäre froh, wenn ihr mir im Text markierte Aussagen [¿¿¿] bestätigen oder widerlegen würdet.
Das sind von mir gemachte Schlussfolgerungen, bei denen ich gerne wissen würde ob diese zutreffend sind oder nicht.

Ich versuch das einfach mal so gut ich kann, ohne viele der Antworten hier gelesen zu haben. Nur soviel, es gibt viele Erklärungen die Metaphern benutzen und dadurch ungenau werden. Man bekommt dadurch zwar ein grobes Gefühl wie es geht, hat aber eigentlich doch nichts verstanden.

-snip-
Wenn ich das recht verstanden habe entspricht 1 Satoshis 1 nonce ¿¿¿ aber dazu kommen wir ja später noch…

Nein, nonce ist englisch und steht für 'Number used once'. Die nonce ist fürs Mining wichtig und hat nichts mit Bitcoin Einheiten zu tun.

- Transparenz/Server/Pools:
Nachdem ich das ganze mal schnell getestet, ein paar Satoshis generiert habe und nun ein reicher Mann bin, kamen weitere Fragen auf.
Google brachte bis jetzt nicht die gewünschten Ergebnisse.

Ich glaube nicht das du mal eben ein paar Satoshis 'generiert' hast.

-snip-
1. Die mysteriöse Transaktion und das noch mysteriöse Konto dahinter

#1 Es gibt keine Konten.

„Es gibt keine Bitcoins, nur die Aufzeichnungen über Bitcoin-Transaktionen“
Ok soweit angekommen. Jetzt würde ich gerne konkrete Beispiele haben wie der Prozess auszusehen hat.
Was braucht man um mit Bitcoins zu arbeiten? Ein Konto. Ein Konto ist ja nichts anderes als ein geschützter Bereich auf den nur der/die Besitzer Zugriff haben.

Nein, ein Konto ist nicht das selbe wie ein verschlüsseltes Bild für das nur ich das Password kenne oder? Ich nehme mal an mit 'arbeiten' ist ausgeben gemeint. Bitcoin basiert auf dem Signatur Algorithmus ECDSA. Dieser funktioniert asymmetrisch. Es gibt also einen öffentlichen (zum verifizieren) und einen privaten Schlüssel (zum signieren).

Und da blick ich überhaupt nicht durch. Ausgangspunkt ist ja die sogenannte „Bitcoin-Adresse“.
In meinem Fall z.B.: „1DRed1fS1X1um4eVemLjdYZrNYkZ9CJqDg“. 1 für Einzelkonto 3 für irgendwas anderes (mehrere Besitzer). ¿¿¿

Nein. Bitcoin Adressen werden aus dem öffentlichen Schlüssel gebildet (Hashes SHA 256 und RIPEMD 160 und ein bisschen Prüfsumme und Prefix dazu). Weiter gibt es eine Script Sprache die klärt unter welchen Bedinungen Bitcoin ausgegeben werden können.

-> https://en.bitcoin.it/wiki/Script

Der Prefix 1 an einer Adresse bedeutet das die Bitcoin die über diese Adresse empfangen werden nach bestimmten Regeln ausgegeben werden können. Diese Regeln heißen 'Version 1 Bitcoin Address' oder üblicher 'pay-to-pubkey-hash' und bestimmen eigentlich nur ein ganz bestimmtes Script.

Dieses Script lautet:

Code:
OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG

Es prüft mit dem öffentlichen Schlüssel zu dieser Adresse ob ein korrekte Signatur geleistet wurde. Der öffentliche Schlüssel wird vom Absender zur Verfügung gestellt und kann nicht ohne weiteres aus der Adresse abgeleitet werden. Wenn er erstmal bekannt ist, kann aber leicht geprüft werden um welche Adresse es geht.

Wie was wo in der Adresse definiert, dass ich der Besitzer bin und gewährleistet, dass nur ich Zugriff auf den „Betrag“ der Transaktion habe?

Gar nicht. Jeder(!) der über den (oder genau genommen die) privaten Schlüssel verfügt ist 'Besitzer'. Aufgrund der Verwendung von RIPEMD 160 (160 Bit) wird davon ausgegangen das zu jeder Adresse 296 gültige private Schlüssel existieren. 2256-2160

Da sollte es doch ein Gegenstück geben, einen Hash oder was auch immer den nur ich kenne und der das „von – nach“ definiert…?

Die von nach Beziehung ist (noch mal in kurz): privater Schlüssel -> öffentlicher Schlüssel -> Adresse. Keiner der Wege ist nach aktuellem Stand der Technik umkehrbar (<-/->).

Also wenn ich jetzt mit irgendeiner Programmiersprache ein „Konto“ mit einer Passphrase erstellen möchte wie müsste das aussehen?

Lad die Bibliothek für Krypto und erzeug dir eine Zufallszahl zwischen 0x0 und 0x FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141. Das ist dein privater Schlüssel. Vermutlich bietet die Bib dann auch Funktionen um den Pubkey abzuleiten und Hashes zu bilden.

-> https://en.bitcoin.it/wiki/Secp256k1
-> https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses

Welche Daten/Variablen bräuchte man zu sichern um den Prozess zu reproduzieren?
Wie kann es möglich sein das auch Offline zu machen ohne die Daten über einen Server zu verifizieren?
In meinem Kopf sieht das im Moment etwa so aus:
- Generierung der Passphrase bzw. Public-Private Key (wie hat das auszusehen) ¿¿¿
- Verschlüsselung der Passphrase ¿¿¿
- Generierung einer Bitcoin-Adresse ¿¿¿
- Wie wird der Besitzer definiert ¿¿¿
- Wie wird die Bitcoin-Adresse generiert ¿¿¿

Das sollte nun aus dem oben klar sein, sonst fragen.

- Wie werden die Daten beim Server registriert ¿¿¿

Gar nicht. Es wird spekuliert das der Zahlenraum groß genug und der verwendete Zufallszahlengenerator zufällig genug ist das keine Kollision vorkommt.

2. Die mysteriöse Verifizierung der Transaktion durch die Miner
Das Szenario wäre ja dann:
- Ich schicke jemandem die „Bitcoin-Adresse“
- Der andere überweist 1 Bitcoin an mich
- Die Transaktion wird auf einen der mysteriösen Server geladen ¿¿¿
- Die Miner laden die Transaktion herunter und beginnen mit der Verifizierung (6 = totales ok) und senden mysteriöse Daten and den mysteriösen Server ¿¿¿
- Mein Client sucht nach der Verifizierung und bestätigt den „erhalt“ ¿¿¿
Wie würde dann dieser Ablauf programmiertechnisch aussehen? Also nicht über einen Pool sondern direkt.

Ich gehe hier von (unpruned) Full Nodes aus und nicht von light wallets (wie z.B. electrum) die ggf. (in)direkt mit einem Full Node Kontakt aufnehmen. Ein Full Node ist ein Knoten im Netzwerk der alle bisherigen Blöcke gespeichert hat und somit die vollständige Historie aller Bitcoin Transaktionen kennt. Eine Transaktion sieht in etwa so aus:

Code:
{
  "txid": "edc9545bb0dab665c35c3f42949ca3c4451d59dff24d88456f24dda7107fe89c",
  "hash": "edc9545bb0dab665c35c3f42949ca3c4451d59dff24d88456f24dda7107fe89c",
  "size": 1086,
  "vsize": 1086,
  "version": 1,
  "locktime": 0,
  "vin": [
    {
      "txid": "28939417d65cba570d53968e63764c17b12e1410ee535f86c8d0b25a99f4d06b",
      "vout": 0,
      "scriptSig": {
        "asm": "304502210094dccee98f54c5e76db9f4d4c2e6de8424ceb409853b84f5b5c6754105de56b4022075321ba46cf8ab0532a939f84a42feeffa80f52b70ca675be2be92717f4cedd8[ALL] 04e369909ed1e40bb67f45b0528126a35cdca949adf8ee607836400dbe96680e536df3713268213d409ec0fde242c5d7f7bf717a725d9b91857a3e258228a30f5c",
        "hex": "48304502210094dccee98f54c5e76db9f4d4c2e6de8424ceb409853b84f5b5c6754105de56b4022075321ba46cf8ab0532a939f84a42feeffa80f52b70ca675be2be92717f4cedd8014104e369909ed1e40bb67f45b0528126a35cdca949adf8ee607836400dbe96680e536df3713268213d409ec0fde242c5d7f7bf717a725d9b91857a3e258228a30f5c"
      },
      "sequence": 4294967293
    },
    {
      "txid": "8cdff588f2557e7172c2fcf75754f05a4c5656403e03ab2c98aeeb5b66bdaec0",
      "vout": 0,
      "scriptSig": {
        "asm": "304402204e6ac5a770ac61f5def2031c457fc883b58840af5ba409663584d7cd06d7ebdb022059fb6734410bc732876afc29f6432b8e265e4eb74140407ba11cf683257fc451[ALL] 0413ff5dbebb3086836c04e16b3b50d29eac98b1c37bf3d8da0c1b1238650eeed1d633ef9f617c808f332c1d722dad8e1972e0f2faccb935499fe7e951e2857cc6",
        "hex": "47304402204e6ac5a770ac61f5def2031c457fc883b58840af5ba409663584d7cd06d7ebdb022059fb6734410bc732876afc29f6432b8e265e4eb74140407ba11cf683257fc45101410413ff5dbebb3086836c04e16b3b50d29eac98b1c37bf3d8da0c1b1238650eeed1d633ef9f617c808f332c1d722dad8e1972e0f2faccb935499fe7e951e2857cc6"
      },
      "sequence": 4294967293
    },
    {
      "txid": "a316baedc374484a766c10b052d261d410cfa299b347caa2403ad9da7da65bd6",
      "vout": 18,
      "scriptSig": {
        "asm": "304402201de00add2e25b64fb59a1b586478d1a561ddd40fa9265994025852d93e86c5dd02207c31dca9142105eddcc17c311cb0f48f28c8adcad27b6ae3d97d8dc05cfe0ec0[ALL] 04b88c0ef1ec6f52fdf09e34e10ccec08076b23c7ea127eca51e3769009bfdac69a9c138fdff1c56b1352145c31e11773c746c079203d6562ac8b8cb135125a530",
        "hex": "47304402201de00add2e25b64fb59a1b586478d1a561ddd40fa9265994025852d93e86c5dd02207c31dca9142105eddcc17c311cb0f48f28c8adcad27b6ae3d97d8dc05cfe0ec0014104b88c0ef1ec6f52fdf09e34e10ccec08076b23c7ea127eca51e3769009bfdac69a9c138fdff1c56b1352145c31e11773c746c079203d6562ac8b8cb135125a530"
      },
      "sequence": 4294967293
    }
  ],
  "vout": [
    {
      "value": 0.00570000,
      "n": 0,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 08e7ced2b0d09aff25cc8429d737e659b36811e5 OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a91408e7ced2b0d09aff25cc8429d737e659b36811e588ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "1p66q9LKpifT99xPrks86WFxt8h4JTtcN"
        ]
      }
    },
    {
      "value": 0.00579000,
      "n": 1,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 83f6dd568c924b6323769f31bf2997105c6e804f OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a91483f6dd568c924b6323769f31bf2997105c6e804f88ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "1D2mFapJVNz87yV4CrXGab2kkFzWgB3xgc"
        ]
      }
    },
    {
      "value": 0.00600000,
      "n": 2,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 84de7559c1e130d413dd29556b9d384dffa2afc5 OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a91484de7559c1e130d413dd29556b9d384dffa2afc588ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "1D7Yh18fkSpuWeBKH7SFESuhsDYEQcUTUo"
        ]
      }
    },
    {
      "value": 0.00749091,
      "n": 3,
      "scriptPubKey": {
        "asm": "OP_HASH160 1bfef4ccc0c996d78c4ce28a36cedc2c84b935db OP_EQUAL",
        "hex": "a9141bfef4ccc0c996d78c4ce28a36cedc2c84b935db87",
        "reqSigs": 1,
        "type": "scripthash",
        "addresses": [
          "34F3bPoSzWfN7B7sydLLyeHnY2igNtmwi7"
        ]
      }
    },
    {
      "value": 0.00797800,
      "n": 4,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 8791d04d40ed443429ec485ed161efee507c686d OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a9148791d04d40ed443429ec485ed161efee507c686d88ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "1DMpuD8VTiar9hXnfaQBqiRrRd3GmWCnpF"
        ]
      }
    },
    {
      "value": 0.00900000,
      "n": 5,
      "scriptPubKey": {
        "asm": "OP_HASH160 11ced17f62b46f5d51a164d39771a368d9f00f9d OP_EQUAL",
        "hex": "a91411ced17f62b46f5d51a164d39771a368d9f00f9d87",
        "reqSigs": 1,
        "type": "scripthash",
        "addresses": [
          "33KBAo7ANp3BqLoGsZfdSUJsgNxuRzsPik"
        ]
      }
    },
    {
      "value": 0.00943430,
      "n": 6,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 0d9a72dc2c6c694c2feb45e2d069ea41905a51d9 OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a9140d9a72dc2c6c694c2feb45e2d069ea41905a51d988ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "12EvomzLHxdP2SUytDRKbaFx4zM2BGvHNM"
        ]
      }
    },
    {
      "value": 0.01000000,
      "n": 7,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 0923dbf1ab22759b766c7aee2189f12850f80bbd OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a9140923dbf1ab22759b766c7aee2189f12850f80bbd88ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "1qL3GLDp1LhvgUhPawfetgF8wCEN7gRTj"
        ]
      }
    },
    {
      "value": 0.01000000,
      "n": 8,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 4f8a4b5f43436917222f7cf5fab8606d22805962 OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a9144f8a4b5f43436917222f7cf5fab8606d2280596288ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "18Fa428g3W92Nx4EnFAc7WHL1Lcn7uSKbK"
        ]
      }
    },
    {
      "value": 0.01000000,
      "n": 9,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 a022007ab5e73500438a3c6820994f76c0f8294f OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a914a022007ab5e73500438a3c6820994f76c0f8294f88ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "1FbhrBhFhqpAsH18BmjF2Afo5y343tMzUb"
        ]
      }
    },
    {
      "value": 0.01300000,
      "n": 10,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 2bc8129b516eb7d3da4e42c3959bb600379297fb OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a9142bc8129b516eb7d3da4e42c3959bb600379297fb88ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "14zVjYTcA2si8pgbExLHKDu3mayPBoVR9w"
        ]
      }
    },
    {
      "value": 0.02046668,
      "n": 11,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 da7d037a3d99e031d04097bfd2e410ac4769c976 OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a914da7d037a3d99e031d04097bfd2e410ac4769c97688ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "1LvG4v5UqzgGVigAVRhdrPYPLE3QMPpQJF"
        ]
      }
    },
    {
      "value": 0.03600000,
      "n": 12,
      "scriptPubKey": {
        "asm": "OP_HASH160 630681b6df2904ccd33bf4d6dd7ffe1894c696e1 OP_EQUAL",
        "hex": "a914630681b6df2904ccd33bf4d6dd7ffe1894c696e187",
        "reqSigs": 1,
        "type": "scripthash",
        "addresses": [
          "3AiccdPS25KZyf5APKkdBiCfpRmuJL7FhZ"
        ]
      }
    },
    {
      "value": 0.05642274,
      "n": 13,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 7c35c629bf20f15f14f6b6f5d8c18613821d11da OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a9147c35c629bf20f15f14f6b6f5d8c18613821d11da88ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "1CKmD5Msa24q1URmfXoX8C8BJiZrdijFAS"
        ]
      }
    },
    {
      "value": 0.08146967,
      "n": 14,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 ae5814cd6dd9898b0b6d0620c68d65091257f022 OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a914ae5814cd6dd9898b0b6d0620c68d65091257f02288ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "1Gtr6NZQG68BrD3k1aXFWGSKDqrwfABBr9"
        ]
      }
    },
    {
      "value": 0.25000000,
      "n": 15,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 101959fd4347ccda80305029cd9f03a3718fcf43 OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a914101959fd4347ccda80305029cd9f03a3718fcf4388ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "12U8BXPA4nxTcezbp1h2H8eXDR9jT8sSCG"
        ]
      }
    }
  ]
}

Am Anfang stehen Meta Informationen, wie die Transaktions-ID (TXID), die Größe in Byte etc.
Dann folgt ein Block mit Eingängen (vin), hier werden die Bitcoin die ausgegeben werden referenziert, jeweils über eine TXID und eine Position (vout). Der vout Wert ist wichtig da jede Transaktion mehr als einen Ausgang erzeugen kann. Es folgen asm und hex, welches jeweils die Signatur und der öffentliche Schlüssel für den jeweiligen Eingang sind unterschiedliche codiert.
Dann folgt ein Block mit Ausgängen (vout), hier werden Bitcoin ausgegeben. Jeder Ausgang erhällt eine Position (n). Es wird die Adresse und der Wert angegeben. Im asm Feld stehen die OP Codes die es erlauben diese Bitcoins später zu verwenden.
Die Gebühr ist Summe der Eingänge - Summe der Ausgänge und wird nicht explizit angegeben.

Die Transaktion wird nicht auf einen Server hochgeladen, sondern der Full Node verteilt sie an seine Peers. Diese Peers sind auch Full Nodes und überprüfen ob die Transaktion die Regeln des Netzwerks einhällt. Wenn sie die Regeln (sind im Quellcode hinterlegt) verletzt wird sie verworfen. Sollte ein peer zu oft ungültige Transaktionen senden wird es verbannt und keine Verbindung mehr aufgebaut. Full Nodes fanden ihre peers früher per IRC, inzwischen gibt es sogenannte Seed Nodes von denen ein Full Node von anderen Servern erfährt.

Miner sind auch Full Nodes die Rechenleistung aufwenden um Blöcke zu finden. Der erste gültige Block in dem eine Transaktion erhalten ist bestätigt die Transaktion. Jeder folgende Block erhöht die Anzahl der Bestätigungen, aber die Transaktion ist nicht nochmal Teil des Blocks. Wenn Miner einen Block gefunden haben, verteilen sie ihn an ihre Peers. Diese prüfen wieder. Gültig -> weiterreichen, ungültig -> verwerfen und zur Not bannen.

3. Der mysteriöse Block der die ganze Geschichte zusammenhält
- Wie besteht die Verbindung zwischen einem Hash Block und einer Transaktion?

Auch ein Block ist aufgeteilt. In einem Teil des Blocks dem Header befindet sich ein Teil einer Datenstruktur die Sich Baum nennt (Merkle Tree). Die Wurzel dieses (binären) Baums entsteht aus den paarweise gehashten Transaktions-IDs und ist Teil des Headers.

-> https://bitcoin.org/en/glossary/merkle-tree

Damit ein Block als gültig akzeptiert wird muss er diverse Regeln befolgen, u.a. müssen alle Transaktionen gültig sein. Der rechenintensive Teil ist es das finden eines SHA256(SHA256(Block Header)) Hashes welcher der aktuellen Schwierigkeit genügt und den vorherigen Block referenziert. Diese wird vom Netzwerk automatisch alle 2016 Blöcke (ca. 2 Wochen) korrigiert um die Zeit zwischen zwei Blöcken im Schnitt auf 10 Minuten zu halten.

Die Grundlegende Idee nennt sich 'Proof-of-work' und gibt es schon länger als Bitcoin. Wenn du dir einen Hash Wert als binäre Zahl vorstellst, dann kann die erste Ziffer eine 1 oder eine 0 sein. Wenn du mir nun einen Hash zeigst der eine 0 am Anfang hat, dann kann ich davon ausgehen, dass du bis zu zwei unterschiedliche Datensätze gehasht haben musst um diesen Wert zu finden. Je mehr 0 bits ich fordere desto mehr Hashes wirst du im Mittel berechnet haben müssen um einen solchen vorzeigen zu können. Hier(!) kommt jetzt die nonce ins Spiel. Diese ist ein Wert im Header eines Bitcoin Blocks der verändert werden kann. Dieser Wert kann einfach hochgezählt werden um viele verschiedene Datensätze (mit jeweils gleichen Merkle Root und somit gleichen Satz an Transaktionen) testen zu können. Der nonce Wert sind nur 4 Byte, das reicht also bei den heutigen Terrahash ASICs nicht mehr aus. Es gibt aber weitere Felder im Header die bearbeitet werden können. Geprüft wird immer der Hash des Headers. Durch die Referenz auf den vorherigen Block entsteht eine Kette aus Blöcken, die Blockchain.

- Ist es richtig, dass im Moment 1 Block alle ca. 10 Minuten von allen Miner Weltweit generiert werden können was dem Output von Maximal 12.5 Bitcoins für alle Miner Weltweit in ~10 Minuten entspricht?

Jeweils im Mittel ja.

Also (ohne pools) defacto 1 einzige Person von allen 12.5 Bitcoins bekommt und alle anderen „leer ausgehen“? Oder habe ich da was falsch verstanden ¿¿¿

Die Bitcoin werden neu erzeugt und nicht empfangen. Dazu kommen die Gebühren der Transaktionen. Mit der Zeit wird es immer weniger neue Coins geben und die Gebühren werden immer wichtiger.

Wie unterscheidet sich die Prozedur (siehe oben „Minimal-Bitcoin-Miner“) von einem Pool als wenn man direkt über die Bitcoin Server arbeiten würde?

Die Rechenleistungsanforderungen einen Block in sinnvoller Zeit zu finden, sind inzwischen so hoch das es keine einzelne Maschine gibt die das noch kann. Also werden mehrere von diesen Maschinen genommen und die Arbeit wird unter ihnen aufgeteilt. Dazu gibt es entsprechende Protokolle die mit Bitcoin erstmal eigentlich nichts zu tun haben. Das ganze nennt man dann einen Pool. Ein Pool teilt sich in der Regel einen Full Node der das Ergebnis an den Rest des Netzwerks kommuniziert und die Arbeit aktualisiert wenn zwischenzeitlich jemand anderes einen Block gefunden hat.

So ich hoffe, meine Fragen sind nicht allzu blöd oder unverständlich.

Bei meinen Recherchen bin ich noch über diesen Artikel gestossen, vielleicht interessiert der euch ja auch ;-) :
https://motherboard.vice.com/de/article/ich-habe-eine-woche-lang-nur-mit-bitcoins-ueberlebt-330

Das war jetzt (auch für mich) ziemlich viel auf einmal. Frag gern weiter, aber es ist vermutlich besser einen Auspekt zur Zeit zu erklären und danach zu versuchen das ganze zusammen zu puzzeln.

Im not really here, its just your imagination.
fabske
Jr. Member
*
Offline Offline

Activity: 57
Merit: 1


View Profile
June 19, 2017, 11:53:39 AM
 #10

Hi,

ich bin nicht so der gute erklär Typ
Möchte aber gern zum Thema Blockchain ein Video empfehlen:
https://www.youtube.com/watch?v=_160oMzblY8

vG
Zak_Mckracken
Newbie
*
Offline Offline

Activity: 4
Merit: 0


View Profile
June 21, 2017, 12:11:17 PM
 #11

@shorena

Wenn es schon nicht der Ersteller schreibt, dann von mir: ein fettes Danke für deine ausführlichen Erläuterungen Smiley
shorena
Copper Member
Legendary
*
Offline Offline

Activity: 1498
Merit: 1499


No I dont escrow anymore.


View Profile WWW
June 21, 2017, 09:20:48 PM
 #12

@shorena

Wenn es schon nicht der Ersteller schreibt, dann von mir: ein fettes Danke für deine ausführlichen Erläuterungen Smiley

Bitte, gern Smiley Nach 2 Wochen ist das aber auch mehr für die Nachwelt und Leute die über Google kommen als für den OP.

Im not really here, its just your imagination.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!