BlockChain? cách hoạt động và kiến thức nền tảng

BlockChain? cách hoạt động và kiến thức nền tảng

Rate this post

Đặt nền tảng Blockchain

Blockchain không chỉ là một công nghệ, nó chủ yếu được kết hợp với kinh doanh các chức năng và các trường hợp sử dụng. Trong việc triển khai tiền điện tử, nó cũng đan xen với các nguyên tắc kinh tế. Trong phần này, chúng tôi chủ yếu sẽ tập trung vào các khía cạnh kỹ thuật của nó. Về mặt kỹ thuật, blockchain là một sự kết hợp của các khái niệm từ mật mã, lý thuyết trò chơi và kỹ thuật khoa học máy tính, như trong Hình 2-1 .

BlockChain? cách hoạt động và kiến thức nền tảng

Hình 2-1. Blockchain ở cốt lõi của nó

Hãy cùng chúng tôi xem xét vai trò của các thành phần này trong chuỗi khối hệ thống ở cấp độ cao và cuối cùng đào sâu hơn vào các nguyên tắc cơ bản. Trước đó, chúng ta hãy nhanh chóng xem lại cách các hệ thống tập trung truyền thống đã làm việc. 

Các bài viết liên quan:

Cách tiếp cận truyền thống là sẽ có một pháp nhân sẽ chỉ duy trì một lịch sử giao dịch / sửa đổi. Cái này là thực hiện kiểm soát đồng thời trên toàn bộ cơ sở dữ liệu và đưa vào tin tưởng vào hệ thống thông qua trung gian. Có vấn đề gì với như vậy một hệ thống ổn định sau đó? Một hệ thống tập trung phải được tin cậy, cho dù những người liên quan có trung thực hay không! Ngoài ra, chi phí do trung gian và thời gian giao dịch có thể lớn hơn vì những lý do rõ ràng. Bây giờ hãy nghĩ về tập trung quyền lực; có toàn quyền kiểm soát toàn bộ hệ thống cho phép chính quyền tập trung để làm hầu hết mọi thứ họ muốn. 

Bây giờ, chúng ta hãy xem cách blockchain giải quyết những vấn đề này do trung gian tập trung bằng cách sử dụng mật mã, lý thuyết trò chơi và các khái niệm khoa học máy tính. Không phân biệt trường hợp sử dụng, các giao dịch được bảo mật bằng mật mã. Sử dụng mật mã, nó  có thể được đảm bảo rằng người dùng hợp lệ đang bắt đầu giao dịch và không ai có thể giả mạo giao dịch gian lận. 

Điều này có nghĩa là, về mặt mật mã, nó có thể được đảm bảo rằng Alice không có cách nào có thể thực hiện giao dịch thay mặt Bob bằng cách giả mạo chữ ký của anh ấy. Bây giờ, điều gì sẽ xảy ra nếu một nút hoặc một người dùng cố gắng khởi chạy chi tiêu kép tấn công (ví dụ: một người chỉ có mười đô la và cố gắng trả giống nhau cho nhiều Mọi người)? Hãy chú ý ở đây — mặc dù không có đủ tiền, một vẫn có thể bắt đầu chi tiêu gấp đôi, điều này đúng về mặt mật mã. Các cách duy nhất để ngăn chặn việc chi tiêu gấp đôi là mọi nút phải nhận thức được tất cả các giao dịch. Bây giờ điều này dẫn đến một vấn đề thú vị khác. 

Vì mọi node nên duy trì cơ sở dữ liệu giao dịch, làm thế nào tất cả chúng có thể đồng ý trên một trạng thái cơ sở dữ liệu chung? Một lần nữa, làm thế nào hệ thống có thể duy trì miễn dịch cho các tình huống trong đó một hoặc nhiều nút máy tính cố tình thử để phá hoại hệ thống và cố gắng đưa vào trạng thái cơ sở dữ liệu gian lận? Các phần lớn các vấn đề như vậy nằm dưới sự bảo trợ của Byzantine Vấn đề của các vị tướng (mô tả ở phần sau). Chà, nó còn phổ biến hơn nữa bởi vì blockchain, nhưng nó đã tồn tại lâu đời. Nếu bạn nhìn vào giải pháp trung tâm dữ liệu hoặc giải pháp cơ sở dữ liệu phân tán, Byzantine

Vấn đề của các vị tướng là một vấn đề hiển nhiên và phổ biến mà họ phải giải quyết để duy trì khả năng chịu lỗi. Những tình huống như vậy và giải pháp của họ thực sự đến từ lý thuyết trò chơi. Lĩnh vực lý thuyết trò chơi cung cấp một sự khác biệt hoàn toàn cách tiếp cận để xác định cách một hệ thống sẽ hoạt động. Các kỹ thuật trong lý thuyết trò chơi được cho là những lý thuyết tinh vi và thực tế nhất. Họ thường không bao giờ xem xét liệu một nút có trung thực, độc hại, có đạo đức hay có bất kỳ các đặc điểm khác như vậy và tin rằng những người tham gia hành động theo với lợi thế mà họ có được, không phải bởi các giá trị đạo đức. 

Mục đích duy nhất của trò chơi lý thuyết trong blockchain là đảm bảo rằng hệ thống ổn định (tức là trong Nash Cân bằng) với sự đồng thuận giữa những người tham gia. Có nhiều loại vấn đề kinh doanh và tình huống với mức độ phức tạp khác nhau. Vì vậy, tiền điện tử và trò chơi cơ bản các giao thức đồng thuận lý thuyết có thể khác nhau trong các trường hợp sử dụng khác nhau. Tuy nhiên, nguyên tắc chung của việc duy trì nhật ký hoặc cơ sở dữ liệu nhất quán của các giao dịch đã xác minh là giống nhau. 

