Skip to main content

Tìm hiểu về batcher của Cardano

Ngày 12 tháng 09 năm 2023 - Chia sẻ bài viết này trên Twitter | FacebookTelegram

Batcher là một khái niệm được một số sàn giao dịch phi tập trung (DEX) trên Cardano sử dụng để thu thập đơn đặt hàng và thực hiện giao dịch hoán đổi. Hãy đến tìm hiểu thêm về chúng. Chúng tôi cũng sẽ giải thích tại sao Cardano cần batchers còn Ethereum thì không.

Vai trò của Batcher

Batcher là gì?

Batcher là một khái niệm được một số sàn giao dịch phi tập trung (DEX) sử dụng để thu thập các lệnh giao dịch của người dùng và thực hiện các giao dịch hoán đổi theo lô (gói) trên mainnet. Batchers là các thực thể chạy các node trên mạng Cardano và có thể nói tạo và gửi các giao dịch gọi mã on-chain (tập lệnh xác thực) của DEX.

Mục tiêu của batcher là cải thiện hiệu quả và khả năng mở rộng của DEX bằng cách giảm số lượng giao dịch phải được Blockchain xử lý. Batcher tổng hợp nhiều giao dịch của người dùng thành một lô giao dịch duy nhất thực hiện tất cả chúng cùng một lúc. Đây là cách tiếp cận hiệu quả hơn so với việc mỗi người dùng gửi giao dịch của riêng họ tới DEX.

Batchers thu thập đơn đặt hàng của người dùng và tạo các giao dịch liên quan đến việc khóa tiền. Nó được thực hiện theo logic off-chain của hợp đồng thông minh. Chúng khớp tất cả các đơn đặt hàng của người dùng và thực hiện hoán đổi thông qua việc tạo các giao dịch chi tiêu, điều này một lần nữa xảy ra trong phần off-chain của hợp đồng thông minh.

Batchers sắp xếp các giao dịch của người dùng theo mức độ ưu tiên và giá cả của chúng, giúp tránh xung đột hoặc thất bại.

Người dùng phải trả phí mạng thông thường cộng với việc họ trả tiền cho các batchers để hoán đổi. Batchers khấu trừ một khoản phí nhỏ từ mỗi giao dịch họ tạo ra làm phần thưởng.

Trong hình bên dưới, bạn có thể thấy sơ đồ đơn giản của DEX xử lý các đơn đặt hàng, khớp chúng và thực hiện các giao dịch hoán đổi. Để làm được điều này, Batchers cần tạo các giao dịch được xác thực trong phần trực tuyến của hợp đồng thông minh.

Hãy chỉ ra nó bằng một ví dụ. Chúng tôi sẽ nhấn mạnh một số chi tiết quan trọng.

Alice muốn bán token HOSKY và nhận về ADA. Bob muốn mua HOSKY và bán ADA. Node batcher có thể kết hợp các đơn hàng này và thực hiện hoán đổi.

Trước hết, Alice và Bob cần tìm một batchers mà họ tin tưởng và người có thể thực hiện việc hoán đổi. Việc này có thể được DEX thực hiện tự động hoặc họ có thể chọn một batchers mà họ muốn, tùy thuộc vào thiết kế và triển khai DEX. Một số DEX cho phép người dùng chọn một node cụ thể để thực hiện giao dịch hoán đổi, trong khi những DEX khác sử dụng xổ số để đảm bảo lựa chọn ngẫu nhiên.

Sau khi chọn batchers, Alice và Bob phải khóa ADA và HOSKY. Việc hoán đổi chỉ có thể được thực hiện nếu người quản lý đợt có quyền kiểm soát việc chi tiêu tiền.

Alice gửi token HOSKY đến một địa chỉ tập lệnh được kiểm soát bởi bộ xử lý dữ liệu. Trong scripts, các điều kiện chi tiêu HOSKY (ví dụ: số lượng ADA mà Alice yêu cầu) đã được xác định. Tiền có thể được mở khóa bởi bất kỳ ai có thể tạo giao dịch chi tiêu hợp lệ (thỏa mãn các điều kiện của tập lệnh). Đây thường là (không nhất thiết) batchers đã khóa tiền.

