จะสร้าง Blockchain ใน Python ได้อย่างไร?

หากคุณต้องการเรียนรู้วิธีสร้างบล็อกเชนคุณมาถูกที่แล้ว มาเจาะลึกเพื่อเรียนรู้วิธีสร้าง blockchain ใน python.

มีบทความมากมายเกี่ยวกับ blockchain แต่ไม่ใช่ทั้งหมดที่พูดถึงการสร้าง blockchain ตั้งแต่เริ่มต้น ในฐานะนักพัฒนาทฤษฎีมีความสำคัญ แต่คุณต้องสร้างบล็อกเชนเพื่อทำความเข้าใจแนวคิดเบื้องหลังอย่างถ่องแท้.

แนวคิดหลักที่อยู่เบื้องหลัง blockchains คือลักษณะการกระจายอำนาจ คุณจะหลงใหลในความเป็นจริงว่ามันทำงานอย่างไรภายใน Blockchain อาจฟังดูเรียบง่าย แต่ภายในมีโปรโตคอลและอัลกอริทึมมากมายที่ทำให้มันเกิดขึ้น เราจะใช้ Python เพื่อสร้าง blockchain ตั้งแต่เริ่มต้น.

นอกจากนี้คุณยังสามารถบันทึกบทความและบุ๊กมาร์กเป็น “วิธีสร้างบล็อกเชนของเรา” เชื่อฉัน; บทความนี้จะช่วยคุณได้ในระยะยาว.

ไม่เคยได้ยินเกี่ยวกับ blockchain? จากนั้นตรวจสอบหลักสูตรฟรีของ 101Blockchain หากคุณต้องการก้าวหน้าในอาชีพการงานของคุณโปรดดูหลักสูตร Certified Enterprise Blockchain ซึ่งคุณจะได้เรียนรู้ว่าบล็อกเชนขององค์กรทำงานอย่างไร มาเริ่มกันเลย.


คุณเป็นมือใหม่ใน Blockchain หรือไม่? ลงทะเบียนในหลักสูตร Blockchain ฟรีและเริ่มเส้นทาง Blockchain ของคุณตอนนี้.

วิธีสร้างบล็อกเชน

วิธีที่ดีที่สุดในการเรียนรู้สิ่งใด ๆ คือเรียนรู้โดยการลงมือทำ เพื่อให้แน่ใจว่าคุณอยู่ในหน้าเดียวกับฉันโปรดตรวจสอบข้อกำหนดก่อน นอกจากนี้เราจะอธิบายสั้น ๆ เกี่ยวกับ blockchain เพื่อให้เราทั้งสองอยู่ในหน้าเดียวกัน.

ความต้องการ

ข้อกำหนดพื้นฐานในการปฏิบัติตามคำแนะนำคือต้องทราบวิธีการเขียนโค้ด หากคุณไม่เคยเขียนโค้ดมาก่อนคู่มือนี้ไม่เหมาะสำหรับคุณ ฉันขอแนะนำให้ตรวจสอบหลักสูตรระดับเริ่มต้นต่างๆที่มีอยู่ทางออนไลน์ ฉันแนะนำ EdX, Udacity และ Coursera เพื่อประสบการณ์การเรียนรู้ที่ดีที่สุด.

คุณเป็นคนเขียนโค้ดอยู่แล้ว? จากนั้นคุณควรรู้เกี่ยวกับ Python พื้นฐาน นอกจากนี้ยังจะช่วยให้คุณทำตามบทแนะนำ “วิธีการสร้างบล็อกเชน”.

อ่านเลย: Quorum Blockchain Ultimate Guide

เราสร้างบทแนะนำเพื่อให้ทุกคนสามารถทำตามได้ ดังนั้นหากคุณไม่ทราบและต้องการเรียนรู้วิธีสร้างบล็อกเชนตั้งแต่เริ่มต้นคุณสามารถทำได้!

 หากคุณไม่รู้จัก Python ไม่ต้องกังวลเพราะง่ายต่อการหยิบ ตรวจสอบไฟล์ เอกสาร Python ที่จะเริ่มต้น.

เราจะใช้ Python 3.6+ สำหรับบทช่วยสอน หากคุณตัดสินใจที่จะใช้ Python เวอร์ชันอื่นคุณอาจต้องค้นคว้าเพิ่มเติมเพื่อให้โค้ดทำงานได้ เพื่อจุดประสงค์ในการสอนฉันขอแนะนำให้ติดตั้งเวอร์ชันที่ฉันใช้อยู่.

