Blockchain, Cryptocurrency và ứng dụng trong Security (Phần 1)

Tommy_Nguyen

Moderator
Thành viên BQT
06/04/2022
23
41 bài viết
Blockchain, Cryptocurrency và ứng dụng trong Security (Phần 1)
Hello các bạn!!! Nhân dịp mình mới được lên Mod, mình sẽ cho ra mắt một series mới toanh về chủ đề “Blockchain, tiền điện tử cũng như các ứng dụng của nó trong Security”. Mong rằng chủ đề này sẽ có ích cho các bạn và nếu bài viết có gì sơ sót thì các bạn cứ thẳng thắn góp ý cho mình nhé.

blockchain.png

Đầu tiên, chúng ta cần hiểu về các khái niệm trước đã. Hãy thử vào trình duyệt và search “Blockchain” xem kết quả đưa ra là gì? Các bạn sẽ bắt gặp những khái niệm kiểu như “công nghệ chuỗi – khối”, “cơ sở dữ liệu phân cấp” hay “cuốn sổ cái lưu trữ các giao dịch”… Okay, các khái niệm đó đều đúng cả. Nhưng chẳng hạn như đối với các bạn mới bước vào thế giới Công nghệ thông tin nói chung và An toàn thông tin nói riêng thì liệu sau khi đọc hết những khái niệm đó các bạn có hiểu gì không? Thậm chí, hồi còn là sinh viên thì mình cũng đã phải mất cả tháng trời để nghiên cứu và nghiền ngẫm về khái niệm này đó.

Vậy hãy để mình nói một cách đơn giản và dễ hiểu hơn cho các bạn hình dung nhé.

1. Blockchain là gì​

Mình xin phép đưa ra một khái niệm mà theo mình là nó sát nghĩa nhất cho công nghệ Blockchain:

“Blockchain là một cơ sở dữ liệu PHÂN TÁN, trong đó các khối dữ liệu được liên kết với nhau bởi các mã băm và nó có thể mở rộng không ngừng theo thời gian“

“Ơ bảo là dễ hiểu mà lại đưa lý thuyết khô khan như này á???” Bình tĩnh nào, mình sẽ giải thích từng câu từng chữ ngay đây.
  • Đầu tiên, tại sao lại là “cơ sở dữ liệu PHÂN TÁN” mà không phải là “cơ sở dữ liệu TẬP TRUNG”? Blockchain được thiết kế theo mô hình mạng ngang hàng (Peer-to-Peer), tức là các thành viên trong mạng sẽ tương tác trực tiếp với nhau chứ không cần phải thông qua một Server cố định nào cả. Điều này mang lại rất nhiều ưu điểm cho Blockchain so với một hệ thống Client-Server thông thường, chẳng hạn như độ trễ ít hơn, giảm nguy cơ mất mát thông tin, khả năng mở rộng cao…
  • Tiếp theo, các “khối dữ liệu” là gì? Nó có phải là một bảng dữ liệu giống trong MySQL, hay nó là một loạt các dữ liệu được nén thành một “khối” đúng nghĩa? Không, nó chỉ đơn thuần là một đối tượng JSON, trong đó có chứa dữ liệu về các giao dịch tiền điện tử được thực hiện trong một khoảng thời gian nhất định. Ngoài ra, một “khối dữ liệu” cũng có chứa rất nhiều các thông tin khác như timestamp (dấu thời gian), number (số thứ tự khối), hash (mã băm của khối), parentHash (mã băm của khối trước đó)…
  • Đến đoạn quan trọng rồi nè, vậy các “khối dữ liệu” được liên kết với nhau như thế nào? Các bạn có thấy trong các thông tin trên có “hash” và “parentHash” không? Đúng rồi đó, các khối dữ liệu sẽ liên kết với nhau bằng các mã băm và khối sau sẽ chứa mã băm của khối ngay trước nó. Chính thiết kế này đã đảm bảo cho tính toàn vẹn và thống nhất của dữ liệu trong Blockchain, bởi nếu có bất kì một “khối dữ liệu” nào đó bị thay đổi thì mã băm của nó cũng sẽ bị thay đổi theo, và khi so sánh với mã băm đã được lưu trong khối ngay sau nó thì hệ thống sẽ phát hiện ra điều bất thường và loại bỏ ngay những thay đổi đó.
1653711275467.png


