Link gốc tiếng Anh: https://medium.com/nervosnetwork/my-comparison-between-the-utxo-and-account-model-821eb46691b2

Trong thế giới blockchain hiện tại, có hai phương pháp lưu giữ hồ sơ chính là mô hình UTXO (Đầu ra giao dịch chưa chi tiêu) và mô hình Tài khoản. Bitcoin sử dụng mô hình UTXO và Ethereum sử dụng mô hình Tài khoản.

Bitcoin ban đầu được thiết kế như một hệ thống tiền điện tử ngang hàng. Trong Bitcoin, mỗi giao dịch sẽ sử dụng UTXO được tạo bởi giao dịch trước đó và sau đó tạo ra một UTXO mới. Số dư của tài khoản là tập hợp tất cả các UTXO chưa được chi tiêu thuộc về. địa chỉ. Trạng thái toàn cầu của Bitcoin là tập hợp tất cả các UTXO hiện chưa được sử dụng. Ethereum dự định tạo ra một giao thức tổng quát hơn hỗ trợ các ngôn ngữ lập trình hoàn chỉnh Turing, trên đó người dùng có thể viết các hợp đồng thông minh và tạo ra nhiều ứng dụng phi tập trung khác nhau. Do những thiếu sót của mô hình UTXO trong việc bảo toàn trạng thái và khả năng lập trình, Ethereum đã giới thiệu mô hình Tài khoản.

Dưới đây chúng tôi sẽ mở rộng thêm về ưu điểm và nhược điểm của hai mô hình.

mô hình UTXO


Trong mô hình UTXO, các giao dịch chỉ thể hiện những thay đổi đối với bộ sưu tập UTXO. Các khái niệm về tài khoản và số dư mang tính trừu tượng cao hơn trên các bộ sưu tập UTXO và các khái niệm về số tài khoản và số dư chỉ tồn tại trong ví.

lợi thế:

  1. Việc tính toán diễn ra ngoài chuỗi và bản thân giao dịch vừa là kết quả vừa là bằng chứng. Nút chỉ cần thực hiện xác minh và không cần thực hiện các tính toán bổ sung trên giao dịch và không có bộ nhớ trạng thái bổ sung. Việc tính toán UTXO đầu ra của chính giao dịch được hoàn thành trong ví, do đó gánh nặng tính toán của giao dịch hoàn toàn do ví chịu, giúp giảm gánh nặng của chuỗi ở một mức độ nhất định.

  2. Ngoại trừ các giao dịch Coinbase, đầu vào của giao dịch luôn được liên kết đằng sau UTXO. Các giao dịch không thể được thực hiện lại, trình tự và sự phụ thuộc của các giao dịch có thể được xác minh dễ dàng và liệu các giao dịch đã được thực hiện hay chưa cũng có thể được chứng minh dễ dàng.

  3. Mô hình UTXO không có trạng thái và dễ xử lý đồng thời hơn.

  4. Quyền riêng tư tốt hơn cho các giao dịch loại P2SH. Đầu vào trong giao dịch không liên quan với nhau và các công nghệ như CoinJoin có thể được sử dụng để tăng mức độ riêng tư nhất định.

sự thiếu sót:

  1. Nó không thể thực hiện một số logic phức tạp hơn và có khả năng lập trình kém. Đối với logic hoặc hợp đồng phức tạp yêu cầu bảo toàn trạng thái, việc triển khai rất khó khăn và mức sử dụng không gian trạng thái tương đối thấp.

  2. Khi có nhiều đầu vào hơn, các kịch bản chứng kiến ​​cũng sẽ tăng lên. Bản thân chữ ký sẽ tiêu tốn nhiều CPU và dung lượng lưu trữ hơn.

Mô hình tài khoản

Đối với mô hình Tài khoản, mô hình Tài khoản lưu trạng thái thế giới và trạng thái của chuỗi thường được thống nhất dưới dạng StateRoot và ReceiptRoot trong khối. Giao dịch chỉ là sự kiện và không chứa kết quả. Sự đồng thuận của giao dịch và sự đồng thuận của nhà nước về cơ bản có thể bị cô lập.

