Home  Guide  Forum

Ένας απλός κώδικας για τον υπολογιστή,
ένα μεγάλο βήμα για τον άνθρωπο.


Τι είναι Bitcoin;

Το bitcoin είναι ένας ηλεκτρονικό τρόπος συναλλαγής που δημιουργήθηκε το 2009. Σου επιτρέπει να στείλεις χρήματα σε οποιονδήποτε χωρίς την ύπαρξη μιας κεντρικής εξουσίας, που αποφασίζει πότε θα εκδόσει λογαριασμούς και θα διεκπληρώσει συναλλαγές, όπως για παράδειγμα μία τράπεζα.

Δημιουργήθηκε ως λύση του σύγχρονου χρηματοοικονομικού συστήματος, στο οποίο ένας μικρός αριθμός μεγάλων τραπεζών ελέγχει την έκδοση λογαριασμών και την επεξεργασία συναλλαγών. Οι τράπεζες συγκεντρώνουν τα χρήματα των χρηστών τους και τους αναγκάζουν να τις εμπιστευτούν. Η κατάχρηση αυτής της εμπιστοσύνης και η ύπαρξη οικονομικής κρίσης το 2007 ήταν αιτίες για την δημιουργία του Bitcoin, το οποίο λειτουργεί ως σύστημα πληρωμών χωρίς κεντρικό σημείο ελέγχου.

Το Bitcoin δημιουργήθηκε το 2009 από έναν προγραμματιστή, που αποφάσισε να κρατήσει την ταυτότητά του κρυφή, παρουσιάζοντας τον εαυτό του με το ψευδώνυμο «Satoshi Nakamoto». Μέχρι σήμερα γνωρίζουμε ελάχιστα πράγματα για αυτόν τον άνθρωπο, όμως πιθανότατα να έχει στην κατοχή του πάνω από 1 εκατομμύριο bitcoins


Πώς δουλεύει το Bitcoin;

Το Bitcoin είναι απλά ένα πρόγραμμα.
Μπορείς να το κατεβάσεις κι εσύ στον υπολογιστή σου: https://bitcoin.org/en/download

Όταν τρέξεις το πρόγραμμα θα συνδεθείς μαζί με άλλους που τρέχουν το ίδιο πρόγραμμα (τους αποκαλούμε nodes), και θα αρχίσουν να σου μοιράζουν ένα αρχείο. Αυτό το αρχείο λέγεται blockchain, και είναι μια μεγάλη λίστα με συναλλαγές (ή αλλιώς transactions).


Όταν γίνει μια νέα συναλλαγή, μεταδίδεται από υπολογιστή σε υπολογιστή μέχρι όλοι να έχουν ένα αντίγραφο της. Κάτα μέσο όρο, κάθε 10 λεπτά ένας τυχαίος υπολογιστής (node) βάζει τις τελευταίες συναλλαγές στο αρχείο blockchain και ύστερα μοιράζει το αρχείο του σε όλο το δίκτυο.


Το αποτέλεσμα; Το πρόγραμμα Bitcoin δημιουργεί ένα μεγάλο δίκτυο από υπολογιστές που επικοινωνούν μεταξύ τους μεταδίδοντας ένα αρχείο που ανανεώνεται συνεχώς με νέες συναλλαγές.


Τι πρόβλημα λύνει το Bitcoin;

Ήταν δυνατόν και πριν το Bitcoin να δημιουργήσεις συναλλαγές και να τις μεταφέρεις σε ένα δίκτυο υπολογιστών. Ωστόσο, το πρόβλημα ήταν πως μπορούσες να φτιάξεις πολλές ψεύτικες συναλλαγές και να τις μοιράσεις στο δίκτυο. Για παράδειγμα, μπορούσες να δημιουργήσεις 2 συναλλαγές που ξοδεύουν τον ίδιο αριθμό coins (ακόμα κι αν δεν αρκούσαν αυτά που έχεις) και να τις στείλεις στο δίκτυο την ίδια χρονική στιγμή. (Διαλέγεις έναν node για την μία και αμέσως μετά, έναν node για την άλλη, αυτοί απλά θα συνέχιζαν να το μοιράζουν)
Αυτό είναι γνωστό ως “double-spend”. Δείτε το παράδειγμα στην εικόνα:

