Skip to main content

Hiểu rõ về EUTXO

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

Một trong những cải tiến mà Cardano đã đưa ra là phần mở rộng của mô hình kế toán Bitcoin. Bitcoin về cơ bản là đơn giản, nhưng điều đó không có nghĩa là các bộ phận khác nhau của nó không thể được cải thiện. Những tiến bộ công nghệ đang được thực hiện như một phần của dự án Cardano. Hãy khám phá lịch sử của các mô hình kế toán và sự phát triển của chúng.

Satoshi Nakamoto đã sử dụng nhiều công nghệ để xây dựng Bitcoin. Một trong số đó là mô hình kế toán sử dụng Đầu ra giao dịch chưa chi tiêu (UTxO). Vitalik Buterin và nhóm của ông ấy đã quyết định sử dụng một mô hình kế toán khác dựa trên các tài khoản, vì nó dường như là một giải pháp tốt hơn để thực hiện các hợp đồng thông minh. Trong bài viết, chúng ta sẽ gọi nó là mô hình dựa trên tài khoản.

Ngày nay, nhiều dự án như Solana, Polkadot và Algorand sử dụng mô hình kế toán giống như Ethereum. Có những ưu điểm và nhược điểm đối với cả hai cách tiếp cận và các nhà phát triển phải đối mặt với những thách thức khác nhau khi xây dựng trên các lớp cơ sở. Đội ngũ IOG xây dựng Cardano đã quyết định đi theo một con đường khác và mở rộng mô hình ban đầu của Bitcoin, UTXO. Mô hình mới được đặt tên là Extended-UTXO.

Mô hình kế toán

Kế toán là nền tảng của thế giới tài chính ngày nay. Mọi tổ chức tài chính cần theo dõi số dư tài khoản cá nhân và dòng tiền. Sổ cái cũng là nền tảng của các mạng blockchain vì cốt lõi của nó là bảng cân đối kế toán toàn cầu cho chúng ta câu trả lời về việc ai sở hữu tài sản nào vào thời điểm nào.

Blockchain ghi lại toàn bộ lịch sử giao dịch. Rất dễ dàng để kiểm tra hồ sơ trong blockchain. Blockchain đi kèm với một lợi thế lớn. Nó cho phép chúng ta sở hữu nội dung mà không cần người trung gian không cần thiết và đảm bảo rằng không ai trong hệ thống có thể gian lận.

Về cơ bản, mạng blockchain có hai nhiệm vụ cơ bản. Để duy trì sổ cái và cho phép chuyển giá trị từ tài khoản này sang tài khoản khác thông qua các giao dịch. Thế hệ đầu tiên của mạng blockchain chỉ cho phép gửi giao dịch vô điều kiện (được đẩy từ tài khoản của Alice sang tài khoản của Bob). Thế hệ thứ hai đã thêm khả năng lập trình , tức là khả năng gửi giao dịch có điều kiện. Có các công cụ dành cho nhà phát triển bên thứ ba cho phép họ viết và triển khai các chương trình (hợp đồng/tập lệnh thông minh) mà mạng có thể thực thi theo cách phi tập trung. Mạng blockchain thế hệ đầu tiên có thể được xem như PayPal. Thế hệ thứ hai sẽ cho phép một hệ thống ngân hàng toàn diện.

Trong thế giới tài chính truyền thống, mọi người dựa vào kế toán và các hệ thống tập trung tinh vi. Để đảm bảo kế toán không gian lận, cần phải theo dõi các luồng tài chính, tích cực thực hiện các biện pháp ngăn chặn gian lận và kiểm tra sổ cái.

Mạng blockchain dựa trên các quy tắc được ghi vào mã nguồn. Giả sử mã nguồn được triển khai chính xác và hoạt động như hầu hết mọi người mong đợi, thì không cần phải đề phòng và tất cả dữ liệu đều có sẵn cho mọi người. Mọi người đều có thể có sổ cái toàn cầu trên máy tính của mình và tương tác trực tiếp với mạng. Nó cho phép tương tác Ngang hàng giữa những người dùng trong đó mạng phi tập trung là người trung gian đáng tin cậy.

Cách hiểu blockchain từ phối cảnh khối

Blockchain về bản chất là một cơ sở dữ liệu cụ thể có khả năng đảm bảo tính bất biến của các bản ghi lịch sử. Các bản ghi liên quan đến việc chuyển giao giá trị giữa những người dùng diễn ra thông qua các giao dịch. Blockchain luôn biết câu trả lời chính xác cho câu hỏi người dùng X nào sở hữu token Y tại thời điểm Z. Bởi vì blockchain là ẩn danh giả, nên địa chỉ blockchain được sử dụng thay vì người dùng cụ thể. Blockchain lưu giữ lịch sử của tất cả các giao dịch được thực hiện từ đầu cho đến hiện tại. Ngoài ra, nó đảm bảo rằng lịch sử không thể bị ghi đè.

Về mặt kỹ thuật, blockchain là một máy trạng thái vì nó ghi nhớ các sự kiện trước đó , được gọi là các trạng thái hệ thống. Những sự kiện này là tương tác giữa những người dùng. Trạng thái có thể được thay đổi trong các điều kiện được xác định trước. Mỗi giao thức đã triển khai một logic cho phép trạng thái chuyển từ S-0 sang S+1. Theo các khoảng thời gian đều đặn, mạng tạo ra các khối mới trong đó xảy ra cái gọi là sự chuyển đổi trạng thái.

Sự khác biệt giữa UTXO và mô hình dựa trên kế toán nằm ở cách xử lý sổ sách kế toán. Nó không liên quan gì đến việc chuyển trạng thái từ quan điểm thêm các khối mới. Một khối mới được tạo bởi một node và phải được phát đến mạng. Mỗi khối mới chứa một tập hợp các giao dịch và nếu nó được đa số người tham gia trong mạng chấp nhận (về mặt kỹ thuật là bởi các node đầy đủ tham gia tích cực vào sự đồng thuận của mạng), thì quá trình chuyển đổi trạng thái sẽ xảy ra. Nếu một khối được chấp nhận, tất cả các giao dịch chứa trong đó cũng được chấp nhận. Khối mới sẽ được lưu trữ vĩnh viễn trong blockchain và với sự bổ sung của nó, chủ sở hữu nội dung sẽ thay đổi chính xác như được quy định bởi các giao dịch được chấp nhận.

Về cơ bản, vai trò của mạng blockchain là xác thực các giao dịch, chèn các giao dịch hợp lệ vào các khối mới, xác thực các khối và thêm chúng vào lịch sử của blockchain. Hãy nói thêm rằng quá trình này diễn ra theo cách phi tập trung , vì vậy, các giao dịch và khối mới cần được phát tới toàn bộ mạng xử lý việc xác thực.

Địa chỉ blockchain

Quyền sở hữu tài sản (tiền xu và token) được thể hiện bằng việc sở hữu khóa mật mã riêng đến một địa chỉ đã cho, được lấy từ khóa mật mã công khai. Thông thường, địa chỉ được băm. Bạn có thể coi giao dịch là một thông báo cụ thể gửi tới mạng trong đó người gửi hướng dẫn chuyển một số tài sản đã chọn từ địa chỉ của người gửi đến địa chỉ của người nhận. Một giao dịch hợp lệ phải có bằng chứng rằng người gửi là chủ sở hữu thực sự của token. Để thực hiện việc này, một khóa mật mã riêng tư được sử dụng để ký giao dịch. Mạng, hay đúng hơn là từng node, có thể xác minh chữ ký và đánh giá xem giao dịch có hợp lệ hay không. Đối với các giao dịch đơn giản, việc xác thực dựa trên cặp khóa riêng và khóa chung.

HÌNH ẢNH: Ví sẽ giúp người dùng tạo địa chỉ blockchain và gửi các giao dịch đã ký. Mạng sẽ xác minh giao dịch thông qua khóa công khai và nếu nó hợp lệ, nó sẽ được đưa vào khối mới.

