Skip to main content

Hiểu về sử dụng UTXO

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

Cardano sử dụng mô hình kế toán UTxO mở rộng cải tiến để hỗ trợ nhiều tài sản và hợp đồng thông minh. Nó khác với mô hình dựa trên tài khoản (Accounting) được các ngân hàng hoặc Ethereum sử dụng. Trong bài viết này, chúng tôi sẽ giải thích ngắn gọn sự khác biệt giữa mô hình dựa trên tài khoản và mô hình UTxO. Mục đích của bài viết là giải thích chi tiết cách người dùng chi tiêu UTxO.

Sự khác biệt giữa UTxO và Mô hình dựa trên tài khoản

Mô hình dựa trên tài khoản dựa trên khái niệm về tài khoản và số dư, giống với cách thức hoạt động của ngân hàng. Ethereum sử dụng mô hình này. Người dùng có tài khoản giữ số dư token của họ. Giao dịch cập nhật số dư của tài khoản người gửi và người nhận. Đó là một atomic operation tùy thuộc vào trạng thái toàn cầu.

atomic operation

Thuật ngữ "atomic operation" (hoặc "atomicity") là một khái niệm trong lĩnh vực khoa học máy tính và công nghệ thông tin. Nó đề cập đến một loạt các thao tác hoặc hành động trong hệ thống máy tính mà, một khi bắt đầu thực hiện, sẽ hoàn thành mà không bị can thiệp hoặc ngắt gián đoạn bởi bất kỳ tác vụ nào khác. Atomic operations đảm bảo tính toàn vẹn dữ liệu và độ nhất quán của hệ thống trong trường hợp có nhiều luồng hoặc tiến trình đang thao tác trên cùng một tài nguyên.

Mô hình eUTxO đã mở rộng mô hình UTxO được Bitcoin sử dụng. Nó dựa trên khái niệm đầu ra giao dịch chưa được chi tiêu (UTxO). UTxO có thể được sử dụng làm đầu vào cho một giao dịch mới. Mỗi giao dịch (chi tiêu) đều chứa đầu vào và đầu ra. Giao dịch sử dụng đầu ra chưa được chi tiêu từ các giao dịch trước đó và tạo ra đầu ra mới có thể được sử dụng làm đầu vào cho các giao dịch trong tương lai.

Trong mô hình UTxO, tài sản được lưu trữ trong sổ cái dưới dạng UTxO chứ không phải dưới dạng số dư tài khoản. Số dư của một địa chỉ được tính bằng cách cộng các giá trị của tất cả các UTxO do địa chỉ đó kiểm soát. Một tài khoản người dùng có thể chứa nhiều địa chỉ. Các mô hình dựa trên tài khoản thường chỉ hoạt động với một địa chỉ.

Mỗi UTxO chỉ có thể được sử dụng một lần, nghĩa là nó chỉ có thể được sử dụng làm đầu vào cho một giao dịch. Khi UTxO được sử dụng làm đầu vào, nó sẽ chuyển trạng thái sang đã được sử dụng vĩnh viễn. Một UTxO mới được tạo làm đầu ra của giao dịch, có thể được sử dụng làm đầu vào cho giao dịch trong tương lai.

Từ một UTxO được sử dụng làm đầu vào, có thể tạo ra nhiều UTxO hơn làm đầu ra. Mỗi UTxO mới có thể được gửi đến những người nhận (địa chỉ) khác nhau. Ví dụ: UTxO có 100 ADA có thể được sử dụng làm đầu vào cho hai UTxO mới có 20 và 80 ADA. UTxO với 20 ADA có thể được gửi đến địa chỉ của Alice và UTxO với 80 ADA có thể được gửi đến địa chỉ của Bob. Bằng cách này, giao dịch có thể phân chia giá trị của UTxO đầu vào và phân phối nó đến các địa chỉ khác nhau.

Điều này là cần thiết nếu Alice có UTxO với 100 ADA và muốn gửi Bob 80 ADA. 20 ADA phải quay về địa chỉ của Alice.

Trong mô hình UTxO, các giao dịch không có trạng thái, nghĩa là chúng không phụ thuộc vào bất kỳ lịch sử hoặc trạng thái toàn cầu nào trước đó. Giao dịch chỉ cần cung cấp đầu vào, đầu ra, phí và bằng chứng hợp lệ là hợp lệ.

Bằng chứng (witness) là một phần dữ liệu chứng minh rằng giao dịch được chủ sở hữu tiền ủy quyền. Bằng chứng có thể là chữ ký (đối với thông tin xác thực chính) hoặc thực thi tập lệnh (đối với thông tin xác thực tập lệnh). Chúng ta sẽ bàn về nó sau.

Bộ UTXO là tập hợp tất cả UTxO trong mạng Cardano. Nó lưu trữ tất cả thông tin cần thiết để xác thực một giao dịch mới mà không cần phải kiểm tra toàn bộ blockchain. Khi một giao dịch mới được tạo, UTXO đầu vào sẽ được sử dụng để yêu cầu số tiền họ đang nắm giữ.