Ακόμη, λοιπόν, κι αν δεν αρκούσαν τα coins που έχεις γι' αυτές τις δύο συναλλαγές, μοίρασες σε κάποιους υπολογιστές την πληροφορία ότι έκανες μία συναλλαγή και σε κάποιους άλλους μία άλλη που δεν θα επιβεβαιωνόταν από τους πρώτους. Οπότε τους ξεγέλασες, διότι όλοι οι υπολογιστές θα έχουν γραμμένο πως έχεις κάνει μόνο μία συναλλαγή. Δεν μπορείς να γνωρίζεις ποια συναλλαγή έγινε πρώτη από τη στιγμή που όλοι οι υπολογιστές στο δίκτυο λειτουργούν ανεξάρτητα. Κάποιοι θα λάβουν την πράσινη πρώτα και άλλοι την κόκκινη . Ποιος ορίζει σε αυτήν την περίπτωση ποια είναι η σωστή και ποια η λάθος; Κανένας. Το Bitcoin, όμως λύνει αυτό το πρόβλημα αναγκάζοντας τους υπολογιστές να κρατούν όλες τις συναλλαγές που λαμβάνουν, στη μνήμη τους, πριν τις γράψουν στο αρχείο blockchain. Μετά, με μέσο όρο 10 λεπτών, κάποιος τυχαίος υπολογιστής θα γράψει στο blockchain του, όλες τις συναλλαγές και θα αρχίσει να μοιράζει το αρχείο του σε όλο το δίκτυο. Είναι όντως τυχαίος; Όχι ακριβώς... Θα το εξηγήσω καλύτερα πιο μετά.
Στην παρακάτω εικόνα μπορείτε να δείτε πως το Bitcoin έλυσε το πρόβλημα του "double-spend":


Ο υπολογιστής που θα καταφέρει να προσθέσει τις συναλλαγές στο blockchain, θα αρχίσει να το μοιράζει και στους άλλους. Οι άλλοι θα επιβεβαιώνουν πως, ισχύει, εκείνος ο υπολογιστής κατάφερε και το έβαλε στο blockchain. Έπειτα, αυτό το ανανεωμένο αρχείο (blockchain) που θα αρχίσει να μοιράζεται σε όλο το δίκτυο θα θεωρηθεί από όλους τους υπολογιστές ως το «σωστό», με αποτέλεσμα να είναι αδύνατο να ξεγελάσεις το δίκτυο.

Όπως είπαμε, κάποιος «τυχαίος» υπολογιστής θα προσθέσει τις συναλλαγές στο blockchain. Θα ήταν καλύτερο να τον πούμε τυχερό παρά τυχαίο. Γιατί; Η διαδικασία του να προσπαθήσεις να βάλεις τις τελευταίες συναλλαγές στο blockchain λέγεται mining, και είναι ουσιαστικά ένας διαγωνισμός.


Πώς δουλεύει το mining;

Αρχικά, κάθε υπολογιστής παίρνει τις τελευταίες συναλλαγές και τις προσθέτει στο memory pool, που είναι απλά μια προσωρινή μνήμη του υπολογιστή (όπως είπα και πριν). Μετά ο καθένας προσπαθεί να κάνει mine τις συναλλαγές από το memory pool στο blockchain. Για να το καταφέρει αυτό, λέμε πως συγκεντρώνει όλες τις συναλλαγές από το memory pool σε κάτι που λέγεται block, και μετά χρησιμοποιεί επεξεργαστική ισχύ για να τις βάλει στο blockchain και να αρχίζει να το μοιράζει.

Και θα μου πεις, γιατί επεξεργαστική ισχύ; Αν δεν έχεις ασχοληθεί με προγραμματισμό ή κρυπτογραφία στο παρελθόν ίσως να σου φανεί παράξενο. Ας πούμε πως για να καταφέρεις να κάνεις mine το καινούργιο block που θα μοιραστεί σε όλο το κόσμο πρέπει να περάσεις από κάτι που λέγεται hash function. Το hash function είναι μια λειτουργία που μετατρέπει οποιοδήποτε κείμενο σε μια σειρά από τυχαία νούμερα και λατινικούς χαρακτήρες. Είναι μη ανατρέψιμο στην αρχική του μορφή. Αυτό δεν θα εξηγήσω πως ισχύει αλλά θα δώσω ένα παράδειγμα. Ας πάρουμε τον αριθμό 100 και ας υποθέσουμε πως είναι αυτή η «σειρά» από τυχαίους χαρακτήρες. Δεν υπάρχει κάποιος τρόπος για να πάμε στην αρχική του μορφή (που θα είναι για παράδειγμα 2 αριθμοί που θα αθροίζονται),
επειδή το 100 βγαίνει από το 50 + 50 βγαίνει και από το 68 + 32.

