Πώς να φτιάξετε ένα Blockchain στο Python;

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

Υπάρχουν τόνοι άρθρων γύρω από το blockchain, αλλά δεν μιλούν όλοι για την κατασκευή ενός blockchain από το μηδέν. Ως προγραμματιστής, οι θεωρίες είναι σημαντικές, αλλά πρέπει επίσης να δημιουργήσετε ένα blockchain για να κατανοήσετε πλήρως την ιδέα πίσω από αυτό.

Η βασική ιδέα πίσω από τα blockchain είναι η αποκεντρωμένη φύση της. Θα γοητευτείτε από το πώς λειτουργεί όλα μέσα. Το Blockchain μπορεί να ακούγεται απλό, αλλά στο εσωτερικό υπάρχουν πολλά πρωτόκολλα και αλγόριθμοι που το κάνουν να συμβεί. Θα χρησιμοποιήσουμε το Python για να δημιουργήσουμε ένα blockchain από το μηδέν.

Μπορείτε επίσης να αποθηκεύσετε το άρθρο και να το προσθέσετε ως σελιδοδείκτη ως “Πώς να φτιάξετε το blockchain μας”. Πίστεψέ με; το άρθρο θα σας βοηθήσει μακροπρόθεσμα.

Δεν ακούσατε ποτέ για το blockchain; Στη συνέχεια, ρίξτε μια ματιά στο δωρεάν μάθημα του 101Blockchain. Αν ψάχνετε να προωθήσετε την καριέρα σας, τότε ρίξτε μια ματιά στο Certified Enterprise Blockchain Course όπου μαθαίνετε πώς λειτουργεί το business blockchain. Ας αρχίσουμε.

Είστε αρχάριος στο Blockchain; Εγγραφείτε στο Blockchain Free Course και ξεκινήστε τώρα το Blockchain ταξίδι σας.

Πώς να δημιουργήσετε ένα Blockchain

Ο καλύτερος τρόπος για να μάθετε τίποτα είναι να μάθετε κάνοντας. Για να βεβαιωθείτε ότι βρίσκεστε στην ίδια σελίδα με εμένα, ας δούμε πρώτα τις απαιτήσεις. Θα περιγράψουμε επίσης σύντομα το blockchain έτσι ώστε και οι δύο να είμαστε στην ίδια σελίδα.

Πώς να φτιάξετε ένα Blockchain στο Python

Απαίτηση

Η βασική απαίτηση για να ακολουθήσετε τον οδηγό είναι να γνωρίζετε πώς να κωδικοποιήσετε. Εάν δεν έχετε κωδικοποιήσει ποτέ στη ζωή σας, τότε αυτός ο οδηγός δεν είναι για εσάς. Προτείνω να ρίξετε μια ματιά στα διάφορα μαθήματα αρχάριου επιπέδου που είναι διαθέσιμα στο διαδίκτυο. Προτείνω το EdX, το Udacity και το Coursera για την καλύτερη εμπειρία μάθησης.

Είστε ήδη κωδικοποιητής; Τότε, πρέπει να γνωρίζετε για τη βασική Python. Επίσης, θα σας βοηθήσει να ακολουθήσετε το σεμινάριο “Πώς να δημιουργήσετε ένα Blockchain”.

Διαβάστε τώρα: Ultimate οδηγός Blockchain


Δημιουργήσαμε το σεμινάριο ώστε να μπορεί να ακολουθήσει ο καθένας. Έτσι, εάν δεν γνωρίζετε και θέλετε να μάθετε πώς να δημιουργείτε ένα blockchain από το μηδέν, μπορείτε να το κάνετε!

Εάν δεν γνωρίζετε την Python, μην ανησυχείτε γιατί είναι εύκολο να το παραλάβετε. Δείτε το Τεκμηρίωση Python για να ξεκινήσετε.

