Bài học 1

Thiết lập môi trường phát triển

Chúng tôi sẽ tập trung vào việc thiết lập môi trường phát triển để xây dựng chuỗi khối của riêng bạn bằng Python. Chúng tôi sẽ cài đặt các công cụ và thư viện cần thiết cũng như định cấu hình môi trường để bắt đầu hành trình phát triển blockchain của bạn.

1.1 Cài đặt Python và Thư viện

Để bắt đầu, chúng ta cần cài đặt Python và các thư viện cần thiết để phát triển blockchain. Thực hiện theo các bước sau:

  1. Cài đặt Python: Truy cập trang web Python chính thức (python.org) và tải xuống phiên bản Python mới nhất cho hệ điều hành của bạn. Python có sẵn cho Windows, macOS và Linux. Thực hiện theo các hướng dẫn cài đặt được cung cấp.
  • Đối với người dùng Windows, hãy đảm bảo rằng tùy chọn “Thêm Python vào PATH” được chọn trong quá trình cài đặt. Điều này cho phép bạn chạy Python từ dòng lệnh.
  1. Thiết lập môi trường ảo: Môi trường ảo giúp tách biệt các phần phụ thuộc dự án của bạn với các dự án Python khác trên hệ thống của bạn. Mở giao diện dòng lệnh của bạn và tạo một thư mục mới cho dự án blockchain của bạn. Điều hướng đến thư mục dự án bằng lệnh cd . Khi đã ở trong thư mục dự án, hãy tạo một môi trường ảo mới bằng lệnh sau:

    Python 
     python -m venv env
    

    Lệnh này tạo một môi trường ảo mới có tên “env” trong thư mục dự án.

  2. Kích hoạt môi trường ảo: Kích hoạt môi trường ảo bằng lệnh thích hợp cho hệ điều hành của bạn:

  • Đối với người dùng Windows:
    Python 
     env\Scripts\kích hoạt
    
  • Đối với người dùng macOS/Linux:
    Python 
     nguồn env/bin/kích hoạt
    
    Việc kích hoạt môi trường ảo đảm bảo rằng mọi gói Python bạn cài đặt đều dành riêng cho dự án này và sẽ không can thiệp vào quá trình cài đặt Python toàn cầu trong hệ thống của bạn.
  1. Cài đặt các thư viện cần thiết: Khi môi trường ảo được kích hoạt, hãy sử dụng lệnh sau để cài đặt các thư viện cần thiết để phát triển blockchain:
    Python 
     pip cài đặt ngày giờ hashlib
    
    Lệnh này cài đặt thư viện hashlib cho các hoạt động mã hóa và thư viện datetime để đánh dấu thời gian.

1.2 Khởi tạo dự án

Bây giờ chúng ta đã cài đặt Python và các thư viện cần thiết, hãy khởi tạo dự án blockchain của chúng ta.

  1. Tạo thư mục dự án mới: Chọn một vị trí phù hợp trên máy tính cho dự án của bạn và tạo một thư mục mới dành riêng cho dự án blockchain của bạn. Bạn có thể thực hiện việc này thông qua dòng lệnh hoặc sử dụng trình khám phá tệp.

  2. Điều hướng đến thư mục dự án: Mở giao diện dòng lệnh của bạn và điều hướng đến thư mục dự án mới tạo bằng lệnh cd . Ví dụ: nếu thư mục dự án của bạn có tên là “dự án blockchain”, bạn sẽ sử dụng lệnh sau:

    Dự án blockchain Python 
     cd
    
  3. Khởi tạo kho lưu trữ Git: Nếu bạn đã quen với Git và muốn theo dõi các thay đổi trong dự án của mình, bạn có thể khởi tạo kho lưu trữ Git mới. Sử dụng lệnh sau để khởi tạo kho lưu trữ:

    Python 
     git init
    

    Khởi tạo kho lưu trữ Git sẽ tạo một .git ẩn thư mục trong dự án của bạn, nơi theo dõi các thay đổi và cho phép bạn quản lý các phiên bản mã của mình.

  4. Thiết lập cấu trúc dự án: Tạo các tệp và thư mục cần thiết cho dự án của bạn. Hiện tại, chúng tôi sẽ tập trung vào cấu trúc cơ bản bao gồm tệp blockchain chính và mọi tệp tiện ích bổ sung. Tạo một tệp mới có tên blockchain.py trong thư mục dự án của bạn.

1.3 Tạo khối Genesis