Mặc dù các khái niệm về mật mã và lý thuyết trò chơi đã xuất hiện khá lâu rồi, nó là khoa học máy tính ghép các mảnh ghép này lại với nhau thông qua cấu trúc dữ liệu và giao tiếp mạng ngang hàng kỹ thuật. Rõ ràng, đó là “kỹ thuật phần mềm thông minh” là cần thiết để nhận ra bất kỳ khái niệm logic hoặc toán học nào trong thế giới kỹ thuật số. Nó sau đó là các kỹ thuật kỹ thuật khoa học máy tính kết hợp mã hóa và các khái niệm lý thuyết trò chơi vào một ứng dụng, cho phép tính toán phi tập trung và phân tán giữa các nút với dữ liệu cấu trúc và các thành phần truyền thông mạng

Mật mã học

Mật mã là thành phần quan trọng nhất của blockchain. Nó là chắc chắn là một lĩnh vực nghiên cứu của chính nó và dựa trên toán học tiên tiến các kỹ thuật khá phức tạp để hiểu. Chúng tôi sẽ cố gắng phát triển sự hiểu biết vững chắc về một số khái niệm mật mã trong này , bởi vì các vấn đề khác nhau có thể yêu cầu mật mã khác nhau các giải pháp; một kích thước không bao giờ phù hợp với tất cả. Bạn có thể bỏ qua một số chi tiết hoặc tham khảo đối với họ khi cần thiết, nhưng nó là thành phần quan trọng nhất để đảm bảo an ninh trong hệ thống. Đã có nhiều vụ hack được báo cáo trên ví và sàn giao dịch do thiết kế yếu hơn hoặc mật mã kém triển khai 

Mật mã đã tồn tại hơn hai nghìn năm hiện nay. Khoa học giữ bí mật mọi thứ bằng cách sử dụng mã hóa kỹ thuật. Tuy nhiên, bí mật không phải là mục tiêu duy nhất. Có nhiều cách sử dụng khác của mật mã như được đề cập trong danh sách sau, mà chúng ta sẽ khám phá sau:

  • Tính bảo mật: Chỉ những người được dự định hoặc được ủy quyền người nhận có thể hiểu thông điệp. Nó cũng có thể là được gọi là quyền riêng tư hoặc bí mật.
  • Tính toàn vẹn của dữ liệu: Không thể giả mạo hoặc sửa đổi dữ liệu bởi một đối thủ cố ý hoặc không cố ý / tình cờ các lỗi. Mặc dù tính toàn vẹn của dữ liệu không thể ngăn chặn thay đổi dữ liệu, nó có thể cung cấp một phương tiện phát hiện cho dù dữ liệu đã được sửa đổi.
  • Xác thực: Tính xác thực của người gửi là đảm bảo và có thể xác minh được bởi người nhận.
  • Không từ chối: Người gửi, sau khi gửi tin nhắn, không thể phủ nhận sau đó rằng họ đã gửi tin nhắn. Cái này có nghĩa là một thực thể (một người hoặc một hệ thống) không thể từ chối quyền sở hữu của một cam kết trước đó hoặc một hoạt động. Bất kỳ thông tin nào dưới dạng tin nhắn văn bản, dữ liệu số hoặc chương trình máy tính có thể được gọi là bản rõ. Ý tưởng là mã hóa plaintext sử dụng thuật toán mã hóa và khóa tạo ra bản mã. Sau đó, bản mã có thể được truyền đến người nhận, người giải mã nó bằng cách sử dụng thuật toán giải mã và chìa khóa để lấy bản rõ.

Chúng ta hãy lấy một ví dụ. Alice muốn gửi một tin nhắn ( m ) cho Bob. Nếu cô ấy chỉ gửi thông điệp như hiện tại, bất kỳ đối thủ nào, chẳng hạn, Eve có thể dễ dàng chặn tin nhắn và tính bảo mật bị xâm phạm. Vì vậy, Alice muốn mã hóa tin nhắn bằng thuật toán mã hóa ( E ) và khóa bí mật ( k ) để tạo ra thông điệp được mã hóa được gọi là “ciphertext”. Một đối thủ phải biết cả thuật toán ( E ) và khóa ( k ) để đánh chặn thông điệp. Thuật toán và khóa càng mạnh thì càng khó để kẻ thù tấn công. Lưu ý rằng luôn mong muốn thiết kế hệ thống blockchain ít nhất là an toàn có thể chứng minh được. Điều này có nghĩa là rằng một hệ thống phải chống lại một số kiểu tấn công khả thi của đối thủ. Tập hợp các bước chung cho cách tiếp cận này có thể được trình bày dưới dạng được thể hiện trong Hình  2-2 

BlockChain? cách hoạt động và kiến thức nền tảng

Hình 2-2. Cách thức hoạt động của Mật mã nói chung

Nói chung, có hai loại mật mã: khóa đối xứng và mật mã khóa không đối xứng (hay còn gọi là khóa công khai). Hãy để chúng tôi xem xét những điều này riêng lẻ trong các phần sau:

Kiến thức nền tảng của mật mã học:

Kiến thức về game theory:

Lý thuyết trò chơi (game theory)

Kiến thức về khoa học máy tính