Θα χρησιμοποιήσουμε το Python 3.6+ για το σεμινάριο. Εάν αποφασίσετε να χρησιμοποιήσετε άλλες εκδόσεις του Python, τότε ίσως χρειαστεί να κάνετε περισσότερη έρευνα για να λειτουργήσει ο κώδικας. Για σκοπούς φροντιστηρίου, προτείνω να εγκαταστήσετε την έκδοση που χρησιμοποιώ.

Τέλος, θα πρέπει επίσης να γνωρίζετε για το HTTP – το πρωτόκολλο που χρησιμοποιείται για την επικοινωνία μεταξύ δύο μερών στο Διαδίκτυο.

Εγκατάσταση Python χρησιμοποιώντας pip

Πρέπει να εγκαταστήσετε το Python χρησιμοποιώντας το pip. Πρέπει επίσης να εγκαταστήσετε υπέροχα αιτήματα και βιβλιοθήκη Flask. Για να το κάνετε αυτό, απλώς εκτελέστε την παρακάτω εντολή.

$ pip install Flask == 0.12.2 αιτήματα == 2.18.4

Εάν χρησιμοποιείτε το περιβάλλον των Windows, μπορείτε να μεταβείτε απευθείας στο python.org για να κατεβάσετε την τελευταία έκδοση του Python.

Όσο για μένα, κατέβασα το Python 3.8.1 – την τελευταία έκδοση κατά τη στιγμή της σύνταξης του σεμιναρίου.

Για το IDE, προτιμώ να χρησιμοποιώ το PyCharm. Χρησιμοποιώ την έκδοση Python Community για το σεμινάριο. Είστε ελεύθεροι να χρησιμοποιήσετε οποιοδήποτε IDE της επιλογής σας. Μια άλλη εξαιρετική εναλλακτική λύση είναι το Visual Studio Code – ένα ελεύθερο, ανοιχτού κώδικα ολοκληρωμένο περιβάλλον ανάπτυξης.

Το τελευταίο εργαλείο που θα χρειαστείτε είναι ο Postman – ένας πελάτης HTTP. Εναλλακτικά, μπορείτε επίσης να χρησιμοποιήσετε το cURL.

Προτείνω επίσης να εγκαταστήσετε ένα εικονικό περιβάλλον για να δημιουργήσετε ένα εντελώς διαφορετικό περιβάλλον για την ανάπτυξή σας. Μπορείτε να ακολουθήσετε αυτός ο οδηγός για να το ρυθμίσετε σωστά.

Επανεξετάστηκε το Blockchain

Πριν πάμε και φτιάξουμε το blockchain, πρέπει να ανανεώσουμε την ιδέα μας για το blockchain. Αυτό θα μας βοηθήσει να παραμείνουμε στην ίδια σελίδα.

Το Blockchain είναι μια τεχνολογία κατανεμημένου καθολικού όπου οι συνομηλίκοι μπορούν να συμμετέχουν, να αλληλεπιδρούν και να εκτελούν συναλλαγές χωρίς την ανάγκη κεντρικής οντότητας. Κάθε ομότιμος έχει ένα αντίγραφο του καθολικού, το οποίο καθιστά αδύνατο για τους χάκερ να κάνουν απάτη στο σύστημα. Τα βασικά χαρακτηριστικά του blockchain περιλαμβάνουν διαφάνεια, αμετάβλητο και ασφάλεια. Χρησιμοποιεί προηγμένους αλγόριθμους κρυπτογράφησης για να διασφαλίσει την ασφάλεια των δεδομένων. Επίσης, για να επιτευχθεί συναίνεση, ένα δίκτυο blockchain θα χρησιμοποιεί αλγόριθμους συναίνεσης όπως Proof-of-Work, Proof-of-Stake και ούτω καθεξής.

Διαβάστε επίσης: Blockchain για αρχάριους: Οδηγός έναρξης

Ξεκινώντας με τη δημιουργία ενός Blockchain

