Làm thế nào để xây dựng một ứng dụng lập trình Blockchain với python

Làm thế nào để xây dựng một ứng dụng lập trình Blockchain với python

Chia sẻ kiến thức 25/06/2022

Làm sao để bạn có thể xây dựng lập trình Blockchain với Python? Hãy tìm hiểu các bước thực hiện trong bài viết dưới đây ngay hôm nay:

1.  Hiểu đúng về Blockchain

Các loại Blockchain
Hiểu đúng về công nghệ Blockchain

Chúng ta có thể hiểu Blockchain với sự phân tác hai thuật ngữ đơn giản như sau:

  • Khối: Một không gian nơi chúng tôi lưu trữ các giao dịch
  • Chuỗi: Một tập hợp các bản ghi được liên kết

Điều này định nghĩa Blockchain là một chuỗi các khối được liên kết, nơi mỗi khối lưu trữ một giao dịch được thực hiện với các thông số cụ thể. Mỗi khối được xây dựng trên đầu khối khác, tạo ra một chuỗi khối không thể thay đổi. Nói cách khác, mọi khối phụ thuộc vào khối khác. Điều này biến thành một hệ thống mạnh mẽ và bất biến, trong đó bất kỳ ai có quyền phù hợp đều có thể xem xét tính toàn vẹn.

Rất nhiều hệ thống hiện đang dựa vào Blockchain, chẳng hạn như tiền điện tử, chuyển tài sản ( NFT ) và có thể trong tương lai gần, bỏ phiếu.

Python là một ngôn ngữ lập trình cơ bản sử dụng nhiều nhất để lập trình các Blockchain như Bitcoin. Vậy làm sao để chúng ta bắt đầu xây dựng một ứng dụng lập trình Blockchain với python?

>>> Đọc ngay: Tất cả những gì bạn cần biết về công nghệ Blockchain

2. Làm thế nào để xây dựng một ứng dụng lập trình Blockchain với python

 lập trình blockchain với python
Làm thế nào để xây dựng một ứng dụng lập trình Blockchain với python

2.1 Tạo lớp Block

Mở trình chỉnh sửa mã của bạn và tạo tệp main.py. Đây sẽ là tệp chúng tôi sẽ làm việc với.

Bây giờ, nhập hashlib , một mô-đun cho phép chúng tôi tạo các tin nhắn được mã hóa một chiều. Các kỹ thuật mật mã như băm làm cho Blockchain tạo ra các giao dịch an toàn.

Hàm băm là một thuật toán lấy một số dữ liệu (thường là một chuỗi được mã hóa) và trả về một số nhận dạng duy nhất, thường được đặt tên là “thông báo” hoặc “chữ ký”. Phần cuối cùng này là quan trọng; với hàm băm, một sự khác biệt nhỏ trong đầu vào sẽ tạo ra một số nhận dạng hoàn toàn khác như một đầu ra. Chúng ta sẽ thấy điều này hoạt động sau này.

Hiện tại, chỉ cần nhập mã băm mô-đun tích hợp sẵn:

# main.py file

“””

A simple Blockchain in Python

“””

import hashlib

Mô-đun này bao gồm hầu hết các thuật toán băm bạn sẽ cần. Chỉ cần lưu ý rằng chúng tôi sẽ sử dụng hàm hashlib.sha256 () .

2.2 Tạo GeekCoinBlock

Khoá học lập trình web
Tạo GeekCoinBlock

Đầu tiên, chúng ta tạo một lớp có tên  GeekCoinBlock, một lớp bao bọc cho các đối tượng sẽ có một số đặc điểm (thuộc tính) và hành vi (phương thức) nhất định.

Sau đó xác định phương thức __ init__ (cũng được đặt tên là phương thức khởi tạo), phương thức này được gọi mỗi khi một đối tượng GeekCoinBlock được tạo.

Phương thức này có ba tham số:

  • self (phiên bản của mỗi đối tượng)
  • before_block_hash (tham chiếu đến khối trước đó)
  • transaction_list (danh sách các giao dịch được thực hiện trong khối hiện tại).