Για να καταφέρεις να βάλεις το block στο blockchain πρέπει αυτός ο αριθμός (δηλαδή το block hash) να είναι μικρότερος από τον target, ένα νούμερο που όλο το δίκτυο έχει αποδεχτεί να μην υπερβαίνουμε.
(Και που αλλάζει σε κάθε 2016 blocks)

Αν το block hash που θα παράξεις δεν είναι μικρότερος από τον target, μπορείς να αλλάξεις κάτι μέσα στο block που λέγεται nonce και να ξαναδοκιμάσεις. Το nonce είναι ένα νούμερο. Τίποτα άλλο. Απλά αλλάζοντάς το, αλλάζει τελείως και το νέο hash και ελπίζεις κάνοντας συνεχώς αυτήν την αλλαγή (δηλαδή βάζοντας το nonce είτε 1 είτε 2 είτε x κτλπ) πως θα βρεις κάποιο hash που να είναι κάτω από τον target.
Όπως είπα, hash είναι μια σειρά από τυχαία γράμματα και αριθμούς που παράγεται από το ανάλογο text.

Για παράδειγμα, το hash του «a» είναι:

ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb

Είπα πως το hash πρέπει να είναι μικρότερος αριθμός από τον target. Ακόμα κι αν δεν φαίνεται αριθμός, όταν το μετατρέψουμε σε μορφή decimal θα μπορούμε εμείς οι άνθρωποι να τον διαβάσουμε.

Το decimal του από πάνω hash είναι:

91634880152443617534842621287039938041581081254914058002978601050179556493499

Συνοψίζοντας, η διαδικασία του mining χρησιμοποιεί επεξεργαστική ισχύ, αφού ο υπολογιστής που θα είναι ο γρηγορότερος θα έχει τις περισσότερες πιθανότητες να βάλει το block στο blockchain για να αρχίσει να το μοιράζει.


Πώς γεννιούνται τα bitcoins;

Ως κίνητρο για να χρησιμοποιήσει ο καθένας μας επεξεργαστική ισχύ, το δίκτυο έχει αποδεχτεί να υπάρχει μια ανταμοιβή σε αυτόν που θα καταφέρει να βάλει το τελευταίο block στο blockchain, και είναι ένας συγκεκριμένος αριθμός bitcoins. Μπορούμε να πούμε πως αυτά τα bitcoins γεννιούνται από «κοπανιστό αέρα». Επομένως, αν καταφέρεις και είσαι ο τυχερός που θα κάνει mine το block, θα κερδίσεις ένα ποσό που θα σταλεί στο bitcoin address σου για τον κόπο σου.

Αυτή η ανταμοιβή ονομάζεται block reward. Ξεκίνησε να είναι 50 bitcoins για κάθε block και κάθε 210.000 blocks (δηλαδή κάθε 4 χρόνια) συμβαίνει κάτι που λέγεται halving και μειώνει το reward στο μισό. Στο έτος 2020 που έχουμε τώρα το κάθε block παράγει 6.25 bitcoins.


Γιατί το αρχείο λέγεται “blockchain”;

Όπως είδαμε, οι συναλλαγές δεν μπαίνουν στο blockchain ατομικά. Μαζεύονται πρώτα στο memory pool και μετά οι miners προσπαθούν να τις «λύσουν» για να τις βάλουν στο blockchain, και ένας θα το καταφέρει μοιράζοντάς το σε όλο το κόσμο. Κάθε ένα από αυτά τα blocks χτίζεται πάνω από ένα που υπήρχε από πριν, δηλαδή μιλάμε για μία αλυσίδα από blocks. Εξού και και η λέξη blockchain.

Επίσης, κάθε υπολογιστής πάντα θα θεωρεί την μεγαλύτερη αλυσίδα των blocks που λαμβάνει σαν “αυθεντική” του blockchain. Αυτό σημαίνει πως οι miners θα προσπαθούν να χτίσουν στη μεγαλύτερη αλυσίδα, τα blocks τους. Κάθε block που δεν θα ανήκει σε αυτή θα θεωρηθεί ως άκυρο.