Khối Genesis là khối đầu tiên trong blockchain. Trong bước này, chúng ta sẽ xác định cấu trúc của một khối và tạo khối gốc.

  1. Mở tệp blockchain.py trong trình chỉnh sửa mã ưa thích của bạn. Đây là nơi chúng ta sẽ viết mã blockchain của mình.

  2. Xác định cấu trúc của một khối: Một khối thường bao gồm các trường như chỉ mục, dấu thời gian, dữ liệu, hàm băm trước đó và một số nonce. Xác định lớp hoặc cấu trúc dữ liệu đại diện cho một khối trong chuỗi khối của bạn. Ví dụ: bạn có thể tạo một lớp Block với các biến thể hiện cho từng trường.

    Lớp Python 
     Khối: 
     def __init__(self, chỉ mục, dấu thời gian, dữ liệu, previous_hash, nonce): 
     self.index = chỉ mục 
     self.timestamp = dấu thời gian 
     self.data = dữ liệu 
     self.previous_hash = previous_hash 
     self.nonce = nonce
    

    Mã này định nghĩa một lớp Block với các trường bắt buộc.

  3. Triển khai chức năng tạo khối Genesis: Viết mã để tạo khối Genesis với các giá trị mặc định phù hợp cho từng trường. Khối này sẽ đóng vai trò là điểm khởi đầu cho blockchain của bạn. Ví dụ:

    Python 
     Genesis_block = Block(0, datetime.datetime.now(), "Khối Genesis", "0", 0)
    

    Mã này tạo một thể hiện của lớp Block đại diện cho khối Genesis với chỉ số 0, dấu thời gian hiện tại, “Khối Genesis” làm dữ liệu, “0” là hàm băm trước đó (vì không có khối trước đó) và nonce là 0 .

1.4 Cấu hình mạng và cổng

Trong mạng blockchain, các nút giao tiếp với nhau. Trong bước này, chúng tôi sẽ định cấu hình cài đặt mạng cho blockchain của bạn.

  1. Xác định cài đặt mạng: Quyết định tên mạng hoặc số nhận dạng cho blockchain của bạn. Bạn có thể chọn bất kỳ tên nào đại diện cho dự án blockchain của mình. Ví dụ: bạn có thể đặt network_name = "My Blockchain".

  2. Xác định số cổng: Mỗi nút trong mạng yêu cầu một số cổng duy nhất để liên lạc. Chỉ định số cổng phù hợp cho nút của bạn. Ví dụ: bạn có thể đặt port = 5000.

  3. Định cấu hình cài đặt mạng và cổng: Thêm các biến hoặc tham số cấu hình trong dự án của bạn để lưu trữ tên mạng và thông tin cổng. Bạn có thể sử dụng hằng số hoặc tệp cấu hình cho mục đích này. Ví dụ: bạn có thể tạo tệp config.py và xác định các biến ở đó:

    Python 
     network_name = "Blockchain của tôi" 
     cổng = 5000
    

    Mã này tạo một tệp config.py với các biến tên mạng và cổng được xác định.

1.5 Kiểm tra môi trường

Cuối cùng, hãy kiểm tra môi trường phát triển để đảm bảo mọi thứ được thiết lập chính xác.

  1. Chạy thử nghiệm cơ bản: Viết mã thử nghiệm đơn giản vào tệp blockchain.py của bạn để kiểm tra xem môi trường có được thiết lập đúng cách hay không. Ví dụ: bạn có thể tạo một phiên bản của lớp Block , thêm khối gốc và in chuỗi khối để xác minh rằng nó khởi tạo chính xác.
    ```
    Python
    blockchain = [genesis_block] # Giả sử đây là danh sách các khối lưu trữ trong blockchain

In chuỗi khối

cho khối trong blockchain:
print(f”Block #{block.index} - Dấu thời gian: {block.timestamp} - Dữ liệu: {block.data} ")

Mã này tạo một danh sách `blockchain` và thêm khối gốc vào đó. Sau đó nó in chi tiết của từng khối trong blockchain.

1. 
 Thực hiện kiểm tra: Chạy mã kiểm tra bằng trình thông dịch Python:

Python
python blockchain.py
```
Nếu mọi thứ được thiết lập chính xác, bạn sẽ thấy đầu ra của blockchain, bao gồm các chi tiết của khối gốc.

Đến cuối bài học này, bạn sẽ định cấu hình môi trường phát triển của mình và khởi chạy dự án Python mới để tạo chuỗi khối của riêng bạn. Bây giờ bạn đã sẵn sàng chuyển sang Bài 2, nơi chúng ta sẽ bắt đầu xây dựng cấu trúc của chuỗi khối. Hãy chuẩn bị bắt tay vào phát triển blockchain!

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.
Danh mục
Bài học 1