Nếu giao dịch được chấp nhận và được chứa trong một khối đã được thêm vào blockchain, tài sản sẽ thuộc sở hữu của chủ sở hữu địa chỉ của người nhận. Chỉ chủ sở hữu mới có thể chi tiêu chúng, một lần nữa thông qua chữ ký được tạo bằng khóa riêng. Tất nhiên, người dùng có thể gửi tài sản cho chính mình.

Khái niệm này giống nhau đối với cả UTXO và mô hình dựa trên kế toán vì nó dựa trên mật mã khóa công khai (mật mã bất đối xứng).

Điều quan trọng cần nhớ là những gì người dùng cho là tiền xu hoặc token thực ra chỉ là các số kỹ thuật số được liên kết với địa chỉ blockchain. Mục đích của giao dịch là chuyển một số từ địa chỉ người gửi và gán cùng một giá trị cho một địa chỉ hoặc chia nó thành nhiều địa chỉ người nhận. Vì phí là bắt buộc nên giá trị thường sẽ được chia cho nhiều địa chỉ. Giá trị ở đầu vào và đầu ra của giao dịch phải luôn giống nhau. Một giá trị không thể được tạo ra hoặc mất đi trong một giao dịch thông thường. Các mạng thường xác định các quy tắc để tạo một giá trị mới.

Bất cứ khi nào mọi người nói về tiền xu hoặc token, bao gồm cả trong bài viết này, họ thực sự đang nói về các con số. Token chỉ là sự trừu tượng hóa của các số để người dùng dễ hiểu.

Người dùng coi nội dung của họ là số dư trong tài khoản của họ. Ví tạo tất cả các cặp khóa riêng tư và riêng tư để chúng biết tất cả các địa chỉ công khai của người dùng. Tất cả các địa chỉ được tạo có thể chứa nội dung. Ví tính tổng tất cả token tại các địa chỉ (tính tổng tất cả các số kỹ thuật số) và hiển thị số này cho người dùng dưới dạng số dư. Một chiếc ví chỉ có thể có một địa chỉ duy nhất và mọi thứ sẽ hoạt động giống hệt nhau.

Sự khác biệt giữa UTXO và dựa trên tài khoản người mẫu

Sự khác biệt giữa UTXO và mô hình dựa trên tài khoản nằm ở cách tài sản được lưu trữ tại các địa chỉ và cách chúng được xử lý trong các giao dịch. Nói cách khác, cách hai mô hình khác nhau xử lý số dư và cách trạng thái của hệ thống được ghi lại. Trong bối cảnh rộng hơn, điều quan trọng là những quy tắc và điều kiện nào được xác định (và được triển khai trong mã nguồn của các node) khi một khối mới được tạo. Quá trình xác thực bởi mạng là một phần không thể thiếu trong quá trình chuyển giá trị.

Đầu ra giao dịch chưa chi tiêu ( UTXO ) là thuật ngữ kỹ thuật chỉ số lượng tài sản kỹ thuật số còn lại sau một giao dịch được xử lý. UTXO là một số kỹ thuật số mà bạn có thể coi là một số nội dung. Trong mô hình UTXO, bạn có thể sử dụng thuật ngữ UTXO và tài sản (đồng xu hoặc token) thay thế cho nhau.

Cardano sử dụng mô hình UTXO mở rộng, được gọi là Extended-UTXO ( EUTXO ). Trong mô hình EUTXO, quá trình chuyển nội dung được ghi lại dưới dạng biểu đồ chu kỳ có hướng (DAG) giữa các địa chỉ. Nghe có vẻ đáng sợ, không cần phải sợ. Trên thực tế, nó rất dễ hiểu.

Như chúng ta đã nói, mỗi UTXO được biểu thị bằng một số kỹ thuật số và là một bản tóm tắt của một đồng xu hoặc token. Bạn có thể coi UTXO là tiền giấy hoặc tiền xu vật lý, nhưng có điểm khác biệt là không có mệnh giá xác định nào mà UTXO cần phải có. Ví dụ: 10 ADA có thể là một UTXO. 12 ADA cũng có thể là một UTXO. Thậm chí, 116,85 cũng có thể là một UTXO.

Bây giờ, hãy tưởng tượng Alice có tất cả ba UTXO trong ví của cô ấy. Việc cô ấy có tất cả 3 UTXO ở cùng một địa chỉ hoặc mỗi UTXO ở một địa chỉ riêng không quan trọng. Nếu muốn biết số dư của mình, cô ấy phải tính tổng tất cả các UTXO. Ví của cô ấy sẽ làm điều đó cho cô ấy. Số dư của cô ấy là 10 + 12 + 116,85 = 138,85 ADA.

HÌNH ẢNH: Cùng một số dư trong ví của bạn có thể được thể hiện khác nhau khi nói đến việc phân phối UTXO trên các địa chỉ. Bạn có thể có 3 UTXO trên một địa chỉ hoặc 3 UTXO trên 3 địa chỉ.

Hãy xem điều gì xảy ra khi Alice quyết định gửi 15 ADA cho Bob. Bob có 21 ADA trong ví của mình tại một địa chỉ. Anh ta quyết định tạo một địa chỉ mới để nhận 15 ADA từ Alice. Ví của Alice phải sử dụng 2 UTXO. Ví chọn UTXO với 10 và 12 ADA. UTXO với 10 ADA được chi tiêu đầy đủ. Chỉ 5 ADA + 0,2 ADA (phí giao dịch) được lấy từ UTXO với 12 ADA.

Sau khi giao dịch được chấp nhận, Alice sẽ chỉ có 2 UTXO với 6,8 và 116,85 ADA. Tổng cộng, Alice sẽ có 123,65 ADA. Bob sẽ có 2 UTXO với 21 và 15 UTXO. Tổng cộng, Bob sẽ có 36 ADA. 0,2 ADA sẽ được thêm vào địa chỉ phí.

HÌNH ẢNH: Quá trình chuyển đổi giữa hai trạng thái đã được thực hiện thông qua một giao dịch. Giao dịch được tạo ở trạng thái N (khối N) và được đưa vào khối N+1.

Một sự chuyển đổi giữa hai trạng thái (khối) đã được thực hiện thông qua một giao dịch. Thành phần của giao dịch là quan trọng. Một giao dịch có đầu vào và đầu ra. Lưu ý cách các giá trị trên đầu vào được chuyển đổi thành các giá trị trên đầu ra theo nhu cầu của giao dịch, chính xác như cách người gửi (ví) đã tạo. Mỗi UTXO trong một giao dịch phải được chi tiêu toàn bộ vì không thể chỉnh sửa các bản ghi trong các khối trước đó. Đầu vào là một bộ UTXO sẽ được chi tiêu, tức là tổng giá trị sẽ được sử dụng để tạo ra đầu ra của giao dịch. Đầu ra của giao dịch cũng là một bộ UTXO được gán cho một địa chỉ mới. Ngoài ra, một số hoặc tất cả các UTXO có thể được gán cho cùng một địa chỉ với các giá trị khác nhau. Một người dùng có thể có 3 UTXO tại một địa chỉ và mong muốn chỉ có 1 UTXO tại cùng một địa chỉ. Tổng giá trị vẫn giữ nguyên.

Trong ví dụ của chúng ta, chúng ta có hai đầu vào và ba đầu ra. Đầu vào là 3 UTXO thuộc về Alice. Đầu ra là 3 UTXO. Cụ thể, một UTXO có 15 ADA cho Bob, một UTXO có 0,2 ADA làm phí giao dịch và một UTXO có 6,8 ADA, là số tiền được trả lại cho Alice. Để một giao dịch hợp lệ, số xu trên đầu vào phải khớp với số xu trên đầu ra. Trong ví dụ của chúng ta, đây là 22 đồng ADA.

Mọi người có thể thấy lạ khi cần phải trả lại 6,8 ADA cho Alice. Nó tương tự như những gì nhân viên thu ngân tại cửa hàng sẽ trả lại cho bạn nếu bạn thanh toán với hóa đơn cao hơn tổng giá mua hàng của bạn. Một lần nữa, mỗi UTXO phải được chi tiêu đầy đủ, vì vậy cần phải đảm bảo rằng phần còn lại được trả lại (nếu có phần còn lại) cho Alice như một phần của giao dịch.