Đến đây sẽ có nhiều bạn thắc mắc về những câu hỏi chẳng hạn như: “Tại sao Blockchain lại lưu dữ liệu về các giao dịch tiền điện tử?”, “Blockchain và tiền điện tử có mối liên hệ gì với nhau?” hoặc những câu hỏi cực kỳ kinh điển như “Blockchain có phải là Bitcoin hay không?”. Được rồi, để trả lời những câu hỏi này thì chúng ta cần hiểu rõ hai khái niệm tiếp theo đây, đó là Consensus Algorithm (thuật toán đồng thuận) và Smart Contract (hợp đồng thông minh).

2. Consensus Algorithm​

Trong các câu hỏi trên thì mình có thể trả lời luôn một câu, đó là: Blockchain KHÔNG phải là Bitcoin và Bitcoin cũng KHÔNG phải là Blockchain. Thậm chí Blockchain cũng KHÔNG phải là bất cứ một loại tiền điện tử nào đang tồn tại trên thế giới này cả. Còn về mối liên hệ giữa chúng như thế nào thì mình sẽ nói sau khi giải thích xong 2 khái niệm nêu trên.

Okay, bắt đầu về Consensus Algorithm nhé. Về cơ bản thì “thuật toán đồng thuận là một thuật toán giúp cho tất cả những thành viên trong mạng đều đạt được thỏa thuận chung về một trạng thái hoặc một giá trị dữ liệu nào đó của mạng”.

“Các thành viên” trong mạng ở đây có nghĩa là người dùng chứ không phải là các “khối dữ liệu” trong Blockchain đâu nhé, cái này đôi khi sẽ có một số bạn nhầm lẫn. Vậy tại sao lại phải cần một “thuật toán đồng thuận” thì mới có thể đạt được thỏa thuận chung giữa các thành viên? Chúng ta vẫn thường hay sử dụng ví điện tử hoặc các ứng dụng ngân hàng mà, chúng đâu cần phải sử dụng “thuật toán đồng thuận” đâu?

Đó là bởi vì những ứng dụng này đều sử dụng một cơ sở dữ liệu TẬP TRUNG, trong khi đó Blockchain lại là một cơ sở dữ liệu PHÂN TÁN. Với cơ sở dữ liệu tập trung thì người quản lý Server (cụ thể là bên ngân hàng, hoặc công ty sở hữu ví điện tử) sẽ có quyền quyết định mọi thứ, và mỗi khi có một người dùng muốn đăng ký trở thành thành viên trong mạng thì đều sẽ phải đồng ý theo những điều khoản mà bên quản lý đề ra. Trong khi đó, với cơ sở dữ liệu phân tán thì mọi thành viên đều có quyền bình đẳng như nhau và bất kỳ ai cũng có thể tham gia vào mạng lưới. Chính vì lý do đó, “thuật toán đồng thuận” là thứ nhất định phải có để có thể đạt được thỏa thuận chung giữa tất cả người dùng trong mạng lưới phân tán.

Nếu đọc xong những dòng trên mà các bạn vẫn còn cảm thấy mông lung thì hãy xem qua ví dụ này nhé:
  • Câu lạc bộ X là một câu lạc bộ về An toàn thông tin, và để duy trì các hoạt động thường niên của câu lạc bộ này thì mọi người cần phải thành lập nên một quỹ chung.
  • Để quản lý các hoạt động chi tiêu của quỹ, mọi người đã thống nhất bầu ra một thủ quỹ có trách nhiệm thống kê và tính toán lại tất cả các hoạt động chi tiêu mà câu lạc bộ phải thực hiện.
  • Để làm được điều đó, thủ quỹ sẽ phải vạch ra những quy định, chính sách hợp lý và mọi người trong câu lạc bộ đều phải tuân theo. Nếu có bất kỳ một người mới nào muốn tham gia vào câu lạc bộ thì cũng sẽ phải đồng ý với những điều khoản mà thủ quỹ đã quy định.
Những gì mà câu lạc bộ X làm tương tự với mô hình quản lý tập trung. Chúng ta hãy xem tiếp một ví dụ về một câu lạc bộ Y nhé:
  • Câu lạc bộ Y cũng là một câu lạc bộ về An toàn thông tin, và họ cũng đã quyết định lập nên một quỹ chung.
  • Tuy nhiên khác với câu lạc bộ X, các thành viên của câu lạc bộ Y không tin tưởng bất kỳ một thành viên nào cả, nên mỗi lần quyết định chi tiêu vào một vấn đề gì đó thì các thành viên của câu lạc bộ Y sẽ họp lại để biểu quyết theo ý kiến số đông.
Những gì mà câu lạc bộ Y làm tương tự với mô hình mạng ngang hàng (Peer-to-Peer), trong đó tất cả các thành viên đều có quyền quyết định như nhau. Việc biểu quyết theo số đông của công ty Y cũng tương tự như một thuật toán đồng thuận trong Blockchain.