สุดท้ายนี้คุณควรทราบเกี่ยวกับ HTTP ซึ่งเป็นโปรโตคอลที่ใช้ในการสื่อสารระหว่างสองฝ่ายบนอินเทอร์เน็ต.

การติดตั้ง Python โดยใช้ pip

คุณต้องติดตั้ง Python โดยใช้ pip คุณต้องติดตั้งคำขอและคลังขวดที่ยอดเยี่ยมด้วย ทำได้โดยเรียกใช้คำสั่งด้านล่าง.

$ pip ติดตั้ง Flask == 0.12.2 คำขอ == 2.18.4

หากคุณใช้สภาพแวดล้อม Windows คุณสามารถไปที่ python.org ได้โดยตรงเพื่อดาวน์โหลด Python เวอร์ชันล่าสุด.

สำหรับฉันฉันดาวน์โหลด Python 3.8.1 ซึ่งเป็นบิลด์ล่าสุดในขณะที่เขียนบทช่วยสอน.

สำหรับ IDE ฉันชอบใช้ PyCharm มากกว่า ฉันใช้ Python Community edition สำหรับบทช่วยสอน คุณมีอิสระที่จะใช้ IDE ที่คุณเลือก อีกทางเลือกหนึ่งที่ยอดเยี่ยมคือ Visual Studio Code ซึ่งเป็นสภาพแวดล้อมการพัฒนาแบบบูรณาการแบบโอเพนซอร์สฟรี.

เครื่องมือสุดท้ายที่คุณต้องการคือบุรุษไปรษณีย์ – ไคลเอนต์ HTTP หรือคุณสามารถใช้ cURL.

ฉันขอแนะนำให้ติดตั้งสภาพแวดล้อมเสมือนเพื่อสร้างสภาพแวดล้อมที่แตกต่างไปจากเดิมอย่างสิ้นเชิงสำหรับการพัฒนาของคุณ คุณสามารถติดตาม คู่มือนี้ เพื่อตั้งค่าอย่างถูกต้อง.

Blockchain มาเยือนอีกครั้ง

ก่อนที่เราจะสร้างบล็อกเชนเราต้องรีเฟรชแนวคิดของบล็อกเชน สิ่งนี้จะช่วยให้เราอยู่ในหน้าเดียวกัน.

Blockchain เป็นเทคโนโลยีบัญชีแยกประเภทแบบกระจายที่เพื่อนร่วมงานสามารถมีส่วนร่วมโต้ตอบและดำเนินธุรกรรมได้โดยไม่จำเป็นต้องมีหน่วยงานส่วนกลาง เพียร์แต่ละคนมีสำเนาบัญชีแยกประเภทซึ่งทำให้แฮกเกอร์ไม่สามารถทำการฉ้อโกงในระบบได้ คุณสมบัติที่สำคัญของ blockchain ได้แก่ ความโปร่งใสความไม่เปลี่ยนรูปและความปลอดภัย ใช้อัลกอริทึม cryptocurrency ขั้นสูงเพื่อความปลอดภัยของข้อมูล นอกจากนี้เพื่อให้บรรลุฉันทามติเครือข่าย blockchain จะใช้อัลกอริทึมที่เป็นเอกฉันท์เช่น Proof-of-Work, Proof-of-Stake และอื่น ๆ.

อ่านเพิ่มเติม: Blockchain สำหรับผู้เริ่มต้น: คู่มือการเริ่มต้นใช้งาน

เริ่มต้นด้วยการสร้าง Blockchain

เมื่อติดตั้งสิ่งที่จำเป็นต้องมีทั้งหมดเสร็จแล้วตอนนี้เราก็พร้อมที่จะเริ่มต้นด้วยบทช่วยสอน“ วิธีสร้างบล็อกเชน”

ในการเริ่มต้นคุณต้องสร้างไฟล์ blockchain.py.

1. การสร้าง Blockchain

ขั้นตอนแรกคือการสร้างโซลูชันบล็อกเชนที่ใช้งานได้ ในตอนแรกเราต้องสร้างคลาสบล็อกเชน ที่นั่นเราจะสร้างตัวสร้างที่จะเริ่มต้นโซ่และรายการธุรกรรม รายการลูกโซ่จะจัดเก็บบล็อกเชนของเราในขณะที่ธุรกรรมจะถูกเก็บไว้ในอาร์เรย์ current_transacations.