Như đã đề cập, đó là kỹ thuật thông minh với các khái niệm từ khoa học máy tính kết hợp các thành phần của mật mã, trò chơi lý thuyết và nhiều lý thuyết khác để xây dựng một blockchain. Trong phần này, chúng tôi sẽ tìm hiểu một số thành phần khoa học máy tính quan trọng được sử dụng trong Blockchain

Block

Như chúng ta sẽ thấy, một blockchain thực sự là một cấu trúc dữ liệu blockchain; bên trong cảm giác rằng nó là một chuỗi các khối liên kết với nhau. Khi chúng ta nói một khối, nó có thể có nghĩa là chỉ một giao dịch duy nhất hoặc nhiều giao dịch theo nhóm cùng nhau. 

Chúng ta sẽ bắt đầu cuộc thảo luận với con trỏ băm, đây là điều cơ bản khối xây dựng cấu trúc dữ liệu blockchain. Con trỏ băm là một băm mật mã trỏ đến một khối dữ liệu, trong đó con trỏ băm là mã băm của chính khối dữ liệu (Hình 2-19). không giống danh sách được liên kết trỏ đến khối tiếp theo để bạn có thể truy cập vào nó, con trỏ băm trỏ đến khối dữ liệu trước đó và cung cấp cách xác minh rằng dữ liệu không bị giả mạo 

BlockChain? cách hoạt động và kiến thức nền tảng

Hình 2-19. Con trỏ băm cho một khối giao dịch

Mục đích của con trỏ băm là xây dựng khả năng chống giả mạo blockchain có thể được coi là một nguồn sự thật duy nhất. Làm thế nào blockchain đạt được mục tiêu này? Cách nó hoạt động là hàm băm của khối trước đó được lưu trữ trong tiêu đề khối hiện tại và băm của khối hiện tại với tiêu đề khối của nó sẽ được lưu trữ trong khối tiếp theo đầu trang. Điều này tạo ra chuỗi khối như chúng ta có thể thấy trong

BlockChain? cách hoạt động và kiến thức nền tảng

Hình 2-20. Các khối trong một chuỗi khối được liên kết thông qua các con trỏ băm

Như chúng ta có thể quan sát, mọi khối đều trỏ đến khối trước của nó, được gọi là “Khối chính.” Mỗi khối mới được thêm vào chuỗi sẽ trở thành khối cha cho khối tiếp theo được thêm vào. Nó đi tất cả các cách khối đầu tiên được tạo trong chuỗi khối, được gọi là “nguồn gốc khối.” Trong một thiết kế như vậy, nơi các khối được liên kết lại bằng các hàm băm, nó là thực tế là không thể cho ai đó thay đổi dữ liệu trong bất kỳ khối nào. Chúng tôi đã xem xét các thuộc tính của hàm băm, vì vậy chúng tôi hiểu rằng hàm băm sẽ không khớp nếu dữ liệu bị thay đổi. Điều gì sẽ xảy ra nếu ai đó thay đổi cả băm nữa? Chúng ta hãy tập trung vào Hình  2-21 để hiểu nó không như thế nào có thể thay đổi dữ liệu theo bất kỳ cách nào

BlockChain? cách hoạt động và kiến thức nền tảng

Hình 2-21. Bất kỳ nỗ lực nào trong việc thay đổi nội dung Tiêu đề hoặc Chặn

phá vỡ toàn bộ dây chuyền. Giả sử rằng bạn đã thay đổi dữ liệu trong khối-1234. Nếu bạn làm như vậy, hàm băm được lưu trữ trong tiêu đề khối của khối-1235 sẽ không khớp

• Điều gì sẽ xảy ra nếu bạn cũng thay đổi hàm băm được lưu trữ trong khối tiêu đề của khối-1235 để nó khớp hoàn toàn dữ liệu bị thay đổi. Nói cách khác, bạn băm dữ liệu block-1234 sau khi bạn thay đổi nó và thay thế hàm băm mới đó với một được lưu trữ trong tiêu đề khối của khối-1235. Sau khi bạn làm điều này, băm của khối-1235 sẽ thay đổi(bởi vì khối-1235 có nghĩa là dữ liệu và tiêu đề cùng nhau) và nó không khớp với cái được lưu trữ trong tiêu đề khối của khối-1236.

• Người ta phải tiếp tục làm điều này cho đến khi kết thúc hoặc băm gần đây nhất. Vì mọi người hoặc nhiều người trong mạng đã có một bản sao của chuỗi khối với hàm băm gần đây nhất, không có cách nào có thể xâm nhập vào phần lớn hệ thống và thay đổi tất cả băm tại một thời điểm.

• Điều này làm cho nó trở thành một cấu trúc dữ liệu blockchain chống giả mạo. Điều này rõ ràng có nghĩa là mỗi khối có thể được xác định duy nhất bởi băm. Để tính toán băm này, bạn có thể sử dụng họ SHA2 hoặc SHA3 của các hàm băm mà chúng ta đã thảo luận trong phần mật mã. Nếu bạn dùng SHA256 để băm các khối, nó sẽ tạo ra đầu ra băm 256 bit như:

000000000000000a73b6a2af7bad40ec3fc2a83dafd76ef15f3d1b71a7132765

Xem thêm Hàm băm (hash function) là gì?

Chú ý rằng chỉ có 64 ký tự trong đó. Kể từ khi đầu ra băm được thể hiện bằng cách sử dụng các ký tự thập lục phân và mọi chữ số thập lục phân đều có thểđược biểu diễn bằng bốn bit, đầu ra là 64 × 4 = 256 bit. Bạn muốn thường thấy rằng đầu ra băm 256 bit được biểu diễn bằng cách sử dụng 64 hex nhân vật ở nhiều nơi.