Tuy nhiên, chúng ta không thể cứ áp dụng cơ chế biểu quyết này vào hệ thống Blockchain được, vì đây là một hệ thống rất lớn và tất cả người dùng cũng đều không đáng tin cậy như nhau. Vậy thì, nó sẽ sử dụng các thuật toán đồng thuận như thế nào? Hãy cùng mình xem qua một số thuật toán đồng thuận phổ biến hiện nay nhé.

2.1. Proof of Work (bằng chứng về công việc)​

Bằng chứng về công việc là sao? Là cứ mỗi khi bạn làm công việc gì trong Blockchain thì đều sẽ có bằng chứng ghi lại phải không? Không phải đâu nha! Cơ chế hoạt động của thuật toán này gần như khác hoàn toàn so với tên gọi của nó. Mình sẽ giải thích ngay sau đây, tuy nhiên nếu giải thích bằng thuật ngữ thì có thể sẽ có nhiều bạn sẽ khó hiểu nên mình sẽ nói theo phong cách dân dã thôi nha.

Có một điều mà chúng ta cần nhớ đó là tất cả người dùng trong các hệ thống Blockchain đều là ẩn danh. Chính vì lý do đó mà tiền ảo rất được ưa chuộng trong các giao dịch bất hợp pháp như thuê Hacker, mua bán mã độc, đánh sập Server…

Vậy phải làm sao để chúng ta có thể tìm ra được một thỏa thuận chính đáng trong một hệ thống mà toàn bộ người dùng đều không đáng tin cậy như Blockchain? Khi đó chúng ta sẽ cần phải tìm ra một phương pháp để thúc đẩy các thành viên trong mạng làm việc một cách chính đáng. Đó là lý do mà Bitcoin và các đồng tiền ảo khác ra đời. Những đồng tiền ảo này sẽ là phần thưởng cho những người có công đóng góp vào việc tạo ra một thỏa thuận chính đáng cho toàn bộ mạng. Hành động này khi nói bằng từ ngữ chuyên ngành thì nó sẽ là việc “xác thực khối” và những người tham gia vào việc xác thực khối sẽ được gọi là các “miner” (thợ đào), vì họ đang thực hiện hành động xác thực khối để “đào” coin. Đây cũng là một trong những ý trả lời cho câu hỏi “Blockchain và tiền điện tử có mối liên hệ gì với nhau?” – Tiền điện tử là phần thưởng cho việc xác thực khối trong hệ thống Blockchain.

Đến đây các bạn có thấy hơi vô lý không? Blockchain dùng để lưu trữ các giao dịch tiền điện tử, mà tiền điện tử lại là phần thưởng cho việc xác thực khối trong Blockchain. Vậy ở thời điểm bắt đầu của nền tảng Blockchain thì tiền điện tử từ đâu mà ra? Bởi vì đâu có giao dịch nào được thực hiện đâu? Điều này mình sẽ nói trong bài viết sau nhé!

Mình muốn lưu ý thêm một điều là không phải tất cả mọi thành viên đều phải tham gia xác thực khối nha. Bất cứ thành viên nào trong mạng Blockchain cũng đều có quyền lựa chọn tham gia xác thực khối hoặc không. Tất nhiên, những người không tham gia xác thực khối thì sẽ không có quyền quyết định gì đối với “thỏa thuận chung” mà mình đã nói phía trên.

Đến đây thì chắc hẳn các bạn sẽ có một câu hỏi: Vậy nếu như những kẻ xấu cũng tham gia vào việc tạo ra thỏa thuận thì sao? Và nếu như chúng cũng tạo ra một thỏa thuận trái ngược lại hoàn toàn với thỏa thuận chính đáng nêu trên thì hệ thống Blockchain sẽ xử lý như thế nào? Ví dụ chúng ta có một giao dịch chính đáng: “A chuyển cho B 0.1 Bitcoin” và nó đang trong trạng thái pending, nhưng những kẻ xấu lại nói rằng “đây không phải là một giao dịch hợp lệ, giao dịch (A chuyển cho C 0.1 Bitcoin) mới là giao dịch hợp lệ”. Vậy khi đó hệ thống sẽ xử lý như thế nào?

Lúc này chúng ta sẽ có một khái niệm mới. Mỗi một người dùng tham gia vào quá trình “xác thực khối” hay nói cách khác là các “thợ đào” đều sẽ được đánh giá bằng một chỉ số gọi là “năng lực tính toán”. Chỉ số này được xác định thông qua một thuật toán được sinh ra bởi hệ thống (các bạn không cần biết thuật toán này là gì, các bạn chỉ cần biết rằng để thực hiện xong thuật toán này máy tính sẽ cần phải mất một lượng thời gian không nhỏ). Tất cả các thợ đào đều phải chạy thuật toán này, và thợ đào nào hoàn thành thuật toán với thời gian ít hơn thì sẽ có “năng lực tính toán” cao hơn.