lợi thế:

  1. Hợp đồng được lưu trữ trong Tài khoản dưới dạng mã và Tài khoản có trạng thái riêng. Mô hình này có khả năng lập trình tốt hơn, dễ hiểu hơn cho các nhà phát triển và có nhiều kịch bản hơn.

  2. Giao dịch số lượng lớn ít tốn kém hơn. Hãy tưởng tượng rằng nhóm khai thác trả cho người khai thác một khoản phí xử lý trong UTXO, vì mỗi Đầu vào và Đầu ra yêu cầu một tập lệnh Nhân chứng hoặc Tập lệnh Khóa riêng biệt, bản thân giao dịch sẽ rất lớn và việc xác minh chữ ký cũng như lưu trữ giao dịch sẽ tiêu tốn tài nguyên có giá trị trên chuỗi. . Mô hình Tài khoản có thể giảm đáng kể chi phí thông qua hợp đồng.

sự thiếu sót:

  1. Không có sự phụ thuộc giữa các giao dịch của mô hình Tài khoản và vấn đề phát lại cần được giải quyết.

  2. Để triển khai Lightning Network/Thunder Network, Plasma, v.v., bằng chứng của người dùng yêu cầu cơ chế Bằng chứng phức tạp hơn và việc di chuyển trạng thái của chuỗi con sang chuỗi chính đòi hỏi một giao thức phức tạp hơn.

Tài khoản UTXO VS

Hãy cùng phân tích và so sánh những ưu điểm và nhược điểm trên.

Thứ nhất, về vấn đề tính toán

Bản thân giao dịch UTXO không có các phép tính phức tạp cho blockchain. Nói một cách đơn giản, nó không hoàn toàn chính xác. Thứ nhất, hầu hết các giao dịch của Bitcoin đều là P2SH và tập lệnh Witness không hoàn chỉnh và không. tồn tại câu lệnh vòng lặp. Đối với mô hình Tài khoản, chẳng hạn như Ethereum, vì hầu hết các phép tính được thực hiện trên chuỗi và hoàn tất Turing, nên các phép tính thường phức tạp hơn và bảo mật hợp đồng có thể dễ dàng trở thành một vấn đề tương đối lớn. Tất nhiên, việc nó có hoàn thiện Turing hay không không ảnh hưởng trực tiếp đến việc nó có phải là mô hình tài khoản hay không. Nhưng sau khi mô hình tài khoản được giới thiệu, hợp đồng có thể tồn tại như một thực thể độc lập, không bị ai kiểm soát, điều này có ý nghĩa rất lớn.

Thứ hai, liên quan đến vấn đề UTXO dễ dàng hoạt động đồng thời hơn

Trong mô hình UTXO, trạng thái thế giới là tập hợp các UTXO. Để xác minh giao dịch nhanh hơn, các nút cần lưu trữ chỉ mục của tất cả các UTXO trong bộ nhớ, vì vậy UTXO rất đắt tiền. Các UTXO không được sử dụng trong thời gian dài sẽ luôn chiếm bộ nhớ của nút. Do đó, đối với mô hình này, về mặt lý thuyết, người dùng nên được khuyến khích sản xuất ít UTXO hơn và tiêu thụ nhiều UTXO hơn. Tuy nhiên, nếu muốn sử dụng UTXO cho các giao dịch song song, bạn cần nhiều UTXO làm đầu vào hơn, đồng thời, bạn cần tạo thêm UTXO để đảm bảo tính đồng thời. Đây thực chất là một cuộc tấn công bụi trên mạng. Và vì các giao dịch được xây dựng bên trong ví nên cần có một thiết kế ví phức tạp hơn. Nhìn lại mô hình Account, có thể coi mỗi tài khoản là một máy trạng thái riêng biệt, không ảnh hưởng lẫn nhau, các tài khoản giao tiếp qua tin nhắn. Do đó, về mặt lý thuyết, khi người dùng thực hiện nhiều giao dịch và các giao dịch này không gọi nhau là cùng một Tài khoản thì các giao dịch có thể được thực hiện đồng thời.