Cấu trúc của một khối, nghĩa là, kích thước khối, dữ liệu và tiêu đề các phần, số lượng giao dịch trong một khối, v.v., là những thứ bạn nên quyết định trong khi thiết kế một giải pháp blockchain. Đối với hiện tại các blockchains như Bitcoin, Ethereum hoặc Hyperledger, cấu trúc đã được xác định và bạn phải hiểu điều đó để xây dựng trên các nền tảng này. Chúng ta sẽ xem xét kỹ hơn Bitcoin và Ethereum các blockchains sau này trong cuốn sách này.

Merkle Tree

Cây Merkle là một cây nhị phân của các con trỏ băm mật mã, do đó nó là một cây băm nhị phân. Nó được đặt tên như vậy theo tên nhà phát minh Ralph Merkle. Nó là một cấu trúc dữ liệu hữu ích khác đang được sử dụng trong các giải pháp blockchain như như Bitcoin.

Xem thêm Các Hash funtion đang được sử dụng

Merkle tree được xây dựng bằng cách băm dữ liệu ghép nối (thường là giao dịch ở cấp độ lá), sau đó lại băm các đầu ra đã băm tất cả đường lên đến nút gốc, được gọi là gốc Merkle. Giống như bất kỳ cây nào khác, nó là được xây dựng từ dưới lên. Trong Bitcoin, các lá luôn là giao dịch của một khối duy nhất trong một chuỗi khối. Chúng ta sẽ thảo luận sau một thời gian ngắn về những lợi thế sử dụng cây Merkle, vì vậy bạn có thể tự quyết định xem lá sẽ giao dịch hoặc một nhóm giao dịch trong các khối. Một cây Merkle điển hình có thể được biểu diễn như trong Hình 2-22 

BlockChain? cách hoạt động và kiến thức nền tảng

Hình 2-22. Đại diện cây Merkle

Tương tự như cấu trúc dữ liệu con trỏ băm, cây Merkle cũng làm giả bằng chứng. Giả mạo ở bất kỳ cấp độ nào trong cây sẽ không phù hợp với băm được lưu trữ ở một cấp trong hệ thống phân cấp và cũng cho đến nút gốc. Nó là thực sự khó khăn đối với kẻ thù để thay đổi tất cả các băm trong toàn bộ cây. Nó cũng đảm bảo tính toàn vẹn của thứ tự giao dịch. Nếu bạn thay đổi chỉ thứ tự của các giao dịch, sau đó cũng là băm trong cây cho đến Merkle root sẽ thay đổi.

Đây là một tình huống. Cây Merkle là một cây nhị phân và cần cómột số chẵn các mục ở cấp độ lá. Nếu có một số lẻ thì sao của các mặt hàng đó? Một giải pháp tốt sẽ là sao chép giao dịch cuối cùng băm. Vì nó là băm mà chúng tôi đang sao chép, nó có nghĩa là giống nhau giao dịch và không tạo ra bất kỳ vấn đề nào như chi tiêu gấp đôi hoặc lặp lạicác giao dịch. 

Có như vậy mới có thể giữ thăng bằng cho cây. Trong chuỗi khối mà chúng ta đã thảo luận, nếu chúng ta tìm thấy một giao dịch thông qua hàm băm của nó hoặc kiểm tra xem một giao dịch đã xảy ra trong quá khứ hay chưa, bằng cách nào chúng ta sẽ thực hiện giao dịch đó chứ? Cách duy nhất là tiếp tục đi qua cho đến khi bạn gặp khối chính xác khớp với băm của giao dịch. Đây là một trường hợp mà cây Merkle có thể giúp ích rất nhiều

Cây Merkle cung cấp một cách rất hiệu quả để xác minh xem một giao dịch thuộc về một khối cụ thể. Nếu có “n” giao dịch trong một cây Merkle (lá mục), thì quá trình xác minh này chỉ mất Log (n) thời gian như thể hiện trong hình  2-23

BlockChain? cách hoạt động và kiến thức nền tảng

Hình 2-23. Xác minh trong cây Merkle

Để xác minh xem một giao dịch hoặc bất kỳ vật phẩm lá nào khác có thuộc về Merkle hay không cây, chúng ta không cần tất cả các mục và toàn bộ cây. Đúng hơn, một tập hợp con của nó là cần thiết như chúng ta có thể thấy trong sơ đồ ở Hình  2-23 . 

Người ta chỉ có thể bắt đầu với giao dịch để xác minh cùng với anh chị em của nó (nó là một cây nhị phân nên ở đó sẽ là một mục lá anh em), tính toán băm của hai mục đó và xem nếu nó khớp với hàm băm mẹ của chúng. Sau đó, tiếp tục với hàm băm gốc đó và anh chị em của nó ở cấp độ đó và băm chúng lại với nhau để có được hàm băm cha mẹ của chúng.

Tiếp tục quá trình này đến hết hàm băm gốc trên cùng là nhanh nhất cách có thể để xác minh giao dịch (chỉ ghi (n) thời gian cho n mục). Trong hình, chỉ những hình chữ nhật đặc là bắt buộc và những hình chữ nhật có dấu chấm có thể chỉ được tính toán, cung cấp dữ liệu hình chữ nhật đặc. 

