Khái quát về Blockflow: Thuật toán phân mảnh của Alephium

Alephium Việt Nam 🇻🇳
9 min readMay 4, 2024

--

Đây là phần thứ tư trong loạt series những cải tiến kỹ thuật của Alephium. Bạn có thể tìm đọc bài viết về PoLW, sUTXO, và Alphred VM. Trong bài viết này, chúng ta sẽ cùng nhau tìm hiểu về các concept của thuật toán phân mảnh (sharding) và cách Blockflow hoạt động như thế nào để có thể cải thiện hiệu suất trên Alephium blockchain.

TL;DR — Alephium là một blockchain với các chuổi khối phân mảnh (sharded blockchain): Trạng thái (state) của nó được chia thành các nhóm (group) và các giao dịch được xử lý song song bởi nhiều block khác để có khả năng tăng được băng thông. Thuật toán sharding của Alephium còn được gọi là Blockflow. Nó cho phép cải thiện rất nhiều về UX (trải nghiệm) với các giao dịch giữa tuần tự nhiều group khác nhau. Blockflow cũng quản lý mối liên hệ giữa các block trong tất cả các chuổi nhằm cho phép số lượng giao dịch mỗi giây cao trong khi vẫn duy trì được những đặc điểm vốn có của ledger (cuôn sổ cái) trên mạng lưới.

Sharding trong các bối cảnh của Blockchain hiện nay

Sharding là một kỹ thuật quản lý cơ sở dữ liệu bao gồm việc chia các tập dữ liệu lớn thành các phần nhỏ hơn để dễ quản lý. Khi xử lý các cơ sở dữ liệu lớn, việc xử lý tất cả dữ liệu trên một máy hoặc trong một bảng tính đơn là điều không thực tế. Vì vậy, nhờ có sharding mà cơ sở dữ liệu được phân phối trên nhiều máy bằng cách tạo ra nhiều bảng tính nhỏ hơn. Điều này cho phép hệ thống có thể thực hiện các tác vụ song song để cải thiện băng thông và lưu lượng.

Trên bối cảnh thực trạng của các blockchain hiện nay, sharding tăng thông lượng bằng các tạo ra các giao dịch song song với nhau. Tuy nhiên, điều này làm gia tăng sự phức tạp vì việc duy trì một sổ cái an toàn và nhất quán trở nên rất khó khăn. Một số sharded blockchain giải quyết những đánh đổi này theo những các khác nhau:

Polkadot, một nền tảng đa chuỗi được phát triển bởi Web3 Foundation đã giới thiệu một cơ chế bảo vệ được gọi là “parachains”. Cơ chế này có thể hiểu đơn giản rằng các chuỗi riêng lẻ chạy song song và được kết nối với nhau thông qua chuỗi chuyển tiếp trung tâm (central relay chain) được gọi là “Pokadot Relay Chain.”

Zilliqa đã triển khai sharding theo cách khác. Họ sử dụng phân mảnh ở cấp độ mạng lưới (network-level sharding) để mở rộng quy mô blockchain bằng cách chia các giao dịch thành các khối nhỏ hơn. Tuy nhiên, điều này không hỗ trợ phân đoạn trạng thái (state sharding) vì global state trên toàn mạng lưới phải được chia sẻ bởi tất cả các shard với nhau. Điều này hạn chế khả năng mở rộng của nó.

Kadena thực hiện sharding bằng cách giới thiệu “chainweb”, một cấu trúc blockchain được đan xen vào nhau. Cấu trúc này chứa các đa chuỗi được liên kết với nhau và cùng nhau để tạo thành một mạng lưới duy nhất.

Quay trở lại với Alephium, chúng tôi đã thực hiện một phương pháp khá độc đáo để phân chia các chuỗi khối trên blockchain. Nó liên quan đến việc sử dụng một DAG và kỹ thuật phân chia này được chúng tôi gọi là Blockflow. Điều này có lợi vì nó không phụ thuộc vào sự điều phối của các chuỗi (ví dụ như trên becon chain) và không làm mất tính bảo mật cho các phân đoạn riêng lẻ (individual shard), cũng như cho phép các giao dịch được diễn ra tuần tự trên các group liên đới (sẽ được giải thích ở phần sau).

Blockflow hoạt động như thế nào?

Nó hoạt động bằng việc chia các giao dịch của mạng lưới thành các chuỗi song song gọi là “shard”, trong khi vẫn có thể duy trì được khả năng bảo mật cao và tính liên kết hiệu quả giữa các shard đó để xử lý các giao dịch một cách liền mạch. Đó là quy tắc để duy trì “dòng chảy của các khối” (block flow) và tính chính xác của blockchain.