Thiết lập môi trường phát triển

Chúng tôi sẽ tập trung vào việc thiết lập môi trường phát triển để xây dựng chuỗi khối của riêng bạn bằng Python. Chúng tôi sẽ cài đặt các công cụ và thư viện cần thiết cũng như định cấu hình môi trường để bắt đầu hành trình phát triển blockchain của bạn.

1.1 Cài đặt Python và Thư viện

Để bắt đầu, chúng ta cần cài đặt Python và các thư viện cần thiết để phát triển blockchain. Thực hiện theo các bước sau:

  1. Cài đặt Python: Truy cập trang web Python chính thức (python.org) và tải xuống phiên bản Python mới nhất cho hệ điều hành của bạn. Python có sẵn cho Windows, macOS và Linux. Thực hiện theo các hướng dẫn cài đặt được cung cấp.
  • Đối với người dùng Windows, hãy đảm bảo rằng tùy chọn “Thêm Python vào PATH” được chọn trong quá trình cài đặt. Điều này cho phép bạn chạy Python từ dòng lệnh.
  1. Thiết lập môi trường ảo: Môi trường ảo giúp tách biệt các phần phụ thuộc dự án của bạn với các dự án Python khác trên hệ thống của bạn. Mở giao diện dòng lệnh của bạn và tạo một thư mục mới cho dự án blockchain của bạn. Điều hướng đến thư mục dự án bằng lệnh cd . Khi đã ở trong thư mục dự án, hãy tạo một môi trường ảo mới bằng lệnh sau:

    Python 
     python -m venv env
    

    Lệnh này tạo một môi trường ảo mới có tên “env” trong thư mục dự án.

  2. Kích hoạt môi trường ảo: Kích hoạt môi trường ảo bằng lệnh thích hợp cho hệ điều hành của bạn:

  • Đối với người dùng Windows:
    Python 
     env\Scripts\kích hoạt
    
  • Đối với người dùng macOS/Linux:
    Python 
     nguồn env/bin/kích hoạt
    
    Việc kích hoạt môi trường ảo đảm bảo rằng mọi gói Python bạn cài đặt đều dành riêng cho dự án này và sẽ không can thiệp vào quá trình cài đặt Python toàn cầu trong hệ thống của bạn.
  1. Cài đặt các thư viện cần thiết: Khi môi trường ảo được kích hoạt, hãy sử dụng lệnh sau để cài đặt các thư viện cần thiết để phát triển blockchain:
    Python 
     pip cài đặt ngày giờ hashlib
    
    Lệnh này cài đặt thư viện hashlib cho các hoạt động mã hóa và thư viện datetime để đánh dấu thời gian.

1.2 Khởi tạo dự án

Bây giờ chúng ta đã cài đặt Python và các thư viện cần thiết, hãy khởi tạo dự án blockchain của chúng ta.

  1. Tạo thư mục dự án mới: Chọn một vị trí phù hợp trên máy tính cho dự án của bạn và tạo một thư mục mới dành riêng cho dự án blockchain của bạn. Bạn có thể thực hiện việc này thông qua dòng lệnh hoặc sử dụng trình khám phá tệp.

  2. Điều hướng đến thư mục dự án: Mở giao diện dòng lệnh của bạn và điều hướng đến thư mục dự án mới tạo bằng lệnh cd . Ví dụ: nếu thư mục dự án của bạn có tên là “dự án blockchain”, bạn sẽ sử dụng lệnh sau:

    Dự án blockchain Python 
     cd
    
  3. Khởi tạo kho lưu trữ Git: Nếu bạn đã quen với Git và muốn theo dõi các thay đổi trong dự án của mình, bạn có thể khởi tạo kho lưu trữ Git mới. Sử dụng lệnh sau để khởi tạo kho lưu trữ:

    Python 
     git init
    

    Khởi tạo kho lưu trữ Git sẽ tạo một .git ẩn thư mục trong dự án của bạn, nơi theo dõi các thay đổi và cho phép bạn quản lý các phiên bản mã của mình.

  4. Thiết lập cấu trúc dự án: Tạo các tệp và thư mục cần thiết cho dự án của bạn. Hiện tại, chúng tôi sẽ tập trung vào cấu trúc cơ bản bao gồm tệp blockchain chính và mọi tệp tiện ích bổ sung. Tạo một tệp mới có tên blockchain.py trong thư mục dự án của bạn.

1.3 Tạo khối Genesis