Lưu ý rằng bộ xử lý đợt có trách nhiệm xây dựng các giao dịch bao gồm tập lệnh khóa. Người dùng phải ký các giao dịch bằng khóa riêng của họ. Bằng cách này, số tiền không thể bị đánh cắp bởi batchers vì họ không có quyền truy cập vào khóa riêng của người dùng. batchers chỉ kiểm soát các tập lệnh khóa và mở khóa tiền, nhưng họ không thể chi tiêu chúng nếu không đáp ứng các điều kiện hoán đổi.

Người dùng cần xác minh các giao dịch được cung cấp bởi bộ xử lý trước khi ký chúng bằng khóa riêng của họ. Họ có thể kiểm tra xem các giao dịch có khớp với các điều kiện và thông số hoán đổi hay không, chẳng hạn như số lượng token, tỷ giá hối đoái và thời gian hết hạn.

Bob phải thực hiện thao tác tương tự như Alice nhưng bằng ADA. Và, ADA bị khóa tại địa chỉ tập lệnh do bộ xử lý kiểm soát.

HOSKY và ADA bị khóa và batcher có thể khớp cả hai đơn hàng. Nó xác minh xem liệu có thể đáp ứng các điều kiện chi tiêu của cả hai tập lệnh khóa tiền hay không. Nếu vậy, batchers sẽ tạo hai giao dịch chi tiêu mở khóa HOSKY và ADA từ các địa chỉ tập lệnh và gửi chúng đến địa chỉ của người nhận, tức là Alice và Bob, chính xác theo yêu cầu của họ.

Bộ xử lý đợt gửi cả hai giao dịch chi tiêu tới mạng Cardano dưới dạng một giao dịch hoán đổi duy nhất. Điều này có nghĩa là cả hai giao dịch đều được thực hiện thành công hoặc không có giao dịch nào được thực hiện cả. Điều này đảm bảo rằng Alice và Bob nhận được token và token của họ mà không có bất kỳ rủi ro nào về việc mất tiền hoặc bị lừa bởi người chia đợt hoặc lẫn nhau.

Chúng tôi đã đưa ra một ví dụ về cái gọi là trao đổi trực tiếp đòi hỏi sự phối hợp và liên lạc nhiều hơn giữa các bên. Alice có thể nói rõ ràng với DEX rằng đối tác phải là Bob nếu cô ấy biết địa chỉ của Bob và số lượng token cô ấy muốn trao đổi. Alice và Bob phải đồng ý trước về các điều kiện và tham số hoán đổi, sau đó sử dụng batchers để thực hiện giao dịch hoán đổi của họ. Hoán đổi trực tiếp an toàn và hiệu quả hơn so với hoán đổi dựa trên pool thanh khoản, trong đó Alice và Bob không biết nhau và dựa vào pool thanh khoản để tìm kết quả phù hợp cho hoán đổi của họ.

Tại sao Cardano cần batcher?

Batcher đóng một vai trò quan trọng trong việc kích hoạt các hợp đồng thông minh và hoán đổi trên Cardano. Tuy nhiên, chúng cũng đưa ra một số thách thức và sự đánh đổi. Trước tiên chúng ta hãy xem xét một số lợi thế:

  • Chúng giảm tải cho blockchain và tăng thông lượng của DEX, vì sẽ có ít giao dịch hơn phải được xác thực bởi các node và được lưu trữ trong blockchain. Giao dịch hàng loạt với 10 giao dịch có quy mô nhỏ hơn 10 giao dịch riêng lẻ. Điều này là do giao dịch hàng loạt có thể kết hợp nhiều đầu vào và đầu ra thành một giao dịch duy nhất, giúp giảm chi phí chung và sự dư thừa khi tạo các giao dịch riêng biệt.
  • Chúng giảm phí cho người dùng vì chúng có thể chia sẻ chi phí giao dịch hàng loạt giữa các giao dịch. Phí ở Cardano dựa trên quy mô của giao dịch và quy mô phụ thuộc (trong số những thứ khác) vào số lượng nhân chứng (chữ ký).
  • Chúng cải thiện trải nghiệm người dùng vì chúng có thể thực hiện các giao dịch của họ nhanh hơn và đáng tin cậy hơn.

