Public testnet Cardano và nhiều tranh luận trái chiều

Sau nhiều tháng thử nghiệm với các nhóm nhỏ hơn, public testnet Cardano (mạng thử nghiệm công cộng) gần đây đã được nâng cấp để chạy các hợp đồng thông minh. Sự gia tăng hoạt động sau đó bao gồm nhiều thử nghiệm và thử nghiệm dApp, các nhà phát triển mong muốn thực hiện một thử nghiệm quy mô lớn và đưa ra những kết quả với sự nỗ lực chăm chỉ của họ. Nỗ lực này đã tạo ra một cuộc thảo luận gay gắt xung quanh một số quyết định thiết kế đằng sau Cardano. Nhiều người chỉ trích đang sử dụng cuộc thảo luận này như một cơ hội để chỉ nói xấu Cardano, xuyên tạc vấn đề và cuối cùng là đánh giá thấp tiềm năng của một trong những gã khổng lồ của ngành công nghiệp tiền điện tử. Các quan niệm sai lầm hiện đang nổi lên cho thấy Cardano chỉ hỗ trợ một giao dịch trên mỗi khối, chỉ một người dùng có thể tương tác với hợp đồng thông minh tại một thời điểm và Cardano đó cuối cùng được định hướng để tập trung hóa. Tất cả những điều này đều không chính xác và chúng tôi trình bày bên dưới một khung mới và sự khởi đầu của một số giải pháp mà các nhà xây dựng dApp có thể chọn.

Có vẻ như đây là thời điểm thích hợp để team SundaeSwap cân nhắc một số vấn đề phổ biến hơn đang được nêu ra – đặc biệt là các quyết định về thiết kế và kế toán đã khiến Cardano chọn mô hình eUTXO thay vì cách tiếp cận của Ethereum, cũng như tác động của sự lựa chọn này có tính đồng thời (Concurrency) trên chuỗi khối Cardano.

Mặc dù chúng tôi thấy cuộc thảo luận này có nhiều cường độ, chúng tôi hy vọng sẽ từ tốn khám phá một số mặt trái, nhược điểm, quan niệm sai lầm và cuối cùng, đưa ra một số giải pháp tiềm năng. Từ đây trở đi, bài viết này khá kỹ thuật, nhưng chúng tôi sẽ kết thúc bằng phần tóm tắt không mang tính kỹ thuật.

Nghệ thuật thiết kế hệ thống thường là nghệ thuật lựa chọn giữa sự đánh đổi. Thông thường, bạn có thể theo dõi sự phát triển nghề nghiệp của một kỹ sư phần mềm bằng cách họ nhận ra và sử dụng những sự đánh đổi này tốt như thế nào để giải quyết một vấn đề. Lưu ý đối với tất cả chúng ta trong cộng đồng Cardano, cần phân tích những gì mà Cardano đã chọn để thực hiện và một điểm so sánh hữu ích là Ethereum.

Nhiều người đã chỉ ra rằng lựa chọn eUTXO của Cardano có thể gây ra vấn đề khi chuyển giao thức. Điều này chắc chắn đúng; chúng tôi đã đề cập đến điều này trong whitepaper của chúng tôi nhiều tháng trước. Tương tự như vậy Lars Brünjes, Giám đốc Giáo dục tại IOG, đã tweet về nó với nhiều người khác.

Để hiểu đầy đủ về tác động của quyết định này, chúng ta hãy thảo luận một số thông tin cơ bản.

Quay ngược một chút về lịch sử của bitcoin

Bitcoin đã giới thiệu cho thế giới khái niệm theo dõi tiền của người dùng thông qua danh sách “unspent transaction outputs – đầu ra giao dịch chưa được chi tiêu”, gọi tắt là UTXO. Mỗi giao dịch giữa những người dùng tiêu thụ một số đầu vào và tạo ra một số đầu ra, với mỗi đầu ra đại diện cho một gói giá trị (một số bitcoin) và tuyên bố ai có thể chi tiêu nó.

Do đó, nếu ai đó gửi cho tôi 1 bitcoin, sẽ có một giao dịch với đầu ra là 1 bitcoin, với chủ sở hữu là khóa công khai của tôi. Sau đó, tôi có thể gửi 1 bitcoin đó cho ai đó bằng cách thực hiện giao dịch sử dụng đầu vào đó, chứng minh tôi có quyền làm như vậy và tuyên bố đầu ra mới với chủ sở hữu mới.

