Công nghệ Blockchain là gì? Cùng tìm hiểu kỹ về Blockchain

0
124

Chắc hẳn trong năm vừa rồi bạn đã nghe rất nhiều đến Bitcoin đúng không? Và hẳn bạn cũng nghe nói là Bitcoin được xây dựng trên nền tảng blockchain. Vậy bạn có bao giờ thắc mắc liên quan đến công nghệ Blockchain là gì không? Bài viết này mình sẽ giải thích thật dễ hiểu về blockchain, bản chất của công nghệ Blockchain là gì? Vấn đề mà nó giải quyết và ứng dụng nào là tiềm năng.

Có rất nhiều góc nhìn để giải thích về lập trình Blockchain, ở bài viết này, mình sẽ đứng trên quan điểm kỹ thuật lập trình để giải thích.

Chúng ta bắt đầu nhé!

Lập trình Blockchain là gì?Cùng tìm hiểu kỹ về Blockchain

#1. Thành phần cơ bản của blockchain là các block

Nếu hiểu theo đúng nghĩa đen thì

Blockchain = Block + Chain(chuỗi) = Danh sách các block

Chúng ta quay trở lại ứng dụng điển hình nhất của Blockchange đó là tiền ảo Bitcoin. Để hiểu công nghệ Blockchain là gì thì các bạn nhớ là blockchain có rất nhiều ứng dụng thực tiễn, và bitcoin chỉ là một trong số đó thôi.

Khi chúng ta chuyển tiền bitcoin từ tài khoản của mình  sang tài khoản của bạn, thì phải có một nơi nào đó ghi lại thông tin giao dịch đó.

Và đó là một block

Mỗi block, chúng ta sẽ ghi những thông tin cần thiết như:

  • Thông tin người chuyền tiền: Ai chuyển tiền cho ai?
  • Số tiền được chuyển khoản
  • Một số thông tin khác như: chữ kí điện tử…

Ví dụ một đoạn code định nghĩa cho block

public class Block {
  public String data;// Thông tin mà block lưu trữ
  public String hash; // Dùng để định danh một block, giống như ID
  ...
}

Vì vậy, chúng ta có thể hiểu đơn giản block là nơi lưu trữ thông tin giống như tấm séc ở ngân hàng vậy

Như đoạn code trên, bạn có thể thấy rằng mỗi block sẽ có 2 thuộc tính cơ bản: một unique hash(H) dùng để định danh cho block. Thuộc tính  thứ 2 là thông tin (I).

Thuộc tính hash(H) là một khái niệm rất quan trọng, cần lưu ý trong suốt quá trình tìm hiểu về blockchain.

Vì có nhiều giao dịch nên sẽ tương ứng có nhiều blocks. Và những blocks đó kết nối với tạo thành khái niệm blockchain

Công nghệ Blockchain là gì ? Tại sao các blocks phải kết nối với nhau?

Các blocks kết nối với nhau để tạo cơ chế giúp bảo mật thông tin

Nguyên lý bảo mật khi kết nối: giá trị thuộc tính hash của block hiện tại sẽ phụ thuộc vào  block trước nó.

Để các bạn dễ hình dùng hơn, mình lấy một ví dụ minh họa như sau:

Giá sử chúng ta có 3 blocks với thông tin như sau

  • Block 1 có thông tin là I1 với hash có giá trị là H1
  • Block 2 có thông tin là I2 với hash có giá trị là H2
  • Block 2 có thông tin là I3 với hash có giá trị là H3

H2 được tạo ra nhờ sợ kết hợp của cả H1 và I2. Tương tự, H3 được tạo từ sự kết hợp của H2 và I3.v.v..

Lập trình Blockchain là gì?Cùng tìm hiểu kỹ về Blockchain

Nếu viết code thì đại khái sẽ như thế này:

H2 = someCryptoFunction(H1, I2)
H3 = someCryptoFunction(H2, I3)