Lưu ý rằng mô hình UTXO hoạt động với các UTXO riêng lẻ trong quá trình tạo giao dịch. Khi chi tiêu một số lượng token nhất định, bạn phải chọn số lượng UTXO phù hợp cần thiết. Nếu tổng số token trong UTXO đã chọn lớn hơn số lượng token sẽ được chi tiêu, thì phần còn lại phải được trả lại dưới dạng UTXO mới cho địa chỉ của người gửi.

UTXO được coi như tiền thật. Nếu bạn phải trả 85 đô la tại một cửa hàng, bạn có thể thanh toán bằng tờ 100 đô la và nhân viên thu ngân sẽ trả lại cho bạn 15 đô la (tiền giấy 10 đô la và 5 đô la). Bằng cách nào đó, bạn không thể cắt 85 đô la khỏi tờ 100 đô la và thanh toán bằng số tiền đó. Bạn có thể tìm thấy 17 tờ 5 đô la trong ví của mình và thanh toán bằng chúng. Bạn cũng có thể có 17 UTXO với 5 ADA trong ví Cardano của mình.

Mỗi UTXO chỉ có thể được chi tiêu một lần và không bao giờ được sử dụng lại trong tương lai. Sau khi nó được chi tiêu, một hoặc nhiều UTXO mới sẽ được tạo và sau đó có thể được chi tiêu. Chu kỳ này liên tục được lặp lại. Mô hình UTXO là một cách tổ chức blockchain sao cho không có nội dung nào được chi tiêu hai lần. Blockchain chuyển sang trạng thái mới theo định kỳ. Người dùng có thể chi tiêu UTXO chưa chi tiêu ở bất kỳ trạng thái nào trong tương lai. Ví dụ: Bob có thể nhận UTXO ở trạng thái N và quyết định chi tiêu nó trong 14 ngày, có thể là trạng thái N+60.480. Chi tiêu UTXO về cơ bản có nghĩa là chuyển giá trị sang một địa chỉ khác.

Có một số giao dịch trong mỗi khối, vì vậy nhiều UTXO được sử dụng. Tất cả các giao dịch cùng nhau tạo thành một bộ sưu tập (một khối) đại diện cho sự chuyển đổi giữa các trạng thái. Trong mô hình UTXO, toàn bộ biểu đồ của đầu ra giao dịch, đã chi tiêu và chưa chi tiêu, đại diện cho trạng thái chung. Có thể phân biệt giữa trạng thái hiện tại và tất cả các trạng thái trước đó, về cơ bản là toàn bộ lịch sử giao dịch kể từ khối Genesis đầu tiên.

Nếu bạn quan tâm đến số lượng tất cả token có thể được chi tiêu ở trạng thái hiện tại, thì bạn sẽ phải tính tất cả các đầu ra chưa được chi tiêu (UTXO). Tìm kiếm chúng về cơ bản có nghĩa là xem qua tất cả các giao dịch từ khối Genesis cho đến hiện tại. Các node đầy đủ xác minh tất cả các giao dịch trong quá trình đồng bộ hóa với mạng để chúng biết về bộ UTXO hiện tại.

HÌNH ẢNH: Vị trí UTXO giữa các bang. Có 6 UTXO màu xanh trên ảnh chưa được sử dụng.

Bây giờ, hãy xem xét mô hình dựa trên tài khoản. Điều này tương tự như tài khoản ngân hàng. Cũng như mô hình UTXO, tài sản là các số kỹ thuật số được liên kết với địa chỉ blockchain. Trong mô hình dựa trên tài khoản, chỉ có số dư hiện tại được duy trì tại địa chỉ cho một loại nội dung nhất định. Giao dịch điều chỉnh số dư trên các địa chỉ theo cách nó trừ một giá trị từ một địa chỉ và thêm giá trị đó vào một địa chỉ khác.

Hãy minh họa điều này bằng một ví dụ. Alice có 138,85 ETH và quyết định gửi cho Bob 15 ETH. Bob có 21 ETH trong số dư của mình.

HÌNH ẢNH: Giao dịch thay đổi số dư trên cả hai địa chỉ trong quá trình chuyển đổi trạng thái.

Giao dịch trừ 15 ETH từ số dư của Alice và cộng vào số dư của Bob. Tiếp theo, phí giao dịch 0,15 ETH được khấu trừ từ số dư của Alice (GAS).

Trong mô hình dựa trên tài khoản, trạng thái toàn cầu có thể được hiểu là một cơ sở dữ liệu của tất cả các tài khoản và số dư hiện tại của các tài sản khác nhau trên mạng. Với mỗi lần thêm một khối mới, trạng thái của hệ thống được cập nhật theo tất cả các giao dịch có trong khối. Số lượng tài khoản vẫn không đổi và không phụ thuộc vào số lượng giao dịch được thực hiện, miễn là số lượng người dùng không đổi.

HÌNH ẢNH: Trạng thái cuối cùng N+3 là trạng thái chung hiện tại.

Lưu ý sự khác biệt giữa hai khái niệm. Mô hình UTXO ở cấp giao thức không hoạt động với ý tưởng về ví hoặc số dư. Mô hình này chỉ dựa trên lịch sử giao dịch. Số dư của người dùng phải được xác định cục bộ dựa trên lịch sử chuyển của UTXO.

Quay lại khối

Bây giờ, hãy quay trở lại các khối và giải thích tầm quan trọng của chúng trong quá trình chuyển đổi giữa các trạng thái. Về cơ bản, mỗi giao dịch là một yêu cầu thay đổi trạng thái chung. Trong trường hợp mạng blockchain, phần lớn các node trong mạng phải đồng ý và chấp nhận trạng thái mới. Đồng bộ hóa toàn bộ mạng với mọi giao dịch đơn lẻ sẽ rất kém hiệu quả về tài nguyên. Đồng bộ hóa toàn cầu các node là một quá trình tốn thời gian vì thông tin phải được phát ra toàn thế giới. Khi số lượng giao dịch tăng lên, mạng sẽ không thể đồng bộ hóa kịp thời. Giải pháp là một khối chứa nhiều giao dịch. Nhiều yêu cầu của người dùng được xử lý trong đồng bộ hóa thông qua các khối.

Các khối là nhịp tim của mạng blockchain. Bitcoin chuyển từ trạng thái hiện tại sang trạng thái mới trung bình cứ sau 10 phút. Cardano khoảng 20 giây một lần.

Vì mỗi giao dịch riêng lẻ là một yêu cầu thay đổi trạng thái, nên một khối, với tất cả các giao dịch chứa trong đó, sẽ trở thành yêu cầu thay đổi trạng thái và là phương tiện đồng bộ hóa mạng. Nếu trạng thái chung thay đổi, phần lớn các node bắt buộc trong mạng phải chấp nhận toàn bộ khối. Điều này có nghĩa là tất cả các giao dịch trong khối phải có hiệu lực riêng lẻ và chung với nhau. Ví dụ: khi xác minh một khối mới, mọi node phải đảm bảo rằng cùng một nội dung không được chi tiêu hai lần. Toàn bộ khối sẽ bị mạng từ chối nếu nó không phù hợp với các quy tắc xác thực.

HÌNH ẢNH: Mạng blockchain liên tục đồng bộ hóa. Quá trình chuyển đổi giữa các trạng thái diễn ra thông qua các khối.

Blockchain về cơ bản là một chuỗi các khối được liên kết với nhau theo cách mà thứ tự không thể thay đổi. Trong hầu hết các mạng hiện tại, một node được chọn ngẫu nhiên sẽ tạo ra một khối mới. Khối này sau đó được phát đến tất cả các node khác trong mạng. Điều quan trọng là khối mới được lan truyền khắp mạng trước khi một node khác được chọn ngẫu nhiên tạo một khối mới khác để khối mới có thể được liên kết với khối trước đó. Nếu quá trình lan truyền các khối mới quá chậm, thì các nhánh sẽ được tạo, đây là trạng thái không mong muốn. Khi một khối khác được thêm vào khối trước đó, cần phải chọn một trong hai khối, điều đó có nghĩa là một trong các khối sẽ tồn tại mãi mãi trong blockchain và khối còn lại sẽ bị bỏ rơi (với tất cả các giao dịch).