Με όλες τις απαραίτητες προϋποθέσεις, είμαστε πλέον έτοιμοι να ξεκινήσουμε με το σεμινάριό μας, «Πώς να φτιάξετε ένα Blockchain».

Για να ξεκινήσετε, πρέπει να δημιουργήσετε ένα αρχείο blockchain.py.

1. Δημιουργία Blockchain

Το πρώτο βήμα είναι να δημιουργήσετε μια λειτουργική λύση blockchain. Αρχικά, πρέπει να δημιουργήσουμε μια κατηγορία Blockchain. Εκεί θα δημιουργήσουμε έναν κατασκευαστή που θα ξεκινήσει την αλυσίδα και τη λίστα συναλλαγών. Η λίστα αλυσίδων θα αποθηκεύσει το blockchain μας, ενώ οι συναλλαγές θα αποθηκευτούν στον πίνακα current_transacations.

def __init __ (self): self.chain = [] self.current_transactions = []

Στη συνέχεια, πρέπει να δημιουργήσουμε μια συνάρτηση new_block που θα χρησιμοποιηθεί για τη δημιουργία νέων μπλοκ και στη συνέχεια να τα προσθέσουμε στην υπάρχουσα αλυσίδα. Ο κωδικός για τη συνάρτηση new_block έχει ως εξής:

def new_block (self): #Αυτή η λειτουργία δημιουργεί νέα μπλοκ και στη συνέχεια προσθέτει στο υπάρχον πέρασμα αλυσίδας

Η μέθοδος new_transcaction θα δημιουργήσει μια νέα συναλλαγή και στη συνέχεια θα προσθέσει τη συναλλαγή στην ήδη υπάρχουσα λίστα συναλλαγών.

def new_transaction (self): #Αυτή η λειτουργία προσθέτει μια νέα συναλλαγή σε ήδη υπάρχουσες συναλλαγές. Έχουμε επίσης μια συνάρτηση κατακερματισμού που χρησιμοποιείται για τη δημιουργία του κατακερματισμού για ένα μπλοκ. @staticmethod def hash (block): # Χρησιμοποιείται για κατακερματισμό ενός μπλοκ

Η τελευταία συνάρτηση που πρόκειται να δημιουργήσουμε το Last_block. Χρησιμοποιείται για την κλήση του τελευταίου μπλοκ της αλυσίδας.

Μπορούμε επίσης να δημιουργήσουμε τρεις ακόμη λειτουργίες εδώ.

  • register_node () → Για να καταχωρήσετε έναν νέο κόμβο και να τον προσθέσετε στο δίκτυο
  • valid_proof () → Θα διασφαλίσει ότι όταν ένα μπλοκ που υποβάλλεται στην αλυσίδα λύνει το πρόβλημα
  • valid_chain () → Αυτό θα ελέγξει εάν τα επόμενα μπλοκ στην αλυσίδα είναι έγκυρα ή όχι.

Το σχεδιάγραμμα για το blockchain.py φαίνεται όπως παρακάτω.

κλάση Blockchain (αντικείμενο): def __init __ (self): self.chain = [] self.current_transactions = [] def new_block (self): # Αυτή η λειτουργία δημιουργεί νέα μπλοκ και στη συνέχεια προσθέτει στην υπάρχουσα αλυσίδα pass def new_transaction (self): # Αυτή η λειτουργία προσθέτει μια νέα συναλλαγή σε ήδη υπάρχουσες συναλλαγές pass @staticmethod def hash (block): # Χρησιμοποιείται για κατακερματισμό μπλοκ @property def last_block (self): # Κλήσεις και επιστροφή του τελευταίου μπλοκ της αλυσίδας

Η κατηγορία Blockchain διαχειρίζεται ολόκληρη την αλυσίδα. Οι ορισμοί που καθορίζονται στην τάξη διαχειρίζονται τις διαφορετικές ενέργειες εντός του blockchain.

Ας δούμε κάθε μία από τις παρακάτω μεθόδους.