def __init __ (ตัวเอง): self.chain = [] self.current_transactions = []

ต่อไปเราต้องสร้างฟังก์ชั่น new_block ซึ่งจะใช้ในการสร้างบล็อกใหม่จากนั้นเพิ่มเข้าไปในห่วงโซ่ที่มีอยู่ โค้ดสำหรับฟังก์ชัน new_block มีดังต่อไปนี้:

def new_block (self): # ฟังก์ชั่นนี้จะสร้างบล็อกใหม่จากนั้นเพิ่มไปยัง chain pass ที่มีอยู่

เมธอด new_transcaction จะสร้างธุรกรรมใหม่จากนั้นเพิ่มธุรกรรมลงในรายการธุรกรรมที่มีอยู่แล้ว.

def new_transaction (ตัวเอง): # ฟังก์ชันนี้จะเพิ่มธุรกรรมใหม่ให้กับธุรกรรมที่มีอยู่แล้วนอกจากนี้เรายังมีฟังก์ชันแฮชที่ใช้ในการสร้างแฮชสำหรับบล็อก @staticmethod def แฮช (บล็อก): # ใช้สำหรับการแฮชบล็อก

ฟังก์ชันสุดท้ายที่เราจะสร้าง last_block ใช้เพื่อเรียกบล็อกสุดท้ายในห่วงโซ่.

เรายังสามารถสร้างฟังก์ชันได้อีกสามฟังก์ชันที่นี่.

  • register_node () →เพื่อลงทะเบียนโหนดใหม่และเพิ่มลงในเครือข่าย
  • valid_proof () →จะช่วยให้มั่นใจได้ว่าบล็อกที่ส่งไปยัง chain ช่วยแก้ปัญหาได้
  • valid_chain () →สิ่งนี้จะตรวจสอบว่าบล็อกที่ตามมาในห่วงโซ่นั้นถูกต้องหรือไม่.

พิมพ์เขียวสำหรับ blockchain.py มีลักษณะดังต่อไปนี้.

class Blockchain (object): def __init __ (self): self.chain = [] self.current_transactions = [] def new_block (self): # ฟังก์ชั่นนี้จะสร้างบล็อกใหม่แล้วเพิ่มไปยัง chain pass def new_transaction (self) # ฟังก์ชั่นนี้เพิ่มธุรกรรมใหม่ให้กับธุรกรรมที่มีอยู่แล้วผ่าน @staticmethod def แฮช (บล็อก): # ใช้สำหรับการแฮชบล็อก @property def last_block (ตัวเอง): # โทรและส่งคืนบล็อกสุดท้ายของการส่งผ่านลูกโซ่

คลาส Blockchain จัดการห่วงโซ่ทั้งหมด คำจำกัดความที่กำหนดไว้ภายใต้คลาสจะจัดการการกระทำต่างๆภายในบล็อกเชน.

เรามาดูวิธีการแต่ละวิธีด้านล่างนี้.

อ่านเลย: blockchain sharding คืออะไร: บทนำเกี่ยวกับโซลูชันการปรับขนาด blockchain

โครงสร้างของบล็อก

บล็อกมีข้อมูลสำคัญเกี่ยวกับธุรกรรมและเครือข่าย บล็อกใด ๆ บนโซ่จะมีข้อมูลต่อไปนี้

  • ดัชนี
  • การประทับเวลาในเวลา Unix
  • รายการธุรกรรม
  • หลักฐาน
  • แฮชบล็อกก่อนหน้า

ข้อมูลส่วนใหญ่ในบล็อกเป็นข้อมูลที่อธิบายได้ด้วยตนเอง ที่นี่ตัวแปรที่สำคัญสองตัวแปรคือ previous_hash ซึ่งมีค่าแฮชของบล็อกก่อนหน้า สิ่งนี้มีความสำคัญเนื่องจากต้องทำให้แน่ใจว่า blockchain ไม่เปลี่ยนรูปและไม่มีผู้ประสงค์ร้ายคนใดสามารถอัปเดตลบหรือเพิ่มข้อมูลใด ๆ ลงในห่วงโซ่ได้.

อ่านเลย: ทำไม Blockchain ถึงเปลี่ยนโลก?

การเพิ่มธุรกรรมในบล็อก

เมื่อเข้าใจโครงสร้างของบล็อกแล้วตอนนี้เรามาเรียนรู้วิธีเพิ่มธุรกรรมในการบล็อกกัน รหัสของมันมีดังต่อไปนี้.