UTXO và các mô hình dựa trên tài khoản không khác nhau về khái niệm chuyển đổi sang trạng thái mới dựa trên các khối. Điểm khác biệt cơ bản nằm ở bản cập nhật trạng thái toàn cầu. Trong mô hình UTXO, trạng thái chung chỉ được mở rộng bằng cách tạo UTXO mới, trong khi ở mô hình dựa trên tài khoản, trạng thái chung được cập nhật ở cấp độ thay đổi số dư.

Hai mô hình cũng khác nhau về cách chúng xử lý các giao dịch. Mô hình UTXO là mô hình xác minh. Giao dịch chỉ định kết quả mong muốn của quá trình chuyển đổi trạng thái. Kết quả được xác định là một UTXO mới được tạo dựa trên các đầu vào của giao dịch. Node xác minh xem đầu vào chưa được chi tiêu và liệu chữ ký số của giao dịch hoặc điều kiện chi tiêu khác có hợp lệ hay không. Mô hình dựa trên tài khoản là mô hình tính toán. Các giao dịch đang hướng dẫn về quá trình chuyển đổi trạng thái sẽ như thế nào. Các node tính toán trạng thái mới dựa trên hướng dẫn. Trong cả hai trường hợp, việc thay đổi trạng thái có thể yêu cầu thực thi hợp đồng thông minh. Hợp đồng thông minh có thể được coi là một phần mở rộng của hướng dẫn chuyển đổi trạng thái.

Sự khác biệt trong UTXO và các mô hình dựa trên tài khoản có ý nghĩa khi nói đến việc xác thực các khối, thực thi hợp đồng thông minh và khả năng mở rộng.

Hiểu những điều cơ bản

Trước khi đi sâu vào UTXO mở rộng, cần phải giải thích ngắn gọn một số khái niệm cơ bản mà các nhà phát triển đã biết nhưng không phổ biến với công chúng.

Hãy bắt đầu với các thuật ngữ đồng thời và song song.

Đồng thời có nghĩa là nhiều tính toán đang diễn ra “gần như” cùng một lúc. Người dùng có thể nhận thấy rằng các tác vụ đang được thực hiện đồng thời, nhưng chỉ có một tác nhân trong nền chuyển đổi giữa các tác vụ rất nhanh chóng. Điều này xảy ra nếu bạn có máy tính đơn bộ xử lý. Đồng thời cho phép trình soạn thảo văn bản và trình phát nhạc chạy cùng một lúc. Quy trình dành một khoảng thời gian ngắn cho mỗi quy trình để từ quan điểm của người dùng, chúng dường như đang chạy đồng thời. Điều này là do bộ xử lý nhanh hơn nhiều so với nhận thức của con người. Nếu máy tính có nhiều bộ xử lý, thì máy tính có thể ủy quyền các tác vụ riêng lẻ cho một bộ xử lý chuyên dụng. Do đó, các tác vụ có thể chạy song song.

Để đạt được tính đồng thời trong một nhiệm vụ lớn hoặc một nhóm nhiệm vụ (có thể liên quan hoặc không), bạn phải có thể chia công việc thành các phần nhỏ hơn để có thể làm việc độc lập trên các nhiệm vụ con.

Khi một tác nhân đơn lẻ xử lý một loạt tác vụ, nó có thể hoàn thành một tác vụ trước khi bắt đầu tác vụ tiếp theo. Trong trường hợp này, tác nhân sẽ xử lý các tác vụ tuần tự. Ngoài ra, một diễn viên duy nhất có thể lần lượt chuyển đổi giữa các tác vụ vào thời điểm thích hợp. Một diễn viên duy nhất có thể hoàn thành tất cả các nhiệm vụ gần như cùng một lúc. Câu hỏi đặt ra là liệu chuyển đổi có hiệu quả hơn đối với các nhiệm vụ nhất định hay không. Trong trường hợp này, các tác vụ được xử lý đồng thời nhưng không song song.

Việc này có thể hiệu quả hơn khi có nhiều tổng đài viên có khả năng xử lý một loạt tác vụ. Trong trường hợp này, nhiều tổng đài viên phải có khả năng tiến hành các nhiệm vụ cùng lúc mà không can thiệp vào nhau. Các tác vụ sẽ được xử lý đồng thời và cả song song , vì vậy chúng sẽ được hoàn thành nhanh hơn.

HÌNH ẢNH: Hãy có thêm nhiều nhiệm vụ phải xử lý. Một diễn viên duy nhất có thể hoàn thành từng nhiệm vụ một, tức là tuần tự. Ngoài ra, một tác nhân đơn lẻ có thể chuyển đổi giữa các tác vụ được xử lý đồng thời. Bạn có thể thấy rằng các tác vụ có thể được xử lý bởi 3 tác nhân. Trong trường hợp này, các tác vụ được xử lý đồng thời và song song.

Đôi khi có thể khó chia công việc thành nhiều nhiệm vụ có thể được xử lý riêng. Điều này phụ thuộc vào việc liệu đầu vào có thể được chia thành các đơn vị riêng biệt hay liệu nhiều tác nhân cần sử dụng một tài nguyên duy nhất cùng một lúc hay không. Trong trường hợp này, nhân viên hỗ trợ có thể gặp phải sự tranh chấp. Điều đó có nghĩa là nhiều nhân viên muốn sử dụng các tài nguyên duy nhất đồng thời nhưng chỉ một trong số họ thực sự có thể thành công. Người chiến thắng có thể sử dụng tài nguyên vĩnh viễn hoặc giải phóng tài nguyên đó cho người khác khi không cần nữa. Tranh chấp có thể được giải quyết bằng một số hình thức đồng bộ hóa các tác nhân. Các đại lý có thể bị hạn chế trong việc xử lý các nhiệm vụ con của họ.

Nói chung, sẽ có lợi khi cố gắng đạt được mức độ song song hóa tối đa khi chúng ta quan tâm đến tốc độ xử lý một tác vụ hoặc một loạt các tác vụ nhỏ hơn. Từ quan điểm về khả năng mở rộng, mạng blockchain luôn có lợi hơn nếu có thể đạt được mức độ song song cao hơn, tức là cho phép xử lý đồng thời nhiều giao dịch hơn. Tuy nhiên, có thể cần phải giải quyết tranh chấp và nhiều khía cạnh khác.

Không thể nói một cách dứt khoát rằng xử lý song song luôn là giải pháp tốt nhất có thể. Đồng thời có thể có lợi thế của nó trong một số trường hợp cụ thể. Đặc biệt là nếu một số hình thức đồng bộ hóa là cần thiết để tránh các vấn đề tranh chấp. Không có cái gọi là thiết kế toàn cầu tốt nhất. Thay vào đó, chúng ta có thể nói về một giải pháp phù hợp hơn cho một vấn đề cụ thể.

Hãy giải thích thuật ngữ thuyết tất định. Thuật toán xác định là một thuật toán, với một đầu vào cụ thể, sẽ luôn tạo ra đầu ra giống nhau, với máy bên dưới luôn đi qua cùng một chuỗi trạng thái.

Từ quan điểm của người dùng, điều này có nghĩa là họ có thể ước tính hoặc thậm chí biết trước kết quả mà họ có thể mong đợi sau khi chèn các đầu vào cụ thể. Ví dụ: nếu bạn nhập phép tính 5+5 vào máy tính, bạn dự đoán trước rằng kết quả là 10. Bất kỳ kết quả nào khác sẽ là lỗi. Các nhà phát triển cố gắng xây dựng các hệ thống càng chắc chắn càng tốt vì điều này đảm bảo mức độ độ tin cậy cao và do đó đảm bảo trải nghiệm người dùng cao.