Διαβάστε τώρα: Τι είναι το blockchain sharding: Εισαγωγή σε μια λύση κλίμακας blockchain

Δομή ενός μπλοκ

Ένα μπλοκ περιέχει ζωτικές πληροφορίες για συναλλαγές και αλυσίδες. Οποιοδήποτε μπλοκ στην αλυσίδα θα περιέχει τις ακόλουθες πληροφορίες

  • δείκτης
  • χρονική σήμανση σε ώρα Unix
  • λίστα συναλλαγών
  • απόδειξη
  • Προηγούμενο κατακερματισμό

Οι περισσότερες πληροφορίες στο μπλοκ είναι αυτονόητες. Εδώ, οι δύο κρίσιμες μεταβλητές είναι το previous_hash, το οποίο περιέχει την τιμή κατακερματισμού του προηγούμενου μπλοκ. Αυτό είναι σημαντικό καθώς διασφαλίζει ότι το blockchain είναι αμετάβλητο και κανένας κακόβουλος παράγοντας δεν μπορεί να ενημερώσει, να διαγράψει ή να προσθέσει δεδομένα στην αλυσίδα.

Διαβάστε τώρα: Γιατί το Blockchain θα αλλάξει τον κόσμο?

Προσθήκη συναλλαγής σε μπλοκ

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

def new_transaction (self): #Αυτή η λειτουργία προσθέτει μια νέα συναλλαγή σε ήδη υπάρχουσες συναλλαγές """Αυτό θα δημιουργήσει μια νέα συναλλαγή που θα σταλεί στο επόμενο μπλοκ. Θα περιέχει τρεις μεταβλητές, συμπεριλαμβανομένου του αποστολέα, του παραλήπτη και του ποσού """ self.current_transactions.append ({‘sender’: sender, ‘penerima’: penerima ‘ποσό’: ποσό,}) επιστροφή self.last_block [‘index’] + 1 Όπως μπορείτε να δείτε, προσαρτά απλώς τη λίστα current_transaction με ένα αντικείμενο που περιέχει τρεις μεταβλητές → αποστολέας, παραλήπτης, ποσό.

Μόλις ολοκληρωθεί η προσθήκη, η μέθοδος στέλνει στη συνέχεια το ευρετήριο μπλοκ στην αλυσίδα. Είναι το επόμενο μπλοκ που θα εξορύσσεται.

Δημιουργία νέων μπλοκ

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

self.new_block (previous_hash = 1, proof = 100).

Αυτή η γραμμή πρέπει να προστεθεί στην κατηγορία Blockchain.

Για τη μέθοδο new_block (), πρέπει να στείλετε δύο μεταβλητές ως παραμέτρους. Περιλαμβάνει την απόδειξη και το.

Τώρα, ας ρίξουμε μια ματιά στη μέθοδο new_block () παρακάτω.

def new_block (self, proof, previous_hash = None): # Αυτή η λειτουργία δημιουργεί νέα μπλοκ και στη συνέχεια προσθέτει στην υπάρχουσα αλυσίδα """Αυτή η μέθοδος θα περιέχει δύο παραμέτρους απόδειξη, προηγούμενο κατακερματισμό""" block = {‘index’: len (self.chain) + 1, ‘timestamp’: time (), ‘proof’: proof, previous_hash: previous_hash ή self.hash (self.chain [-1]),}

# Ορίστε την τρέχουσα λίστα συναλλαγών σε κενή.

   self.current_transactions = [] self.chain.append (block) μπλοκ επιστροφής

Ας εξηγήσουμε τον κωδικό του new_block. Δημιουργούμε μια λίστα μπλοκ που περιέχει τις τρεις σημαντικές παραμέτρους. Μόλις οριστούν, γράφουμε επίσης τον κώδικα για να επαναφέρουμε τη λίστα current_transaction και στη συνέχεια προσθέτουμε το μπλοκ στην αλυσίδα. Η μέθοδος new_block, όταν καλείται, επιστρέφει το μπλοκ.

