Vấn đề “concurrency” trong Cardano (P1)

Vấn đề “concurrency” trong Cardano (P1)

Ba tháng sau hardfork Alonzo và hợp đồng thông minh Plutus chính thức khởi chạy trên mạng chính của Cardano. Có 1 vấn đề được nhiều người bàn tán tới đó là đồng thời, đây không phải là một khái niệm mới lạ với các blockchain sử dụng mô hình sổ cái UTXO tuy nhiên nó lại được biết nhiều và gắn liền với sự kiện của 1 Dapp khi chạy testnet Cardano. Đã có nhiều bài báo giải thích, nhiều cuộc tranh luận xảy ra trên các phương tiện truyền thông. Nhìn chung sẽ có 2 ý kiến trái chiều như sau:

1- Những người am hiểu về Cardano cho rằng đây là 1 điều bình thường và không nên coi là sự cố.

2- Những người ít hiểu về Cardano và những người anti Cardano thì cho rằng đây là 1 sự cố và là điểm yếu của Cardano.

Vậy, sau đây chúng ta sẽ cùng đi tìm hiểu, phân tích về “đồng thời” – Concurrency

“Đồng thời” là gì?

Đồng thời là khả năng các phần hoặc đơn vị khác nhau của một chương trình, thuật toán, thực hiện các công việc không theo thứ tự hoặc đồng thời mà không ảnh hưởng đến kết quả cuối cùng. Trong thế giới tiền điện tử, chúng ta có thể hiểu rõ hơn về đồng thời, đặc biệt là khi nói đến hợp đồng thông minh, vì khả năng một số tác nhân khác nhau có thể tương tác với cùng một hợp đồng cùng một lúc.

Mô hình UTxO và tài khoản/số dư.

Muốn hiểu rõ tại sao có vấn đề “đồng thời” thì chúng ta cần hiểu được kiến thức cơ bản về cách hoạt động 2 mô hình sổ cái Tài khoản/số dư và UTxO

 Mô hình tài khoản/số dư

Mô hình kế toán này dựa trên số dư tài khoản của Ethereum và chỉ hỗ trợ một địa chỉ trên mỗi ví, với các giao dịch trong ví đó, không giống như mô hình UTxO của Cardano hoặc Bitcoin, hỗ trợ nhiều địa chỉ và với nhiều giao dịch của chúng trên mỗi ví.

Trong mô hình cân bằng tài khoản của Ethereum, trạng thái của mỗi khối không được lưu trữ trong các khối đang được khai thác, thay vào đó nó được lưu trữ trong các nút cục bộ, sau đó đi đến đồng thuận bằng cách so sánh ‘StateRoot’ – hoặc trạng thái tổng thể của hệ thống.

 

Máy ảo Ethereum (EVM) diễn giải các giao dịch là các sự kiện và xác định kết quả chuyển đổi trạng thái của các sự kiện này dựa trên trạng thái trước đó. Điều này làm cho việc trừu tượng hóa của nhà phát triển trở nên dễ dàng hơn nhiều và tạo điều kiện thuận lợi cho việc xây dựng nhiều DApp như Uniswap, AAVE, Curve.

Bản thân các hợp đồng thông minh là đồng thời, nhưng thứ tự giao dịch thực tế vẫn là tuần tự và không đồng thời. Điều này có nghĩa là trong khi Alice, Bob và Eve có thể đang truy cập vào một DEX để trao đổi các cặp mã thông báo, người khai thác vẫn sẽ tuần tự sắp xếp các giao dịch riêng lẻ của họ khi họ đóng gói tất cả các giao dịch này thành các khối. Sau đó, các khối đó được thêm vào chuỗi khối Ethereum và sau đó trình xác thực sẽ thực thi lại chúng để đảm bảo rằng các giao dịch thực sự là chính xác.

 Mô hình UTxO

Cardano sử dụng mô hình eUTxO, xây dựng dựa trên mô hình UTxO của Bitcoin. Mô hình Cardano được gọi là Mô hình “Đầu ra giao dịch chưa chi tiêu mở rộng”. Trong mô hình này, việc gửi và nhận tiền không được lưu trữ dưới dạng số dư mà là số tiền giao dịch chưa sử dụng (UTxO) được liên kết với địa chỉ của ví. Mỗi UTxO này chỉ có thể được sử dụng một lần. Một ví dụ giải thích điều này tốt nhất:

Khi bạn thực hiện một giao dịch trên Cardano, bạn phải sử dụng toàn bộ UTxO. Vì vậy, nếu bạn có 1BTC trong ví và bạn muốn gửi 0.5 BTC cho bạn của mình, ví của bạn sẽ tạo một giao dịch sử dụng toàn bộ 1 BTC; gửi 0.5BTC cho bạn của bạn và gửi lại 0.5BTC vào ví mà nó đến (của bạn). Điều này là do toàn bộ 1BTC UTxO chỉ có thể được sử dụng một lần. Vì vậy, bạn nhận được 0.5BTC được gửi lại cho bạn, dưới dạng UTxO mới, để chi tiêu một lần nữa. (Xem hình minh họa bên dưới)

 

 

Vì vậy, trong mô hình Cardano và Bitcoin -UTxO- số dư của ví được tạo thành từ tất cả các UTxO được liên kết với nó. Điều này rất quan trọng ở đây bởi vì, như đã giải thích, khi bạn gửi tiền trong một chuỗi khối dựa trên UTxO thì bạn phải sử dụng toàn bộ UTxO vì UTxO chỉ có thể được sử dụng một lần. Số tiền còn lại được gửi trở lại ví gốc dưới dạng UTxO mới để chi tiêu lại.