Điều này có một số lợi ích:

  • Nó cực kỳ đơn giản và an toàn để xác thực. Sẽ rất rõ ràng nếu giá trị đang được tạo ra hoặc bị phá hủy: so sánh tổng số bitcoin vào với tổng số bitcoin ra.
  • Rất dễ dàng xác nhận song song các giao dịch trong một khối; chỉ cần kiểm tra chữ ký trên mỗi giao dịch trong các chuỗi riêng biệt.
  • Nó có tính xác định cao. Khi người dùng tạo và gửi giao dịch, họ đang tuyên bố rõ ràng phần của sổ cái của họ sẽ trông như thế nào sau khi giao dịch được chấp nhận.

Tuy nhiên, điều này nhấn mạnh đến các mối quan tâm về giao dịch đơn lẻ local – cục bộ, một giao dịch đơn lẻ đi kèm với chi phí của các hệ thống có mối quan tâm global – toàn cục. Bitcoin đã gặp khó khăn khi giới thiệu hợp đồng thông minh vì nhiều ứng dụng tự nhiên muốn truy cập vào một số trạng thái global: ví dụ: danh sách người dùng được ủy quyền, giá hiện tại hoặc tổng nguồn cung.

(từ đọan này trở đi, người dịch sẽ để local thay cho cục bộ, và global thay cho toàn cục)

Ngược lại, Ethereum đã chọn theo dõi tập hợp số dư tài khoản (theo kiểu global): trạng thái sổ cái là ánh xạ từ địa chỉ đến số dư và giao dịch đơn giản tăng và giảm số dư tài khoản theo từng cặp. Các giao dịch phức tạp hơn có thể thực hiện nhiều việc phức tạp hơn và có quyền truy cập vào trạng thái global của riêng chúng. Ví dụ: mã thông báo ERC-20 không gì khác hơn là một hợp đồng thông minh thực hiện mô hình kế toán này và cung cấp giao diện để đúc, ghi và chuyển các token này.

Sự khác biệt giữa hai điều này có thể được tương tự như sự khác biệt giữa tiền mặt trong túi của bạn và số dư trong tài khoản ngân hàng của bạn.

Khác nhau giữa mô hình UTXO và Account
Khác nhau giữa mô hình UTXO và Account

Việc tiếp cận thông tin global, chẳng hạn như giá cả, là không đáng kể trong các mô hình này. Tuy nhiên, có rất nhiều tác dụng phụ tiêu cực của sự lựa chọn này.

Đầu tiên, mọi giao dịch phải được xếp hàng và xử lý theo một số thứ tự, vì rất khó nếu không muốn nói là không thể xác định giao dịch nào cố gắng để có cùng một trạng thái. Nếu một giao dịch cập nhật số dư tài khoản của bạn cùng lúc với một giao dịch khác, bạn có thể vô tình phá hủy token, (double spend) chi tiêu gấp đôi và các lỗi khó chịu khác.

Thứ hai, do hệ quả của những điều nói ở trên trên, thứ tự của các giao dịch có ý nghĩa quan trọng, về cơ bản mang lại cho thực thể xếp hàng các giao dịch đó rất nhiều quyền lực. Điều này dẫn đến các hiện tượng không mong muốn bao gồm Giá trị có thể trích xuất bởi các thợ đào (Miner Extractable Value – MEV) và chạy trước.

Thứ ba, mô hình này về cơ bản đòi hỏi sự hy sinh của thuyết tất định, và do đó đòi hỏi sự tin tưởng cao hơn. Vì trạng thái của blockchain có thể thay đổi giữa thời điểm bạn xây dựng giao dịch và khi bạn gửi nó, nên hợp đồng thông minh cần được tin cậy để thực hiện “những gì bạn có lợi nhất” khi nó chạy, ngay cả khi đó không phải là những gì bạn dự định. Ví dụ, một DEX cần biết rằng nếu giá đã di chuyển theo một tỷ lệ phần trăm lớn nhất định, thì bạn không còn quan tâm đến giao dịch nữa. Rất nhiều nỗ lực phát triển, nguồn lỗi và các cuộc tấn công xuất phát từ điều này, vì mỗi hợp đồng thông minh cần phải được tin cậy để kiểm tra tất cả các bất biến là “đúng”.

Vấn đề chính là Ethereum đưa ra lựa chọn trạng thái global này cho mọi dApp, và do đó, tất cả chúng đều phải chịu chi phí giao dịch tăng, khả năng bị tổn thương/tấn công do chạy trước và gánh nặng phát triển bổ sung.