Επομένως, αν κάποιος ήθελε να ξαναγράψει το ιστορικό όλων των συναλλαγών που έχουν γίνει (για δικό του όφελος) θα πρέπει να φτιάξει μια μεγαλύτερη αλυσίδα από αυτή που υπάρχει ήδη (δηλαδή μια αλυσίδα με μεγαλύτερη δυσκολία αθροίζοντας όλα τα blocks) . Για να έχει περισσότερες πιθανότητες να καταφέρει κάτι τέτοιο, λέμε πως θα χρειαστεί το 51% της επεξεργαστικής ισχύς του δικτύου. (Αυτό είναι γνωστό ως 51% attack)
Ακόμα κι αν δεν χρειάζεται να δώσω τόσο βάση σε αυτό, η αλήθεια είναι πως για να αλλάξει κάποιος κάποια συναλλαγή στο blockchain πρέπει να πάει στο block που έγινε mined και να τα ξαναφτιάξει όλα τα επόμενα (+ το καινούργιο block). Μόνο έτσι θα έχει καταφέρει το σκοπό του. Αυτό βέβαια δεν σημαίνει πως γίνεται με κανόνα το 51% της «δύναμης» του δικτύου. Μπορεί να γίνει και με το 30%, απλά λέμε πως με μεγαλύτερη ισχύ από τη μισή του δικτύου, έχει την τύχη με το μέρος του. Και φυσικά μιλάμε για αντικατάσταση 1-2 block πιο πριν, όχι για συναλλαγές 1000 blocks πριν. Εκεί και με το 95% δεν γίνεται.

Με αποτέλεσμα, όσο περισσότεροι miners συμμετέχουν, τόσο πιο δύσκολο θα είναι να φτιάξεις ένα μεγαλύτερο blockchain για να τους ξεγελάσεις.


Πώς δουλεύουν οι συναλλαγές;

Φαντάσου το blockchain σαν ένα μέρος με ασφαλή “κιβώτια”, που τα αποκαλούμε outputs. Αυτά τα outputs κρατούν μέσα τους ένα σημαντικό αριθμό από bitcoins.

Όταν κάνεις μια bitcoin συναλλαγή, διαλέγεις κάποια outputs και τα ξεκλειδώνεις, μετά δημιουργούνται νέα outputs τα οποία τα κλειδώνεις δηλώνοντας πως ανήκουν σε αυτόν που θέλεις να τα στείλεις.

Οπότε όταν στέλνεις σε κάποιον bitcoins ουσιαστικά του δημιουργείς ένα output με ποσοστό από bitcoins που μόνο αυτός μπορεί να ξεκλειδώσει. Για παράδειγμα, αν ήθελα να σου στείλω κάποια bitcoins, θα ξεκλείδωνα ένα output που μου ανήκει, και θα δημιουργούσα ένα άλλο που θα μπορούσες να ξεκλειδώσεις. Ναι αλλά αν δεν ήθελα να σου στείλω όλο μου το output; Πολύ απλά θα δημιουργούσα ένα δεύτερο output που θα μπορούσα μόνο εγώ να ξεκλειδώσω.

Οπότε λοιπόν οι bitcoin συναλλαγές, συνδέονται μεταξύ τους. Από το block reward που ξεκινούν να γεννιούνται τα bitcoins μέχρι το τελευταίο transaction. Έτσι παρατηρούμε πως δημιουργείται μια δομή γραφήματος.



Πώς μπορείς να έχεις bitcoins;

Για να μπορείς να αποδέχεσαι bitcoins χρειάζεσαι αυτά που λέμε keys. Φαντάσου τα keys σαν δύο στοιχεία. Τον αριθμό ενός λογαριασμού που μπορείς να μοιράσεις σε οποιονδήποτε, και τον κωδικό του, που δεν πρέπει να μάθει κανένας. Έτσι λοιπόν υπάρχει το public key και το private key . Για παράδειγμα, αν ήθελα να σου στείλω bitcoins θα μου έδινες το public key σου. Όταν δημιουργώ μια συναλλαγή θα βάλω «ως κλειδαριά» αυτό το δημόσιο κλειδί. Μετά για να αποδείξεις πως σου ανήκει αυτό το public key θα πρέπει να ξεκλειδώσεις τη συναλλαγή.
Πως; Με το private key σου.