Một số nhược điểm của batcher là:

  • Chúng làm giảm tính Phi tập trung và bảo mật của DEX vì chúng có thể tạo ra điểm giao dịch không thành công cho người dùng. Nếu một bộ xử lý dữ liệu độc hại hoặc bị xâm phạm, nó có thể thao túng, kiểm duyệt hoặc được xử lý trước các giao dịch của người dùng.
  • Chúng làm tăng độ phức tạp và rủi ro cho người dùng vì họ phải tin tưởng và tương tác với batchers. Người dùng phải gửi tiền và dữ liệu của họ đến người quản lý hàng loạt, người sau đó sẽ thay mặt họ tạo và gửi giao dịch hàng loạt.
  • Người dùng phải dựa vào tính khả dụng và hiệu suất của node batcher để thực hiện đơn hàng của họ. Nếu node batcher ngoại tuyến hoặc bị quá tải, các giao dịch có thể bị trì hoãn hoặc không thành công.
  • Thông thường, batchers phần lớn là những người vận hành pool stake (SPO) với số tiền stake cao. Điều này tạo ra rào cản gia nhập đối với các bên quan tâm. Cơ chế này nhằm đảm bảo hành vi trung thực vì nó kết hợp hoạt động của nhóm với hoạt động của node batcher. Nếu batchers không hành xử trung thực, điều đó có thể ngăn cản những người được ủy quyền đặt ADA vào nhóm của người điều hành. Ngoài phí giao dịch theo đợt, người giao dịch theo đợt không trung thực còn có nguy cơ mất phần thưởng stake.

Bây giờ chúng ta đến câu hỏi chính. Tại sao Cardano cần batcher còn Ethereum thì không?

Batching là một kỹ thuật cho phép nhiều giao dịch được thực hiện dưới dạng một giao dịch hoán đổi duy nhất trên Blockchain. Điều này có nghĩa là tất cả các giao dịch đều được thực hiện thành công hoặc không có giao dịch nào được thực hiện cả. Từ quan điểm bảo mật và đúng đắn, tính hoán đổi là hoàn toàn cần thiết. Nếu bất kỳ phần nào của lô không hợp lệ hoặc xung đột thì toàn bộ lô sẽ không thành công. Điều này ngăn chặn việc thực hiện một phần hoặc không nhất quán các giao dịch, có thể dẫn đến mất tiền, chi tiêu gấp đôi hoặc gian lận.

Cần có Batcher vì Cardano không hỗ trợ các hợp đồng thông minh giống như Ethereum hoặc các Blockchain khác, vì nó sử dụng một mô hình kế toán khác.

Trong mô hình UTXO, mỗi UTXO chỉ có thể được sử dụng một lần. Mỗi giao dịch sử dụng một số UTXO làm đầu vào và tạo các UTXO mới làm đầu ra. Số dư của người dùng được tính bằng tổng của tất cả các UTXO được liên kết với địa chỉ của họ.

Đầu ra có thể bị khóa bởi các tập lệnh chỉ định các điều kiện để chi tiêu chúng. Logic chi tiêu tiền được xác định trong tập lệnh có thể yêu cầu khả năng biết một số bối cảnh hoặc trạng thái. Trạng thái là một tập hợp dữ liệu thể hiện trạng thái hiện tại của hệ thống hoặc chương trình. Thông tin trạng thái rất cần thiết cho nhiều ứng dụng yêu cầu tương tác, tính toán hoặc xác minh trên Blockchain.

Không giống như Ethereum, nơi các hợp đồng thông minh có thể lưu trữ và thao tác các biến trạng thái, tập lệnh Cardano chỉ có thể truy cập vào đầu vào và đầu ra của giao dịch hiện tại (chỉ có sẵn bối cảnh hoặc trạng thái cục bộ). Điều này có nghĩa là các tập lệnh Cardano không thể thực hiện logic phức tạp hoặc tương tác với các tập lệnh khác trong phần on-chain của hợp đồng thông minh DEX.

Hạn chế của mô hình UTXO là nó không hỗ trợ thông tin trạng thái hoặc logic phức tạp.