Có bạn sẽ thắc mắc là: Thế H1 được tạo ra từ đâu?

Đơn giản thôi, người ta sẽ khởi tạo một giá trị mặc định gọi là H0

Kiểu như sau:

H1 = someCryptoFunction(H0, I1), trong đó H0 là giá trị mặc định

Lập trình Blockchain là gì?Cùng tìm hiểu kỹ về Blockchain
Hiện tại, thì blockchain được coi là stable(ổn định)

Stable Blockchain và Unstable Blockchain

Bây giờ, giả sử ai đó thay đổi thông tin của block 2 từ I2 thành I2′, và hash từ H2 thành H2′. Các block khác vẫn như cũ

Đến lúc này thì blockchain sẽ trở thành unstable

Lập trình Blockchain là gì?Cùng tìm hiểu kỹ về Blockchain

Tại sao nhỉ?

Theo như nguyên lý kết nối mình giải thích ở trên:

  • H3 = someCryptoFunction(H2′, I3) bây giờ không còn đúng nữa.
  • Chúng ta cần phải tạo một H3′ mới: H3′ = someCryptoFunction(H2′, I3)
  • Tương tự cho H4′, H5′, H6′

Sau khi đã sửa lại xong thì blockchain giờ mới có trạng thái stable

Lập trình Blockchain là gì?Cùng tìm hiểu kỹ về Blockchain

Như vậy, cứ có bất kì một sự thay đổi nào ở một block bất kì thì cả blockchain phải kiểm tra lại. Nó thật sự rất khó để hacker có thể thay đổi dữ liệu.

Nếu hacker cố tình hack thì blockchain sẽ trở thành unstable và người ta dễ dàng điều tra ra được. Đây cũng là lý do mà blockchain rất khó hack, và người ta sử dụng blockchain để xây dựng các loại tiền ảo như Bitcoin

Cách lưu trữ danh sách các blocks

List<Block> blockList = new ArrayList();

Về phương diện lập trình, đơn giản chúng ta lưu trữ các blocks dưới dạng một ArrayList như trên. Chúng ta dễ dàng tìm block trước đó bằng hàm blocklist.get(position — 1).

Nói chung, có rất nhiều cách để lưu trữ các blocks, ở trên thì là một cách trong số chúng

Tóm lại: Security là lý do chính để các blocks cần phải kết nối với nhau.

#2. Vậy công nghệ Blockchain là gì?

Blockchain được hiểu như là một cuốn sổ cái(ledger), dùng để lưu trữ dữ liệu như các thông tin giao dịch chuyển tiền. Và đặc biệt là blockchain được chia sẻ công khai trên tất cả các node của mạng

Có vẻ với định nghĩa này vẫn rất khó hiểu để hình dung và trả lời câu hỏi công nghệ Blockchain là gì phải không?

Đừng lo, mình sẽ cùng các bạn tìm hiểu rõ ngọn ngành từng khái niệm một

Sổ cái(Ledger)

Là nơi lưu trữ tất cả danh sách các blocks

Lưu trữ dữ liệu lập trình Blockchain

Như mình giải thích ở phần trên, mỗi block sẽ có thông tin. Thông tin có thể là bất cứ thứ gì, thông tin về giao dịch chuyển khoản là một ví dụ. Tiếp tục đi tìm câu trả lời cho công nghệ Blockchain là gì nhé.

Phân tán và phân phối sổ cái(ledger)

Thông thường, các hệ thống tập trung thì máy tính server sẽ là nơi lưu trữ toàn bộ thông tin của hệ thống. Nhưng trong lập trình Blockchain thì hoàn toàn khác, sẽ không có một server cụ thể nào cả.

Tất cả các máy tính được kết nối ngang hàng với nhau(peer-to-peer), chứ không phải theo mô hình client-server.

Và sổ cái được lưu trữ ở tất cả các máy tính được kết nối với nhau đó.

Đó là lý tại sao người ta gọi blockchain là hệ thống phân tán và phân phối.