Trong ngữ cảnh của blockchain, người dùng muốn có thể dự đoán trước kết quả của việc gửi giao dịch. Chủ nghĩa xác định có nghĩa là khi người dùng tạo giao dịch, anh ta muốn giao dịch với phí đã đặt đi đến khối càng sớm càng tốt và có kết quả như mong đợi. Người dùng có cùng kỳ vọng về xác thực tập lệnh và thực thi hợp đồng thông minh. Khi một giao dịch được gửi, giao dịch đó sẽ không bị lỗi và người dùng sẽ không phải trả tiền cho một giao dịch không thành công.

Trong quá trình thiết kế mô hình kế toán, cùng với cách dự định xử lý hợp đồng thông minh, điều quan trọng là phải lường trước các điều kiện theo đó tính không xác định có thể xảy ra. Điều quan trọng là phải hiểu những lý do dẫn đến thuyết không xác định và cố gắng thiết kế một hệ thống trong đó nó có thể tránh được hoặc sẽ xảy ra ở mức tối thiểu. Các nhà phát triển ứng dụng phi tập trung nên được cung cấp các công cụ giúp họ tạo ra các chương trình hoạt động có thể dự đoán được và an toàn.

Một rủi ro đối với ứng dụng là quyền truy cập vào dữ liệu sổ cái có thể thay đổi , tức là dữ liệu có thể thay đổi liên tục. Nếu kết quả của một giao dịch hoặc hợp đồng thông minh phụ thuộc vào trạng thái của dữ liệu có thể thay đổi, thì tính không xác định có thể xảy ra trong quá trình thực thi. Sẽ luôn thuận lợi khi quá trình xử lý các hoạt động càng tách biệt càng tốt khỏi môi trường của nó (tránh sử dụng dữ liệu có thể thay đổi bên ngoài) và chỉ phụ thuộc vào dữ liệu cục bộ.

Mọi hoạt động luôn phụ thuộc ở một mức độ nào đó vào môi trường của nó. Câu hỏi đặt ra là môi trường có thể ảnh hưởng đến kết quả của một giao dịch ở mức độ nào và môi trường có thể bị ảnh hưởng như thế nào. Nếu kẻ tấn công có thể thay đổi dữ liệu sổ cái có thể thay đổi, thì hắn có thể tác động đến kết quả của các giao dịch và việc thực hiện các hợp đồng thông minh để thu lợi cá nhân. Thiết kế của hệ thống nên giảm thiểu khả năng bị tấn công.

Lịch sử tóm tắt của sự phát triển của các mô hình kế toán

Trước tiên, hãy bắt đầu với Bitcoin , loại tiền đầu tiên xuất hiện với mô hình UTXO. Ưu điểm của UTXO là việc tính toán trong quá trình xác minh giao dịch được thực hiện ngoại tuyến. Các giao dịch vừa là kết quả của phép tính (xác minh cục bộ) vừa là bằng chứng. Chỉ cần lưu trữ các giao dịch trong blockchain là đủ và không cần phải xử lý thêm các trạng thái và lưu trữ cuối cùng của chúng.

Các đầu vào của giao dịch luôn là các UTXO chưa được sử dụng hiện có và node có thể dễ dàng xác minh nó. Điều này có nghĩa là cùng một giao dịch hoặc cùng một đầu vào không thể được sử dụng hai lần. Việc xác minh rất dễ dàng vì quá trình này diễn ra trong một khối, là không gian có ranh giới xác định. Việc cố gắng sử dụng cùng một thông tin đầu vào lần thứ hai dễ dàng bị phát hiện và sẽ không được chấp nhận. Các giao dịch có thể được xử lý song song vì chúng không phụ thuộc vào bất kỳ trạng thái bên ngoài nào.

Mô hình UTXO trong Bitcoin rất yếu về khả năng lập trình. Hầu như không thể tạo ra một tính toán phức tạp. Việc cố gắng tạo một hợp đồng có trạng thái trên mô hình UTXO thường dẫn đến nhu cầu lưu trữ cao và mức sử dụng trạng thái thấp. Mỗi đầu vào yêu cầu một tập lệnh nhân chứng duy nhất và mỗi đầu ra yêu cầu một tập lệnh khóa duy nhất. Vì vậy, khi số lượng UTXO tăng lên, số lượng tập lệnh nhân chứng được liên kết cũng tăng theo. Sức mạnh tính toán cần thiết để xác minh tập lệnh cùng với nhu cầu lưu trữ tập lệnh và dữ liệu chứng kiến làm tăng yêu cầu về tài nguyên , do đó làm tăng chi phí.

Ethereum là đồng tiền đầu tiên đưa ra mô hình dựa trên tài khoản. Ethereum có thể viết một chương trình nhỏ với logic phức tạp được gọi là hợp đồng thông minh. Giao dịch được hiểu là sự kiện làm thay đổi trạng thái chung. Máy ảo Ethereum (EVM ) tính toán kết quả chuyển trạng thái của các sự kiện này dựa trên trạng thái blockchain trước đó.

Đây là một điểm quan trọng vì trạng thái trước đó trở thành một phần không thể thiếu trong phép tính hiện tại của trạng thái toàn cầu mới. Nói cách khác, tính chính xác của phép tính hiện tại phụ thuộc vào quá khứ. Các giao dịch (dữ liệu đầu vào để tính toán) ảnh hưởng đến trạng thái blockchain được phân tách theo cú pháp khỏi kết quả của các giao dịch (dữ liệu đầu ra).

Trạng thái chung được lưu trữ cục bộ trên các node và không được truyền đi trong các khối. Các node đạt được sự đồng thuận đa số về trạng thái toàn cầu mới bằng cách thực hiện cục bộ tính toán trạng thái toàn cầu của riêng họ dựa trên các giao dịch (sự kiện) và sau đó so sánh kết quả của họ với kết quả nhận được ( State-Root ). Nói cách khác, tất cả các node trung thực sẽ nhận được cùng một State-Root như node được đề xuất sau khi tính toán cục bộ. Đây là cách duy nhất để chuyển sang trạng thái toàn cầu mới trong toàn bộ mạng.

HÌNH ẢNH: Node đã xử lý 3 giao dịch (sự kiện) và chuyển từ trạng thái toàn cầu N sang trạng thái N+3. Sau đó, nó tạo ra một khối mới với trạng thái Gốc. Tất cả các node trong mạng phải tính toán cùng một State-Root sau khi xử lý các giao dịch.

Trong mô hình dựa trên tài khoản, tất cả các tài khoản đều có trạng thái. Điều này có nghĩa là tại thời điểm tính toán của quá trình chuyển đổi sang trạng thái mới (xử lý hợp đồng thông minh), trạng thái chung là bị khóa tức là không thay đổi. Các nhà phát triển có một sự trừu tượng nhất định giúp phát triển hợp đồng thông minh dễ dàng hơn. Họ có thể làm việc và tương tác với tất cả các số dư. Dựa trên kết quả được tính toán, một trạng thái chung mới sẽ được tạo, trạng thái này sẽ bị khóa lại trước lần tính toán tiếp theo, dẫn đến một trạng thái mới khác. Có một chuỗi chuyển đổi giữa các trạng thái.

Ưu điểm là các nhà phát triển có thể làm việc với bất kỳ tài khoản (số dư) nào khi trạng thái toàn cầu bị khóa. Điều này có nghĩa là có thể làm việc với một tài khoản cụ thể nhiều lần trong một khối. Điều này có thể là do việc xử lý tuần tự các giao dịch và hợp đồng. Nói cách khác, Ethereum hoạt động đồng thời rất tốt.

Thiết kế này thân thiện với nhà phát triển vì nó dễ làm việc. Mặt khác, các nhà phát triển không thể kiểm soát trình tự xử lý các giao dịch và hợp đồng, vì điều này nằm trong tay của các nhà sản xuất khối và người dùng đặt phí. Do đó, các nhà phát triển phải tính đến nhiều kết quả có thể xảy ra và các nỗ lực tấn công. Nó có thể là một thách thức.