Ba từ mà bạn có thể thấy trong cuộc thảo luận rất nhiều là “Concurrency – đồng thời”, “Parallelism – song song” và “Contention – tranh chấp”. Đây có thể là một khái niệm tinh tế và trong trường hợp bạn chỉ hiểu mơ hồ về ý nghĩa của những điều này, bạn nên đặt ra một số định nghĩa: Đồng thời (Concurrency) là khả năng nhiều tác nhân cùng tiến triển trong một nhiệm vụ mà không ảnh hưởng lẫn nhau. Song song (Parallelism) là khả năng nhiều tác nhân đạt được các tiến triển trong một nhiệm vụ cùng một lúc mà không ảnh hưởng lẫn nhau. Tranh chấp (Contention) là khi nhiều tác nhân thực sự can thiệp vào nhau.

Để hiểu rõ hơn điều này, hãy sử dụng một ví dụ tương tự: các đầu bếp trong nhà bếp. Một đầu bếp có tay nghề cao có thể chuẩn bị nhiều món ăn cùng một lúc, chuyển đổi giữa chúng vào đúng thời điểm. Đầu bếp này rất kiêm nhiệm. Mỗi đầu bếp có thể chế biến các món ăn khác nhau tại trạm làm việc của riêng mình. Những đầu bếp này rất song song. Tuy nhiên, một nhà bếp được điều hành tốt có thể có nhiều đầu bếp cùng làm nhiều món ăn, vừa đồng thời vừa song song. Nếu họ bắt đầu va vào nhau khi tìm kiếm một thành phần chung, họ sẽ đột nhiên tranh chấp.

Minh họa mô hình xử lý song song và đồng thời
Minh họa mô hình xử lý song song và đồng thời

Trong bối cảnh của cuộc thảo luận này, Ethereum khá tốt ở tính đồng thời, khủng khiếp/tệ hại ở tính song song. Mô hình UTXO rất tuyệt vời ở khả năng song song, nhưng có thể gặp phải tranh chấp, khiến nó không đồng thời lắm, đối với một số thiết kế giao thức.

Cardano và mô hình eUTXO

Cuối cùng, chúng ta nói về Cardano. Thay vào đó, Cardano đã chọn cải tiến mô hình UTXO đủ để bản thân các dApp có thể thực hiện những cân bằng giữa hoạt động độc lập và tập trung. Mô hình eUTXO mà Cardano đã dẫn đầu nghiên cứu giới thiệu ba nguyên tắc mới cho hợp đồng thông minh: The datum, the redeemer, và validator. (datum và redeemer là 2 dạng dữ liệu, mình xin để nguyên chứ ko dịch ra, validator là trình xác thực).

Datum là một phần dữ liệu tùy ý được gắn với một UTXO duy nhất. Điều này thể hiện một phần trạng thái bên trong có liên quan đến UTXO đó. Ví dụ: bạn có thể sử dụng nó để theo dõi thời gian mở khóa và địa chỉ trả tiền lại cho một hợp đồng.

Redeemer lại đại diện cho tín hiệu cho những gì cần làm, khi có nhiều lựa chọn. Ví dụ: bạn có thể sử dụng điều này để thể hiện việc bạn đang trao đổi các token được trả cho mình hay thực hiện thao tác thu hồi vì các điều khoản của hợp đồng đã bị phá vỡ.

Cuối cùng, trình xác thực (Validator) đại diện cho các điều kiện mà theo đó UTXO có thể được sử dụng, bao gồm cả việc xác nhận xem trạng thái mới có đúng hay không. Nó có quyền truy cập vào toàn bộ giao dịch để đưa ra quyết định đó.

Trạng thái duy nhất mà hợp đồng thông minh có thể bị phụ thuộc vào là các phần trạng thái ở phần đầu vào; và trạng thái duy nhất mà hợp đồng thông minh có thể tạo ra là trạng thái được khai báo là đầu ra của giao dịch.

Các giao dịch trong Cardano được sắp xếp từng phần theo sự phụ thuộc của chúng, và một nhà điều hành nhóm cổ phần (stake pool operator) sắp xếp lại mọi thứ không ảnh hưởng đến kết quả, vì vậy MEV không thể xảy ra.

Tương tự, mọi giao dịch Cardano đều mang tính xác định: Người dùng xây dựng, khai báo và đăng nhập về trạng thái mới của mạng lưới. Cách duy nhất để thay đổi trạng thái là sử dụng UTXO và một UTXO nhất định chỉ có thể được sử dụng một lần, vì vậy bạn được bảo vệ khỏi trạng thái thay đổi từ người khác.

Đối với nhiều mục đích và giao thức, điều này hoàn toàn đủ để tạo ra một lượng giá trị đáng kinh ngạc. Ví dụ, một hợp đồng không cần quyền truy cập vào bất kỳ trạng thái global nào. Thực tế là các token của Alice đang ở trong một UTXO bị khóa bởi hợp đồng không liên quan đến việc token của Bob đang ở trong một UTXO khác bị khóa bởi cùng một hợp đồng đó.