Trong mô hình dựa trên tài khoản, các giao dịch cập nhật trạng thái chung của sổ cái bằng cách sửa đổi số dư của tài khoản người gửi và người nhận. Giao dịch có trạng thái, nghĩa là chúng phụ thuộc vào lịch sử trước đó và trạng thái chung của sổ cái. Các giao dịch có thể chi tiêu bất kỳ số tiền nào từ tài khoản, miễn là có đủ số dư. Giao dịch khấu trừ tiền từ số dư tài khoản của người gửi và ghi có vào số dư tài khoản của người nhận. Giao dịch cũng có thể thực hiện hợp đồng thông minh, có thể sửa đổi trạng thái của sổ cái hoặc kích hoạt các hành động khác.

Chi tiêu UTxO từ địa chỉ Shelley

Địa chỉ Shelley bao gồm tiêu đề và payload. Payload chứa thông tin xác thực thanh toán và tham chiếu địa chỉ cổ phần. Chúng tôi sẽ không đề cập đến việc stake trong bài viết này. Chúng tôi sẽ chỉ tập trung vào việc chi tiêu UTxO thông qua thông tin xác thực chính (khóa công khai/xác minh). và, chúng tôi sẽ chỉ quan tâm đến thông tin thanh toán.

Trong hình ảnh bên dưới, bạn có thể thấy sơ đồ địa chỉ Shelley cơ bản.

Thông tin xác thực thanh toán là một phần của địa chỉ Shelley dùng để xác định ai sở hữu số tiền trong địa chỉ đó. Thông tin xác thực thanh toán có thể là thông tin xác thực chính (dựa trên khóa công khai/xác minh) hoặc thông tin xác thực tập lệnh (mã băm của tập lệnh chi tiêu). Có thể có nhiều UTxO trên một địa chỉ Shelley.

Điều quan trọng là phải hiểu cách UTxO được liên kết với địa chỉ. Phải đảm bảo rằng các UTxO có thể được sử dụng từ một địa chỉ và cùng một địa chỉ đó có thể nhận các UTxO mới. Một sự tương tự thường được sử dụng là UTxO nằm trên địa chỉ hoặc địa chỉ chứa UTxO. UTxO được di chuyển giữa địa chỉ người gửi và người nhận. Sự tương tự này là tốt, nhưng nó hơi đơn giản.

UTxO có thể được mô tả đơn giản là một cấu trúc bao gồm mã định danh và giá trị. Mã định danh được gọi là điểm xuất phát. Điểm xuất phát hoạt động như một con trỏ tới vị trí của UTxO trong blockchain. Một điểm ngoài bao gồm ID giao dịch và chỉ mục đầu ra của giao dịch đã tạo UTxO. Giá trị là số lượng xu hoặc token mà UTxO nắm giữ.

Bạn có thể thấy UTxO trong hình ảnh bên dưới.

UTxO mới được tạo thông qua các giao dịch. Một giao dịch sử dụng UTxO đầu vào và tạo ra UTxO mới. Khi mạng Cardano xử lý các giao dịch, các UTxO (đầu ra) mới có địa chỉ và giá trị đích mong muốn (số lượng xu hoặc token) sẽ được tạo. Sau khi sử dụng UTxO đầu vào, nó không thể được sử dụng lần thứ hai.

Đầu vào của giao dịch là UTxO, nhưng về mặt kỹ thuật, nó là điểm đầu ra (tham chiếu) xác định UTxO trong blockchain. Điểm xuất phát bao gồm ID giao dịch trước đó và chỉ mục đầu ra của giao dịch đã tạo UTxO. Bằng cách cung cấp điểm xuất phát, giao dịch sẽ yêu cầu số tiền trong UTxO và có thể sử dụng chúng làm đầu vào cho giao dịch mới.

Đầu vào UTxO về cơ bản đề cập đến địa chỉ (địa chỉ của chủ sở hữu hiện tại) phải cung cấp bằng chứng. Điều này là do điểm ngoài trỏ đến vị trí của UTxO trong blockchain và UTxO có địa chỉ đích. Địa chỉ đích có thông tin xác thực thanh toán, là thông tin xác thực chính hoặc thông tin xác thực tập lệnh, xác định ai sở hữu số tiền trong địa chỉ. Giao dịch phải cung cấp bằng chứng hợp lệ cho thông tin xác thực thanh toán của địa chỉ đích để chi tiêu UTxO.

Việc sử dụng UTxO về cơ bản dẫn đến việc tạo ra một UTxO mới (hoặc nhiều UTxO) sẽ được liên kết với một địa chỉ đích mới. Giao dịch sử dụng UTxO làm đầu vào cũng phải cung cấp một hoặc nhiều đầu ra xác định địa chỉ đích và giá trị của UTxO mới. Các UTxO mới sau đó được liên kết với thông tin xác thực thanh toán của địa chỉ đích, điều đó có nghĩa là chỉ chủ sở hữu thông tin xác thực mới có thể sử dụng chúng trong các giao dịch trong tương lai.

