• Lập trình blockchain phần 1: Ngôn ngữ lập trình C++
  • Lập trình blockchain phần 2: Ngôn ngữ lập trình Javascript

Trong hai phần trước bạn đã biết vì sao C++ & JavaScript được lựa chọn để lập trình blockchain. Ngoài 2 ngôn ngữ lập trình này, Python cũng là một sự lựa chọn được nhiều người xem xét cao trong lập trình blockchain. Bài viết này sẽ giúp bạn hiểu được lý do đằng sau đó.

Ngôn ngữ lập trình Python

Guido van Rossum, một lập trình viên người Hà Lan, đã tạo ra Python vào năm 1991. Python dựa trên một triết lý đơn giản: Tối giản. Một trong những điều đáng chú ý ở Python là nó kết hợp tính đơn giản vào ngôn ngữ lập trình bằng phương pháp dùng các khoảng trắng để biểu thị các khối code thay cho dấu ngoặc nhọn hoặc từ khóa. Hãy xem điều này có nghĩa là gì nhé.

  • Cách seting Python trên Windows, macOS, Linux

Hãy đánh giá một chương trình “hello world” đơn giản.

print(‘Hello, world!’)

So sánh với chương trình “hello world” của C++. Nó đơn giản hơn rất nhiều.

Vậy còn những thứ cầu kỳ hơn một chút thì sao? Giả sử chúng ta đang cộng hai số & có kết quả.

num1 = 1.5
num2 = 6.3
sum = float(num1) + float(num2)
print(‘The sum of {0} and {1} is {2}’.format(num1, num2, sum))

Kết quả sẽ là: Tổng của 1.5 & 6.3 bằng 7.8

Vậy làm thế nào để lập trình một blockchain toàn bộ bằng phương pháp dùng Python? Dữ liệu & code sau được lấy từ bài viết của tác giả Gerald Nash trên Medium.

Tạo khối

Trước tiên, hãy tạo khối:

class Block:
def __init__(self, index, timestamp, data, previous_hash):
self.index = index
self.timestamp = timestamp
self.data = data
self.previous_hash = previous_hash
self.hash = self.hash_block()

def hash_block(self):
sha = hasher.sha256()
sha.cập nhật(str(self.index) +
str(self.timestamp) +
str(self.data) +
str(self.previous_hash))
return sha.hexdigest()

Phân tích code

Chúng ta bắt đầu bằng phương pháp nhập hash library để dùng hàm hash SHA 256 (khá giống với Javascript).

Cũng tương tự JavaScript, khối có các giá trị sau:

  • Index
  • Timestamp
  • Data
  • Previous hash
  • Hash.

Sau đó, gán các giá trị hash thông qua một hàm, tương tự trong Javascript.

Tạo khối Genesis

Lúc bấy giờ, hãy tạo khối Genesis:

Nhập datetime là ngày tháng hiện tại.

def create_genesis_block():
return Block(0, date.datetime.now(), “Genesis Block”, “0”)

Phân tích code

Nhập datetime để đặt dấu thời gian.

Nhiệm vụ giờ đây đơn giản là tạo ra các khối genesis & gán thủ công cho nó một số dữ liệu để hoạt động. Giá trị hash trước đó là “0” vì nó không trỏ đến khối nào khác.

Tạo phần còn lại của các khối

Lúc bấy giờ, hãy xác định cách các khối tiếp theo đó sẽ được tạo.

def next_block(last_block):
this_index = last_block.index + 1
this_timestamp = date.datetime.now()
this_data = "Hey! I'm block " + str(this_index)
this_hash = last_block.hash
return Block(this_index, this_timestamp, this_data, this_hash)

Phân tích code

Vậy, làm thế nào chúng ta xác định các giá trị của mọi phần dữ liệu phía bên trong mỗi khối?

  • Block index đơn giản là chỉ mục của khối cuối cùng + 1.
  • Timestamp là ngày giờ hiện tại.

Dữ liệu của khối là một thông điệp đơn giản: “Hey! I’m block <index numbervàgt;”.

Hash đang được tính toán bằng phương pháp dùng hàm đã gọi trước đó.

& cuối cùng, tất cả các giá trị này sẽ được trả lại cho khối.

Tạo blockchain

Cuối cùng, hãy tạo blockchain.

blockchain = [create_genesis_block()]
previous_block = blockchain[0]

num_of_blocks_to_add = 15

for i in range(0, num_of_blocks_to_add):
block_to_add = next_block(previous_block)
blockchain.append(block_to_add)
previous_block = block_to_add
# Tell everyone about it!
print "Block #{} has been added to the blockchain!".format(block_to_add.index)
print "Hash: {}n".format(block_to_add.hash)

Phân tích code

Đầu tiên, hãy tạo khối genesis & đặt giá trị cho nó là “previous_block”.

Sau đó, xác định có bao nhiêu khối được thêm vào. Trong ví dụ này, 15 khối sẽ được thêm vào.

Do đó, bước thêm khối sẽ được lặp lại 15 lần để thêm từng khối vào blockchain. Cuối cùng, xuất number block đã được thêm vào blockchain thông qua index number của chúng, đồng thời cũng xuất luôn ra hash.

Đây là kết quả xuất ra:

Kết quả xuất ra

Rõ ràng trong cả Python & Javascript, bạn cũng có thể thêm các tính năng cầu kỳ hơn như Proof Of Work. Nếu bạn muốn tìm hiểu cách thực hiện điều đó thì bạn nên nhìn qua bài viết của Gerald Nash. Nhưng giờ đây, ít nhất bạn cũng biết cách tạo một blockchain đơn giản trong Python.

Xem thêm:

  • Lập trình blockchain phần 4: Ngôn ngữ lập trình Java
  • Vượt qua AI & điện toán đám mây, blockchain là kỹ năng công việc được săn đón bậc nhất năm 2020

Tag: Lập trình blockchain phần 3: Ngôn ngữ lập trình Python, Lập trình blockchain phần 3: Ngôn ngữ lập trình Python, Lập trình blockchain phần 3: Ngôn ngữ lập trình Python

Nguồn: quantrimang

Có thể bạn quan tâm:

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *