Blockchain là gì? Công nghệ blockchain có thực sự quan trọng?

1
Dịch vụ dạy kèm gia sư lập trình

Chắc hẳn trong năm vừa rồi bạn đã nghe rất nhiều đến tiền ảo Bitcoin đúng không? 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 đã bao giờ thắc mắc và tò mò về công nghệ Blockchain là gì không?

Trước mình cũng không biết blockchain là cái quằn què gì đâu. Cho tới một ngày, ông bạn mình rủ mình mua bitcoin để đầu tư làm giàu. Thế là mình quyết định tìm hiểu về công nghệ đình đám này.

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ì?
  • Blockchain giải quyết vấn đề gì?
  • Ứng dụng của Blockchain như thế nào?

Có rất nhiều góc nhìn để giải thích về lập trình Blockchain tùy vào tài liệu 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é!

#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 Blockchain đó 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.

Bitcoin là gì?

Trước tiên bạn nên hiểu về bitcoin. Theo wiki thì Bitcoin là một loại tiền mã hóa, được phát minh bởi Satoshi Nakamoto dưới dạng phần mềm mã nguồn mở từ năm 2009. Bitcoin có thể được trao đổi trực tiếp bằng thiết bị kết nối Internet mà không cần thông qua một tổ chức tài chính trung gian nào.

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

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ó.

Vậy công nghệ blockchain 4.0 là gì? Để 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ì?
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.

Các blocks

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.

😤 Dành cho bạn: Kinh nghiệm lập trình – 9 cảnh giới mà bạn có thể đạt tới

#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 blockchain technology 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:

Ví Blockchain là gì?

Ví Blockchain là một nền tảng ví tiền mã hóa, bạn có thể hiểu nó như một chiếc ví điện tử có thể truy cập từ web hoặc thiết bị di động, nhằm giúp mọi người dễ dàng giao dịch an toàn với bitcoin và Ether thông qua giao diện người dùng trực quan, rõ ràng.

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. Thuật toán blockchain là gì?

Thuật toán đồng thuận đầu tiên được tạo ra là Proof of Work (PoW), được thiết kế bởi Satoshi Nakamoto và được thực hiện trên Bitcoin như một cách để khắc phục lỗi Byzantine. Thuật toán và giao thức của blockchain khá phức tạp. Bạn có thể tham khảo tại đây.

#4 Cơ chế hoạt động ứng dụng 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 đó.
  • 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!

#5. Cơ chế bảo mật của công nghệ Blockchain là gì?

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ộ.

Dịch vụ phát triển ứng dụng mobile giá rẻ - chất lượng
Bài trướcTại sao Vue.js được nhiều frontend developer lựa chọn
Bài tiếp theoPinia – Quản lý state trong Vue nhỏ gọn, dễ dùng hơn Vuex rất nhiều
Tên đầy đủ là Dương Anh Sơn. Tốt nghiệp ĐH Bách Khoa Hà Nội. Mình bắt đầu nghiệp coder khi mà ra trường chẳng xin được việc đúng chuyên ngành. Mình tin rằng chỉ có chia sẻ kiến thức mới là cách học tập nhanh nhất. Các bạn góp ý bài viết của mình bằng cách comment bên dưới nhé !

1
Bình luận. Cùng nhau thảo luận nhé!

avatar
  Theo dõi bình luận  
Mới nhất Cũ nhất Nhiều voted nhất
Thông báo
Hữu Thắng
Guest
Hữu Thắng

Ra là vậy, trước cứ nhầm blockchain là Bitcoin 🙂