Một giao dịch không chứa địa chỉ ban đầu của UTxO một cách trực tiếp mà gián tiếp thông qua các điểm ngoài của UTxO đầu vào. Mỗi điểm ngoài bao gồm một ID giao dịch và chỉ mục đầu ra của giao dịch đã tạo UTxO. Mạng phải xác thực rằng chủ sở hữu hiện tại có thể sử dụng UTxO đầu vào. Nếu quá trình xác thực thành công thì các UTxO mới có thể được tạo (và được liên kết với các địa chỉ đích mới).

Trong hình ảnh bên dưới, bạn có thể thấy giao dịch Cardano được đơn giản hóa với một UTxO đầu vào và hai đầu ra.

Trường đầu vào chứa danh sách tham chiếu đến UTxO mà giao dịch đang chi tiêu. Trong trường hợp của chúng ta, chỉ có một UTxO đầu vào.

Trường đầu ra chứa danh sách các cặp địa chỉ và giá trị mà giao dịch đang gửi tiền tới. Mỗi cặp bao gồm một địa chỉ đích và một giá trị. Trong trường hợp của chúng ta, có hai kết quả đầu ra.

Tổng giá trị đầu vào phải bằng hoặc lớn hơn tổng giá trị đầu ra và phí.

Trường phí chứa số ADA mà người dùng phải trả dưới dạng phí cho mạng để xử lý giao dịch.

Trường bằng chứng chứa một tập hợp các bằng chứng chứng minh rằng giao dịch được ủy quyền bởi chủ sở hữu quỹ (UTxO đầu vào) hoặc người thực hiện hành động. Giao dịch phải cung cấp bằng chứng cho từng địa chỉ đầu vào (hoặc ID chính sách đúc tiền, tài khoản phần thưởng rút tiền hoặc thông tin xác thực của tác giả chứng chỉ). Trong trường hợp của chúng ta, chỉ có một UTxO đầu vào nên chỉ cần một bằng chứng để xác thực.

Hãy xem ví dụ trong đó Alice gửi Bob 800 ADA. Như ở đầu vào, UTxO với 1000 ADA được sử dụng. Phí xử lý giao dịch là 1 ADA. Alice cần lấy lại 199 ADA về địa chỉ của cô ấy. Do đó, giao dịch có hai đầu ra.

Alice gửi 800 ADA đến địa chỉ của Bob, địa chỉ này có thông tin xác thực dựa trên khóa chung của Bob. Giao dịch của Alice tạo UTxO đầu tiên với địa chỉ của Bob là đích đến và 800 ADA làm giá trị. Nó cũng tạo UTxO thứ hai với địa chỉ của Alice là đích và 199 ADA làm giá trị.

Trong hình ảnh bên dưới, bạn có thể thấy hai giao dịch và hai địa chỉ. Bên trái là giao dịch trước đó mà Alice đã mua UTxO với 1000 ADA từ người khác trong quá khứ. UTxO này được sử dụng làm đầu vào cho giao dịch thứ hai do Alice tạo. Tiếp theo, bạn thấy địa chỉ của Alice và địa chỉ của Bob, được sử dụng làm địa chỉ đích trong giao dịch của Alice.

Giao dịch của Alice phải bao gồm một bằng chứng để cho phép chi tiêu đầu vào. UTxO đầu vào tham chiếu địa chỉ của Alice (thông qua giao dịch trước đó) chứa thông tin xác thực thanh toán (mũi tên màu xanh). Alice phải chèn một bằng chứng (chữ ký khóa riêng) vào giao dịch của mình. Điều này được biểu thị bằng mũi tên màu đỏ trong hình.

Hai đầu ra mới sẽ được tạo từ UTxO đầu vào. Tiền (1000 ADA) sẽ được phân phối đến nhiều địa chỉ (bỏ qua khoản phí). Đầu ra đầu tiên chứa địa chỉ đích của Alice và giá trị 199 ADA. Đầu ra thứ hai chứa địa chỉ đích của Bob và giá trị 800 ADA. Trong hình, mũi tên màu vàng biểu thị việc phân phối tiền và mũi tên màu xanh lá cây biểu thị địa chỉ đích.

Sau khi giao dịch được giải quyết (và hoàn tất) bởi mạng Cardano, Bob có thể sử dụng khóa riêng của mình để chi tiêu 800 ADA từ địa chỉ của mình. Alice có thể sử dụng khóa riêng (tương tự) của mình để chi tiêu 199 ADA còn lại cho cô ấy sau khi giao dịch của cô ấy được xử lý.

Lời kết

Thoạt nhìn, mô hình UTxO có vẻ hơi phức tạp so với mô hình dựa trên tài khoản, nhưng nó có nhiều ưu điểm, đặc biệt là trong bối cảnh khả năng mở rộng và bảo mật. Lần tới chúng tôi sẽ mô tả cách sử dụng UTxO thông qua tập lệnh trình xác thực.

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