Blockflow được xây dựng trên sự kết hợp độc đáo giữa UTXO và PoW trên Alephium và nó tận dụng cấu trúc dữ liệu DAG hai chiều. Bên cạnh đó, Blockflow còn cung cấp khả năng phân chia rất nhẹ và hiệu quả, giúp loại bỏ hoàn toàn nhu yêu cầu không cần thiết khi giao dịch đa chuỗi cũng như làm giảm sự phức tạp đi kèm với các yêu cầu đó.

Blockflow giới thiệu hai cấp độ của partitioning/sharding:

  • Group-Level Sharding:

Các địa chỉ được tổ chức thành nhiều group riêng biệt, hiện tại trên mainnet sẽ bao gồm bốn group (0, 1, 2, 3) và có thể mở rộng thành 32 group.

  • Transaction-Level Sharding:

Các giao dịch được phân chia trong các blockchain riêng biệt và được xác định bởi group nguồn ban đầu và group đích đến của giao dịch. Nếu có các group G trên mạng lưới thì sẽ có các chuỗi G*G. Do đó, trên mainnet hiện có 16 chain và có thể được mở rộng lên đến 1024 nếu cần thiết.

Cho dù người dùng có giao dịch giữa các địa chỉ trong cùng một group hay liên đới các group thì các giao dịch đều được xử lý liền mạch trong một bước bằng các chuỗi khối đã được thêm vào trước đó, chúng chia sẻ các đặc điểm giống hệt nhau và được bảo mật bằng cơ chế đồng thuận Proof of Less Work (PoLW) được cải tiến bởi Alephium.

Phương pháp này trái ngược với các phương pháp phân mảnh chuỗi truyền thống trên các blockchain sử dụng mô hình tài khoản (account-based chain) vì các phương pháp truyền thống này có thể lamf giảm trải nghiệm của người dùng, tăng độ phức tạp và giảm tính bảo mật khi thực hiện các giao dịch đa chuổi.

Một DAG (Directed Acyclic Graph) là một dạng cấu trúc dữ liệu. Nó có thể biểu diễn một khái niệm, một hoạt động và các mối quan hệ của chúng với nhau bao gồm các node được kết hợp lại với nhau và được định hướng theo các hướng đi mà chúng phải nên được diễn ra. Điều này đảm bảo thông tin được xử lý có trật tự giữa các giao dịch, ngăn chặn việc chi tiêu gấp đôi số tiền và chống lại sự từ chối của mạng. DAG giống như một biện pháp kiểm tra an toàn để duy trì các giao dịch một cách công bằng và an toàn có thể xem nó như là một cây thông tin.

Tìm hiểu sâu hơn vào dependencies

Sự phức tạp ở đây là có thể hiểu được cách các block này được kết nối với các khối trước đó để duy trì dependencies một cách mạch lạc và đảm bảo tính chính xác của blokchain.

Các phân đoạn (shard) của các chuỗi khối phân mảnh (sharded blockchain) khác được gọi là các nhóm (group) trên Alephium. Các group này là sự phân chia một cách có logic giữa các sate và tất cả các địa chỉ ví được tạo trên đó. Các group lưu giữ các hồ sơ về state của tất cả các chain được kết nối với chúng, bao gồm tài sản, contract state và contract logic. Đây là cấp dộ đầu tiên của sharding.

Mỗi chuỗi khối chịu trách nhiệm xử lý các giao dịch từ group này sang group khác. Chúng ta sẽ sử dụng ký hiệu “từ” và “đến”. Mặc dù điều này có vẻ khó hiểu nhưng bạn cần hình dung rằng mọi chuỗi đều bắt nguồn từ một group và trong mỗi group đều có một chuỗi kết nối với các group khác bên ngoài chuỗi nằm trong đó. Đây là cấp độ thứ hai của sharding.

Ví dụ, bạn có (mỗi (x,x) là một chain):

  • Group 0 là: (0,0) — (0,1) — (0,2) — (0,3)
  • Group 1 là: (1,1) — (1,0) — (1,2) — (1,3)
  • Group 2 là: (2,2) — (2,0) — (2,1) — (2,3)
  • Group 3 là: (3,3) — (3,0) — (3,1) — (3,2)

Ở mỗi chain trong ngoại đơn quản lý một luồng giao dịch một chiều khác nhau: (0,1) xử lý tất cả các giao dịch từ group 0 đến group 1 và (1,0) quản lý các giao dịch theo hướng ngược lại từ group 1 đến group 0.