def new_transaction (ตัวเอง): # ฟังก์ชันนี้จะเพิ่มธุรกรรมใหม่ให้กับธุรกรรมที่มีอยู่แล้ว """สิ่งนี้จะสร้างธุรกรรมใหม่ซึ่งจะถูกส่งไปยังบล็อกถัดไป จะมีตัวแปรสามตัว ได้แก่ ผู้ส่งผู้รับและจำนวนเงิน """ self.current_transactions.append ({‘ผู้ส่ง’: ผู้ส่ง, ‘ผู้รับ’: ผู้รับ ‘จำนวน’: จำนวน,}) ส่งคืน self.last_block [‘index’] + 1 อย่างที่คุณเห็นมันเพียงต่อท้ายรายการ current_transaction ด้วย วัตถุที่มีสามตัวแปร→ผู้ส่งผู้รับจำนวน.

เมื่อทำการเพิ่มแล้ววิธีการดังกล่าวจะส่งดัชนีบล็อกไปยังห่วงโซ่ มันเป็นบล็อกถัดไปที่จะถูกขุด.

การสร้างบล็อกใหม่

ก่อนที่เราจะเริ่มสร้างบล็อกใหม่เราจำเป็นต้องสร้างบล็อกปฐมกาล ในการทำเช่นนั้นเราต้องใช้โค้ดง่ายๆดังนี้.

self.new_block (previous_hash = 1, พิสูจน์ = 100)

ควรเพิ่มบรรทัดนี้ในคลาส Blockchain ของคุณ.

สำหรับเมธอด new_block () คุณต้องส่งตัวแปรสองตัวเป็นพารามิเตอร์ ซึ่งรวมถึง proof และ previous_hash.

ตอนนี้เรามาดูวิธีการ 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 แฮช (บล็อก): # ใช้สำหรับแฮชบล็อก """รหัสต่อไปนี้จะสร้างแฮชบล็อก SHA-256 และตรวจสอบให้แน่ใจว่าได้สั่งพจนานุกรมแล้ว""" block_string = json.dumps (block, sort_keys = True) .encode () return hashlib.sha256 (block_string) .hexdigest () หากคุณรวมโค้ดทั้งหมดจนถึงตอนนี้เราจะมี blockchain.py ดังต่อไปนี้ ตรวจสอบด้านล่าง.

 

class Blockchain (object): 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]),} # Set รายการธุรกรรมปัจจุบันให้ว่างเปล่า 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 (block): # ใช้สำหรับการแฮช บล็อก """รหัสต่อไปนี้จะสร้างแฮชบล็อก SHA-256 และตรวจสอบให้แน่ใจว่าได้สั่งพจนานุกรมแล้ว""" block_string = json.dumps (block, sort_keys = True) .encode () return hashlib.sha256 (block_string) .hexdigest () @property def last_block (self): # เรียกและส่งคืนบล็อกสุดท้ายของ chain return self.chain [ -1]

หลักฐานการดำเนินงาน

ขั้นตอนต่อไปของเราในการสร้าง blockchain.py คือการนำ Proof-of-Work ไปใช้งาน.

หลักฐานการทำงานคืออะไร? เป็นวิธีฉันทามติที่ใช้ในการเพิ่มบล็อกใหม่ลงในห่วงโซ่ มันสร้างความท้าทายให้กับคนงานเหมืองและเมื่อคนงานเหมืองแก้ปัญหาได้แล้วบล็อกนั้นก็จะได้รับการตรวจสอบ ในทางกลับกันคนงานเหมืองจะได้รับรางวัลตามความซับซ้อนของปัญหา.

หลักฐานการทำงานของ Bitcoin เรียกว่า Hashcash เพื่อให้แน่ใจว่าฉันทามติของเครือข่าย bitcoin ทำงานได้ตามที่ตั้งใจไว้.

อ่านเพิ่มเติม: Consensus Algorithms: รากเหง้าของเทคโนโลยี Blockchain

มากำหนดวิธีการ proof_of_work () กัน วิธีนี้จะเป็นส่วนหนึ่งของคลาสบล็อกเชน.