Thứ ba, liên quan đến vấn đề phát lại giao dịch của mô hình Tài khoản

Ethereum sử dụng phương pháp thêm số nonce vào Tài khoản. Mỗi giao dịch tương ứng với một số nonce và số nonce này sẽ tăng lên mỗi lần. Mặc dù phương pháp này nhằm giải quyết vấn đề lặp lại nhưng nó cũng gây ra các vấn đề tuần tự và khiến các giao dịch không thể song song được. Ví dụ: trong Ethereum, người dùng gửi nhiều giao dịch nếu giao dịch đầu tiên không được đóng gói thì các giao dịch tiếp theo sẽ không được đóng gói thành công. Trong CITA, chúng tôi sử dụng sơ đồ nonce ngẫu nhiên để không có sự phụ thuộc tuần tự giữa các giao dịch của người dùng, điều này sẽ không gây ra lỗi nối tiếp và cũng giúp các giao dịch có thể được xử lý song song.

Thứ tư, vấn đề lưu trữ

Bởi vì trong mô hình UTXO, trạng thái chỉ có thể được lưu trong các giao dịch. Trạng thái của mô hình Tài khoản được lưu trong nút và được lưu trữ bằng MPT trong Ethereum. Trong Khối, chỉ cần có StateRoot đồng thuận. Theo cách này, đối với dữ liệu trên chuỗi, mô hình Tài khoản thực sự nhỏ hơn và lượng truyền mạng nhỏ hơn, đồng thời, trạng thái được lưu cục bộ trên nút bằng phương pháp MPT, phương pháp này cũng hiệu quả hơn. sử dụng không gian. Ví dụ: A chuyển tiền cho B, nếu có 2 Đầu vào và 2 Đầu ra trong UTXO thì cần có 2 tập lệnh Nhân chứng và 2 tập lệnh Khóa; trong mô hình Tài khoản chỉ cần một chữ ký và nội dung giao dịch chỉ chứa số tiền; . Sau khi triển khai Segregated Witness mới nhất, lượng dữ liệu giao dịch Bitcoin cũng đã giảm đi rất nhiều, nhưng trên thực tế, các nút xác minh và nút đầy đủ vẫn cần truyền và xác minh tập lệnh Witness.

Thứ năm, để các nút nhẹ có được trạng thái địa chỉ nhất định, UTXO phức tạp hơn

Ví dụ: trong một ví, bạn cần yêu cầu tất cả các UTXO về một địa chỉ nhất định từ nút đầy đủ. Nút đầy đủ có thể gửi một số UTXO. Rất khó để ví xác minh xem UTXO đã được sử dụng chưa và rất khó để thực hiện. ví để chứng minh rằng UTXO là một bộ hoàn chỉnh chứ không phải là một bộ sưu tập một phần. Mô hình Tài khoản đơn giản hơn nhiều. Trạng thái tương ứng ở Trạng thái được tìm thấy dựa trên địa chỉ. Bằng chứng trạng thái của trạng thái hiện tại có thể chứng minh tính xác thực của dữ liệu hợp đồng. Tất nhiên, đối với UTXO, gốc của UTXO cũng có thể được xác minh trong mỗi khối. Điều này liên quan đến việc triển khai Bitcoin hiện tại và không phải là một tính năng của UTXO.


Tóm lại là

Tóm lại, mô hình Tài khoản có nhiều ưu điểm hơn về khả năng lập trình và tính linh hoạt; trong kinh doanh đơn giản và chuỗi chéo, UTXO có những ưu điểm rất độc đáo và đột phá. Việc lựa chọn mô hình nào phải dựa trên các kịch bản kinh doanh cụ thể.