Để khắc phục hạn chế này, các batchers đóng vai trò trung gian thu thập, đặt hàng và thực hiện các giao dịch liên quan đến việc khóa và mở khóa tiền bằng các tập lệnh. Nói cách khác, logic nghiệp vụ của DEX được thực thi off-chain vì có thể hoạt động với trạng thái của ứng dụng.

Mô hình UTXO không có trạng thái toàn cầu để các giao dịch có thể cập nhật hoặc truy cập. Thay vào đó, mỗi giao dịch chỉ có thể truy cập đầu vào và đầu ra của giao dịch hiện tại. Dữ liệu của UTxO, Redeemer từ giao dịch chi tiêu và ngữ cảnh giao dịch (cục bộ) có sẵn trong quá trình thực thi tập lệnh.

Điều này có nghĩa là các giao dịch không thể thực hiện các hoạt động phụ thuộc vào các biến hoặc điều kiện bên ngoài, chẳng hạn như các phép toán số học, câu lệnh điều kiện, vòng lặp hoặc lệnh gọi hàm. Hơn nữa, các giao dịch không thể tương tác với các giao dịch hoặc tập lệnh khác trên Blockchain, điều này hạn chế chức năng và khả năng tương tác của các ứng dụng.

Bộ xử lý hàng loạt cho phép hoán đổi trên Cardano vì chúng cho phép triển khai các thuật toán có thể hoạt động đồng thời với nhiều giao dịch (đơn hàng) và duy trì trạng thái ứng dụng.

Ethereum không cần batchers vì nó sử dụng một mô hình kế toán khác gọi là mô hình dựa trên tài khoản. Mô hình dựa trên tài khoản theo dõi số dư của từng tài khoản dưới dạng trạng thái toàn cầu. Mỗi giao dịch cập nhật trạng thái của hệ thống theo logic và dữ liệu có trong giao dịch. Mô hình dựa trên tài khoản hỗ trợ thông tin trạng thái và logic phức tạp vì nó cho phép các giao dịch truy cập và sửa đổi trạng thái toàn cầu của hệ thống. Nói một cách đơn giản, Ethereum cho phép triển khai logic DEX thông qua các hợp đồng thông minh.

So sánh ngắn giữa Cardano và Ethereum

Sự khác biệt giữa UTXO và các mô hình dựa trên tài khoản có liên quan đến trạng thái toàn cầu của Ethereum. Ethereum có trạng thái toàn cầu có thể được cập nhật hoặc truy cập bằng các giao dịch.

Cardano không có trạng thái toàn cầu. Việc thực hiện các giao dịch là độc lập với nhau vì nó chỉ phụ thuộc vào bối cảnh cục bộ. Điều này làm cho Ethereum phù hợp hơn với các hợp đồng thông minh và hoán đổi so với Cardano, nhưng nó cũng đưa ra một số thách thức và sự đánh đổi:

  • Trạng thái toàn cầu của Ethereum phức tạp hơn mô hình UTXO của Cardano, điều này khiến việc xác minh và duy trì khó khăn hơn. Độ phức tạp cao hơn thường mang đến các lỗ hổng và vectơ tấn công.
  • Trạng thái toàn cầu của Ethereum yêu cầu nhiều bộ nhớ và tính toán hơn so với mô hình UTXO của Cardano, điều này hạn chế khả năng mở rộng và hiệu suất của nó. EVM thực hiện các giao dịch một cách tuần tự, lần lượt và cập nhật trạng thái tương ứng. Trình tự phải được tuân theo trong quá trình xác thực khối.
  • Trạng thái toàn cầu của Ethereum tiết lộ nhiều thông tin hơn mô hình UTXO của Cardano, điều này làm giảm tính riêng tư và ẩn danh của nó.

Nhóm IOG đã chọn mô hình UTxO và họ cố tình không muốn có một thứ gì đó giống như trạng thái toàn cầu. Họ muốn tận dụng lợi ích của mô hình UTxO đồng thời khắc phục những hạn chế của nó. Họ đã thực hiện điều này bằng cách giới thiệu một phiên bản mở rộng của mô hình UTxO, được gọi là eUTXO, cho phép các giao dịch mang một số thông tin trạng thái và thực thi logic tùy chỉnh bằng cách sử dụng hợp đồng thông minh.