Διαβάστε τώρα: Οδηγός για αρχάριους: Τι είναι το Ethereum Classic?

Ας ορίσουμε επίσης τη μέθοδο Last_block παρακάτω.

@ιδιοκτησία

def last_block (αυτο):

# Κλήσεις και επιστροφή του τελευταίου μπλοκ της αλυσίδας

επιστροφή self.chain [-1]

Επίσης, ο κώδικας για τη μέθοδο hash () έχει ως εξής:

def hash (block): # Χρησιμοποιείται για κατακερματισμό μπλοκ """Ο κώδικας που ακολουθεί θα δημιουργήσει ένα κατακερματισμό μπλοκ SHA-256 και θα διασφαλίσει επίσης την παραγγελία του λεξικού""" block_string = json.dumps (block, sort_keys = True) .encode () return hashlib.sha256 (block_string) .hexdigest () Εάν συνδυάσετε όλο τον κώδικα μέχρι τώρα, θα έχουμε το ακόλουθο blockchain.py. Δείτε το παρακάτω.

κλάση Blockchain (αντικείμενο): def __init __ (self): self.chain = [] self.current_transactions = [] self.new_block (previous_hash = 1, proof = 100) def new_block (self, proof, previous_hash = None): # Αυτό Η συνάρτηση δημιουργεί νέα μπλοκ και στη συνέχεια προσθέτει στην υπάρχουσα αλυσίδα """Αυτή η μέθοδος θα περιέχει δύο παραμέτρους απόδειξη, προηγούμενο κατακερματισμό""" block = {‘index’: len (self.chain) + 1, ‘timestamp’: time (), ‘proof’: proof, previous_hash: previous_hash ή self.hash (self.chain [-1]),} # Ορισμός να αδειάσει η τρέχουσα λίστα συναλλαγών. self.current_transactions = [] self.chain.append (block) return block def new_transaction (self): # Αυτή η λειτουργία προσθέτει μια νέα συναλλαγή σε ήδη υπάρχουσες συναλλαγές """Αυτό θα δημιουργήσει μια νέα συναλλαγή που θα σταλεί στο επόμενο μπλοκ. Θα περιέχει τρεις μεταβλητές, συμπεριλαμβανομένου του αποστολέα, του παραλήπτη και του ποσού """ self.current_transactions.append ({‘sender’: sender, ‘penerima’: penerima, ‘ποσό’: ποσό,}) επιστροφή self.last_block [‘index’] + 1 @staticmethod def hash (block): # Χρησιμοποιείται για κατακερματισμό ένα μπλοκ """Ο κώδικας που ακολουθεί θα δημιουργήσει ένα κατακερματισμό μπλοκ SHA-256 και θα διασφαλίσει επίσης την παραγγελία του λεξικού""" block_string = json.dumps (block, sort_keys = True) .encode () return hashlib.sha256 (block_string) .hexdigest () @property def last_block (self): # Κλήσεις και επιστροφή του τελευταίου μπλοκ της αλυσίδας επιστροφή self.chain [ -1]

Απόδειξη υλοποίησης της εργασίας

Το επόμενο βήμα μας στη δημιουργία blockchain.py είναι η εφαρμογή Proof-of-Work.

Λοιπόν, τι είναι η απόδειξη της εργασίας; Είναι μια μέθοδος συναίνεσης που χρησιμοποιείται για την προσθήκη νέων μπλοκ στην αλυσίδα. Αποτελεί μια πρόκληση για τον ανθρακωρύχο, και μόλις ο ανθρακωρύχος λύσει το πρόβλημα, τότε το μπλοκ επαληθεύεται. Ο ανθρακωρύχος, σε αντάλλαγμα, παίρνει μια ανταμοιβή με βάση την πολυπλοκότητα του προβλήματος.

