Nguồn: Geek web3
Là một trong những nguyên tắc thiết kế cốt lõi của Bitcoin, mô hình UTXO đã trở thành một mô hình kỹ thuật quan trọng trong lĩnh vực blockchain kể từ khi ra đời. Nó đóng vai trò quan trọng trong việc đảm bảo an ninh giao dịch và truy xuất nguồn gốc, đồng thời cung cấp giải pháp thay thế cho mô hình số dư tài khoản truyền thống. Khi công nghệ blockchain tiếp tục được cập nhật và lặp lại trong những năm gần đây, bản thân mô hình UTXO cũng không ngừng phát triển và mở rộng (như eUTXO, cell, Strict access list, v.v.).
Mục đích của bài viết này là tìm hiểu và tìm hiểu mô hình UTXO. Nói một cách dễ hiểu, chúng tôi chỉ phân loại các mô hình UTXO và cách thức triển khai từ BTC đến Sui, Cardano, Nervos và Nhiên liệu để làm cho nó được hiểu rõ hơn.
UTXO là gì?
Bạn có thể hiểu mô hình UTXO qua một ví dụ:
Giả sử có hai người, Alice và Bob, ban đầu mỗi người có 5 nhân dân tệ. Sau đó, hai bên xảy ra mâu thuẫn và Alice bị Bob cướp 2 nhân dân tệ. Số tiền cuối cùng mà cả hai nắm giữ được thể hiện trong hình bên dưới:
Không khó để nhận ra, Alice cuối cùng còn lại 3 nhân dân tệ, còn Bob cuối cùng cũng giữ được 7 nhân dân tệ. Phương pháp kế toán này tương tự như phương pháp cộng và trừ ở trường tiểu học, thường xuất hiện trong hệ thống ngân hàng và được gọi là "Mô hình tài khoản/số dư". Trong số đó, số dư tài khoản tồn tại dưới dạng một giá trị duy nhất.
Nếu bạn sử dụng một phương pháp khác với mô hình tài khoản, chẳng hạn như UTXO để thể hiện việc chuyển giao tài sản giữa Alice và Bob, thì sơ đồ sẽ trông khác:
Lúc này, Alice vẫn còn 3 nhân dân tệ, còn Bob vẫn còn 7 nhân dân tệ, nhưng 7 nhân dân tệ này không dùng một đồng nào Thay vào đó, nó được chia thành “5 nhân dân tệ” và “2 nhân dân tệ”. Cách tiếp cận độc đáo này có cảm thấy không quen thuộc không? Đây là một phương pháp kế toán đặc biệt - UTXO.
Tên tiếng Anh đầy đủ của UTXO là Đầu ra giao dịch chưa chi tiêu, đề cập đến “Đầu ra chưa chi tiêu”. Theo phương pháp kế toán này, mỗi giao dịch trên chuỗi sẽ được thể hiện dưới dạng thay đổi và chuyển giao UTXO. Ví dụ: trong sự kiện giao dịch được đề cập ở trên, "5 nhân dân tệ" do Alice sở hữu ban đầu đã được sử dụng làm tham số đầu vào và được đánh dấu là UXTO_0, số tiền này sẽ bị hủy sau đó; đồng thời, chương trình sẽ tạo ra "2 nhân dân tệ" (UTXO_1) và " 3 nhân dân tệ" (UTXO_2) làm tham số đầu ra, UTXO_1 sẽ được chuyển cho Bob, UTXO_2 sẽ được chuyển lại cho Alice và quá trình chuyển giao tài sản giữa ALice và Bob đã hoàn tất.
Trên thực tế, trong mô hình UTXO, không có "tài khoản" và " Balance" ” Hai khái niệm rõ ràng này,UTXO chỉ là một cấu trúc dữ liệu giúp thực hiện giao dịch. Nó ghi lại số tiền mà nó đại diện, chỉ số giao dịch liên quan và các thông tin khác. Mỗi UTXO đại diện cho một đầu vào giao dịch có thể được chi tiêu nhưng không được chi tiêu, với chủ sở hữu được xác định. Khi một giao dịch xảy ra, một số UTXO nhất định có thể được sử dụng làm đầu vào. Sau khi chúng bị hủy, các UTXO mới sẽ được tạo ra dưới dạng kết quả đầu ra của giao dịch.
Đây là phương thức kế toán của Bitcoin: mọi giao dịch sẽ có một UTXO cũ bị phá hủy và một UTXO mới được tạo ra. Tổng lượng UTXO bị phá hủy bằng với lượng UTXO mới được tạo (một phần nhất định trong số đó là phí xử lý cho thợ mỏ). Bằng cách này, không ai có thể phát hành thêm tiền một cách đột ngột.
So sánh mô hình UTXO và mô hình tài khoản/số dư h2>
Giả sử một nhóm người dùng thực hiện một số lượng lớn yêu cầu giao dịch cùng lúc, điều gì sẽ xảy ra nếu mô hình UTXO và mô hình tài khoản/số dư được sử dụng để xử lý giao dịch?
Trong mô hình tài khoản/số dư, mỗi người dùng có một tài khoản ghi lại thông tin số dư. Khi giao dịch xảy ra, số dư của tài khoản tương ứng cần được cập nhật, bao gồm các thao tác "đọc" và "ghi". Tuy nhiên, nếu hai giao dịch liên quan đến cùng một tài khoản, thường sẽ xảy ra xung đột trong việc đọc và viết, tức là tranh chấp trạng thái, đây là tình huống cần phải tránh.
Các hệ thống cơ sở dữ liệu truyền thống thường sử dụng cơ chế "khóa" để giải quyết một số vấn đề nhất định các phần của dữ liệu, đọc và ghi tranh chấp. Trong trường hợp này, nhiều giao dịch hình thành mối quan hệ tranh chấp dữ liệu thường được xếp hàng đợi và không thể thực hiện cùng lúc, điều này sẽ làm giảm hiệu quả xử lý giao dịch. Khi có một số lượng lớn giao dịch cần xử lý, tình huống trên có thể gây ra tắc nghẽn nghiêm trọng về hiệu suất, các giao dịch có tranh chấp dữ liệu với nhau có thể phải chờ rất lâu và không thể xử lý nhanh chóng.
So với mô hình số dư tài khoản, mô hình UTXO của Bitcoin có thể giải quyết vấn đề tranh chấp dữ liệu tốt hơn. Bởi vì theo cách này, đối tượng xử lý trực tiếp của mỗi giao dịch không còn là một "tài khoản" mà là mỗi UTXO độc lập. Vì các UTXO khác nhau không can thiệp lẫn nhau nên mọi giao dịch trong mạng Bitcoin không can thiệp lẫn nhau. Do đó, khi xử lý một số lượng lớn giao dịch đang chờ xử lý, các nút mạng Bitcoin có thể xử lý nhiều giao dịch cùng lúc mà không cần sử dụng "khóa", điều này có thể cải thiện đáng kể thông lượng và hiệu suất đồng thời của hệ thống mạnh>.
Ngoài ra, ví mã hóa của mô hình UTXO thường khởi động sau khi người dùng bắt đầu một giao dịch. , tạo một địa chỉ mới, cho phép bảo vệ quyền riêng tư - việc liên kết các giao dịch với một người cụ thể trở nên khó khăn hơn - ngược lại, mô hình tài khoản/số dư dễ liên kết hơn vì nó sử dụng phân tích giới tính địa chỉ cố định.
Tuy nhiên, UTXO cũng có những hạn chế, thiết kế ban đầu của nó là thực hiện chuyển tiền đơn giản, không xử lý logic nghiệp vụ phức tạp. Mặc dù ngôn ngữ kịch bản có thể được sử dụng để thực hiện một số chức năng đơn giản, chẳng hạn như đa chữ ký, thời gian lock, v.v., nhưng do thông tin trạng thái mà UTXO của Bitcoin có thể ghi lại quá đơn giản nên không thể thực hiện một số thao tác phức tạp.
Những hạn chế của Bitcoin UTXO đã gián tiếp thúc đẩy sự ra đời của "Ethereum" - Vitalik, với tư cách là một trong những người đóng góp sớm nhất cho Tạp chí Bitcoin, rất ý thức được những thiếu sót của Bitcoin. Mô hình tài khoản/số dư không chỉ dễ hiểu hơn đối với hầu hết mọi người mà còn có thể giải quyết vấn đề nan giải về khó khăn của UXTO trong việc xử lý các ứng dụng ở trạng thái giàu có, như ông đã nói trong "Sách trắng Ethereum":
UTXO có thể được chi tiêu hoặc không chi tiêu; không có khả năng hợp đồng hoặc tập lệnh nhiều giai đoạn nắm giữ bất kỳ trạng thái nội bộ nào khác. Điều này làm cho các hợp đồng tùy chọn nhiều giai đoạn, ưu đãi trao đổi phi tập trung hoặc giao thức cam kết mật mã hai giai đoạn (được yêu cầu để tính toán tiền thưởng một cách an toàn) khó tạo ra. Điều này cũng có nghĩa là UTXO chỉ có thể được sử dụng để xây dựng các hợp đồng một lần đơn giản, thay vì các hợp đồng "trạng thái" phức tạp hơn như các tổ chức phi tập trung, khiến các siêu giao thức khó thực hiện. Trạng thái nhị phân kết hợp với điểm mù giá trị cũng có nghĩa là không thể thực hiện được một ứng dụng quan trọng khác - giới hạn rút tiền.
Ứng dụng, tối ưu hóa và mở rộng mô hình UXTO
Trước khi giới thiệu các ứng dụng và tối ưu hóa UXTO khác nhau, trước tiên chúng ta phải phân tích những điểm cải tiến của UTXO trong khi vẫn duy trì những ưu điểm của nó, được tóm tắt ngắn gọn như sau:
1. Tóm tắt ý nghĩa của trạng thái được lưu trữ trong UTXO.
2. Quyền sở hữu trừu tượng của nhà nước.
3. Giải quyết vấn đề tranh chấp trạng thái của UTXO được chia sẻ.
Trong BTC, ý nghĩa duy nhất của trạng thái là số lượng token và quyền sở hữu thường được xác định bằng khóa công khai. Đối với việc tranh chấp trạng thái, BTC không được thiết kế cho dapp nên không có vấn đề Hãy tham gia nhiều hơn.
Sui
Sui được phát triển Nhân viên cung cấp hai loại đối tượng: OwnedObject và SharedObject. Loại trước tương đương với UTXO (cụ thể hơn là phiên bản nâng cao của UTXO) và loại sau tương đương với mô hình tài khoản/số dư. Cả hai đều có thể được sử dụng cùng một lúc. Tại đây là tham chiếu đến tài liệu kỹ thuật của Sui. Giải thích:
Một đối tượng có thể được chia sẻ, có nghĩa là bất kỳ ai cũng có thể đọc hoặc ghi vào Đối tượng. Ngược lại với OwnedObject có thể thay đổi (chỉ có thể có một người ghi), SharedObject yêu cầu sự đồng thuận để ra lệnh đọc và ghi.
Trong các blockchain khác, mọi Đối tượng đều được chia sẻ. Tuy nhiên, các lập trình viên Sui thường có thể chọn sử dụng OwnedObject, SharedObject hoặc kết hợp cả hai để triển khai một trường hợp sử dụng cụ thể. Lựa chọn này có thể có tác động đến hiệu suất, bảo mật và độ phức tạp khi triển khai.
Trong Sui, Đối tượng được sở hữu tương tự như UTXO. Chỉ chủ sở hữu của nó mới có thể vận hành nó và Đối tượng có số phiên bản. "Một phiên bản nhất định của đối tượng chỉ có thể được vận hành bởi chủ sở hữu của nó." "Chi tiêu một lần" , vì vậy "một phiên bản nhất định của một đối tượng" về cơ bản tương đương với UTXO.
Đối với vấn đề tranh chấp trạng thái, nó có thể đạt được thông qua quá trình xử lý đặc biệt (sắp xếp cục bộ, tương tự như Nhiên liệu) SharedObject.
Cardano
Cardano sử dụng mở rộng Mô hình UTXO, viết tắt là eUTXO. eUTXO hỗ trợ khả năng lập trình cao hơn đồng thời kết hợp các ưu điểm của mô hình Bitcoin UTXO.
Trong Cardano, ý nghĩa của trạng thái được mở rộng hơn nữa thông qua các tập lệnh và quyền sở hữu trạng thái của nó được xác định theo cách tổng quát hơn, đồng thời sử dụng các bộ UTXO để cố gắng tránh các vấn đề tranh chấp trạng thái. Tóm tắt cụ thể, eUTXO đã được tăng cường ở hai khía cạnh:
1. Có nhiều địa chỉ tổng quát hơn trong mô hình eUTXO. Những địa chỉ này không chỉ có thể dựa trên hàm băm của khóa chung mà còn có thể được xác định dựa trên bất kỳ logic nào. Trong những điều kiện nào eUTXO có thể được sử dụng, nghĩa là quyền sở hữu nhà nước có thể được lập trình.
2. Ngoài địa chỉ và giá trị, đầu ra có thể mang (gần như) dữ liệu tùy ý, tức là ý nghĩa của trạng thái có thể được lập trình thông qua các tập lệnh.
Cụ thể, eUTXO cho phép người dùng thêm dữ liệu tùy ý tương tự định dạng JSON vào In UTXO , dữ liệu này được gọi là Datum. Datum cho phép các nhà phát triển cung cấp chức năng giống trạng thái cho các tập lệnh được liên kết với một UTXO cụ thể.
Đồng thời, các giao dịch trên Cardano có thể mang các thông số liên quan đến người dùng cụ thể, đã kêu gọi Đấng Cứu Chuộc. Redeemer cho phép người khởi tạo giao dịch xác định cách sử dụng UTXO, các nhà phát triển dapp có thể sử dụng UTXO cho nhiều mục đích khác nhau.
Khi một giao dịch được xác minh, tập lệnh xác minh sẽ hoạt động bằng cách sử dụng Datum, Redeemer và ngữ cảnh chứa dữ liệu giao dịch. Tập lệnh chứa logic để sử dụng UTXO khi các điều kiện được đáp ứng.
Cần lưu ý rằng eUTXO vẫn sử dụng tập lệnh để hoàn thành các nhiệm vụ mở rộng, điều này rất khác với "hợp đồng thông minh" theo nghĩa truyền thống (người sáng lập Charles Hoskinson tin rằng tên thật phải là "hợp đồng thông minh" ) Trình xác minh lập trình", nhưng thuật ngữ "hợp đồng thông minh" được thị trường chấp nhận dễ dàng hơn).
Nervos
Trong Nervos ( (tức là CKB), ý nghĩa của trạng thái được trừu tượng hóa bằng bản ghi và quyền sở hữu trạng thái của nó được trừu tượng hóa bằng bản ghi khóa. Mã ô mô hình tối ưu hóa UTXO đơn giản như sau:
pub struct CellOutput { p>
dung lượng pub: Dung lượng,
dữ liệu pub: Vec<u8>,
khóa pub: Tập lệnh,
loại pub_: Option<Script>,
Đối với tranh chấp trạng thái Đối với các vấn đề về sử dụng, CKB hiện đang thúc đẩy nghiên cứu về Giao dịch mở. Người dùng có thể đề xuất một phần UTXO để cho biết mục đích của giao dịch và sau đó người mai mối sẽ khớp nó thành một giao dịch hoàn chỉnh.
Mô hình tế bào của Nervos là phiên bản "tổng quát" của UTXO. Khoa học phổ biến chi tiết của nó Jan giải thích trên diễn đàn Nervos:
Sự chú ý của Lớp 1 Trọng tâm của thiết kế CKB với Lớp 1 làm mục tiêu thiết kế đương nhiên là trạng thái. Ethereum chia lịch sử giao dịch và lịch sử trạng thái thành hai chiều. Các khối và giao dịch thể hiện các sự kiện kích hoạt việc di chuyển trạng thái chứ không phải chính trạng thái đó. Tuy nhiên, các giao dịch và trạng thái trong giao thức Bitcoin được tích hợp vào một chiều. Giao dịch là trạng thái và trạng thái là Giao dịch là một kiến trúc lấy trạng thái làm cốt lõi.
Đồng thời, trạng thái mà CKB muốn xác minh và lưu giữ lâu dài không chỉ là một con số đơn giản (nValue), mà bất kỳ dữ liệu dựa trên sự đồng thuận nào mà mọi người cho là có giá trị. Rõ ràng cấu trúc đầu ra giao dịch của Bitcoin không thể đáp ứng nhu cầu này, nhưng nó đã mang lại cho chúng ta đủ cảm hứng: chúng ta chỉ cần khái quát hóa nValue và thay đổi nó từ không gian lưu trữ số nguyên thành không gian có thể lưu trữ dữ liệu tùy ý, và chúng ta sẽ có được một cái tổng quát hơn " CTxOut" hoặc Ô.
Trong Ô, nValue trở thành hai trường: dung lượng và dữ liệu. Hai trường này cùng biểu thị một phần không gian lưu trữ. Dung lượng là một số nguyên, cho biết dung lượng đó lớn đến mức nào (tính bằng byte). ( số là đơn vị), dữ liệu là nơi lưu trạng thái và bất kỳ byte nào cũng có thể được ghi; scriptPubKey đã trở thành khóa, chỉ thay đổi tên, thể hiện ai là chủ sở hữu của không gian đồng thuận này - chỉ một người có thể Chỉ người đó Người cung cấp các tham số (chẳng hạn như chữ ký) để thực thi thành công tập lệnh khóa có thể “cập nhật” trạng thái trong Ô này. Số byte chiếm toàn bộ CellOutput phải nhỏ hơn hoặc bằng dung lượng. Có rất nhiều Ô trong CKB và tập hợp tất cả các Ô này tạo thành trạng thái hoàn chỉnh hiện tại của CKB. Những gì được lưu trữ trong trạng thái hiện tại của CKB là kiến thức phổ biến tùy ý, không còn chỉ là một loại tiền kỹ thuật số nhất định.
Giao dịch vẫn thể hiện sự thay đổi/di chuyển trạng thái. Việc thay đổi trạng thái hoặc "cập nhật" nội dung Ô thực sự được thực hiện thông qua việc phá hủy và tạo ra (nó không thực sự sửa đổi nội dung trong Ô ban đầu). Mỗi giao dịch thực tế là hủy một lô Ô và tạo ra một lô Ô mới, các Ô mới tạo sẽ có chủ mới và lưu trữ dữ liệu mới, nhưng tổng dung lượng của các Ô bị hủy luôn lớn hơn hoặc bằng các Ô mới. lượng công suất được tạo ra đảm bảo rằng không ai có thể phát hành thêm công suất theo ý muốn. Vì năng lực có thể được chuyển giao và không thể phát hành thêm nên việc sở hữu năng lực tương đương với việc sở hữu một lượng không gian trạng thái đồng thuận tương ứng. Năng lực là tài sản gốc trong mạng CKB. Việc phá hủy một ô chỉ đánh dấu nó là "bị phá hủy". Tương tự như UTXO của Bitcoin, nó thay đổi từ chưa chi tiêu thành đã chi tiêu và không bị xóa khỏi blockchain. Mỗi Ô chỉ có thể bị hủy một lần, giống như mỗi UTXO chỉ có thể được sử dụng một lần.
Đặc điểm của mô hình như vậy là:
1. Nhà nước là chính.
2. Chủ sở hữu là một thuộc tính của trạng thái và mỗi trạng thái chỉ có một chủ sở hữu.
3. Nhà nước liên tục bị phá hủy và được tạo ra.
Vậy, Cell là phiên bản tổng quát của UTXO.
Nhiên liệu
Nhiên liệu sử dụng Dựa trên mô hình Danh sách truy cập nghiêm ngặt được tối ưu hóa UTXO, mô hình này xác định UTXO mới - UTXO hợp đồng.
Như đã giới thiệu ở trên, UTXO trong BTC chỉ có hai thuộc tính: số lượng xu và chủ sở hữu, trong khi UTXO hợp đồng cung cấp các thuộc tính cơ bản hơn, bao gồm: số lượng xu, ID hợp đồng, hàm băm mã hợp đồng và gốc lưu trữ .
Nếu sử dụng mô hình thực thi không trạng thái thì hàm băm mã hợp đồng và gốc lưu trữ chỉ được yêu cầu trong UTXO hợp đồng. Trong mô hình thực thi trạng thái, UTXO hợp đồng có thể bỏ qua các trường này, nhưng cần có loại UTXO phần tử lưu trữ riêng. ID UTXO (mã định danh duy nhất cho mỗi UTXO có thể được sử dụng làm khóa trong cơ sở dữ liệu lưu trữ khóa-giá trị) là điểm đầu ra tạo ra UTXO hoặc một biến thể của nó (ví dụ: hàm băm của điểm đầu ra và các trường của nó ).
Trong mô hình này, hợp đồng UTXO, giống như hợp đồng thông minh, có thể được gọi bởi bất kỳ ai.
Cần lưu ý rằng Fuel cung cấp các chức năng gần với hợp đồng thông minh hơn là tập lệnh và những hạn chế của chính mô hình UTXO đã gây ra vô số rắc rối khi áp dụng dựa trên VM. Điển hình nhất là đó là Vấn đề tranh chấp UTXO. Nói chung, có ba giải pháp: một là xử lý nó ngoài chuỗi như Rollup; hai là thực hiện công việc phân loại bổ sung trước và Fuel sử dụng giải pháp sau; giải pháp thứ ba chỉ được đề cập trong phần CKB Giao dịch mở, nghĩa là mỗi người dùng có thể gửi một phần của giao dịch và sau đó người mai mối (tương tự như trình sắp xếp thứ tự) sẽ khớp nó thành một giao dịch hoàn chỉnh. Giải pháp tương ứng cho BTC là PBST.
Kết thúc
Bằng cách chải kỹ, Hiểu các nguyên tắc cơ bản của UTXO, biết những ưu điểm và nhược điểm của mô hình cũng như mô hình tài khoản/số dư của ETH, đồng thời hiểu rõ hơn về khái niệm UTXO và các phần mở rộng liên quan của nó.
Là một trong những nguyên tắc thiết kế cốt lõi của Bitcoin, mô hình UTXO đóng vai trò quan trọng trong việc đảm bảo tính bảo mật và truy xuất nguồn gốc của các giao dịch. Với sự phát triển không ngừng của công nghệ blockchain, mô hình UTXO cũng không ngừng phát triển. và mở rộng (chẳng hạn như EUTXO, ô, danh sách truy cập nghiêm ngặt, v.v.) cung cấp nhiều khả năng hơn cho giao dịch và quản lý tài sản kỹ thuật số. Thông qua nghiên cứu và hiểu biết chuyên sâu về khái niệm UTXO và các tiện ích mở rộng liên quan của nó, bạn có thể nắm bắt blockchain tốt hơn bản chất công nghệ và đặt nền tảng vững chắc hơn cho sự đổi mới và ứng dụng trong tương lai.