כיצד לבנות בלוקצ’יין בפייתון?

אם אתה רוצה ללמוד כיצד לבנות בלוקצ’יין, הגעת למקום הנכון. בואו נצלול עמוק כדי ללמוד כיצד תוכלו לבנות בלוקצ’יין בפייתון.

יש המון מאמרים סביב בלוקצ’יין, אך לא כולם מדברים על בניית בלוקצ’יין מאפס. כמפתח, תיאוריות חשובות, אך עליך ליצור בלוקצ’יין בכדי להבין את הרעיון העומד מאחוריו לחלוטין.

רעיון הליבה שעומד מאחורי רשתות חסימות הוא אופיו המבוזר. אתה תהיה מוקסם מהעובדה איך כל זה עובד בפנים. Blockchain אולי נשמע פשוט, אבל בפנים יש הרבה פרוטוקולים ואלגוריתמים שגורמים לזה לקרות. אנו הולכים להשתמש בפייתון כדי ליצור בלוקצ’יין מאפס.

אתה יכול גם לשמור את המאמר ולסמן אותו כ”איך בונים את הבלוקצ’יין שלנו “. תאמין לי; המאמר יעזור לך בטווח הארוך.

מעולם לא שמעת על בלוקצ’יין? ואז בדוק את הקורס החינמי של 101Blockchain. אם אתה מעוניין לקדם את הקריירה שלך, בדוק את קורס Blockchain Enterprise Certified שבו אתה לומד כיצד עובד blockchain ארגוני. בואו נתחיל.

האם אתה מתחיל בבלוקצ’יין? הירשם למסלול חינם של Blockchain והתחל את מסע Blockchain שלך עכשיו.

כיצד לבנות בלוקצ’יין

הדרך הטובה ביותר ללמוד כל דבר היא ללמוד על ידי עשייה. כדי לוודא שאתה באותו עמוד כמוני, בוא נבדוק קודם את הדרישות. נתאר בקצרה גם את הבלוקצ’יין כך ששנינו באותו דף.

דְרִישָׁה

הדרישה הבסיסית לעקוב אחר המדריך היא לדעת כיצד לקודד. אם מעולם לא קידדת בחיים שלך, אז המדריך הזה לא מתאים לך. אני ממליץ לבדוק את הקורסים השונים ברמה למתחילים הזמינים ברשת. אני ממליץ על EdX, Udacity ו- Coursera לחוויית הלמידה הטובה ביותר.

אתה כבר קודן? לאחר מכן, עליך לדעת על פייתון בסיסי. כמו כן, זה יעזור לך לעקוב אחר ההדרכה “כיצד לבנות בלוקצ’יין”.

קרא עכשיו: המדריך האולטימטיבי של Quorum Blockchain

יצרנו את ההדרכה כך שכל אחד יוכל לעקוב אחריה. לכן, אם אינכם יודעים ורוצים ללמוד כיצד לבנות בלוקצ’יין מאפס, אתם מוזמנים לעשות זאת!


 אם אינך מכיר את פייתון, אל תדאג מכיוון שקל להרים אותו. בדוק את תיעוד פיתון להתחיל.

אנו הולכים להשתמש בפייתון 3.6+ לצורך ההדרכה. אם תחליט להשתמש בגרסאות אחרות של Python, ייתכן שתצטרך לעשות מחקר נוסף כדי שהקוד יעבוד. למטרות הדרכה, אני ממליץ להתקין את הגרסה בה אני משתמש.

לבסוף, עליכם לדעת גם על HTTP – הפרוטוקול המשמש לתקשורת בין שני צדדים באינטרנט.

התקנת Python באמצעות pip

עליך להתקין את Python באמצעות pip. אתה צריך גם להתקין ספריית בקשות ובקבוק נפלאה. לשם כך, פשוט הפעל את הפקודה למטה.

$ pip להתקין בקבוק == 0.12.2 בקשות == 2.18.4

אם אתה משתמש בסביבת Windows, תוכל לעבור ישירות אל python.org כדי להוריד את הגרסה האחרונה של Python.

מבחינתי, הורדתי את ה- Python 3.8.1 – הבניין האחרון בזמן כתיבת ההדרכה.

עבור IDE, אני מעדיף להשתמש ב- PyCharm. אני משתמש במהדורת קהילת Python לצורך ההדרכה. אתה רשאי להשתמש בכל IDE שתבחר. אלטרנטיבה נהדרת נוספת היא Visual Studio Code – סביבת פיתוח משולבת עם קוד פתוח בחינם.