Việc tuân thủ trình tự là rất quan trọng vì đây là một phần của phòng thủ chống lại cuộc tấn công chi tiêu gấp đôi. Mỗi tài khoản có một giá trị "nonce" được chứa trong mỗi giao dịch. Với mỗi giao dịch mới từ một tài khoản nhất định, nonce được tăng lên. Cơ chế này ngăn chặn việc xử lý song song các giao dịch. Nếu giao dịch đầu tiên của một số giao dịch của một tài khoản cụ thể không thành công và không được bao gồm trong một khối, thì các giao dịch tiếp theo cũng sẽ thất bại.

Điều quan trọng là phải hiểu rằng các giao dịch (sự kiện) phụ thuộc vào nhau và thứ tự của chúng trong khối có ý nghĩa quan trọng. Khi một node nhận được một khối mới, node đó chỉ chấp nhận khối đó nếu nó tính toán cùng một State-Root được đề xuất trong khối. Điều này sẽ chỉ xảy ra nếu thứ tự của các sự kiện đang được xử lý, tức là trình tự chuyển tiếp giống nhau, được tuân theo.

Một giao dịch đơn giản trong mô hình dựa trên tài khoản có thể được coi là yêu cầu thay đổi số dư của hai người dùng. Giao dịch là một sự kiện làm thay đổi trạng thái chung, không phải là đầu vào và đầu ra cụ thể. Do đó, một giao dịch phải được đánh giá về tính chính xác trong bối cảnh của trạng thái trước đó. Điều này cũng ứng dụng cho tất cả các ứng dụng và giao thức khác được xây dựng trên EVM.

Người dùng phản ứng với một trạng thái nhất định, chẳng hạn như giá của một tài sản, khi họ gửi giao dịch mới. Điều mà người dùng không thể tác động nhiều là vị trí dự kiến ​​của một giao dịch trong trình tự chuyển đổi trong khối. Đây có thể là một vấn đề đối với các giao dịch phức tạp hơn hoạt động với các điều kiện được xác định trước, vì không thể đảm bảo trước rằng quá trình chuyển đổi trạng thái được đề xuất sẽ vẫn hợp lệ khi thử đưa vào. Người dùng không bao giờ chắc chắn và không thể xác minh cục bộ trước rằng giao dịch của mình sẽ được thêm vào khối. Do đó, giao dịch có thể không thành công mặc dù đã thanh toán phí giao dịch. Kết quả của các giao dịch có độ không chắc chắn cao hơn và nó không mang tính quyết định.

Các giao dịch không thành công là kết quả của trạng thái chung (dữ liệu được chia sẻ có thể thay đổi). Nhiều bên có thể muốn gửi các giao dịch sẽ thay đổi trạng thái toàn cầu theo một cách cụ thể. Tuy nhiên, trạng thái chung đã sửa đổi có thể ngăn việc xử lý các giao dịch đã gửi khác. Nói cách khác, chỉ giao dịch được gửi đầu tiên tại một thời điểm nhất định hoặc trong các điều kiện cụ thể mới có thể được xử lý. Phần còn lại của các giao dịch có thể thất bại. Điều này làm phức tạp việc xây dựng các hợp đồng thông minh và có thể được coi là diện tích bề mặt cho các cuộc tấn công.

Hãy lấy một ví dụ cụ thể. Người dùng Bob có thể xây dựng giao dịch dựa trên trạng thái số dư cụ thể mà anh ta thấy tại một thời điểm nhất định. Tuy nhiên, những số dư này có thể đã bị thay đổi bởi giao dịch của Alice, giao dịch này bất ngờ được đặt trước giao dịch của Bob (Alice có thể sử dụng mức phí cao hơn hoặc người khai thác quyết định đặt giao dịch của Alice trước giao dịch của Bob vì phí là như nhau). Tại thời điểm khi giao dịch của Bob được chèn vào, trạng thái chung khác với trạng thái mà Bob đã tính đến. Sự thay đổi về trạng thái chung này có thể khiến giao dịch không thành công hoặc trong trường hợp xấu hơn có thể dẫn đến trạng thái không thể đoán trước.

Hãy tóm tắt. Mô hình dựa trên tài khoản do Ethereum triển khai có lợi thế cho các nhà phát triển ứng dụng là không phải lo lắng về đồng thời. Các nhà phát triển có thể tự do làm việc với tài khoản người dùng và thay đổi số dư. Chúng ta đảm bảo rằng các số dư được truy cập riêng lẻ khi các sự kiện ra lệnh, do đó sẽ có ít rủi ro hơn khi hai nhân viên truy cập vào cùng một số dư đồng thời. Vì vậy, nó tương đối dễ dàng để thiết kế một ứng dụng. Mô hình dựa trên tài khoản cho phép người dùng truy cập vào một tài khoản nhiều lần trong một khối. Điều này có nghĩa là Alice có thể gửi ETH từ tài khoản của mình cho Bob trong một giao dịch và cũng có thể gửi ETH cho Carol trong một giao dịch khác. Cả hai giao dịch có thể nằm trong cùng một khối.

Nhược điểm là sự phức tạp của quá trình song song hóa đã nói ở trên, thường xuyên giao dịch không thành công và phải trả phí ngay cả đối với các giao dịch không thành công. Ngoài ra, do thứ tự của các giao dịch, có một vấn đề được gọi là Giá trị có thể trích xuất của máy khai thác (MEV).

Ưu điểm của E-UTXO

Cardano sử dụng mô hình UTXO mở rộng, viết tắt là EUTXO. Mục đích của mô hình EUTXO là hỗ trợ khả năng lập trình có tính biểu đạt cao hơn đồng thời duy trì tất cả các lợi ích của mô hình UTXO của Bitcoin. Mô hình UTXO mở rộng rất quan trọng đối với Cardano vì nó không chỉ muốn trở thành một mạng giao dịch. Cardano là một nền tảng vì vậy điều quan trọng là phải cho phép các nhà phát triển xây dựng chức năng phức tạp hơn. Điều này đạt được thông qua các hợp đồng thông minh. Trong trường hợp của Cardano, sẽ chính xác hơn khi nói về tập lệnh trình xác thực. Trong văn bản, chúng ta có thể sử dụng các thuật ngữ này thay thế cho nhau, nhưng chúng giống nhau.

EUTXO cung cấp một số lợi thế so với mô hình dựa trên tài khoản. Cụ thể, bảo mật cao hơn khi thực hiện hợp đồng thông minh, khả năng dự đoán phí , xác minh cục bộ đảm bảo rằng các giao dịch sẽ được chấp nhận sau khi gửi và trạng thái blockchain bị phân mảnh vốn có. Điều này cho phép song song hóa quá trình xử lý giao dịch, điều này có tác động tích cực đến khả năng mở rộng on-chain. Song song hóa cũng rất quan trọng đối với việc thực hiện các hợp đồng thông minh. Giống như các giao dịch, hợp đồng thông minh cũng có thể được thực hiện độc lập tức là song song.

Khi xử lý hợp đồng thông minh, thứ tự trong khối không quan trọng , không cần xem xét kết quả thực hiện của các hợp đồng khác trong khối, vì vậy bản thân việc thực thi có thể được coi là an toàn hơn. Nói cách khác, vì các kết quả thực thi hợp đồng thông minh riêng lẻ độc lập với nhau và không có trạng thái có thể thay đổi chung (toàn cầu) nên sẽ có ít bề mặt hơn cho các cuộc tấn công.

Điều quan trọng cần lưu ý là khả năng mở rộng của các ứng dụng phi tập trung dựa trên khả năng của mô hình kế toán. Nói chung, các hợp đồng thông minh và việc thực thi chúng có thể được coi là một lớp phụ thuộc vào khả năng của blockchain.