def proof_of_work (self, last_proof): """วิธีนี้เป็นที่ที่คุณใช้อัลกอริทึมฉันทามติ ต้องใช้สองพารามิเตอร์ ได้แก่ self และ last_proof""" Proof = 0 ในขณะที่ self.valid_proof (last_proof, proof) เป็น False: proof + = 1 return proof @staticmethod def valid_proof (last_proof, proof): """วิธีนี้ตรวจสอบความถูกต้องของบล็อก""" Guess = f ‘{last_proof} {proof}’. encode () guess_hash = hashlib.sha256 (Guess) .hexigest () return guess_hash [: 4] == "0000"

วิธีการ proof_of_work แรกนั้นง่ายมาก เพียงแค่ตั้งค่าการพิสูจน์เป็น 0 จากนั้นเรียกใช้ while loop เพื่อรันเมธอด valid_proof หากเป็นเท็จให้เพิ่มหนึ่งในการพิสูจน์.

คุณสามารถเพิ่มความยากของแฮชได้โดยการเพิ่มศูนย์.

สิ่งนี้นำเราไปสู่จุดสิ้นสุดของ Blockchain.py ของเรา รหัสของเรามีดังต่อไปนี้.

class Blockchain (object): def __init __ (self): self.chain = [] self.current_transactions = [] self.new_block (previous_hash = 1, proof = 100) def proof_of_work (self, last_proof): """วิธีนี้เป็นที่ที่คุณใช้อัลกอริทึมฉันทามติ ต้องใช้สองพารามิเตอร์ ได้แก่ self และ last_proof""" Proof = 0 ในขณะที่ self.valid_proof (last_proof, proof) เป็น False: proof + = 1 return proof @staticmethod def valid_proof (last_proof, proof): """วิธีนี้ตรวจสอบความถูกต้องของบล็อก""" Guess = f ‘{last_proof} {proof}’. encode () guess_hash = hashlib.sha256 (Guess) .hexigest () return 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 หรือ self.hash (self.chain [-1]),} # Set รายการธุรกรรมปัจจุบันให้ว่างเปล่า self.current_transactions = [] self.chain.append (block) return block def new_transaction (self): # ฟังก์ชันนี้จะเพิ่มธุรกรรมใหม่ให้กับธุรกรรมที่มีอยู่แล้ว """สิ่งนี้จะสร้างธุรกรรมใหม่ซึ่งจะถูกส่งไปยังบล็อกถัดไป จะมีตัวแปรสามตัว ได้แก่ ผู้ส่งผู้รับและจำนวนเงิน """ self.current_transactions.append ({‘ผู้ส่ง’: ผู้ส่ง, ‘ผู้รับ’: ผู้รับ, ‘จำนวนเงิน’: จำนวน,})

 

ส่งคืน self.last_block [‘index’] + 1

@staticmethod

แฮช def (บล็อก):

# ใช้สำหรับแฮชบล็อก

“”” โค้ดต่อไปนี้จะสร้างแฮชบล็อก SHA-256 และยังตรวจสอบให้แน่ใจว่าพจนานุกรมได้รับคำสั่ง””

block_string = json.dumps (บล็อก sort_keys = True) .encode ()

ส่งคืน hashlib.sha256 (block_string) .hexdigest ()

@ คุณสมบัติ

def last_block (ตัวเอง):

# โทรและส่งคืนบล็อกสุดท้ายของห่วงโซ่

ส่งคืน self.chain [-1]

2. การรวม API

เยี่ยมมากเราสร้าง blockchain ที่ใช้งานได้! ตอนนี้เพื่อให้ใช้งานได้อย่างมีประสิทธิภาพเราต้องสร้าง API (Application Programming Interface).

ในการทำเช่นนั้นเราจะใช้ Python Framework ยอดนิยม: Flask.

Flask เป็นไมโครเฟรมเวิร์กซึ่งหมายความว่ามีน้ำหนักเบาและคุณสามารถเพิ่มไลบรารีที่คุณต้องการได้ นอกจากนี้ยังช่วยให้คุณสร้างจุดสิ้นสุดของฟังก์ชัน Python ได้อย่างง่ายดาย.

ในการสร้าง API ก่อนอื่นเราต้องตรวจสอบให้แน่ใจว่าบล็อกเชนของเราสามารถรับคำขอผ่าน HTTP ได้ ในการทำเช่นนั้นเราต้องสร้างวิธีการเพิ่มเติม.

ตอนนี้เราจะแก้ไข blockchain.py.