הכלי האחרון שתצטרך הוא Postman – לקוח HTTP. לחלופין, אתה יכול גם להשתמש ב- CURL.

אני ממליץ גם להתקין סביבה וירטואלית כדי ליצור סביבה שונה לחלוטין להתפתחות שלך. אתה יכול לעקוב מדריך זה להגדיר את זה כמו שצריך.

Blockchain Revisited

לפני שנלך לבנות את הבלוקצ’יין, עלינו לרענן את רעיון הבלוקצ’יין שלנו. זה יעזור לנו להישאר באותו דף.

Blockchain היא טכנולוגיית ספר ספרים מבוזרת שבה עמיתים יכולים להשתתף, לקיים אינטראקציה ולבצע עסקאות ללא צורך בישות מרכזית. לכל עמית יש עותק של ספר החשבונות, מה שלא מאפשר להאקרים לבצע הונאות במערכת. המאפיינים העיקריים של בלוקצ’יין כוללים שקיפות, חוסר שינוי ואבטחה. הוא משתמש באלגוריתמים מתקדמים של מטבעות קריפטו כדי להבטיח אבטחת נתונים. כמו כן, כדי להגיע לקונצנזוס, רשת בלוקצ’יין תשתמש באלגוריתמים של קונצנזוס כגון הוכחה לעבודה, הוכחת הימור וכו ‘..

קרא גם: Blockchain למתחילים: מדריך תחילת העבודה

תחילת העבודה עם בניית בלוקצ’יין

עם כל ההתקנות המוקדמות שבוצעו, אנו מוכנים להתחיל עם המדריך שלנו, “כיצד לבנות בלוקצ’יין”.

כדי להתחיל, עליך ליצור קובץ blockchain.py.

1. יצירת בלוקצ’יין

הצעד הראשון הוא להכין פיתרון בלוקצ’יין פונקציונלי. בהתחלה, עלינו ליצור מעמד של בלוקצ’יין. שם ניצור קונסטרוקטור שיזם את רשימת השרשרת והעסקאות. רשימת הרשתות תאחסן את הבלוקצ’יין שלנו, ואילו העסקאות יאוחסנו במערך הנוכחי_תנועה.

def __init __ (עצמי): self.chain = [] self.current_transactions = []

בשלב הבא עלינו ליצור פונקציה new_block שתשמש ליצירת בלוקים חדשים ואז להוסיף אותם לשרשרת הקיימת. הקוד עבור פונקציית new_block הוא להלן:

def new_block (עצמי): # פונקציה זו יוצרת חסימות חדשות ואז מוסיפה למעבר השרשרת הקיים

שיטת new_transcaction תיצור עסקה חדשה ואז תוסיף את העסקה לרשימת העסקאות הקיימת כבר.

def new_transaction (עצמי): # פונקציה זו מוסיפה עסקה חדשה להעברת עסקאות קיימות. יש לנו גם פונקציית hash המשמשת ליצירת ה- hash לחסימה. @staticmethod def hash (block): # משמש לחישוב block

הפונקציה האחרונה שאנחנו הולכים ליצור last_block. הוא משמש כדי לקרוא לחסימה האחרונה בשרשרת.

אנחנו יכולים גם ליצור שלוש פונקציות נוספות כאן.

  • register_node () → כדי לרשום צומת חדש ולהוסיף אותו לרשת
  • valid_proof () → יבטיח שמתי חסימה שהוגשה לשרשרת תפתור את הבעיה
  • valid_chain () → זה יבדוק אם החסימות הבאות בשרשרת תקפות או לא.

התוכנית של blockchain.py נראית כמו להלן.

class Blockchain (object): def __init __ (self): self.chain = [] self.current_transactions = [] def new_block (self): # פונקציה זו יוצרת חסימות חדשות ואז מוסיפה לשרשרת הקיימת לעבור def new_transaction (עצמי): # פונקציה זו מוסיפה עסקה חדשה לעסקאות שכבר קיימות עוברות @staticmethod def hash (חסום): # משמש לחישוב חסום @ property def last_block (עצמי): # קורא ומחזיר את הבלוק האחרון של מעבר השרשרת

כיתת הבלוקצ’יין מנהלת את כל הרשת. ההגדרות המוגדרות תחת הכיתה מנהלות את הפעולות השונות בתוך הבלוקצ’יין.

בואו נעבור על כל אחת מהשיטות הבאות.

קרא עכשיו: מה זה רסיסי בלוקצ’יין: מבוא לפתרון קנה המידה של בלוקצ’יין

מבנה גוש