Η Απόδειξη Εργασίας του Bitcoin είναι γνωστή ως Hashcash. Εξασφαλίζει ότι η συναίνεση του δικτύου bitcoin λειτουργεί όπως έχει προβλεφθεί.

Διαβάστε επίσης: Αλγόριθμοι συναίνεσης: Η ρίζα της τεχνολογίας Blockchain

Ας καθορίσουμε τη μέθοδο proof_of_work (). Η μέθοδος θα είναι μέρος της κατηγορίας Blockchain.

def proof_of_work (self, last_proof): """Αυτή η μέθοδος είναι εκεί όπου εφαρμόζεται ο αλγόριθμος συναίνεσης. Παίρνει δύο παραμέτρους, συμπεριλαμβανομένου του εαυτού και του Last_proof""" proof = 0 ενώ self.valid_proof (last_proof, proof) είναι False: proof + = 1 return proof @staticmethod def valid_proof (last_proof, proof): """Αυτή η μέθοδος επικυρώνει το μπλοκ""" εικασία = f ‘{last_proof} {proof}’. κωδικοποίηση () εικασία_αφία = hashlib.sha256 (εικασία). hexigest () επιστροφή εικασία_: [: 4] == "0000"

Η πρώτη μέθοδος proof_of_work είναι απλή. απλά ορίζει την απόδειξη στο 0 και μετά εκτελεί ένα βρόχο λίγο για να τρέξει τη μέθοδο valid_proof Εάν είναι λάθος, προσθέστε ένα στην απόδειξη.

Μπορείτε να αυξήσετε τη δυσκολία του κατακερματισμού προσθέτοντας περισσότερα μηδενικά.

Αυτό μας οδηγεί στο τέλος του Blockchain.py. Ο κωδικός μας έχει ως εξής.

κλάση Blockchain (αντικείμενο): def __init __ (self): self.chain = [] self.current_transactions = [] self.new_block (previous_hash = 1, proof = 100) def proof_of_work (self, last_proof): """Αυτή η μέθοδος είναι εκεί όπου εφαρμόζεται ο αλγόριθμος συναίνεσης. Παίρνει δύο παραμέτρους, συμπεριλαμβανομένου του εαυτού και του Last_proof""" proof = 0 ενώ self.valid_proof (last_proof, proof) είναι False: proof + = 1 return proof @staticmethod def valid_proof (last_proof, proof): """Αυτή η μέθοδος επικυρώνει το μπλοκ""" εικασία = f ‘{last_proof} {proof}’. κωδικοποίηση () εικασία_αφία = hashlib.sha256 (εικασία). hexigest () επιστροφή εικασία_: [: 4] == "0000" def new_block (self, proof, previous_hash = None): # Αυτή η λειτουργία δημιουργεί νέα μπλοκ και στη συνέχεια προσθέτει στην υπάρχουσα αλυσίδα """Αυτή η μέθοδος θα περιέχει δύο παραμέτρους απόδειξη, προηγούμενο κατακερματισμό""" block = {‘index’: len (self.chain) + 1, ‘timestamp’: time (), ‘proof’: proof, previous_hash: previous_hash ή self.hash (self.chain [-1]),} # Ορισμός να αδειάσει η τρέχουσα λίστα συναλλαγών. self.current_transactions = [] self.chain.append (block) return block def new_transaction (self): # Αυτή η λειτουργία προσθέτει μια νέα συναλλαγή σε ήδη υπάρχουσες συναλλαγές """Αυτό θα δημιουργήσει μια νέα συναλλαγή που θα σταλεί στο επόμενο μπλοκ. Θα περιέχει τρεις μεταβλητές, συμπεριλαμβανομένου του αποστολέα, του παραλήπτη και του ποσού """ self.current_transactions.append ({‘αποστολέας’: αποστολέας, ‘παραλήπτης’: παραλήπτης, ‘ποσό’: ποσό,})

επιστροφή self.last_block [‘index’] + 1