Chúng tôi lưu trữ danh sách băm và giao dịch trước đó và tạo một  block_data biến thể dưới dạng một chuỗi. Điều này không xảy ra với tiền điện tử thực, trong đó chúng tôi lưu trữ loại dữ liệu đó dưới dạng một hàm băm khác, nhưng vì mục đích đơn giản, chúng tôi sẽ lưu trữ mọi khối dữ liệu dưới dạng chuỗi.

Cuối cùng, tạo block_hash , mà các khối khác sẽ sử dụng để tiếp tục chuỗi. Đây là nơi mà hashlib có ích; thay vì tạo một hàm băm tùy chỉnh, chúng ta có thể sử dụng sha256 được tạo sẵn để tạo các khối bất biến. Hàm này nhận các chuỗi (hoặc byte) được mã hóa làm tham số. Đó là lý do tại sao chúng tôi đang sử dụng phương thức block_data.encode () . Sau đó, chúng ta gọi hexdigest ()  để trả về dữ liệu được mã hóa thành định dạng thập lục phân.

Tôi biết tất cả những điều này có thể quá tải, vì vậy hãy chơi với hashlib trên một trình bao Python.

In [1]: import hashlib

In [2]: message = “Python is great”

In [3]: h1 = hashlib.sha256(message.encode())

In [4]: h1

Out[4]: <sha256 … object @ 0x7efcd55bfbf0>

In [5]: h1.hexdigest()

Out[5]: ‘a40cf9cca … 42ab97’

In [6]: h2 = hashlib.sha256(b”Python is not great”)

In [7]: h2

Out[7]: <sha256 … object @ 0x7efcd55bfc90>

In [8]: h2.hexdigest()

Out[8]: ‘fefe510a6a … 97e010c0ea34’

2.3 Mã hóa một chuỗi khối

Lập trình blockchain với python
Lập trình blockchain với python

Việc đặt tính toàn vẹn hệ thống của chúng ta dựa trên các biến được mã hóa bằng tay không phải là thông minh, vì vậy chúng ta cần một cách tiếp cận khác.

Sử dụng đoạn mã dưới đây để mã hóa:

# main.py

class Blockchain:

    def __init__(self):

        self.chain = []

        self.generate_genesis_block()

    def generate_genesis_block(self):

        self.chain.append(GeekCoinBlock(“0”, [‘Genesis Block’]))

    def create_block_from_transaction(self, transaction_list):

        previous_block_hash = self.last_block.block_hash

        self.chain.append(GeekCoinBlock(previous_block_hash, transaction_list))

    def display_chain(self):

        for i in range(len(self.chain)):

            print(f”Data {i + 1}: {self.chain[i].block_data}”)

            print(f”Hash {i + 1}: {self.chain[i].block_hash}\n”)

    @property

    def last_block(self):

        return self.chain[-1]

Đây lại là một đoạn mã lớn. Hãy chia nhỏ từng phần:

  • self.chain – Danh sách ghi lại tất cả các khối. Chúng ta có thể truy cập từng khối thông qua các chỉ mục danh sách.
  • create_genesis_block  – Nối genesis hoặc khối đầu tiên vào chuỗi. Hàm băm trước đó của khối là “0” và danh sách các giao dịch chỉ đơn giản là “Khối khởi đầu”.
  • create_block_from_transaction  – Điều này cho phép chúng tôi nối các khối vào chuỗi chỉ với một danh sách các giao dịch. Sẽ rất khó chịu khi tạo một khối theo cách thủ công mỗi khi chúng ta muốn ghi lại một giao dịch
  • display_chain – In chuỗi khối có vòng lặp for
  • last_block  – Thuộc tính cho phép chúng tôi truy cập phần tử cuối cùng của chuỗi. Chúng tôi đã sử dụng nó trên  phương thức create_block_from_transaction.

Như vậy là bạn đã có thể tạo ra một lập trình blockchain với python. Hiện nay, FUNiX có khóa học dạy ngôn ngữ lập trình Python dành cho lập trình Blockchain, bạn có thể đăng ký học tại đây:

Xem thêm các chủ đề hữu ích:

Nguyễn Cúc

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
FUNiX V2 GenAI Chatbot ×

yêu cầu gọi lại