# การสร้างแอปโหนดแอป = Flask (__ name__) node_identifier = str (uuid4 ()). replace (‘-‘, ”) # Initializing blockchain blockchain = Blockchain () @ app.route (‘/ mine’, method = [ ‘GET’]) def mine (): return "ขุดบล็อกใหม่" @ app.route (‘/ transaction / new’, method = [‘POST’]) def new_transaction (): return "การเพิ่มธุรกรรมใหม่" @ app.router (‘/ chain’, method = [‘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 ของเรา เมื่อเสร็จแล้วเราต้องสร้างจุดสิ้นสุดสามจุดดังต่อไปนี้.

  • / จุดสิ้นสุดของฉัน
  • / transaction / endpoint ใหม่
  • / chain endpoint

สุดท้ายเรารันเซิร์ฟเวอร์บนพอร์ต 5,000.

ตอนนี้แอปเกือบถูกสร้างขึ้นแล้ว สิ่งที่เราต้องทำคือสร้างเมธอดคลาสธุรกรรม.

@ app.route (‘/ transaction / new’, method = [‘POST’]) def new_transaction (): values ​​= request.get_json () # การตรวจสอบว่ามีข้อมูลที่ต้องการหรือไม่จำเป็น = [‘sender’, ‘ ผู้รับ ‘,’ amount ‘] ถ้าไม่ทั้งหมด (ค่า k ในค่า k ในต้องระบุ): ส่งคืน’ Missing values ​​’, 400 # การสร้างดัชนีธุรกรรมใหม่ = blockchain.new_transaction (ค่า [‘ ผู้ส่ง ‘], ค่า [‘ ผู้รับ ‘ , values ​​[‘amount’]]) response = {‘message’: f’Transaction ถูกกำหนดให้เพิ่มใน Block No. {index} ‘} ส่งคืน jsonify (การตอบกลับ), 201

อ่านเพิ่มเติม: นี่คือสิ่งที่คุณต้องรู้เกี่ยวกับหลักฐานการทำงานของ Blockchain

จุดสิ้นสุดการขุด

จุดสิ้นสุดสุดท้ายที่เราจะสร้างคือจุดสิ้นสุดการขุด ในการทำเช่นนั้นเราต้องตรวจสอบให้แน่ใจว่ามันทำ 3 สิ่งต่อไปนี้.

  • การคำนวณหลักฐานการทำงาน
  • สร้างบล็อกเชนใหม่แล้วเพิ่มลงในห่วงโซ่
  • ให้รางวัลคนงานเหมืองสำหรับงานของเขา

@ app.route (‘/ mine’, method = [‘GET’]) def ของฉัน (): """ที่นี่เราทำการพิสูจน์อัลกอริทึมการทำงาน""" 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,) # ตอนนี้สร้างบล็อกใหม่และเพิ่มลงใน chain previous_hash = blockchain.hash (last_block) block = blockchain.new_block (proof, previous_hash) response = {‘message’: ‘บล็อกใหม่ ถูกปลอมแปลง ‘,’ index ‘: block [‘ index ‘],’ transaction ‘: block [‘ transaction ‘],’ proof ‘: block [‘ proof ‘],’ previous_hash ‘: block [‘ previous_hash ‘]} jsonify (การตอบกลับ), 200

อ่านเลย: คู่มือสำหรับผู้เริ่มต้น: AION คืออะไร? เครือข่าย Blockchain รุ่นที่สามแห่งแรกของโลก

3. การโต้ตอบ Blockchain

ขั้นตอนสุดท้ายคือการโต้ตอบกับ blockchain เราจะใช้ Postman เพื่อโต้ตอบกับเครือข่าย blockchain โดยใช้ API ที่เราเพิ่งสร้างขึ้น.

เรียกใช้โค้ดด้านล่างบน Python Console

หลาม blockchain.py

สรุป

สิ่งนี้นำเราไปสู่จุดสิ้นสุดของ How to build a blockchain หวังว่าขั้นตอนและรหัสข้างต้นจะช่วยคุณสร้าง Blockchain ใน Python ดังนั้นหากคุณเป็นมือใหม่และต้องการสร้างอาชีพใน Blockchain เราขอแนะนำให้คุณเริ่มอาชีพบล็อกเชนด้วยหลักสูตรพื้นฐาน Blockchain ฟรีของเรา เลือกเราเป็นพันธมิตรด้านการศึกษาของคุณและเราจะมีคุณจนกว่าคุณจะไม่ได้งานในฝัน.

คุณคิดอย่างไรเกี่ยวกับ blockchain และการนำไปใช้งาน? แสดงความคิดเห็นด้านล่างและแจ้งให้เราทราบ.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me