Πώς μπορείς να φτιάξεις ένα private και public key; Μπορείς μόνος σου με τη βοήθεια της κρυπτογραφίας.
Εν συντομία, το private key σου είναι ένας τυχαίος αριθμός, και το public key σου δημιουργείται από αυτό το private key. Το ωραίο που μας προσφέρει η κρυπτογραφία σε αυτή τη περίπτωση είναι πως δεν μπορείς να μετατρέψεις τη μορφή του public σε private.

Τώρα, για το πόσο τυχαίος είναι ο αριθμός του private key...
Σκέψου να διαλέγεις ένα νούμερο μεταξύ του 1 και του

115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,936.


Υπάρχουν περισσότερες πιθανότητες να πέσουν δέκα μετεωρίτες αυτή τη στιγμή έξω από το σπίτι σου παρά να δημιουργηθεί ένα private key που υπήρχε ήδη από πριν. Αφού ο υπολογιστής διαλέξει ένα τυχαίο νούμερο μεταξύ αυτού του τεράστιου εύρους θα το περάσει από το hash function (SHA256). Το public key είναι hash του private key. Οπότε μπορείς να αποδίξεις ότι σου ανήκει το public key μόνο αν έχεις το private key σου.

Όταν θέλεις να ξεκλειδώσεις bitcoins υπάρχει κάτι που λέγεται digital signature. Αυτή η «υπογραφή» αποδεικνύει πως σου ανήκει το public key χωρίς να χρειαστεί να αποκαλύψεις το private key σου. Και θα μου πεις, δεν μπορεί απλά κάποιος τότε να μου πάρει την υπογραφή και να μου κλέψει όλα μου τα bitcoins; Το digital signature ισχύει μόνο για μία συναλλαγή οπότε και να το αποκαλύψεις θα είναι άχρηστο.



Ας τα βάλουμε όλα μαζί τώρα.

Για να ξεκινήσεις με το bitcoin, χρειάζεσαι private key και public key. Το private key είναι ένας τυχαίος αριθμός και το public key σου υπολογίζεται από το private key. Αυτά τα keys μπορείς να τα δημιουργήσεις με πολλούς τρόπους. Οι περισσότεροι άνθρωποι χρησιμοποιούν bitcoin wallet.

Για να λάβεις bitcoins δίνεις το public key σε κάποιον. Αυτός δημιουργεί μία συναλλαγή όπου μόνο εσύ μπορείς να ξεκλειδώσεις το output.

Αυτή η συναλλαγή αμέσως θα σταλεί σε κάποιον node και θα μοιραστεί από υπολογιστή σε υπολογιστή μέχρι όλο το δίκτυο να έχει λάβει αυτή τη πληροφορία. Από κει και πέρα ο κάθε node μπορεί αν θέλει να κάνει mine τις τελευταίες συναλλαγές στο blockchain.

Για να γίνει αυτό συγκεντρώνει τις συναλλαγές από το memory pool σε ένα block, και προσπαθεί μέσω του hash function να δημιουργήσει block hash μικρότερο από τον target.

Ο πρώτος miner που θα βρει τέτοιο hash θα βάλει το block του στο blockchain και θα αρχίζει να μοιράζει την επιτυχία του σε όλο το δίκτυο.

Ο miner αυτός θα δημιουργήσει μία ειδική συναλλαγή μέσα στο block, που θα του δίνονται κάποια bitcoins στο address του. Αυτό το block reward είναι το κίνητρο του κάθε miner.



Γιατί έφτιαξες αυτό το σάιτ;

Γιατί γνωρίζω τη μαγεία του Βitcoin και θέλω να ενημερώσω κι άλλους Έλληνες για αυτήν την ιδέα νομίσματος. Πολλοί λένε πως το Βitcoin είναι μια απάτη. Είναι συνήθως αυτοί που δεν γνωρίζουν πως λειτουργεί πλήρως, ή μπορεί και καθόλου. Το Bitcoin ανοίγει ορίζοντες για μια νέα τεχνολογία και ίσως τρόπο σκέψης, το blockchain που δεν ελέγχεται από καμία κεντρική αρχή. Να σημειωθεί πως αν δεν προσέχεις τα private keys σου, θα πέσεις θύμα απάτης. Γι'αυτό άλλωστε λέμε πως το Bitcoin είναι χρήμα για έξυπνους ανθρώπους.




Το σάιτ είναι μετάφραση του learnmeabitcoin.com

Donations: 3BJQ1UhY6vdynDq1q9GypTJQMFpt2uJBZJ

(Πάνε για τον καφέ ☕)