Vì có tám phần tử giao dịch (n = 8), chỉ ba phép tính (log2 8 = 3) sẽ được yêu cầu để xác minh Bây giờ, làm thế nào về sự kết hợp của cả cấu trúc dữ liệu blockchain và Cây Merkle? Hãy tưởng tượng một tình huống trong một chuỗi khối mà mỗi khối có một nhiều giao dịch. Vì nó là một blockchain, băm của khối trước đó đã ở đó rồi; bây giờ, bao gồm gốc Merkle của tất cả các giao dịch trong một khối có thể giúp xác minh các giao dịch nhanh hơn. Nếu chúng ta phải xác minh một giao dịch được tuyên bố là từ khối-22456, chúng tôi có thể nhận được các giao dịch của khối đó, xác minh cây Merkle và xác nhận nhanh chóng nếu giao dịch đó hợp lệ. Chúng tôi đã thấy rằng việc xác minh giao dịch là khá dễ dàng và nhanh chóng với cây Merkle. 

Mặc dù các khối trong chuỗi khối có khả năng chống giả mạo và không cung cấp phạm vi dù là nhỏ nhất để thay đổi bất kỳ thứ gì trong một khối, cây Merkle cũng đảm bảo rằng thứ tự của giao dịch được giữ nguyên. Trong một thiết lập blockchain điển hình, có thể có nhiều tình huống trong đó một nút (vì lợi ích đơn giản, giả sử bất kỳ nút nào không có đầy đủ dữ liệu blockchain, tức là một nút sáng) phải xác minh xem một giao dịch nhất định có diễn ra hay không trong quá khứ. 

Thực tế có hai điều cần xác minh ở đây: giao dịch như một phần của khối và khối như một phần của chuỗi khối. Đến làm như vậy, một nút không phải tải xuống tất cả các giao dịch của một khối, nó có thể chỉ cần yêu cầu mạng cung cấp thông tin liên quan đến hàm băm của khối và băm của giao dịch. 

Các đồng nghiệp trong mạng có thông tin liên quan có thể phản hồi với đường dẫn Merkle đến đó Giao dịch. Vâng, bạn có thể hỏi làm thế nào để tin tưởng vào dữ liệu mà một ngang hàng trong mạng đang chia sẻ với bạn. Bạn đã biết rằng hàm băm các chức năng là một chiều. Vì vậy, không có cách nào mà một nút đối nghịch có thể tạo ra các giao dịch phù hợp với một giá trị băm nhất định; nó thậm chí còn khó để làm như vậy từ cấp độ giao dịch cho đến tận gốc Merkle.

Việc sử dụng cây Merkle không chỉ giới hạn ở các blockchains: chúng được sử dụng rộng rãi trong nhiều ứng dụng khác như BitTorrent, Cassandra — an Cơ sở dữ liệu NoSQL, Apache Wave, v.v

Xem thêm Xác thực thông điệp(message authentication) là gì?

Các block được kết nối với nhau

Để đến phần này, chúng tôi đã đề cập đến tất cả các thành phần cần thiết của blockchain có thể giúp chúng ta hiểu cách nó thực sự hoạt động. Sau khi đi thông qua chúng, cụ thể là mật mã, lý thuyết trò chơi và máy tính các khái niệm kỹ thuật khoa học máy tính, chúng ta phải phát triển một khái niệm về cách các blockchains có thể hoạt động. Mặc dù những khái niệm này đã tồn tại cho độ tuổi, không ai có thể tưởng tượng được làm thế nào mà những thứ cũ kỹ lại có thể được sử dụng để xây dựng một công nghệ chuyển đổi như blockchain. Hãy để chúng tôi có một tóm tắt một số nguyên tắc cơ bản mà chúng tôi đã đề cập cho đến nay và chúng tôi sẽ xây dựng thêm hiểu biết về các khái niệm đó. Vì vậy, chúng đây là:

  • Các chức năng mật mã là một chiều và không thể đảo ngược. Chúng có tính xác định và tạo ra giống nhau đầu ra cho một đầu vào nhất định. Bất kỳ thay đổi nào đối với đầu vào sẽ tạo ra một đầu ra hoàn toàn khác khi băm lại
  • Sử dụng mật mã khóa công khai, chữ ký điện tử được khả thi. Nó giúp xác minh tính xác thực của người / tổ chức đã ký. Xem xét sự riêng tư khóa được giữ bí mật, không khả thi để giả mạo chữ ký với danh tính của người khác. Ngoài ra, nếu ai đó đã ký vào bất kỳ tài liệu hoặc giao dịch nào, họ không thể phủ nhận sau đó họ đã không.
  • Sử dụng các nguyên tắc lý thuyết trò chơi và các phương pháp hay nhất, hệ thống mạnh mẽ có thể được thiết kế để có thể duy trì hầu hết các tình huống kỳ quặc. Các hệ thống có thể đối mặt với Vấn đề của Tướng Byzantine cần được xử lý đúng. Cách tiếp cận của chúng tôi đối với bất kỳ thiết kế hệ thống nào nên sao cho những người tham gia chơi đúng luật để có được tiền thưởng tối đa; đi chệch khỏi giao thức nên không thực sự mang lại lợi ích cho họ.
  • Cấu trúc dữ liệu blockchain, bằng cách sử dụng băm mật mã, cung cấp khả năng chống giả mạo chuỗi khối. Việc sử dụng cây Merkle làm cho xác minh giao dịch dễ dàng hơn và nhanh hơn. Với tất cả những khái niệm này, bây giờ chúng ta hãy nghĩ về một blockchain thực sự thực hiện. Bạn có thể nghĩ đến những vấn đề gì mà cần phải giải quyết cho một hệ thống phi tập trung như vậy để hoạt động bình thường? Cũng có là vô số chúng; một số sẽ là chung cho hầu hết việc sử dụng blockchain một số trường hợp cụ thể cho một số ít. Hãy để chúng tôi thảo luận về ít nhất một số các tình huống cần được giải quyết:
  • Ai sẽ duy trì sổ cái phân tán của giao dịch? Nếu tất cả những người tham gia duy trì, hoặc chỉ một số ít sẽ làm gì? Làm thế nào về các nút máy tính không đủ mạnh để xử lý các giao dịch hoặc không có đủ không gian lưu trữ để chứa toàn bộ lịch sử của các giao dịch?
  • Làm thế nào để có thể duy trì một trạng thái nhất quán duy nhất của sổ cái phân tán? Độ trễ mạng, gói rớt, cố ý hack, vv là không thể tránh khỏi. Làm thế nào hệ thống sẽ tồn tại tất cả những điều này?
  • Ai sẽ xác nhận hoặc làm vô hiệu các giao dịch? Chỉ một số nút được ủy quyền sẽ xác thực hoặc tất cả các nút cùng nhau sẽ đạt được sự đồng thuận? Nếu một số thì sao của các nút không khả dụng tại một thời điểm nhất định?
  • Điều gì sẽ xảy ra nếu một số nút máy tính cố tình muốn để phá hoại hệ thống hoặc cố gắng từ chối một số giao dịch?
  • Bạn sẽ nâng cấp hệ thống như thế nào khi có không có thực thể tập trung để chịu trách nhiệm? Trong một mạng phi tập trung, điều gì sẽ xảy ra nếu một vài nút máy tính nâng cấp bản thân và phần còn lại thì không?

