Khoảng hai tuần trước, tôi đã xây dựng một blockchain từ đầu để hiểu về nó nhiều hơn. Tôi làm vậy để chuẩn bị cho một phiên hội thảo tại Malaysia mang tên Cuộc cách mạng Blockchain thuộc khuôn khổ Hội nghị chuyên đề Magic Academy năm 2017. Trước đây tôi chỉ xây dựng trên blockchain Bitcoin hiện có. Các thuật ngữ như ‘phân tán’, ‘sổ cái’, ‘phân quyền’, ‘hàm băm mật mã’, ‘bằng chứng xử lý’ đã khơi gợi các khái niệm trong đầu tôi.
Các thuật ngữ trở nên đơn giản hơn khi tôi xây dựng phiên bản blockchain của riêng mình. Tôi cũng đã choáng ngợp khi nhận ra tiền và hợp đồng có thể lập trình được! Chúng ta đang chứng kiến một cuộc cách mạng với xu hướng hiện hành huy động vốn thông qua Initial Coin Offerings của các công ty. Các hệ sinh thái mới đang phát triển, nơi các doanh nghiệp (thậm chí cả cá nhân) có thể phát hành đồng tiền số riêng của họ. Không cần phải là một quốc gia có chủ quyền để thực hiện điều đó. Thật đáng kinh ngạc! Giờ đây bạn có thể chọn nơi để gửi gắm niềm tin, đó là một chủ đề mà tôi đặc biệt quan tâm. Nếu bạn không tin một đồng tiền hoặc token nhất định, bạn có thể hướng đến một loại khác… hoặc tạo ra đồng tiền của riêng bạn.
Đi ngược lại một chút, trước tiên hãy tìm hiểu nguyên lý hoạt động của blockchain. Phát triển kiến thức từ gốc giúp chúng ta hiểu được bức tranh lớn mà các nhà phát triển blockchain tuyệt vời cũng như các doanh nghiệp và nhà đổi mới đang vẽ lên xung quanh chúng ta trong công cuộc xây dựng tương lai của tiền tệ và các loại hợp đồng.
Lưu ý nhỏ: Mục đích của bài viết là giúp bạn đọc hiểu các thuật ngữ về blockchain và cách hoạt động của nó. Dù bạn là chuyên viên kỹ thuật hoặc nhà kinh doanh, hãy đọc tiếp kể cả các đoạn mã nhé.
Blockchain là gì?
Một danh sách các block (hồ sơ) được liên kết với nhau bằng các hash (hàm băm), được duy trì như một cơ sở dữ liệu phân tán và phi tập trung.
Trước tiên chúng ta hãy xem những thành phần cấu thành một block:
Mỗi block trong blockchain bao gồm:
previous_block_hash: Hàm băm là bước cơ bản trong việc tạo ra một blockchain. Nó bao gồm việc lấy một chuỗi ký tự có độ dài bất kỳ, cho chạy một thuật toán (Bitcoin sử dụng thuật toán SHA-256) và xuất hàm đầu ra có độ dài cố định. Mở rộng khái niệm này ra một chút.
index: Xác định số block.
data: Đây là phần cho phép lập trình tiền hoặc hợp đồng. Nó có thể là một đối tượng có chứa thông tin như địa chỉ ‘đến’, địa chỉ ‘từ’ và ‘số lượng’ (đối với tiền tệ) hoặc các chi tiết/logic để thực hiện hợp đồng.
timestamp: Thời gian khi block được tạo ra
current_block_hash: Như chúng ta sẽ thấy trong phần tiếp theo, tính bất biến của blockchain phát sinh từ đây.
nonce: Một chuỗi (tùy ý) được thêm vào hàm băm của block để thiết lập thuật toán Bằng chứng xử lý (PoW), yêu cầu đưa các node cạnh tranh đi đến một thỏa thuận chung để để chấp nhận block nào trong bước tiếp theo của một blockchain phát triển.
Vai trò của Hàm băm trong Blockchain
Một hàm băm được sử dụng để xác định duy nhất nội dung của một block. Như hiển thị trong đoạn mã ở trên, hàm băm của block được tạo ra bằng thuật toán SHA-256 từ tất cả các thành phần của block trước đó: hàm băm, index (tùy chọn), data (dữ liệu) và timestamp (dấu thời gian).
Kết quả là một hàm băm duy nhất được tạo ra để xác định block. Nếu một trong các trường dữ liệu trên thay đổi, hàm băm tương ứng sẽ khác đi, do đó bạn có thể biết rằng nội dung block đã được thay đổi.
Hơn nữa, vì block đó là một bộ phận của blockchain dài hơn, previous_block_hash (hàm băm block trước đó) của block kế tiếp sẽ khác biệt và không tương thích. Điều này lần lượt ảnh hưởng đến block sau đó và sau đó nữa.
Vì vậy, hàm băm tăng cường tính bảo mật của block, và tất cả các block trước đó cho đến block nguồn (block đầu tiên). Phương pháp bảo mật như vậy tạo tính chất bất biến cho blockchain. Nếu phân tán một blockchain (nằm trên các node/máy tính khác nhau), một nhân tố tiêu cực phải có đủ quyền lực hàm băm để cập nhật nhiều block và kiểm soát mạng lưới nhằm lan truyền phiên bản blockchain của mình. Điều này càng khó khăn hơn khi blockchain có tính phân quyền, như tôi chia sẻ trong phần tiếp theo.
Trong kho lưu trữ mã, khi bạn khởi động ruby blockchain_generator.rb, dữ liệu đầu ra sẽ có dạng như sau:
Đầu ra cho thấy dạng của các block trong blockchain khi được tạo ra bởi một node, cấu thành một blockchain phân quyền. Nó an toàn đến một mức độ nhất định nhờ sử dụng cơ chế hàm băm cho từng block và độ an toàn sẽ tăng lên khi chiều dài của blockchain phát triển. Lưu trữ blockchain trên nhiều node khiến nó có tính phân tán, nhờ đó tăng cường bảo mật thông qua các bản sao.
Do tính chất bất biến, phân tán của blockchain, Công nghệ Sổ cái Phân tán (DLT) cải thiện cách ghi nhận hoặc chia sẻ dữ liệu mà vẫn đảm bảo tầm nhìn thống nhất, chống giả mạo trên nhiều bên, bên nào cũng có thể kiểm tra dữ liệu. Một số ngành công nghiệp có thể đạt tới bước cải tiến rất lớn về năng suất thông qua DLT khi các giao dịch được xác minh, mã hóa và đánh dấu thời gian cũng như ghi nhận một cách minh bạch.
Dựa vào những gì chúng ta đang đề cập đến, khi các node có thể cập nhật lẫn nhau mà không cần chính quyền trung tâm, ta gọi đó là tính phân quyền của blockchain.
Tính phi tập trung
Nếu một node cập nhật tất cả các node khác, blockchain có tính tập trung. Nếu một node bất kỳ có thể cập nhật các node khác thì gọi là blockchain phi tập trung.
Để thực hiện phân quyền an toàn, cần có một phương thức nhằm đạt sự đồng thuận trong một mạng lưới các node.
Một trong những phương thức phổ biến là sử dụng Bằng chứng Xử lý (PoW). Đó là một thuật toán khiến các node trong mạng lưới đạt sự đồng thuận phân tán. Bước này yêu cầu sử dụng tham số nonce.
Khi một block mới đang hình thành như mô tả ở trên, tất cả các nội dung đều được chuyển thành hàm băm. Đầu ra của một hàm băm cần đáp ứng một mức độ khó đặt sẵn, ví dụ như “yêu cầu hai chuỗi số 0 trong hàm băm”.
Trong trường hợp này, nonce đóng vai trò một chuỗi tùy ý hoặc một bộ đếm điều chỉnh được để hàm băm tổng thể đáp ứng được mức độ khó.
Nếu current_block_hash (hàm băm block hiện tại) không đáp ứng được mức độ khó thì nonce được điều chỉnh và tính toán một hàm băm mới. Quá trình này lặp lại cho đến khi hoàn thành một hàm băm thỏa điều kiện thiết lập mức độ khó.
Hiện nay chỉ có thuật toán brute force hoạt động nhằm xác định thuật toán PoW, tức là nonce được điều chỉnh và tính toán lại hàm băm cho đến khi thỏa mãn mức độ khó. Đó là lý do tại sao các thợ đào Bitcoin sử dụng máy tính chuyên biệt để tính toán PoW. Sau khi hoàn thành, rất dễ để xác minh PoW này. Do đó, thợ mỏ đầu tiên xác định PoW chính xác sẽ lan truyền block trong mạng lưới. Các thợ mỏ khác sẽ kiểm tra tính chính xác (kiểm tra bằng thuật toán riêng của họ), chấp nhận block hợp lệ và bắt đầu khai thác block tiếp theo.
Với thuật toán PoW, các bên có thể đạt sự đồng thuận mà không cần một chính quyền trung tâm tin cậy. Đối với Bitcoin, không cần ngân hàng hay nhà quản lý hoặc người trung gian để xác minh một block (PoW thực hiện) hoặc tính xác thực của các giao dịch trong block (hàm băm thực hiện).
Hơn nữa, nhân tố tiêu cực tôi nói đến ở trên nếu muốn kiểm soát blockchain sẽ gặp thêm thách thức. Họ vừa phải cập nhật hàm băm của nhiều block, vừa phải vượt qua các node khác trong mạng, để block của họ được chấp nhận trong một blockchain phân quyền và phân tán. Điều này chỉ có thể xảy ra nếu nhân tố đó có khả năng sắp đặt tấn công cục bộ – gần như là không thể khi blockchain phát triển trong một mạng lưới lớn các node.
Các loại blockchain
Một blockchain có thể có các đặc tính công khai, riêng tư, cấp quyền, không được cấp quyền, tập trung, phân quyền.
Tất cả các cấu hình đó có thể được thiết lập dựa trên yêu cầu của mạng lưới. Hiện nay các chính phủ và các tập đoàn đang nỗ lực khám phá cách sử dụng công nghệ DLT theo phương thức tập trung hoặc phân quyền để cải thiện việc theo dõi hàng hoá trong chuỗi cung ứng, thanh toán giao dịch tốt hơn, cắt giảm yêu cầu bảo hiểm hai lần, cải thiện thanh toán xuyên biên giới, v.v… Các biến thể khác của blockchain hiện đang được thử nghiệm.
Tìm hiểu tiếp theo
Đến đây, thông qua bảng mã chúng ta đã hiểu thế nào là một block, cách sử dụng hàm băm và ý nghĩa của nó trong một blockchain. Trong một block, làm thế nào để triển khai đồng tiền/token (thẻ) hoặc một hợp đồng cũng được hiển thị ngắn gọn thông qua biến data. Bạn cũng có thể thấy nguyên nhân tại sao không cần trung gian trong một mạng lưới phân quyền ngang cấp.
Tôi cố ý viết vắn tắt như trên dù biết bài viết không thực sự công bằng đối với toàn bộ sức mạnh của công nghệ blockchain. Bài viết giúp chuyển đổi một số thuật ngữ chuyên ngành thành các thuật ngữ có ý nghĩa mà chúng ta có thể sử dụng để xây dựng kiến thức về cuộc cách mạng đang diễn ra xung quanh chúng ta. Từ đây bạn có thể lại cân nhắc các tin tức hoặc suy nghĩ sâu sắc về cách các doanh nghiệp đạt lợi ích khi sử dụng sổ cái phân tán. Giống như bạn, tôi cũng sẽ tiếp tục phát triển từ đây và chia sẻ nhiều hơn theo thời gian.
Nếu bạn muốn tìm hiểu sâu hơn, tôi cũng đã tổng hợp một danh sách các nguồn tham khảo để bạn xem tiếp. Tôi hy vọng hướng dẫn này hữu ích đối với bạn!
Nguồn tham khảo
Mã nguồn (viết ở dạng Ruby): Github.
Sự kiện khởi đầu năm 2008: Bitcoin White Paper
Tài liệu về Bitcoin: Mastering Bitcoin, Programming the Open Blockchain
Một blockchain lớn khác sau Bitcoin: Ethereum White Paper
Tài liệu về Hàm băm: Blockgeeks
Sự thật về Blockchain: From HBR
Xem thêm:
Sn_Nour