Quay trở lại với vấn đề nêu trên: Nếu như những kẻ xấu cũng tham gia vào việc tạo ra thỏa thuận thì sao? Trong trường hợp này (và cả những trường hợp có nhiều hơn các thỏa thuận được tạo ra) thì hệ thống sẽ lựa chọn thỏa thuận nào có nhiều “năng lực tính toán” tham gia xác thực hơn.

Ví dụ: Một hệ thống Blockchain có 7 người tham gia xác thực lần lượt là: A, B, C, D, E, F, G với các điểm năng lực tính toán lần lượt là 1, 2, 3, 4, 5, 6, 7. Trong một thời điểm, sẽ có những thỏa thuận như sau được tạo ra:
  • A, B và C xác thực thỏa thuận “A chuyển cho B 0.1 Bitcoin” (thỏa thuận 1)
  • D và E xác thực thỏa thuận “A chuyển cho C 0.2 Bitcoin” (thỏa thuận 2)
  • F xác thực thỏa thuận “A chuyển cho D 0.05 Bitcoin” (thỏa thuận 3)
  • G xác thực thỏa thuận “A chuyển cho E 0.3 Bitcoin” (thỏa thuận 4)
Khi đó thỏa thuận 2 sẽ được lựa chọn thêm vào khối, vì nó có nhiều điểm năng lực tính toán cùng tham gia xác thực hơn (4+5). Phần thưởng cho việc xác thực khối (ví dụ là 1 Bitcoin) sẽ được chia dựa trên năng lực tính toán của những người đã xác thực cho thỏa thuận 2 (D sẽ được thưởng 0.4444… Bitcoin và E sẽ được thưởng 0.5555… Bitcoin). Chính vì cơ chế này nên những kẻ tấn công sẽ rất khó để có thể làm sai lệch thông tin của Blockchain, vì nếu muốn tạo ra một thỏa thuận không chính đáng thì chúng sẽ phải sở hữu năng lực tính toán nhiều hơn tất cả các thợ đào khác cộng lại (các bạn có thể dễ dàng tìm thấy điều này trên Google bằng từ khóa “51% attack”).

Để cho dễ hình dung thì theo thống kê hiện nay có khoảng 25 triệu người dùng Bitcoin trên toàn thế giới. Giả sử chỉ có khoảng 10% trong số đó tham gia vào quá trình xác thực khối (2.500.000 người) thì năng lực tính toán của toàn bộ mạng đã phải lớn đến chừng nào! Đó là còn chưa kể đến các “trang trại đào coin” gồm hàng chục ngàn đến hàng trăm ngàn “trâu xanh” và “trâu đỏ” (từ lóng để chỉ card đồ họa NVIDIA và AMD). Tất nhiên các “trang trại” này cũng sẽ luôn cố gắng để xác thực các giao dịch hợp lệ, vì chỉ có như vậy thì họ mới được nhận phần thưởng. Qua đây các bạn cũng có thể hiểu được vì sao người ta lại sử dụng card đồ họa để đào coin rồi đúng không? Để gia tăng “năng lực tính toán” nhằm kiếm được nhiều tiền hơn đó!

Vậy nếu như trong trường hợp có 2 thỏa thuận có cùng điểm “năng lực tính toán” tham gia xác thực thì sao? Trường hợp này thường xuyên xảy ra trong Blockchain, và nó được gọi là “double spending”. Nếu nó xảy ra, hệ thống sẽ tạo ra 2 (hoặc nhiều nhánh hơn phụ thuộc vào số giao dịch có cùng điểm “năng lực tính toán”). Các nhánh đó sẽ tiếp tục kéo dài ra, và nếu có bất kỳ nhánh nào dài hơn ít nhất 6 khối so với các nhánh còn lại thì nhánh đó sẽ trở thành nhánh chính, và các nhánh còn lại sẽ bị loại bỏ. Khả năng để xảy ra “double spending” là khá lớn, nhưng khả năng để nó xảy ra 6 lần liên tiếp thì gần như là bất khả thi.

1653710881756.png

Thuật toán đồng thuận Proof of Work là một thuật toán cực kỳ phổ biến trong thế giới Blockchain hiện nay. Đây là thuật toán được sử dụng trong hầu hết các loại tiền điện tử lớn như Bitcoin, Ethereum, Litecoin…