Các tùy chọn song song hóa dựa trên thiết kế UTXO ban đầu, trong đó mỗi UTXO chưa chi tiêu hiện có được tạo thành từ một chuỗi các giao dịch trước đó. Mỗi EUTXO có thể được xử lý độc lập. Không có thứ gọi là trạng thái toàn cầu nào cần được tính đến trong quá trình xử lý và xác thực EUTXO. Chỉ có tiểu bang địa phương là quan trọng. Điều đó có nghĩa là kết quả của giao dịch chỉ phụ thuộc vào việc sử dụng các UTXO là đối tượng không thay đổi , dùng một lần đóng vai trò là đầu vào của giao dịch sẽ tạo ra đầu ra.

HÌNH ẢNH: Node Cardano đã xử lý 3 giao dịch thông thường và 3 giao dịch tập lệnh. Sau đó, nó tạo ra một khối mới. Các giao dịch độc lập với nhau và có thể được xử lý và xác minh song song.

Mỗi giao dịch có thể sử dụng một hoặc nhiều EUTXO, điều này sẽ tạo ra các EUTXO mới có cùng tổng giá trị. Cách duy nhất mà một giao dịch có thể ảnh hưởng đến tác động của một giao dịch khác được ứng dụng cho sổ cái là chi tiêu cùng một EUTXO khi giao dịch sau đó cố gắng chi tiêu, do đó khiến node từ chối giao dịch đó.

Nếu một giao dịch vượt qua xác thực cục bộ, người dùng có thể gần như chắc chắn rằng giao dịch sẽ chuyển sang một khối mới. Các giao dịch trong mô hình EUTXO độc lập với nhau và có tính quyết định, nghĩa là giao dịch rất có thể sẽ không thất bại. Điều này cũng đúng đối với việc xác thực các tập lệnh Plutu. Người dùng có thể kiểm tra cục bộ xem tập lệnh Plutu có thể được gửi và chạy on-chain hay không. Nó đảm bảo rằng phí không bao giờ bị mất. Tuy nhiên, bạn phải tuân theo một quy tắc, đó là mỗi EUTXO chỉ có thể được chi tiêu một lần và toàn bộ trong một khối.

Việc chi tiêu UTXO phải được toàn bộ mạng chấp nhận như một phần của việc bổ sung một khối mới. Điều này có nghĩa là người nhận UTXO chỉ có thể chi tiêu nó trong khối tiếp theo. Không nằm trong cùng một khối mà UTXO đã được nhận. Việc thêm một khối mới có thể được coi là sự chuyển đổi trạng thái của blockchain Cardano. Tuy nhiên, trong chính các khối đó, các giao dịch riêng lẻ và EUTXO là độc lập với nhau.

Mô hình EUTXO mang tính quyết định hơn so với mô hình dựa trên tài khoản, nhưng giao dịch vẫn có thể bị từ chối. Từ chối có nghĩa là mặc dù giao dịch được xây dựng chính xác nhưng nó không thể được ứng dụng cho blockchain. Nếu điều này xảy ra, giao dịch không ảnh hưởng đến trạng thái của blockchain, vì vậy không có khoản phí nào được trả. Giao dịch bị từ chối xảy ra trong trường hợp tranh chấp. Điều này có nghĩa là trạng thái của blockchain thay đổi gần như cùng thời điểm mà người dùng thực hiện giao dịch cục bộ. Quá trình xác thực cục bộ đã được thông qua, nhưng trạng thái blockchain đã khác tại thời điểm gửi. Chủ nghĩa xác định đảm bảo rằng, bất cứ khi nào một giao dịch được chấp nhận , giao dịch đó sẽ chỉ có các tác động có thể dự đoán được đối với trạng thái sổ cái. Nói cách khác, nó sẽ có tác động tương tự đối với trạng thái sổ cái giống như trong quá trình xây dựng và xác thực cục bộ.

Nhà phát triển có thể khó tạo tập lệnh xác thực hơn vì họ phải tự xử lý đồng thời. Các giao dịch có thể xảy ra tranh chấp nếu chúng đồng thời phụ thuộc vào cùng một EUTXO. Ví dụ: nếu một vài EUTXO bị khóa bởi một hợp đồng thông minh thì chỉ một tác nhân duy nhất có thể tương tác với chúng bên trong một khối. Lưu ý rằng giới hạn này chỉ ứng dụng cho EUTXO. Các tác nhân khác nhau có thể tương tác với các hợp đồng thông minh khác mà không gặp bất kỳ lỗi đồng thời nào. Hợp đồng thông minh có thể xử lý một số UTXO khác nhau tạo nên trạng thái hiện tại và siêu dữ liệu off-chain cho phép diễn giải các UTXO đó.

HÌNH ẢNH: Xử lý đồng thời và song song. Đại lý có thể sử dụng nhiều EUTXO cùng một lúc. Họ có thể gặp phải sự tranh chấp khi muốn sử dụng cùng một EUTXO.

Song song hóa hoặc khả năng thực hiện nhiều hoạt động độc lập đồng thời là một tính năng quan trọng về hiệu suất và khả năng mở rộng của mạng tổng thể. Trạng thái toàn cầu của mô hình dựa trên tài khoản giới hạn các tùy chọn khả năng mở rộng, vì cực kỳ khó đạt được sự song song hóa trong xử lý giao dịch và cả thực thi hợp đồng thông minh. Với mô hình EUTXO, có thể đạt được mức đồng thời cao hơn, mở ra cơ hội cho khả năng mở rộng tăng lên.

Hãy cùng xem mô hình EUTXO có gì mới so với mô hình UTXO sử dụng Bitcoin. Việc xử lý một giao dịch trong mạng Cardano liên quan đến việc xác thực hành động được yêu cầu. Node xác minh rằng nó có thể thực hiện hành động được yêu cầu và tác giả của giao dịch đã cung cấp dữ liệu / đầu vào có liên quan.

Hành động phổ biến dành cho các giao dịch thông thường có ý định chi tiêu EUTXO được khóa bằng khóa công khai. Node xác thực rằng tác giả của giao dịch đã cung cấp chữ ký số với khóa riêng tư tương ứng. Hành động, tức là sử dụng EUTXO, sẽ được thực hiện nếu quá trình xác thực thành công. Không có gì mới ở đây so với Bitcoin.

Hành động tiếp theo là xác thực các giao dịch dự định chi tiêu EUTXO bị khóa bởi một địa chỉ tập lệnh.

Tập lệnh là một chương trình (một đoạn mã) quyết định liệu giao dịch chi tiêu EUTXO có được phép thực hiện như vậy hay không. Tập lệnh chứa các hàm thuần túy có kết quả là True hoặc Sai. Để xác thực một giao dịch, node gọi trình thông dịch tập lệnh, là chương trình có thể dịch và thực thi mã tập lệnh Plutu. Trình thông dịch thực thi tập lệnh có hàm băm được hình thành theo địa chỉ khóa UTXO. Nói cách khác, khi EUTXO bị khóa bởi tập lệnh Plutu, mã tập lệnh của EUTXO đó được liên kết với địa chỉ của nó.

HÌNH ẢNH: Node nhận được một giao dịch có hành động chi tiêu EUTXO, giao dịch này bị khóa bởi địa chỉ tập lệnh.

Chúng ta hãy xem điều gì thực sự đổi mới về EUTXO so với Bitcoin bên cạnh tính biểu cảm cao hơn của khả năng lập trình được kích hoạt bởi Plutus.

UTXO mở rộng cho phép người dùng tùy chọn thêm dữ liệu người dùng tùy biến ở định dạng giống JSON vào UTXO. Dữ liệu này được gọi là Datum. Datum sẽ cho phép các nhà phát triển cung cấp chức năng giống như tập lệnh. Dữ liệu người dùng có thể được coi là trạng thái tập lệnh cục bộ. Trạng thái này chỉ có hiệu lực cục bộ vì nó được liên kết với một UTXO cụ thể. Việc sử dụng toàn bộ tiềm năng của Datum là tùy thuộc vào các nhà phát triển.