Tuy nhiên, một số giao thức khó tách khỏi trạng thái global hơn nhiều. Ví dụ, một DEX như Uniswap về cơ bản dựa vào tính thanh khoản gộp để mang lại hiệu quả sử dụng vốn và tạo ra một cái nhìn thống nhất duy nhất về tỷ giá hối đoái giữa hai token.

Nếu nhiều người cần truy cập trạng thái global này và trạng thái đó được lưu trữ trong dữ liệu của một UTXO duy nhất, nó sẽ tạo ra một cuộc chạy đua giữa những người dùng để trở thành người đầu tiên sử dụng UTXO đó. Mỗi khi ai đó chiến thắng cuộc đua đó, nó sẽ đặt mọi người khác trở lại ô vuông: họ phải tìm UTXO mới, tạo một giao dịch mới và gửi nó.

Mô hình xử lý của Cardano
Mô hình xử lý của Cardano

Cho dù các giao dịch bị giới hạn ở việc chỉ đề cập đến các UTXO từ các khối trước đó hoặc liệu chúng có thể được xâu chuỗi trong một khối hay không, tranh chấp cơ bản này đặt ra một thách thức nghiêm trọng đối với trải nghiệm người dùng và thông lượng của một giao thức.
Vì vậy, một số kỹ thuật thông minh là cần thiết khi thiết kế giao thức của bạn.

Quan niệm sai lầm về Cardano hiện tại

Trước khi nói về các giải pháp, cần giải quyết một số quan niệm sai lầm về vấn đề:

Quan niệm sai lầm 1: Cardano là không hoàn thiện/lỗi vì nó chỉ cho phép 1 giao dịch trên mỗi khối.

Trong thực tế, nó hoàn toàn ngược lại. Cardano cho phép hàng trăm giao dịch trên mỗi khối.
Thay vào đó, chính xác khi nói rằng Cardano cho phép một đầu ra giao dịch nhất định được sử dụng trong một lần duy nhất, bằng một giao dịch duy nhất, do đó, các giao thức cung cấp cho nhiều người quyền truy cập vào cùng một UTXO có thể gặp phải các vấn đề tranh chấp.

Quan niệm sai lầm 2: Chỉ một người dùng có thể tương tác với hợp đồng thông minh trên mỗi khối / giao dịch.

Cũng không đúng; vấn đề tranh cãi là xung quanh UTXO, nhưng nhiều UTXO có thể được điều chỉnh bởi cùng một hợp đồng thông minh.
Về cơ bản, điều này xuất phát từ sự thay đổi trong suy nghĩ từ Ethereum, nơi bạn chạy một hợp đồng thông minh để khiến nó thực hiện điều gì đó, và Cardano nơi bạn khóa đầu ra bằng một hợp đồng, và đầu ra đó xác định khi chúng có thể được chi tiêu sau này.

Quan niệm sai lầm 3: Cách duy nhất để giải quyết vấn đề này là thông qua tập trung hóa.

Tập trung hóa là một cách để giải quyết vấn đề này, nhưng nó không phải là cách duy nhất. Xem bên dưới.

Các giải pháp tiềm năng cho vấn đề này của Cardano

Có hai loại giải pháp cho vấn đề này: hoặc thiết kế giao thức của bạn để chấp nhận việc phân đoạn trạng thái, hoặc tổng hợp các tương tác với trạng thái đó.

Hãy thiết kế một số DEX giả định để khám phá một số giải pháp này.

Người ta có thể thiết kế một DEX sao cho nó không yêu cầu một pool thanh khoản duy nhất. Thay vào đó, tính thanh khoản bị “phá vỡ” giữa một số pool và càng bị phá vỡ, càng có nhiều cổng để mọi người tương tác và càng ít tranh chấp về các ngân quỹ đó. Tuy nhiên, bạn càng phá vỡ các pool, bạn càng có ít hiệu quả sử dụng vốn hơn và giá trị bị mất lớn hơn khi mua bán chênh lệch nhiều pool. Do đó, phần thông minh nằm ở việc thiết kế các giải pháp cho những vấn đề đó: Ví dụ: thanh khoản tập trung theo phong cách Uniswap v3.