Okay, hãy đến với một thuật toán đồng thuận khác cũng không kém phần nổi tiếng, đó là Proof of Stake.

2.2. Proof of Stake (bằng chứng về cổ phần)​

Về cơ chế hoạt động thì tương tự như Proof of Work, nhưng thay vì sử dụng “năng lực tính toán” thì thuật toán này sử dụng “số lượng cổ phần” của người xác thực để đánh giá quyền quyết định của người đó.

Lấy một ví dụ đơn giản: Một hệ thống Blockchain có 5 người tham gia xác thực lần lượt là: A, B, C, D, E với số lượng tiền có trong tài khoản của họ lần lượt là 1, 2, 3, 4, 5 Bitcoin. Trong một thời điểm, sẽ có những thỏa thuận như sau được tạo ra:
  • A và B xác thực thỏa thuận “A chuyển cho B 0.1 Bitcoin” (thỏa thuận 1)
  • C và D xác thực thỏa thuận “A chuyển cho C 0.2 Bitcoin” (thỏa thuận 2)
  • E xác thực thỏa thuận “A chuyển cho D 0.05 Bitcoin” (thỏa thuận 3)
Khi đó thỏa thuận 2 sẽ được lựa chọn thêm vào khối, vì nó có nhiều số lượng cổ phần cùng tham gia xác thực hơn (3+4). Phần thưởng cho việc xác thực khối cũng sẽ được chia cho những người đã xác thực thỏa thuận này dựa trên lượng tiền mà họ đang nắm giữ.

Tương tự như Proof of Work, để tấn công một hệ thống Blockchain sử dụng thuật toán này thì kẻ tấn công phải có số lượng tiền nhiều hơn tất cả các thợ đào khác cộng lại. Tuy nhiên cơ chế này cũng sẽ có những ưu điểm và nhược điểm so với cơ chế Proof of Work:
  • Ưu điểm: Không tiêu tốn nhiều tài nguyên của người xác thực. Trong Proof of Work thì người xác thực phải cố gắng gia tăng “năng lực tính toán” của mình càng nhiều càng tốt, còn trong Proof of Stake thì chỉ cần có nhiều tiền là được ^^
  • Nhược điểm: Kém an toàn hơn, và cơ chế này không được công bằng cho lắm. Qua cơ chế này thì các bạn có thể thấy rằng những ai đã giàu thì sẽ càng giàu hơn, còn ai đã nghèo thì vẫn hoàn nghèo :) Còn về mức độ an toàn thì hiển nhiên rằng việc kiểm soát nhiều tiền sẽ dễ dàng hơn nhiều so với việc kiểm soát nhiều năng lực tính toán.

2.3. Delegated Proof of Stake (bằng chứng về cổ phần được ủy quyền)​

Khi mà bạn đã có rất nhiều tiền, nhưng bạn lại không muốn chính mình thực hiện công việc xác thực khối giống như trong Proof of Stake mà muốn ủy quyền cho một người nào đó mà bạn tin cậy thực hiện việc này, thì khi đó hãy lựa chọn Delegated Proof of Stake. Đây là một thuật toán mà những người nắm giữ cổ phần lớn trong hệ thống sẽ cùng bầu chọn ra một người xác thực đáng tin cậy và người xác thực này sẽ chịu trách nhiệm cho toàn bộ các hoạt động xác thực khối trong mạng. Nếu người xác thực đó hoạt động không hiệu quả hoặc có những hoạt động đáng ngờ thì những người nắm giữ cổ phần sẽ được quyền quyết định trục xuất người xác thực đó và bầu chọn cho một người xác thực mới đáng tin cậy hơn.

Ưu điểm của cơ chế này so với Proof of Stake đó là hạn chế việc hệ thống hoạt động một cách không công bằng giữa những người giàu và người nghèo :)

Còn một điều thú vị nữa nè, đó là đồng tiền điện tử LUNA cũng sử dụng một cơ chế đồng thuận dựa trên thuật toán này đó.

Thôi, mỏi tay lắm rồi ^^ Già rồi nên không còn dẻo dai giống các cháu sinh viên nữa. Để lần sau chúng mình cùng tiếp tục nha.

.......

Chưa hết đâu, còn after credit nè ^^ Trong bài tiếp theo mình sẽ giải thích về Smart Contract (hợp đồng thông minh) và sẽ trả lời một câu hỏi: “Ở thời điểm bắt đầu của nền tảng Blockchain thì tiền điện tử từ đâu mà ra?”. Các bạn hãy cùng đón chờ nhé ;)

Tommy
 
Chỉnh sửa lần cuối:
Thẻ
blockchain cryptocurrency luna peer-to-peer
Bên trên