Giao dịch có thể mang đối số dành riêng cho người dùng , được gọi là Redeemer. Redeemer có thể được xem là ý định của tác giả giao dịch về cách chi tiêu UTXO. Redeemer có thể được các nhà phát triển ứng dụng phi tập trung sử dụng cho nhiều mục đích khác nhau.

Thường có một ràng buộc giữa Datum và Redeemer phụ thuộc vào chức năng cụ thể của một ứng dụng cụ thể. Khi một giao dịch đang được xác thực, tập lệnh xác thực sẽ hoạt động với Datum , Redeemer và bối cảnh bao gồm dữ liệu giao dịch. Tập lệnh chứa các điều kiện cho phép sử dụng UTXO khi chúng được đáp ứng. Datum, Redeemer và ngữ cảnh giao dịch là dữ liệu được nhập vào tập lệnh.

HÌNH ẢNH: Dựa trên dữ liệu đầu vào, tập lệnh quyết định liệu có thể sử dụng EUTXO hay không.

Để sử dụng các EUTXO bị khóa bởi tập lệnh, trước tiên cần đưa tập lệnh vào blockchain. Việc mở khóa UTXO sẽ phụ thuộc vào tập lệnh, vì vậy, giao dịch sẽ chứa tập lệnh và cả UTXO sẽ bị khóa.

Các nhà phát triển (hoặc ứng dụng của họ) viết mã on-chain Plutu và đóng gói nó ở định dạng đặc biệt. Sau đó, một giao dịch phải được tạo trong đó tập lệnh Plutu sẽ được nhúng vào. Khi giao dịch đã được lưu trữ trong blockchain, một giao dịch khác có thể được gửi để bắt đầu thực thi tập lệnh. Giao dịch có thể được coi là thông báo đến tập lệnh.

Các nhà phát triển chia các ứng dụng thành mã on-chain và off-chain. Mã off-chain có thể là một phần của ví hoặc có thể là một ứng dụng phi tập trung (DEX). Phần off-chain của ứng dụng có thể tạo giao dịch chứa tập lệnh on-chain và EUTXO sẽ bị khóa. Đối với mỗi EUTXO, hàm băm của Datum cần được chỉ định. Người dùng phải ký vào giao dịch. Sau khi giao dịch được gửi và được mạng chấp nhận, EUTXO sẽ bị khóa bởi tập lệnh.

HÌNH ẢNH: Giao dịch Plutu chứa tập lệnh xác thực và thêm Datum vào EUTXO. Sau khi giao dịch được đưa vào khối, EUTXO sẽ bị khóa bởi tập lệnh.

Việc xác thực một tập lệnh đòi hỏi nhiều tài nguyên hơn so với việc xác thực một giao dịch thông thường. Một nguồn gốc của tính không xác định có thể là quy mô của phí thực thi tập lệnh/hợp đồng thông minh. Trong trường hợp của Cardano, ngân sách để thực thi tập lệnh là một phần của giao dịch và có thể tính toán trước phí chính xác tại địa phương. Trình thông dịch tập lệnh theo dõi mức tiêu thụ tài nguyên trong quá trình thực thi tập lệnh trong bối cảnh ngân sách. Nếu ngân sách thực thi đã cạn, quá trình đánh giá tập lệnh sẽ dừng lại và kết quả là Sai. Giá trị sai có nghĩa là EUTXO sẽ không được sử dụng.

Lưu ý rằng tập lệnh Plutu chỉ hoạt động với trạng thái được liên kết với EUTXO và hơn nữa với dữ liệu mà nó nhận được trong giao dịch. Việc thực thi tập lệnh không phụ thuộc vào bất kỳ thứ gì khác. Điều duy nhất sẽ thay đổi từ góc độ sổ cái ở cấp độ toàn cầu là chuyển EUTXO từ địa chỉ này sang địa chỉ khác với mỗi khối mới được thêm vào.

Hợp đồng tương tự có thể được sử dụng để khóa tiền của Alice và Bob. Việc thực thi tập lệnh cho tiền của Alice không ảnh hưởng đến việc thực thi tập lệnh cho tiền của Bob, vì chúng là hai quá trình thực thi độc lập cho các EUTXO riêng biệt. Kết quả của hai lần thực hiện riêng lẻ phụ thuộc vào các trạng thái cục bộ.

Giao dịch chi tiêu (giao dịch tin nhắn) được xây dựng để tương tác với tập lệnh. Đầu vào của giao dịch có thể là EUTXO bị khóa bởi tập lệnh. Giao dịch chi tiêu sẽ gọi trình thông dịch tập lệnh để xác thực tập lệnh và mở khóa EUTXO nếu các điều kiện được đáp ứng. Do đó, EUTXO đã mở khóa được chuyển đến một địa chỉ mới.

HÌNH ẢNH: Để sử dụng EUTXO từ số dư ứng dụng, trình thông dịch Plutu phải thực thi tập lệnh Plutu được liên kết với EUTXO. Tập lệnh sử dụng Datum, Redeemer và bối cảnh giao dịch làm đầu vào. Kết quả thực thi là True, do đó EUTXO có thể được tiêu thụ. 12 ADA được gửi đến địa chỉ của Bob.

Một số ứng dụng có thể cần hoạt động với trạng thái chung trên nhiều EUTXO và có thể sử dụng Datum để làm như vậy. Một loại trạng thái toàn cầu có thể đạt được trong một thiết kế giao thức cụ thể. Những người thiết kế giao thức phải biết rằng nếu EUTXO bị khóa bởi một tập lệnh thì chỉ một tác nhân duy nhất có thể tương tác với nó bên trong một khối. Nó có thể yêu cầu một số loại đồng bộ hóa giữa các tác nhân.

Hãy minh họa điều này bằng một ví dụ. Pool thanh khoản mà AMM DEX sử dụng là tài nguyên được chia sẻ vì người dùng muốn sử dụng chúng cùng một lúc (trong cùng một khối). Mỗi pool thanh khoản đều chứa một bộ EUTXO. Do đó, các EUTXO có sẵn cũng là tài nguyên được chia sẻ vì trừ khi một đại lý đặt trước một EUTXO cụ thể cho chính họ theo một số cách đã thỏa thuận, chúng sẽ có sẵn cho những người khác.

Thuật toán ứng dụng phải đảm bảo rằng khi các giao dịch được xây dựng, các tác nhân riêng lẻ không tranh giành các EUTXO trong pool. Các giao dịch muốn sử dụng một EUTXO cụ thể là độc lập với nhau từ góc độ xác thực. Tuy nhiên, sự phụ thuộc tồn tại do nhiều tác nhân có thể muốn sử dụng cùng một tài nguyên (cùng một EUTXO) cùng một lúc để xây dựng một giao dịch. Nói cách khác, các đại lý muốn làm việc đồng thời. Một giải pháp hiện đang được sử dụng là giao dịch số lượng lớn. Các đại lý tìm kiếm các UTXO yêu cầu phù hợp muốn tương tác với một pool thanh khoản cụ thể để thực hiện giao dịch hoán đổi được yêu cầu. Các đại lý làm điều đó với tất cả các yêu cầu hoán đổi có sẵn khác và chèn các giao dịch hoán đổi đã chọn vào một giao dịch lô lớn. Khi tạo một giao dịch hàng loạt, các đại lý biết những EUTXO nào đã được sử dụng. Họ có thể đảm bảo rằng một EUTXO cụ thể không được sử dụng hai lần trong một đợt giao dịch.

Kết luận

Điều tốt nhất về Cardano là nhóm liên tục nâng cấp nó, điều này sẽ tăng dần khả năng của nó. Tại thời điểm viết bài này, hard-fork Vasil đã đến với chúng ta, điều này sẽ mang lại nhiều cải tiến về Script cho Cardano. Cụ thể, đó là Đầu vào tham chiếu (CIP-31), Datum nội tuyến (CIP-32), Tập lệnh tham chiếu (CIP-33) và Đầu ra tài sản thế chấp (CIP-40). Tất cả những cải tiến này sẽ cung cấp cho các nhà phát triển nhiều lựa chọn hơn khi thiết kế ứng dụng của họ.

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