בלוק מכיל מידע חיוני אודות עסקאות ורשתות. כל בלוק בשרשרת יכיל את המידע הבא

  • אינדקס
  • חותמת זמן בזמן יוניקס
  • רשימת עסקאות
  • הוכחה
  • חסימת חסימה קודמת

רוב המידע בגוש מסביר את עצמו. הנה, שני המשתנים המכריעים הם הקודם_אש, המכיל את ערך ה- hash של הבלוק הקודם. זה חשוב מכיוון שהוא מוודא כי הבלוקצ’יין אינו משתנה, ואף שחקן זדוני אינו יכול לעדכן, למחוק או להוסיף נתונים לשרשרת..

קרא עכשיו: מדוע Blockchain ישנה את העולם?

הוספת עסקה לחסימה

עם מבנה הבלוק מובן, בואו ונלמד כעת כיצד להוסיף עסקה לבלוק. הקוד עבורו הוא להלן.

def new_transaction (עצמי): # פונקציה זו מוסיפה עסקה חדשה לעסקאות שקיימות כבר """פעולה זו תיצור עסקה חדשה שתישלח לחסימה הבאה. הוא יכיל שלושה משתנים כולל שולח, מקבל וכמות """ self.current_transactions.append ({‘sender’: sender, ‘recipient’: recipient ‘amount’: amount,}) להחזיר self.last_block [‘index’] + 1 כפי שאתה יכול לראות, הוא פשוט מוסיף את רשימת העסקה הנוכחית עם אובייקט המכיל שלושה משתנים → שולח, מקבל, כמות.

לאחר סיום התוספת, השיטה שולחת את אינדקס החסימה לשרשרת. זהו הבלוק הבא שעתיד להיות ממוקש.

יצירת בלוקים חדשים

לפני שנתחיל ליצור חסימות חדשות, עלינו ליצור את גוש הג’נסיס. לשם כך עלינו להשתמש בשורת קוד פשוטה להלן.

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

יש להוסיף שורה זו לשיעור הבלוקצ’יין שלך.

עבור שיטת 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 or self.hash (self.chain [-1]),}

# הגדר את רשימת העסקאות הנוכחית לריקה.

   self.current_transactions = [] self.chain.append (חסום) בלוק החזרה

בואו נסביר את הקוד של new_block. אנו יוצרים רשימת בלוקים המכילה את שלושת הפרמטרים החשובים. לאחר הגדרתם, אנו כותבים גם את הקוד כדי לאפס את רשימת העסקה הנוכחית ואז נספח את החסימה לשרשרת. שיטת new_block, כאשר היא נקראת, מחזירה את החסימה.

קרא עכשיו: מדריך למתחילים: מה זה Ethereum Classic?

בואו נגדיר גם את שיטת last_block להלן.

@תכונה

def last_block (עצמי):

# מתקשר ומחזיר את הבלוק האחרון של הרשת

החזר עצמי. שרשרת [-1]

כמו כן, הקוד לשיטת hash () הוא להלן:

 

def hash (חסום): # משמש לחישוב חסום """הקוד הבא ייצור חשיש חסימה של SHA-256 וגם יבטיח את הזמנת המילון""" block_string = json.dumps (block, sort_keys = True). encode () להחזיר hashlib.sha256 (block_string) .hexdigest () אם תשלב את כל הקוד עד עכשיו, יהיה לנו את blockchain.py הבא. בדוק זאת למטה.

 

class 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): #This פונקציה יוצרת חסימות חדשות ואז מוסיפה לשרשרת הקיימת """שיטה זו תכיל שני פרמטרים הוכחה, חשיש קודם""" block = {‘index’: len (self.chain) + 1, ‘timestamp’: time (), ‘proof’: proof, previous_hash: previous_hash or self.hash (self.chain [-1]),} # סט את רשימת העסקאות הנוכחית לריק. self.current_transactions = [] self.chain.append (חסום) חסום חזרה def new_transaction (עצמי): # פונקציה זו מוסיפה עסקה חדשה לעסקאות קיימות """פעולה זו תיצור עסקה חדשה שתישלח לחסימה הבאה. הוא יכיל שלושה משתנים כולל שולח, מקבל וכמות """ self.current_transactions.append ({‘שולח’: שולח, ‘נמען’: נמען, ‘סכום’: סכום,}) להחזיר self.last_block [‘אינדקס’] + 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): # קורא ומחזיר את הבלוק האחרון של שרשרת העצמי להחזיר שרשרת [ -1]

הוכחת יישום עבודה

הצעד הבא שלנו בבניית blockchain.py הוא יישום הוכחת העבודה.