Khối Genesis là khối đầu tiên trong blockchain. Trong bước này, chúng ta sẽ xác định cấu trúc của một khối và tạo khối gốc.

  1. Mở tệp blockchain.py trong trình chỉnh sửa mã ưa thích của bạn. Đây là nơi chúng ta sẽ viết mã blockchain của mình.

  2. Xác định cấu trúc của một khối: Một khối thường bao gồm các trường như chỉ mục, dấu thời gian, dữ liệu, hàm băm trước đó và một số nonce. Xác định lớp hoặc cấu trúc dữ liệu đại diện cho một khối trong chuỗi khối của bạn. Ví dụ: bạn có thể tạo một lớp Block với các biến thể hiện cho từng trường.

    Lớp Python 
     Khối: 
     def __init__(self, chỉ mục, dấu thời gian, dữ liệu, previous_hash, nonce): 
     self.index = chỉ mục 
     self.timestamp = dấu thời gian 
     self.data = dữ liệu 
     self.previous_hash = previous_hash 
     self.nonce = nonce
    

    Mã này định nghĩa một lớp Block với các trường bắt buộc.

  3. Triển khai chức năng tạo khối Genesis: Viết mã để tạo khối Genesis với các giá trị mặc định phù hợp cho từng trường. Khối này sẽ đóng vai trò là điểm khởi đầu cho blockchain của bạn. Ví dụ:

    Python 
     Genesis_block = Block(0, datetime.datetime.now(), "Khối Genesis", "0", 0)
    

    Mã này tạo một thể hiện của lớp Block đại diện cho khối Genesis với chỉ số 0, dấu thời gian hiện tại, “Khối Genesis” làm dữ liệu, “0” là hàm băm trước đó (vì không có khối trước đó) và nonce là 0 .

1.4 Cấu hình mạng và cổng

Trong mạng blockchain, các nút giao tiếp với nhau. Trong bước này, chúng tôi sẽ định cấu hình cài đặt mạng cho blockchain của bạn.

  1. Xác định cài đặt mạng: Quyết định tên mạng hoặc số nhận dạng cho blockchain của bạn. Bạn có thể chọn bất kỳ tên nào đại diện cho dự án blockchain của mình. Ví dụ: bạn có thể đặt network_name = "My Blockchain".

  2. Xác định số cổng: Mỗi nút trong mạng yêu cầu một số cổng duy nhất để liên lạc. Chỉ định số cổng phù hợp cho nút của bạn. Ví dụ: bạn có thể đặt port = 5000.

  3. Định cấu hình cài đặt mạng và cổng: Thêm các biến hoặc tham số cấu hình trong dự án của bạn để lưu trữ tên mạng và thông tin cổng. Bạn có thể sử dụng hằng số hoặc tệp cấu hình cho mục đích này. Ví dụ: bạn có thể tạo tệp config.py và xác định các biến ở đó:

    Python 
     network_name = "Blockchain của tôi" 
     cổng = 5000
    

    Mã này tạo một tệp config.py với các biến tên mạng và cổng được xác định.

1.5 Kiểm tra môi trường

Cuối cùng, hãy kiểm tra môi trường phát triển để đảm bảo mọi thứ được thiết lập chính xác.

  1. Chạy thử nghiệm cơ bản: Viết mã thử nghiệm đơn giản vào tệp blockchain.py của bạn để kiểm tra xem môi trường có được thiết lập đúng cách hay không. Ví dụ: bạn có thể tạo một phiên bản của lớp Block , thêm khối gốc và in chuỗi khối để xác minh rằng nó khởi tạo chính xác.
    ```
    Python
    blockchain = [genesis_block] # Giả sử đây là danh sách các khối lưu trữ trong blockchain

In chuỗi khối

cho khối trong blockchain:
print(f”Block #{block.index} - Dấu thời gian: {block.timestamp} - Dữ liệu: {block.data} ")

Mã này tạo một danh sách `blockchain` và thêm khối gốc vào đó. Sau đó nó in chi tiết của từng khối trong blockchain.

1. 
 Thực hiện kiểm tra: Chạy mã kiểm tra bằng trình thông dịch Python:

Python
python blockchain.py
```
Nếu mọi thứ được thiết lập chính xác, bạn sẽ thấy đầu ra của blockchain, bao gồm các chi tiết của khối gốc.

Đến cuối bài học này, bạn sẽ định cấu hình môi trường phát triển của mình và khởi chạy dự án Python mới để tạo chuỗi khối của riêng bạn. Bây giờ bạn đã sẵn sàng chuyển sang Bài 2, nơi chúng ta sẽ bắt đầu xây dựng cấu trúc của chuỗi khối. Hãy chuẩn bị bắt tay vào phát triển blockchain!

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.