Ngoài ra, một mô hình order book (sổ lệnh như các sàn giao dịch tập trung) cho một sàn giao dịch, trên Ethereum thì việc duy trì và cập nhật sẽ tốn kém một cách thảm hại, về cơ bản có vẻ phù hợp hơn với Cardano: mỗi order là một UTXO riêng biệt. Tuy nhiên, phần khó khăn là bạn vẫn còn tranh chấp về các order gần với giá hiện tại nhất, nơi các bên mua bán gặp nhau. Một giải pháp khả thi là có các lệnh thị trường được liệt kê trên chuỗi và một bên thứ ba khớp và thực hiện khớp các lệnh này. Do đó, phần thông minh là đảm bảo rằng matchmaker (người trung gian khớp lệnh) không có quá nhiều quyền lực trên thị trường.

Cuối cùng, bạn có thể tạo một sàn giao dịch hỗn hợp, nơi quyền quản lý tiền được phân cấp và lưu trữ trên blockchain, nhưng việc tạo và khớp thị trường được gửi thông qua một máy chủ phụ trợ trung tâm. Điều này giải quyết được vấn đề kỹ thuật, nhưng có thể khiến bạn trở thành một đại lý môi giới được quản lý chặt chẽ, đi kèm với những thách thức riêng.

Giải pháp của SundaeSwap

Chúng tôi đã chọn một giải pháp khác với những giải pháp ở trên; Rất nhanh chóng, chúng tôi sẽ sẵn sàng kéo lại bức màn và tiết lộ cách thức hoạt động của nó. Với bản chất của cuộc thảo luận gần đây, chúng tôi muốn làm như vậy với các công thức/mô hình và hiện đang chuẩn bị các bài kiểm tra tải để chứng minh chính xác giải pháp mở rộng của chúng tôi đáp ứng nhiệm vụ tốt như thế nào. Hãy theo dõi để biết thêm thông tin!

Sự việc tranh cãi từ vấn đề này là một khía cạnh không lành mạnh của ngành công nghiệp chúng ta khi nhiều người, thường có tiếng nói nổi bật, những người là fan cuồng một công nghệ/nền tảng nào đó. Điều này có thể được thúc đẩy bởi một động cơ tài chính, hy vọng người này thắng người kia để đạt được lợi ích tài chính; có thể là một dự án tiêu tốn chi phí của tất cả những dự án khác nhưng không làm tới nơi tới chốn, hay là do không muốn chấp nhận lùi bước mà vẫn giữ được thể diện; hoặc nó có thể chỉ là một hương vị tồi tệ do tương tác kém với các thành viên của cộng đồng khác. Trong mọi trường hợp, thật không lành mạnh khi lập luận rằng một dự án trong cộng đồng của chúng ta có tất cả các câu trả lời và vượt trội về mọi mặt, đó là dự án Bitcoin, Ethereum, Cardano, Solana, Mac, PC, Hammers, Screwdrivers, hoặc bất kỳ lựa chọn nào khác mà chúng tôi có các công cụ để sử dụng.

Bạn sẽ không tìm thấy bất kỳ Cardano maximalism (tạm dịch là fan cuồng Cardano) trong nhóm của chúng tôi. Chúng tôi tin rằng, Cardano có các giải pháp thú vị cho các vấn đề khó khăn, đồng thời đã đánh đổi và ưu tiên những thứ khác nhau để tạo ra cơ hội mới trong hệ sinh thái tiền điện tử. Chúng tôi chắc chắn tin tưởng vào điều đó, đủ để xây dựng sản phẩm của chúng tôi trên đỉnh cao đó. Về lâu dài, với tư cách là những người xây dựng trong không gian tiền điện tử, chúng tôi tin rằng người dùng cuối sẽ không quan tâm họ đang tương tác với blockchain nào. Theo suy nghĩ của chúng tôi, trạng thái kết thúc lý tưởng là để các blockchain trở nên giống như ngôn ngữ lập trình, với các dự án khác nhau chọn các chuỗi khác nhau để phù hợp với các điểm mạnh cần thiết để đưa giao thức của họ ra ánh sáng và người dùng cuối là những người khôn ngoan hơn cả.

Vì vậy, đối với những người tuyên bố đây là cái chết của Cardano: không thể nào. Chỉ một thử nghiệm khó khăn trong những ngày đầu tiên của một hệ sinh thái và nói nó là điềm báo về sự sụp đổ của Cardano thì đó là sự ngây thơ quá sớm và tệ nhất là sự thiếu trung thực về mặt trí tuệ. Chúng tôi đã phác thảo một số giải pháp sáng tạo ở trên và chúng tôi chắc chắn rằng còn nhiều giải pháp khác mà những giải pháp xây dựng trên Cardano đã đưa ra.

Dịch và biên soạn: ChienNguyen

Source: https://sundaeswap-finance.medium.com/concurrency-state-cardano-c160f8c07575