אז מהי הוכחת עבודה? זוהי שיטת קונצנזוס המשמשת להוספת בלוקים חדשים לשרשרת. זה מהווה אתגר בפני הכורה, וברגע שהכורה פותר את הבעיה, החסימה מאומתת. הכורה, בתמורה, מקבל פרס על פי מורכבות הבעיה.

הוכחת העבודה של ביטקוין מכונה Hashcash. זה מבטיח שקונצנזוס רשת הביטקוין יעבוד כמתוכנן.

קרא גם: אלגוריתמים של קונצנזוס: שורש טכנולוגיית הבלוקצ’יין

בואו נגדיר את שיטת proof_of_work (). השיטה תהיה חלק ממעמד הבלוקצ’יין.

הגנה הוכחה_עבודה (עצמית, אחרונה): """שיטה זו היא המקום בו אתה מיושם אלגוריתם הקונצנזוס. זה לוקח שני פרמטרים כולל עצמי ו- last_proof""" הוכחה = 0 בעוד ש- self.valid_proof (last_proof, proof) הוא שגוי: proof + = 1 proof proof @ staticmethod def valid_proof (last_proof, proof): """שיטה זו מאמתת את החסימה""" ניחוש = f ‘{last_proof} {proof}’. קידוד () guess_hash = hashlib.sha256 (ניחוש) .hexigest () החזר guess_hash [: 4] == "0000"