Block mở rộng

Chúng tôi đã xem xét blockchain từ góc độ lịch sử và cách nó chứng minh là một trong những công nghệ đột phá nhất hiện nay. Trong khi khám phá nó về mặt kỹ thuật trong chương này, chúng ta đã tìm hiểu về các vấn đề khả năng mở rộng vốn có cho hầu hết các hương vị Blockchain. 

Theo thiết kế, các blockchains rất khó để quy mô và do đó là một khu vực nghiên cứu trong học thuật và cho một số đổi mới- các công ty được định hướng. Nếu bạn nhìn vào việc áp dụng Bitcoin, nó không được sử dụng để thay thế tiền tệ fiat do những thách thức về khả năng mở rộng vốn có. Bạn không thể mua cà phê bằng Bitcoin và đợi một giờ cho giao dịch để giải quyết. Vì vậy, Bitcoin đang được sử dụng như một loại tài sản để các nhà đầu tư đầu tư trong.

Một mạng blockchain Bitcoin không có khả năng đáp ứng như nhiều giao dịch như Visa hoặc MasterCard, kể từ ngày hôm nay. Nhớ lại các giao thức đồng thuận mà chúng tôi đã nghiên cứu cho đến nay, chẳng hạn như PoW của Bitcoin hoặc Ethereum, hoặc PoS và sự đồng thuận BFT khác của một số các loại blockchain khác như Multichain, Hyperledger, Ripple, hoặc Bạc hà. 

Tất cả các mục tiêu chính của thuật toán đồng thuận này là Khả năng chịu lỗi của Byzantine. Theo thiết kế, mọi nút (ít nhất là các nút đầy đủ) trong một mạng blockchain duy trì bản sao của riêng nó của toàn bộ blockchain, xác thực tất cả các giao dịch và khối, phục vụ các yêu cầu từ các nút khác trong mạng, v.v. để đạt được sự phi tập trung, điều này sẽ trở thành một nút thắt cổ chai để có khả năng mở rộng. 

Hãy xem điều trớ trêu ở đây — chúng tôi thêm nhiều máy chủ hơn vào một hệ thống cho khả năng mở rộng, nhưng điều tương tự không áp dụng trong một hệ thống phi tập trung hệ thống bởi vì với số lượng nút nhiều hơn, độ trễ chỉ tăng lên. Mặc dù mức độ phân cấp có thể tăng lên với số lượng lớn hơn của các nút trong mạng phi tập trung, số lượng giao dịch trong mạng lưới cũng tăng lên, dẫn đến tăng yêu cầu về tài nguyên máy tính và lưu trữ. 

Hãy nhớ rằng tình huống này là áp dụng nhiều hơn trên các blockchains công cộng và ít áp dụng hơn cho các blockchain riêng tư. Các blockchains riêng có thể dễ dàng mở rộng quy mô so với các blockchains công khai bởi vì các thực thể kiểm soát có thể xác định và đặt các thông số kỹ thuật của nút với sức mạnh tính toán cao và nhiều băng thông hơn. Ngoài ra, có thể được một số tác vụ nhất định được giảm tải từ blockchain và tính toán ngoài chuỗi có thể giúp hệ thống mở rộng quy mô tốt.

Trong chương này, chúng ta sẽ tìm hiểu một số kỹ thuật chia tỷ lệ chung, và thảo luận về các kỹ thuật mở rộng quy mô cụ thể của Bitcoin và Ethereum trong các chương tương ứng. Xin lưu ý rằng tất cả các kỹ thuật chia tỷ lệ có thể không áp dụng cho tất cả các loại hương vị hoặc trường hợp sử dụng blockchain. Cách tốt nhất là hiểu các kỹ thuật về mặt kỹ thuật và sử dụng kỹ thuật tốt nhất có thể trong một tình huống đã cho.