@staticmethod

def hash (μπλοκ):

# Χρησιμοποιείται για κατακερματισμό ενός μπλοκ

“” “Ο παρακάτω κώδικας θα δημιουργήσει ένα κατακερματισμό μπλοκ SHA-256 και θα διασφαλίσει επίσης την παραγγελία του λεξικού”

block_string = json.dumps (block, sort_keys = True). κωδικός ()

επιστροφή hashlib.sha256 (block_string). hexdigest ()

@ιδιοκτησία

def last_block (αυτο):

# Κλήσεις και επιστροφή του τελευταίου μπλοκ της αλυσίδας

επιστροφή self.chain [-1]

2. Ενσωμάτωση API

Τέλεια, δημιουργούμε ένα blockchain που λειτουργεί! Τώρα, για να το χρησιμοποιήσουμε αποτελεσματικά, πρέπει να δημιουργήσουμε ένα API (Διεπαφή προγραμματισμού εφαρμογών).

Για να το κάνουμε αυτό, θα χρησιμοποιήσουμε το δημοφιλές Python Framework: Flask.

Το Flask είναι ένα μικρο-πλαίσιο, που σημαίνει ότι είναι ελαφρύ και μπορείτε να προσθέσετε τις βιβλιοθήκες που χρειάζεστε. Σας επιτρέπει επίσης να δημιουργήσετε εύκολα το τελικό σημείο της λειτουργίας Python.

Για να δημιουργήσουμε API, πρέπει πρώτα να διασφαλίσουμε ότι το blockchain μας μπορεί να δέχεται αιτήματα μέσω HTTP. Για να γίνει αυτό, πρέπει να δημιουργήσουμε περισσότερες μεθόδους.

Τώρα, θα τροποποιήσουμε το blockchain.py.

# Δημιουργία κόμβου εφαρμογής app = Φιάλη (__ name__) node_identifier = str (uuid4 ()). Αντικατάσταση (‘-‘, ”) # Αρχικοποίηση blockchain blockchain = Blockchain () @ app.route (‘/ mine’, Method = ‘GET’]) ορυχείο (): επιστροφή "Εξόρυξη νέου μπλοκ" @ app.route (‘/ transaksi / νέο’, μεθόδους = [‘POST’]) def new_transaction (): return "Προσθήκη νέας συναλλαγής" @ app.router (‘/ chain’, Methods = [‘GET’]) def full_chain (): response = {‘chain’: blockchain.chain, ‘length’: len (blockchain.chain)} επιστροφή jsonify (απόκριση) , 200 αν __name__ == ‘__main__’: app.run (host ="0.0.0.0", θύρα = 5000)

Ο κώδικας είναι αυτονόητο ως επί το πλείστον. Πρώτα κάνουμε έναν κόμβο εκκίνησης. Στη συνέχεια, δημιουργούμε έναν τυχαίο κόμβο. Μόλις τελειώσουμε, αρχικοποιούμε την κατηγορία Blockchain. Μόλις ολοκληρωθεί, πρέπει να δημιουργήσουμε τρία τελικά σημεία όπως παρακάτω.

  • / το τελικό σημείο μου
  • / συναλλαγές / νέο τελικό σημείο
  • / τελικό σημείο αλυσίδας

Τέλος, εκτελούμε τον διακομιστή σε θύρα 5000.

Η εφαρμογή έχει πλέον σχεδόν δημιουργηθεί. Το μόνο που πρέπει να κάνουμε είναι να δημιουργήσουμε τη μέθοδο κλάσης συναλλαγών.