(0,0) quản lý luồng giao dịch bên trong của group 0, (1,1) quản lý luồng giao dịch bên trong group 1, v.v… Đây còn được gọi là chuỗi nội bộ nhóm (intragroup chain).

Vì vậy, mọi chuỗi đều là chuỗi liên group (0,1) hoặc chuỗi nội bộ group (1,1). Điều này rất quan trọng vì khi các khối dược khai thác, chúng được kết nối thông qua sự phụ thuộc vào mọi chuỗi trong cùng một group và một chain (intragroup chain) từ một group khác.

Thêm một ví dụ khác về block mined trên chain (1,0), có 7 dependencies:

Bốn dependencies từ mỗi chain bên trong group. Ta có: (1,0) — (1,1) — (1,2) — (1,3).
Ba dependencies từ mỗi group (intragroup chain). Ta có: (0,0) — (2,2) — (3,3).

Những dependencies này được đặt trong block header mới, embed chúng vào block structure. Điều này xảy ra với từng block mới được khai thác trên 16 chain: nhờ có ma trận dữ liệu từ DAG, tất cả chúng đều được kết nối với group khác, duy trì tính toàn vẹn của sổ cái (ledger) trong khi gia tăng được thông lượng.

Single-step cross-group transaction

Điều này cho phép thực hiện một thứ rất độc đáo: tài sản được di chuyển giữa các group chỉ trong một lần giao dịch! Lưu ý rằng không cần chuyển tài sản giữa các chain do cấu trúc sharding-2-chiều độc nhất của Alephium.

Hãy tưởng tượng:
Bob có một địa chỉ trong group 0. Anh ấy muốn gửi $ALPH cho Alice và cô ấy có địa chỉ trong group 3. Lúc này, Bob tạo giao dịch trên ví, nhập địa chỉ của Alice và nhấn “gửi”. Điều gì sẽ xảy ra?

Giao dịch này được bao gồm trong một block trên chain (0,3), nghĩa là chain kết nối giữa group 0 và 3. Điều này kích hoạt thay đổi số dư trên địa chỉ ví của Bob và cập nhật trạng thái của Group 0.

Một block mới trong bất kỳ 4 chain nào thuộc Group 3 sẽ kiểm tra dependencies với tất cả các Group khác và quan sát rằng block mới trong Group 0 đã được commit và đã di chuyển tài sản từ Group 0 sang Group 3. Trạng thái cục bộ trên Group 3 sẽ được cập nhật để thông báo rằng địa chỉ ví của Alice trong Group 3 đã nhận được tài sản từ Group 0 và sẳn sàn để có thể sử dụng.

Qua ví dụ trên, Blockflow cho phép giao dịch được thực hiện trong một thao tác duy nhất thay vì xác minh nhiều lần trong chain nguồn và chain đích như các blockchain khác thường thực thi.

Kết luận…

Là một sharded blockchain, Alephium có thể tăng thông lượng của mình bằng cách thêm nhiều shard hơn. Hiện tại, nó xử lý 400 giao dịch mỗi giây (và có thể đạt 10,000 TPS với 1024 chain với Cập nhật Rhône sắp tới). Và Blockflow là công nghệ cốt lõi trên Alephium, nó cho phép blockchain có thể mở rộng đến mức kinh ngạc như vậy!

Bằng cách tận dụng các quy tắc đồng thuật trong cấu trúc dựa trên DAG, Blockflow đảm bảo tính chính xác và bảo mật của các giao dịch trên tất cả các group. Điều này làm cho nó khác biệt với các thuật toán sharding truyền thống vì nó mang lại trải nghiệm người dùng đẳng cấp và việc phát triển các sản phẩn của lập trình viên diễn ra hiệu quả hơn nhờ vào single step cross-group transaction.

Link bài viết gốc: https://medium.com/@alephium/an-introduction-to-blockflow-alephiums-sharding-algorithm-bbbf318c3402

Nếu bạn có bất kỳ câu hỏi nào, đừng ngần ngại chia sẻ với chúng tôi trên Telegram và kênh X (Twitter) của Cộng Đồng Alephium Việt Nam 🇻🇳 nhé!

--

--

Alephium Việt Nam 🇻🇳
Alephium Việt Nam 🇻🇳

Written by Alephium Việt Nam 🇻🇳

Cộng Đồng Alephium Việt Nam (official community managed) - Telegram: https://t.me/alephiumvn

No responses yet