Tính toán ngoài Block

Tính toán ngoài chuỗi là một trong những kỹ thuật hứa hẹn nhất để mở rộng quy mô giải pháp blockchain. Ý tưởng là hạn chế việc sử dụng blockchain và làm công việc nặng nhọc bên ngoài nó và chỉ lưu trữ kết quả trên blockchain. Hãy nhớ rằng không có định nghĩa tiêu chuẩn nào về cách thức off-chain tính toán sẽ xảy ra. Nó phụ thuộc nhiều vào tình huống và những người đang cố gắng giải quyết vấn đề đó. 

Ngoài ra, các hương vị blockchain khác nhau có thể yêu cầu các cách tiếp cận khác nhau để tính toán ngoài chuỗi. Ở cấp độ cao, nó là giống như một lớp khác trên blockchain nặng, nhiều tính toán làm việc và sử dụng blockchain một cách khôn ngoan. 

Rõ ràng, bạn có thể không giữ lại tất cả các đặc tính của blockchain bằng cách thực hiện các phép tính chuỗi, nhưng cũng đúng là bạn có thể không cần chuỗi khối cho tất cả các loại yêu cầu tính toán và chỉ có thể sử dụng nó cho các điểm đau cụ thể.Các tính toán ngoài chuỗi có thể nằm trên một sidechain, có thể là được phân phối giữa một nhóm ngẫu nhiên các nút hoặc có thể được tập trung như ổn. Các chuỗi bên độc lập với chuỗi khối chính. 

Nó không chỉ giúp mở rộng quy mô blockchain tốt, nó cũng cô lập các thiệt hại đối với sidechain và ngăn chặn blockchain chính khỏi bất kỳ thiệt hại nào từ một  sidechain. Một sidechain ví dụ như vậy là “Lightning Network” cho Bitcoin sẽ giúp thực hiện các giao dịch nhanh hơn với mức phí tối thiểu; điều đó cũng sẽ hỗ trợ thanh toán vi mô. Một ví dụ khác về sidechain cho

Bitcoin là “Zerocash”, mục tiêu chính của nó không thực sự là khả năng mở rộng, nhưng sự riêng tư. Nếu bạn đang sử dụng Zerocash cho các giao dịch Bitcoin, bạn không thể được theo dõi và quyền riêng tư của bạn được bảo toàn. Chúng tôi sẽ giới hạn cuộc thảo luận của chúng tôi ở các kỹ thuật khả năng mở rộng chung chung và không thảo luận chi tiết về Khả năng mở rộng của Bitcoin.

Một câu hỏi rõ ràng có thể xuất hiện vào lúc này là làm thế nào mọi người sẽ kiểm tra tính xác thực của các giao dịch nếu chúng được gửi ngoài chuỗi. Đầu tiên, để tạo một giao dịch hợp lệ, bạn không cần blockchain. Chúng ta đã học trong phần “Mật mã học” trong chương này về mật mã khóa asymmetric được sử dụng bởi hệ thống blockchain. Đến thực hiện một giao dịch, bạn phải là chủ sở hữu của một khóa cá nhân để bạn có thể ký giao dịch. Khi giao dịch được tạo, có những lợi thế khi nó được đưa vào blockchain. Không thể chi tiêu gấp đôi với

Blockchain Bitcoin và cũng có những lợi thế khác. Hiện tại, mục tiêu duy nhất là đưa bạn lên tàu với thực tế là bạn có thể tạo giao dịch miễn là bạn sở hữu khóa cá nhân cho tài khoản của mình. Các chuỗi khối bitcoin là một chuỗi khối không trạng thái, theo nghĩa mà chúng làm không duy trì trạng thái của một tài khoản. Mọi thứ trong chuỗi khối Bitcoin là trình bày dưới dạng một giao dịch. Để có thể thực hiện một giao dịch, bạn phải thực hiện một giao dịch trước đó và không có khái niệm “đóng số dư ”cho một tài khoản, chẳng hạn như vậy. 

Ngược lại, chuỗi khối Ethereum là một “trạng thái”! Các khối trong chuỗi khối Ethereum chứa thông tin xem xét trạng thái của toàn bộ khối mà số dư tài khoản cũng là một phần. Thông tin trạng thái chiếm không gian đáng kể khi mọi nút trong mạng duy trì nó. Tình huống này cũng hợp lệ đối với các blockchain khác đó là trạng thái. Hãy lấy một ví dụ để hiểu rõ hơn về điều này. 

Alice và Bob là hai các bên có nhiều giao dịch với nhau. Hãy nói rằng họ thường có 50 giao dịch tiền tệ trong một tháng. Trong một blockchain trạng thái, tất cả các giao dịch riêng lẻ này sẽ có thông tin trạng thái của chúng,và điều đó sẽ được duy trì bởi tất cả các nút. 

Để giải quyết thách thức này, khái niệm “kênh nhà nước” được giới thiệu. Ý tưởng là cập nhật blockchain với kết quả cuối cùng, chẳng hạn như vào cuối tháng hoặc khi nào đạt đến một ngưỡng giao dịch nhất định và không đạt đến từng Giao dịch. Các kênh trạng thái về bản chất là một kênh giao tiếp hai chiều giữa người dùng, đối tượng hoặc dịch vụ. Điều này được thực hiện với sự bảo mật tuyệt đối bởi sử dụng các kỹ thuật mật mã. Chỉ để biết rõ hơn về cách nó hoạt động, hãy nhìn vào Hình 2-28