Mô hình eUTXO duy trì tính đơn giản, quyền riêng tư và khả năng mở rộng của mô hình UTxO (như bạn biết từ Bitcoin) đồng thời cho phép nhiều chức năng và khả năng tương tác của ứng dụng hơn.

Mô hình eUTxO, tức là không có trạng thái toàn cầu, mang lại những lợi thế nhất định cho Cardano.

  • Các tập lệnh xác thực (logic on-chain) rất nhỏ và đơn giản để xác thực. Điều này tiết kiệm tài nguyên tính toán của mạng phân tán. Các nhóm phát triển buộc phải triển khai hầu hết logic ứng dụng ở phần off-chain để có thể dễ dàng nâng cấp. Trong quá trình xác thực on-chain, có thể làm việc với trạng thái cục bộ (không giống như mô hình UTxO của Bitcoin) thông qua Datum và Redeemer.
  • Mô hình eUTxO cho phép người dùng tạo nhiều địa chỉ và sử dụng các UTxO khác nhau cho mỗi giao dịch, điều này khiến việc liên kết các giao dịch với một danh tính duy nhất hoặc theo dõi lịch sử tiền trở nên khó khăn hơn.
  • Mô hình eUTxO cho phép xử lý song song các giao dịch, vì mỗi UTxO có thể được xác minh độc lập và đồng thời bởi các node khác nhau. Điều này làm giảm tắc nghẽn và độ trễ của mạng. Trong quá trình xác thực khối, không cần thiết phải tuân theo thứ tự vì các giao dịch độc lập với nhau.

Một trong những lý do chính để chọn mô hình eUTXO thay vì mô hình dựa trên tài khoản là khả năng mở rộngtính song song tốt hơn. Mô hình eUTXO cho phép các giao dịch được xử lý song song bởi các node khác nhau, miễn là chúng không xung đột với nhau. Điều này có nghĩa là thông lượng và hiệu suất của mạng có thể được tăng lên bằng cách thêm nhiều node và tài nguyên hơn.

Mặt khác, mô hình dựa trên tài khoản yêu cầu xử lý tuần tự các giao dịch vì mỗi giao dịch phụ thuộc vào trạng thái toàn cầu của hệ thống. Điều này có nghĩa là thông lượng và hiệu suất của mạng bị giới hạn bởi tốc độ và dung lượng của một node.

Chủ đề này phức tạp hơn và việc so sánh giữa Cardano và Ethereum xứng đáng có một bài viết riêng. Chúng tôi muốn giải thích cách thức hoạt động của các batchers và tại sao Cardano cần chúng, không giống như Ethereum. Tôi hy vọng chúng tôi đã thành công.

Lời kết

Điều thú vị về Ethereum là có thể triển khai logic DEX trong hợp đồng thông minh mà không cần phải có logic off-chain. Nhưng mặt khác, nó không hiệu quả. Nếu nhiều người dùng muốn sử dụng DEX hơn, Ethereum có thể gặp vấn đề về khả năng mở rộng. Ngày nay, đã có các DEX trong hệ sinh thái Ethereum có logic giống như Cardano off-chain để khớp lệnh và thực hiện giao dịch hoán đổi. DEX được sử dụng nhiều nhất trong hệ sinh thái Ethereum là Uniswap và nó là DEX on-chain.

Hầu hết các DEX trong hệ sinh thái Cardano đều sử dụng batchers. Batchers có thể được coi là một điểm thất bại duy nhất (single point of failure). Nếu một batchers khóa tiền và sau đó ngoại tuyến (offline), thì có thể không tạo được các giao dịch chi tiêu (có thể một batchers khác có thể tạo chúng trong một DEX). Mặt khác, phải nói rằng các động lực kinh tế được đặt ra rất tốt. Batchers được khuyến khích thực hiện việc gộp lô giao dịch một cách trung thực vì họ có nguy cơ mất hoạt động kinh doanh và có thể nói bị ủy quyền ADA.

Nguồn bài viết tại đây


Picture


Đọc thêm các bài viết liên quan tại thẻ Tags bên dưới