שיטת ההוכחה_עבודה הראשונה היא פשוטה; זה פשוט הגדר הוכחה ל 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""" הוכחה = 0 בעוד ש- self.valid_proof (last_proof, proof) הוא שגוי: proof + = 1 proof proof @ staticmethod def valid_proof (last_proof, proof): """שיטה זו מאמתת את החסימה""" ניחוש = f ‘{last_proof} {proof}’. קידוד () guess_hash = hashlib.sha256 (ניחוש) .hexigest () החזר guess_hash [: 4] == "0000" def new_block (self, proof, previous_hash = None): # פונקציה זו יוצרת חסימות חדשות ואז מוסיפה לשרשרת הקיימת """שיטה זו תכיל שני פרמטרים הוכחה, חשיש קודם""" block = {‘index’: len (self.chain) + 1, ‘timestamp’: time (), ‘proof’: proof, previous_hash: previous_hash or self.hash (self.chain [-1]),} # סט את רשימת העסקאות הנוכחית לריק. self.current_transactions = [] self.chain.append (חסום) חסום חזרה def new_transaction (עצמי): # פונקציה זו מוסיפה עסקה חדשה לעסקאות קיימות """פעולה זו תיצור עסקה חדשה שתישלח לחסימה הבאה. הוא יכיל שלושה משתנים כולל שולח, מקבל וכמות """ self.current_transactions.append ({‘שולח’: שולח, ‘מקבל’: מקבל, ‘סכום’: סכום,})

 

להחזיר self.last_block [‘אינדקס’] + 1

@staticmethod

def hash (חסום):

# משמש לשיפוץ חסימה

“” “הקוד הבא ייצור חשיש חסימה של SHA-256 וגם יבטיח שהמילון יוזמן” “”

block_string = json.dumps (block, sort_keys = True) .encode ()

להחזיר hashlib.sha256 (block_string) .hexdigest ()

@תכונה

def last_block (עצמי):

# מתקשר ומחזיר את הבלוק האחרון של הרשת

החזר עצמי. שרשרת [-1]

2. שילוב API

נהדר, אנחנו יוצרים בלוקצ’יין שעובד! עכשיו, כדי להשתמש בו ביעילות, עלינו ליצור ממשק API (ממשק תכנות יישומים).

לשם כך אנו נשתמש במסגרת הפייתון הפופולרית: Flask.

בקבוק הוא מיקרו-מסגרת, כלומר קל משקל, ואתה יכול להוסיף את הספריות שאתה צריך. זה גם מאפשר לך ליצור נקודת קצה של פונקצית Python בקלות.

כדי ליצור ממשקי API, ראשית עלינו לוודא שהבלוקצ’יין שלנו יכול לקבל בקשות באמצעות HTTP. לשם כך עלינו ליצור שיטות נוספות.

כעת נשנה את blockchain.py.

# יצירת אפליקציית צומת האפליקציה = בקבוק (__ name__) node_identifier = str (uuid4 ()). החלף (‘-‘, ”) # אתחול blockchain blockchain = Blockchain () @ app.route (‘/ mine’, שיטות = [ ‘GET’]) def mine (): return "כריית בלוק חדש" @ app.route (‘/ עסקאות / חדש’, שיטות = [‘POST’]) def new_transaction (): החזר "הוספת עסקה חדשה" @ app.router (‘/ chain’, methods = [‘GET’]) def full_chain (): response = {‘chain’: blockchain.chain, ‘length’: len (blockchain.chain)} return jsonify (תגובה) , 200 אם __name__ == ‘__main__’: app.run (host ="0.0.0.0", יציאה = 5000)

הקוד מסביר את עצמו לרוב. ראשית אנו מבצעים ייזום צומת. לאחר מכן, אנו יוצרים צומת אקראית. לאחר שסיימנו, אנו מאתחלים את מעמד הבלוקצ’יין שלנו. לאחר שתסיים, עלינו ליצור שלוש נקודות קצה כמפורט להלן.

  • / נקודת קצה שלי
  • / עסקאות / נקודת קצה חדשה
  • / נקודת סיום שרשרת

לבסוף, אנו מריצים את השרת בנמל 5000.

האפליקציה כמעט נוצרה כעת. כל שעלינו לעשות הוא ליצור את שיטת מחלקת העסקאות.

@ app.route (‘/ עסקאות / חדש’, שיטות = [‘POST’]) def new_transaction (): ערכים = request.get_json () # בודק אם הנתונים הנדרשים נמצאים שם או לא נדרשים = [‘השולח’, ‘ מקבל ‘,’ סכום ‘] אם לא הכל (k בערכים עבור k בחובה): החזר’ ערכים חסרים ‘, 400 # יצירת אינדקס עסקאות חדש = blockchain.new_transaction (ערכים [‘ שולח ‘], ערכים [‘ מקבל ‘ , values ​​[‘amount’]]) response = {‘message’: f’Transaction מתוכננת להתווסף לחסום מס ‘{index}’} החזר jsonify (תגובה), 201

קרא גם: הנה מה שאתה צריך לדעת על הוכחת עבודה של Blockchain

נקודת סיום כרייה

נקודת הקצה האחרונה שאנו הולכים ליצור היא נקודת הקצה של הכרייה. לשם כך עלינו לוודא שהיא עושה את שלושת הדברים הבאים.

  • חישוב הוכחת עבודה
  • זיוף בלוקצ’יין חדש ואז הוסף אותו לרשת
  • תגמול את הכורה על עבודתו

@ app.route (‘/ mine’, שיטות = [‘GET’]) def mine (): """כאן אנו גורמים להוכחת אלגוריתם העבודה לעבוד""" last_block = blockchain.last_block last_proof = last_block [‘proof’] proof = blockchain.proof_of_work (last_proof) # מתגמל את הכורה על תרומתו. 0 מציין מטבע חדש ממוקש blockchain.new_transaction (שולח ="0", נמען = node_identifier, כמות = 1,) # צור כעת את הבלוק החדש והוסף אותו לשרשרת previous_hash = blockchain.hash (last_block) block = blockchain.new_block (proof, previous_hash) response = {‘message’: ‘הבלוק החדש עבר זיוף ‘,’ אינדקס ‘: חסום [‘ אינדקס ‘],’ עסקאות ‘: חסום [‘ עסקאות ‘],’ הוכחה ‘: חסום [‘ הוכחה ‘],’ הקודם_האש ‘: חסום [‘ הקודם_האש ‘]} החזר jsonify (תגובה), 200

קרא עכשיו: מדריך למתחילים: מה זה AION? רשת הבלוקצ’יין הדור השלישי הראשונה בעולם

3. אינטראקציה עם Blockchain

השלב האחרון הוא אינטראקציה עם הבלוקצ’יין. אנו נשתמש בדוור כדי ליצור אינטראקציה עם רשת הבלוקצ’יין באמצעות ה- API שיצרנו זה עתה.

הפעל את הקוד למטה במסוף הפייתון

פיתון blockchain.py

סיכום

זה מוביל אותנו לסוף איך לבנות בלוקצ’יין. מקווה שהשלבים והקודים שלמעלה יעזרו לך לבנות בלוקצ’יין בפייתון. לכן, אם אתה טירון ושואף לבנות קריירה בבלוקצ’יין, אנו מציעים שתתחיל את קריירת הבלוקצ’יין שלך עם קורס היסודות הבלוקצ’יין שלנו בחינם. בחר בנו כשותף ללימוד ונזכה אליך עד שלא תקבל את עבודת החלומות שלך.

אז מה אתה חושב על בלוקצ’יין והטמעתו? הגיבו למטה והודיעו לנו.

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