BlockChain? cách hoạt động và kiến thức nền tảng

Hình 2-28. Các kênh trạng thái để tính toán ngoài chuỗi

Lưu ý rằng các kênh nhà nước ngoài chuỗi chủ yếu là riêng tư và giới hạn giữa một nhóm người tham gia. Hãy nhớ rằng trạng thái blockchain cho những người tham gia cần phải được khóa ở bước đầu tiên. Một trong hai nó có thể là một sơ đồ MultiSig hoặc một khóa dựa trên hợp đồng thông minh. Sau khóa, những người tham gia thực hiện các giao dịch với nhau được bảo mật bằng mật mã. Tất cả các giao dịch đều được ký bằng mật mã, điều này làm cho chúng có thể xác minh được và các giao dịch này không ngay lập tức được gửi lên blockchain. Như đã thảo luận, các kênh trạng thái này có thể có tuổi thọ được xác định trước hoặc có thể bị ràng buộc với số lượng giao dịch được thực hiện về khối lượng / số lượng hoặc bất kỳ định lượng nào khác đo lường. 

Vì vậy, kết quả cuối cùng của các giao dịch được giải quyết dựa trên blockchain và mở khóa trạng thái là bước cuối cùng. Các kênh trạng thái có thể được triển khai rất khác nhau trong các các trường hợp sử dụng và việc triển khai chúng thực sự được để cho các nhà phát triển. Đó chắc chắn là một chặng đường phía trước và là một trong những thành phần quan trọng nhất để áp dụng chính thống các ứng dụng blockchain. Đối với Bitcoin, Lightning Network được thiết kế để tính toán ngoài chuỗi và làm cho giao dịch thanh toán nhanh hơn. Tương tự, “Mạng lưới Raiden” được thiết kế cho chuỗi khối Ethereum. Có rất nhiều khác như vậy phát triển để làm cho các khoản thanh toán vi mô nhanh hơn và khả thi hơn trên mạng blockchain.

Trạng thái chuổi khối shareding

Sharding là một trong những kỹ thuật có khả năng mở rộng đã có từ lâu đời và đã là một chủ đề được tìm kiếm nhiều hơn cho cơ sở dữ liệu. Mọi người đã sử dụng cái này kỹ thuật khác nhau trong các trường hợp sử dụng khác nhau để giải quyết khả năng mở rộng cụ thể những thách thức. Trước khi chúng tôi hiểu cách nó có thể được sử dụng trong việc mở rộng quy mô blockchain cũng vậy, trước tiên chúng ta hãy hiểu ý nghĩa của nó.

Đọc / ghi đĩa luôn là một nút thắt cổ chai khi xử lý các tập dữ liệu. Khi dữ liệu được phân vùng trên nhiều đĩa, đọc / ghi có thể được thực hiện song song và độ trễ giảm đáng kể. Kỹ thuật này được gọi là sharding. Hãy nhìn vào Hình  2-29

BlockChain? cách hoạt động và kiến thức nền tảng

Hình 2-29. Ví dụ về sharding cơ sở dữ liệu

Thông báo trong hình 2-29 cách phân vùng ngang được thực hiện để phân phối một bảng cơ sở dữ liệu 300GB thành ba phần, mỗi phần 100GB và được lưu trữ trên các phiên bản máy chủ riêng biệt. Khái niệm tương tự cũng được áp dụng cho blockchain, nơi trạng thái blockchain tổng thể được chia thành các các mảnh có chứa chất nền của riêng chúng. 

Chà, nó chắc chắn không dễ dàng như Sharding một cơ sở dữ liệu chỉ với thực hiện phân vùng theo chiều ngang. Vì vậy, làm thế nào để sharding thực sự hoạt động trong bối cảnh của blockchain? Các ý tưởng là các nút không được yêu cầu tải xuống và giữ một bản sao của toàn bộ chuỗi khối. 

Thay vào đó, họ sẽ tải xuống và giữ các phần (phân đoạn) có liên quan đến chúng. Bằng cách đó, họ chỉ có thể xử lý những giao dịch có liên quan đến dữ liệu họ lưu trữ và song song có thể thực hiện các giao dịch. Vì vậy, khi một giao dịch xảy ra, nó được chuyển đến chỉ các nút cụ thể tùy thuộc vào phân đoạn mà chúng ảnh hưởng. 

Nếu như bạn nhìn nó từ một lăng kính khác, tất cả các nút không bắt buộc phải làm tất cả các loại tính toán và xác minh cho mỗi và mọi giao dịch. MỘT cơ chế hoặc một giao thức có thể được xác định để liên lạc giữa phân đoạn khi cần nhiều hơn một phân đoạn để xử lý bất kỳ các giao dịch. Xin lưu ý rằng các blockchains khác nhau có thể có các biến thể khác nhau của sharding.

Để cung cấp cho bạn một ví dụ, bạn có thể chọn một sharding cụ thể kỹ thuật cho một tình huống nhất định. Một ví dụ có thể là nơi phân đoạn bắt buộc phải có nhiều tài khoản duy nhất trong đó. Nói cách khác, mỗi tài khoản duy nhất nằm trong một phân đoạn (áp dụng nhiều hơn cho phong cách Ethereum các blockchains có trạng thái) và rất dễ dàng cho các tài khoản trong một mảnh để giao dịch với nhau. Rõ ràng, một trích xuất cấp nữa ở mức phân đoạn là bắt buộc để  sharding hoạt động và các nút có thể giữ chỉ một tập hợp con của thông tin

Leave a Reply