Hay nói một cách khác, Blockchain được phân phối dưới dạng sổ cái, và sổ cái được chia sẻ tới tất cả các máy tính cùng mạng blockchain. Mỗi máy tính đều có một bản sao của sổ cái và được cập nhật mỗi khi có bất kì block nào bị thay đổi

Chia sẻ giữa tất cả các nodes của network

Bản chất của network là mạng lưới các máy tính được kết nối với nhau. Mỗi máy được gọi là một node. Và sổ cái sẽ được lưu trữ trên tất cả các máy tính.

#3. Cơ chế hoạt động của blockchain như thế nào?

Để hiểu cơ chế hoạt động của Blockchain và trả lời câu hỏi công nghệ Blockchain là gì, mình sẽ tiếp tục lấy ví dụ của việc chuyển tiền giữa các tài khoản:

  • Mình muốn chuyển một khoản tiền cho khách hàng của mình
  • Mình sẽ cần phải tạo một transaction.
  • Mình cần phải submit transaction lên mạng blockchain
  • Một máy tính trong mạng blockchain sẽ xác thực transaction đó
  • Sau đó một block được tạo để lưu trữ thông tin transaction đó The new block is created in the blockchain for the Amit’s transaction.
  • Sau đó toàn bộ blockchain sẽ được cập nhật và thông báo cho toàn bộ máy tính trong hệ thống lập trình Blockchain
  • Hoạt động chuyển khoàn kết thúc

Qua ví dụ trên, bạn đã hiểu cách thức hoạt động của blockchain chưa? Cũng đơn giản và dễ hiểu phải không!

#4. Cơ chế bảo mật của công nghệ Blockchain như thế nào?

Lập trình Blockchain sử dụng cryptography để tạo chữ ký số. Ở đây có hai khái niệm về bảo mật: private key và public key khi tạo chữ ký số.

Mỗi máy tính trong mạng blockchain đều có cả private key và public key

Private key: Là key mà chỉ có owner( chủ sở hữu) mới có thể truy cập được

Public key: Là key mà ai trong mạng blockchain cũng có quyền truy cập

Lại tiếp tục với ví dụ về giao dịch chuyển khoản giữa các tài khoản nhé

Khi mình tạo một giao dịch mới, mình sẽ mã hóa thông với một private key( chỉ có mình mới biết, không ai khác có thể biết) để tạo chữ ký số.

Lập trình Blockchain là gì?Cùng tìm hiểu kỹ về Blockchain

Sau đó, mình sẽ submit thông tin transaction đó( gồm thông tin giao dịch, public key và chữ ký số vừa được tạo ở trên) lên mạng blockchain để chờ phê duyệt

Lập trình Blockchain là gì?Cùng tìm hiểu kỹ về Blockchain

Như hình minh họa ở trên, mạng blockchain sẽ giải mã chữ ký số với public key được cung cấp trong transaction và lấy thông tin từ chữ ký số.

Nếu như thông tin giải mã khớp với thông tin ban đầu thì mạng blockchain sẽ approval

Trong trường hợp mà thông tin không khớp thì nguyên nhân có thể là:

  • Thông tin ban đầu có thể bị chỉnh sửa ở đâu đó.
  • Hoặc chữ ký số được tạo bởi private key không tương thích với public key được cung cấp.

Đây là cách mà mạng blockchain có thể bắt được lỗi của bất kì sửa đổi. Do đó, blockchain rất an toàn.

Tổng kết

Qua bài viết này, bạn đã có những khái niệm cơ bản để hiểu công nghệ Blockchain là gì, cơ chế hoạt động như thế nào và tại sao nó lại an toàn như vậy.

Sắp tới mình sẽ có những bài viết chuyên về blockchain, rất mong các bạn ủng hộ

Bình luận. Đặt câu hỏi cũng là một cách học

avatar
  Theo dõi bình luận  
Thông báo