Hợp đồng thông minh trên Cardano lưu trữ một UTxO và có một số điều kiện nhất định được lập trình trong đó điều chỉnh cách có thể sử dụng UTxO được lưu trữ trong hợp đồng thông minh đó. Bởi vì một UTxO chỉ có thể được sử dụng một lần, điều đó có nghĩa là chỉ một người có thể tương tác và sử dụng hợp đồng thông minh trên mỗi khối (cứ 20 giây một lần trên Cardano). Khi một người đã tương tác với UTxO đó trong hợp đồng thông minh đó, nó sẽ được thay thế bằng UTxO được cập nhật cho khối tiếp theo. Nhưng điều này vẫn có nghĩa là mỗi khối chỉ có 1 người có thể sử dụng hợp đồng thông minh.

Điều này trở nên có vấn đề khi ai đó cố gắng sử dụng các nhóm thanh khoản – cơ sở của phong cách hoán đổi DEX – trên một chuỗi khối dựa trên UTxO. Nhóm thanh khoản là một nhóm quỹ lớn, được gửi bởi nhiều người dùng, được quản lý bởi một hợp đồng thông minh và được sử dụng để tạo điều kiện cho các giao dịch hoán đổi của những người dùng khác. Khái niệm này hoạt động rất tốt trên một blockchain dựa trên tài khoản, tức là Ethereum, nơi nhiều người dùng có thể tương tác với một hợp đồng thông minh trong một khối duy nhất. Nhưng nếu chỉ có một người có thể tương tác với một hợp đồng thông minh trong mỗi khối, tức là cứ sau 20 giây trên Cardano, thì điều đó sẽ tạo ra một lượng lớn tắc nghẽn cho các dApp đang cố gắng hoạt động như vậy.

 

Vấn đề “đồng thời” trên Cardano?

DApp được xây dựng trên Cardano không giới hạn một giao dịch trên mỗi khối. Trên thực tế, ngân sách khối (đó là số lượng giao dịch tối đa mà nó có thể giữ) cho phép thực hiện hàng trăm giao dịch đơn giản và một số tập lệnh phức tạp. Tuy nhiên, mô hình EUTXO cho phép chi tiêu một đầu ra giao dịch chỉ một lần.

Vấn đề đồng thời trên Cardano được tạo ra vì đặc tính của UTxO, do đó hợp đồng thông minh được liên kết với nó, chỉ có thể được sử dụng một lần. Vì vậy, mỗi hợp đồng thông minh chỉ có thể tạo ra một giao dịch trên mỗi khối (Hiện tại, thời gian đóng 1 khối là 20s) . Có nghĩa là:

  • Mỗi khối chỉ có một người có thể tương tác với hợp đồng thông minh Cardano.
  • Các giao thức DeFi muốn cho phép nhiều người dùng tương tác với hợp đồng thông minh cùng một lúc (đồng thời) sẽ không thể thực hiện được nếu được triển khai trong định dạng hơp đồng thông minh hiện tại của họ.

Điều gì sẽ xảy ra với DEX theo mô hình AMM trên Cardano? nhiều người dùng sẽ cố gắng tương tác với một hợp đồng thông minh và chỉ giao dịch của 1 người dùng sẽ thành công. Những người khác sẽ nhận được thông báo rằng giao dịch của họ không thành công và sẽ phải tiếp tục cố gắng cho đến khi giao dịch của họ là giao dịch thành công hoặc họ từ bỏ việc thử. Dẫn đến nhiều người dùng thất vọng vì không thể thực hiện các giao dịch mà họ muốn.

 

Nhưng chỉ vì những gì hoạt động trên một blockchain (Ethereum) không hoạt động trên một blockchain khác (Cardano) điều đó không có nghĩa là vượt trội hoặc kém hơn so với blockchain khác. Nó cho thấy rằng cả hai đều khác nhau. Có nghĩa là mỗi người phải xây dựng con đường riêng của họ đến từng khía cạnh của mục tiêu phi tập trung được chia sẻ của họ. Trên những con đường đó, mỗi người sẽ phải đối mặt với những vấn đề của riêng mình; và một số trong những vấn đề đó sẽ là riêng lẻ và một số sẽ được chia sẻ. “Đồng thời” trên Cardano không phải là một vấn đề và nhiều thách thức hơn liên quan đến một blockchain cơ sở UTxO và không nên được mô tả như một yếu tố hạn chế.

Như vậy qua bài viết này ta có thể tạm thời kết luận vấn đề “đồng thời” là 1 đặc tính của các blockchain hoạt động dựa trên mô hình UTxO. Đây là một đặc tính thuộc về lớp nền tảng của 1 blockchain còn vấn đề gây tranh cãi lại xảy ra ở lớp giao diện (Dapp). Sẽ là chủ quan nếu quy kết đó là điểm yếu của cả 1 nền tảng blockchain. Vậy cách giải quyết vấn đềtrên thế nào? Tất nhiên để giải quyết vấn đề thì phải giải quyết cả ở phần gốc (lớp nền tảng) và ở phần ngọn (lớp giao diện – Dapp). Và chúng ta sẽ làm rõ việc này trong bài viết sau tại đây

Nguồn: tổng hợp

One thought on “Vấn đề “concurrency” trong Cardano (P1)

Leave a Reply

Your email address will not be published.