@ app.route (‘/actions / new’, metod = = ‘POST’]) def new_transaction (): values ​​= request.get_json () # Έλεγχος εάν τα απαιτούμενα δεδομένα υπάρχουν ή δεν απαιτούνται = [‘sender’, ‘ παραλήπτης ‘,’ ποσό ‘] αν όχι όλα (k σε τιμές για k σε απαιτούμενο): επιστροφή’ Λείπουν τιμές ‘, 400 # δημιουργία νέου δείκτη συναλλαγής = blockchain.new_transaction (τιμές [‘ αποστολέας ‘], τιμές [‘ παραλήπτης ‘ , τιμές [‘ποσό’]]) απόκριση = {‘message’: Το πρόγραμμα f’Transaction έχει προγραμματιστεί να προστεθεί στο Block No. {index} ‘} return jsonify (απόκριση), 201

Διαβάστε επίσης: Εδώ είναι τι πρέπει να ξέρετε για το Blockchain Proof Of Work

Τελικό σημείο εξόρυξης

Το τελευταίο τελικό σημείο που πρόκειται να δημιουργήσουμε είναι το τελικό σημείο εξόρυξης. Για να το κάνουμε αυτό, πρέπει να διασφαλίσουμε ότι κάνει τα ακόλουθα τρία πράγματα.

  • Υπολογισμός απόδειξης εργασίας
  • Σφυρηλατήστε νέο blockchain και μετά προσθέστε το στην αλυσίδα
  • Επιβραβεύστε τον ανθρακωρύχο για τη δουλειά του

@ app.route (‘/ mine’, Methods = [‘GET’]) def my (): """Εδώ κάνουμε την απόδειξη του αλγόριθμου εργασίας""" last_block = blockchain.last_block last_proof = last_block [‘proof’] proof = blockchain.proof_of_work (last_proof) # ανταμείβοντας τον ανθρακωρύχο για τη συνεισφορά του. 0 καθορίζει ότι το νέο νόμισμα έχει εξορυχθεί blockchain.new_transaction (sender ="0", παραλήπτης = node_identifier, ποσό = 1,) # δημιουργήστε τώρα το νέο μπλοκ και προσθέστε το στην αλυσίδα previous_hash = blockchain.hash (last_block) block = blockchain.new_block (proof, sebelumnya_hash) απόκριση = {‘message’: ‘The new block έχει σφυρηλατηθεί ‘,’ ευρετήριο ‘: μπλοκ [‘ ευρετήριο ‘],’ συναλλαγές ‘: μπλοκ [‘ συναλλαγές ‘],’ απόδειξη ‘: μπλοκ [‘ απόδειξη ‘],’ previous_hash ‘: block [‘ previous_hash ‘]} jsonify (απάντηση), 200

Διαβάστε τώρα: Οδηγός για αρχάριους: Τι είναι το AION; Δίκτυο Blockchain πρώτης γενιάς στον κόσμο

3. Αλληλεπίδραση Blockchain

Το τελευταίο βήμα είναι να αλληλεπιδράσετε με το blockchain. Θα χρησιμοποιήσουμε τον Postman για να αλληλεπιδράσουμε με το δίκτυο blockchain χρησιμοποιώντας το API που μόλις δημιουργήσαμε.

Εκτελέστε τον παρακάτω κώδικα στην Python Console

python blockchain.py

συμπέρασμα

Αυτό μας οδηγεί στο τέλος του τρόπου δημιουργίας blockchain. Ελπίζω ότι τα παραπάνω βήματα και οι κωδικοί θα σας βοηθήσουν να δημιουργήσετε ένα Blockchain στο Python. Έτσι, εάν είστε αρχάριος και επιθυμείτε να δημιουργήσετε μια καριέρα στο Blockchain, σας προτείνουμε να ξεκινήσετε την καριέρα σας στο Blockchain με το Δωρεάν Μάθημα Βασικών Αρχών Blockchain. Επιλέξτε μας ως συνεργάτη μελέτης σας και θα σας έχουμε μέχρι να μην πάρετε τη δουλειά των ονείρων σας.

Λοιπόν, τι πιστεύετε για το blockchain και την εφαρμογή του; Σχολιάστε παρακάτω και ενημερώστε μας.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
Adblock
detector
map