Được viết bởi: Jinse Finance 0xjs
Vào ngày 19 tháng 10 năm 2023, nhà phát triển Lightning Network, Lightning Labs đã công bố ra mắt giao thức Taproot Assets . Giao thức Taproot Assets hỗ trợ phát hành tài sản trên Bitcoin và Lightning Network.
Giao thức Taproot Assets là gì? Giao thức Taproot Assets phát hành và chuyển giao tài sản như thế nào? Bài viết này sẽ hướng dẫn bạn tất cả.
Giao thức tài sản Taproot
Theo BIP của Giao thức tài sản Taproot, giao thức Tài sản Taproot là lớp tài sản gốc Taproot được xây dựng trên Bitcoin . Tài sản Taproot có thể đại diện cho các tài sản tùy ý trên on-chain Bitcoin mà không khiến mạng Bitcoin phát triển quá mức. Giao thức được thiết kế sao cho giao dịch tương tác với tài sản Taproot không khác gì giao dịch Bitcoin thông thường.
Nội dung Taproot sử dụng cây tập lệnh nội dung lồng nhau (là Cây Merkle thưa thớt tổng hợp merkle hoặc MS-SMT). Nó mở rộng cây tập lệnh Taproot cơ sở, gửi các nhân chứng hợp lệ dưới dạng dữ liệu có cấu trúc có thể chứng minh sự chuyển động của tài sản trong biểu đồ giao dịch. Bằng chứng chuyển giao tài sản Taproot có thể được xác minh bằng bằng chứng kín hoặc sử dụng vũ trụ được duy trì bên ngoài. Universe là một MS-SMT để phát hành + chuyển giao tài sản on-chain.
Taproot Assets hỗ trợ truyền một bước và nhiều bước ngoài Chuỗi thông qua các kênh Lightning Network (dựa trên bộ giao thức BOLT), bộ giao thức sau được thể hiện bằng hệ thống tập lệnh nội dung nhúng độc đáo của Taproot Assets. Việc xác minh máy trạm hạng nhẹ đối với việc chuyển tài sản Taproot on-chain được hỗ trợ bởi sê-ri bằng chứng Merkle on-chain và off-chain , có thể được nén bằng cách ủy quyền các mối quan hệ tín nhiệm cho các phiên bản Vũ trụ đang hoạt động.
Một số khái niệm cần thiết để hiểu giao thức Taproot Assets
Giao dịch taproot
Taproot là loại giao dịch mới được xác định trong BIP 341, sẽ trực tuyến trên mạng chính Bitcoin bắt đầu từ tháng 11 năm 2021. Sự khác biệt chính giữa giao dịch Taproot và giao dịch Bitcoin truyền thống là tập lệnh kiểm soát được chứa trong cấu trúc cây gọi là "nhánh tapScript", đây là cam kết riêng tư tham gia vào giao dịch. Nếu bạn sử dụng đường dẫn KeySpend để di chuyển Bitcoin, bạn không cần phải tiết lộ các tập lệnh này.
Trong khi giao dịch truyền thống yêu cầu hiển thị toàn bộ tập lệnh, giao dịch Taproot có thể sử dụng khóa để tránh tiết lộ tập lệnh và chỉ hiển thị phần đã thực thi của tập lệnh trên chuỗi khối nếu đường dẫn chi tiêu chính không khả thi. Tất cả các đường dẫn tập lệnh khác có thể vẫn ở sở hữu tư nhân hoặc tùy ý được hiển thị ngoài Chuỗi .
Điều này cho phép tạo các tập lệnh phức tạp hơn mà không phải trả thêm chi phí gửi dữ liệu bổ sung tới chuỗi khối trong đường dẫn keySpend, cũng như xác thực hiệu quả dữ liệu tập lệnh được cắt bớt. Trong bối cảnh Taproot Assets, nó cho phép mọi người đính kèm dữ liệu tùy ý vào giao dịch một cách có thể chứng minh được mà không làm rò rỉ dữ liệu này trên on-chain .
Taptweak: Hash cam kết
Giao dịch chứa dữ liệu tùy ý như vậy được gọi là cam kết. Khi giao dịch được đưa vào một khối, chúng tôi đã cam kết với dữ liệu đó và không thể thay đổi hoặc sửa đổi nó nữa.
Để cam kết dữ liệu, người ta sử dụng thủ thuật có tên "Taptweak" để điều chỉnh khóa chung của khóa chi tiêu Taproot. Nó cho phép mọi người hiển thị dữ liệu có chọn lọc mà không tiết lộ khóa riêng tư hoặc sử dụng kết quả đầu ra mà không tiết lộ các cam kết.
Kỹ thuật này được sử dụng trong giao dịch Taproot để cam kết với cây tập lệnh Taproot và có thể được sử dụng để cam kết bất kỳ dữ liệu tùy ý nào.
Q= P+H(P|c)G
Q = khóa chung cuối cùng của Taproot; P = khóa chung nội bộ; H(P|c) = khóa chung nội bộ và hàm băm đã cam kết
Để ký giao dịch bằng khóa riêng của chúng tôi, khóa riêng cần được điều chỉnh với cùng hàm băm H(P|c) làm khóa chung và cam kết.
Cây Merkle thưa thớt
Cây Merkle thưa thớt là một cấu trúc dữ liệu có thể chứng minh rằng dữ liệu cụ thể không tồn tại trong cây Merkle. SMT là một kho lưu trữ khóa-giá trị được xác thực, có nghĩa là khóa hoặc vị trí của lá và nội dung của lá được gắn với nhau.
Để triển khai thuộc tính này, nội dung của các lá được băm và Merkle trees được tạo, trong đó vị trí của các lá tương ứng với một bitmap của bản tóm tắt băm. Điều này nhất thiết phải có một cây có 256 lớp và 2^256 lá. Việc tạo cây rất hiệu quả - mặc dù có kích thước lớn đáng kể - vì phần lớn các nhánh đều chứa các lá trống và có thể được biểu diễn bằng giá trị băm bằng 0.

Xây dựng một cây Merkle thưa thớt
Ví dụ: chúng ta có thể sử dụng hàm băm giả tưởng sha002 để xây dựng Cây Merkle thưa thớt có kết quả là một số từ 0 đến 3. Chúng tôi tạo ra Cây Merkle thưa thớt với 4 lá: 0, 1, 2 và 3. Chỉ có lá 2 được lấp đầy, tất cả các lá còn lại đều trống. Để tìm lá 2 (viết là 10 trong hệ nhị phân), chúng ta di chuyển sang phải ở nhánh đầu tiên (1) rồi sang trái ở nhánh thứ hai (0).

Xác định lá ở cây Merkle thưa thớt
Để xác minh lá 2, bây giờ chúng ta chỉ cần tiết lộ giá trị của lá đó, cộng với giá trị băm của lá 3 và giá trị băm của nhánh 0.
Trong Cây Merkle thưa thớt, khi được biểu diễn ở dạng nhị phân, mỗi lá có thể được mô tả bằng bản đồ như một hướng dẫn cho chính nó. Bản đồ chính là Cây Merkle thưa thớt và chỉ đường được thể hiện bằng hướng dẫn rẽ trái hay phải tại mỗi ngã ba trên đường. Ví dụ: lá thứ 9 trong cây Sparke Merkle lớn 2^4 được biểu diễn dưới dạng nhị phân là 1001, có nghĩa là chúng ta tìm thấy lá bên phải bằng cách rẽ trái, phải, phải và cuối cùng là trái.
Thuộc tính này rất hữu ích cho việc xây dựng và xây dựng lại Cây Merkle thưa thớt vì nó mô tả chính xác những phần nào của Cây Merkle thưa thớt mà chúng ta phải xây dựng lại. Hơn nữa, giờ đây dữ liệu trong mỗi lá có thể được mô tả bằng vị trí của nó trong cây.
Bằng cách sử dụng Cây Merkle thưa thớt, chúng tôi có thể liên kết dữ liệu với khóa chung và chứng minh một cách dễ dàng xác minh rằng chúng tôi đã xóa dữ liệu mà không tiết lộ toàn bộ cây.

Chèn một mục vào Cây Merkle thưa thớt
Vì mỗi mục có vị trí được xác định trước nên giá trị băm gốc của cây không phụ thuộc vào thứ tự các mục được chèn vào.
Cây tổng Merkle
Cây tổng Merkle là một loại cây Merkle trong đó mỗi lá chứa một giá trị số và mỗi nút cũng chứa tổng của các giá trị bên dưới nó. Merkle tìm gốc của cây tổng là tổng của các giá trị tổng trong cây.
Cây Merkle Sum có thể xác minh hiệu quả việc bảo tồn (không lạm phát) bằng cách cam kết số lượng liên quan đến lá.
Sự kết hợp lớn của Taproot, tapweak, cây Merkle thưa thớt và cây tổng Merkle
Taproot Assets sử dụng kết hợp các khái niệm trên để phát hành tài sản gốc Bitcoin. Cây tổng Merkle thưa thớt và cây tổng Merkle thưa thớt được kết hợp thành cây tổng Merkle thưa thớt .
Gốc của cây tổng Merkle thưa thớt được thêm vào Taproot Tapscript và cùng nhau tạo địa chỉ Taproot.
Các nhà phát hành Taproot Assets không có chuỗi khối riêng mà thay vào đó lưu trữ các cây tổng Merkle off-chain và cấp bằng chứng cho chủ sở hữu tài sản. Chủ sở hữu của những tài sản đó có thể xác minh một cách độc lập rằng tài khoản của họ được bao gồm trong cây, chứa đầy số tiền thích hợp và giao dịch Taproot tương ứng tồn tại và được xác nhận trên chuỗi khối Bitcoin .
Cách phát hành tài sản Taproot
ID nội dung
Để xuất bản Tài sản Taproot, trước tiên bạn phải tạo mã định danh của nó. ID nội dung có kích thước 32 byte và được tạo bằng cách băm ba phần tử: điểm xuất phát được sử dụng để đúc nội dung, thẻ nội dung được đúc chọn (ví dụ: hàm băm của tên thương hiệu) và thông tin Meta được liên kết với nội dung, chẳng hạn như dưới dạng liên kết, hình ảnh hoặc tài liệu.
assets_id = sha256(genesis_outpoint || assets_tag || assets_meta)
kịch bản tài sản
Tập lệnh tài sản có thể có đầu vào và đầu ra, tương tự như giao dịch Bitcoin. Nội dung mới được tạo không chứa bất kỳ đầu vào nội dung Taproot nào, trong khi chuyển giao nội dung thì có.
Đầu ra của tập lệnh nội dung xác định nội dung mới được tạo sẽ được phát hành cho ai. Chính xác hơn, việc này được thực hiện thông qua cây tổng Merkle thưa thớt, trong đó mỗi tài khoản được xác định bằng khóa 256 bit và mỗi lá tương ứng với khóa đó chứa thông tin về số tiền mà tài khoản đó nắm giữ.
Nhiều nội dung có thể được phát hành trong một giao dịch nhưng mỗi nội dung có tập lệnh nội dung riêng và chứa cây Merkle thưa thớt bên trong nó. Nội dung có thể là duy nhất hoặc không duy nhất.
lá tài sản
Mỗi lá chứa một đốm màu TLV (loại, độ dài, giá trị), tương tự như các TLV được sử dụng trong Lightning Network. Nó chứa thông tin như phiên bản, ID nội dung, số tiền và dữ liệu liên quan đến việc chuyển nội dung trước đó (chẳng hạn như chữ ký).
Cam kết tận gốc cây
Khi chúng tôi đã tạo tập lệnh nội dung và cây tổng Merkle thưa thớt, chúng tôi có thể điều chỉnh khóa công khai nội bộ của mình và lấy địa chỉ của hợp đồng cũng như hoàn tất giao dịch.
đăng giao dịch
Sau khi chúng tôi xuất bản giao dịch này và nó được xác nhận trên chuỗi khối Bitcoin , chúng tôi đã tạo ra tài sản đó một cách không thể đảo ngược. Đối với người quan sát, giao dịch sẽ giống như bất kỳ giao dịch Taproot tiêu chuẩn nào khác.
Bằng chứng về tài sản
Các tổ chức phát hành tài sản giờ đây có thể tiết lộ có chọn lọc những tài sản nào đã được tạo ra và chúng được phân bổ cho ai. Quan trọng nhất, tổ chức phát hành có thể chứng minh cho người nhận rằng tài sản đã được chuyển cho họ bằng cách tiết lộ bằng chứng cụ thể về tài sản, trong đó có chứa tập lệnh tài sản và đường dẫn đến cây tổng Merkle thưa thớt do tài khoản của người nhận khóa.
Người nhận có thể xác minh cây tổng Merkle thưa thớt một phần để tạo lại tập lệnh, điều chỉnh khóa chung của nhà phát hành và xác minh rằng giao dịch gốc tồn tại trên chuỗi khối, trong khi cây Merkle một phần cung cấp cho họ sự đảm bảo về tài sản được cấp cho họ và tổng số số lượng tài sản phát hành.

Kiểm tra xem bằng chứng có được đưa vào cây Merkle thưa thớt hay không
Cách chuyển tài sản Taproot
Tài sản Taproot có thể được chuyển on-chain và cũng có thể được sử dụng để mở các kênh Lightning Network . Bài viết này chỉ thảo luận về giao dịch on-chain .
Taproot Assets không quy định cách chủ tài khoản cá nhân tương tác cụ thể nhưng nó có thể dành riêng cho từng ứng dụng. Các tổ chức phát hành có thể linh hoạt trong việc xác định tài sản của mình hoặc cách họ dự định giới hạn những tài sản đó.
Cam kết gốc tài sản Tất cả các tài sản được giữ trong cây cam kết và tổng số tiền của chúng. assets_id là duy nhất trên toàn cầu vì nó phụ thuộc vào đầu ra mã định danh khi tạo ra nó. Tổng gốc có thể chứa nhiều assets_id, việc bảo toàn chúng được cung cấp bằng cách xác minh assets_tree_root.
assets_tree_root = sha256(asset_id || left_hash || right_hash || sum_value)
Địa chỉ tài sản Taproot
Địa chỉ nội dung Taproot là mã nhận dạng được mã hóa bech32m của ID nội dung, hàm băm tập lệnh nội dung, khóa nội bộ của cây tổng Merkle thưa thớt và số tiền, được bắt đầu bằng nội dung Taproot hoặc taptb1 (mạng thử nghiệm).
bech32(hrp=TapHrp, assets_id || assets_script_hash || Internal_key || amt)
Các tổ chức phát hành hoặc chủ sở hữu tài sản có thể sử dụng thông tin trong địa chỉ tài sản Taproot để tạo hoặc sửa đổi cây tổng Merkle thưa thớt. Định dạng địa chỉ này cũng có thể được sử dụng để yêu cầu bằng chứng cụ thể về số tiền được giữ tại địa chỉ này.
Di chuyển nội dung trong cây
Để chuyển tài sản Taproot, người nhận sẽ thông báo địa chỉ của nó cho chủ sở hữu hiện tại, người có thể bắt đầu chuyển. Hiện tại, sự tương tác chính xác giữa chủ tài khoản và tổ chức phát hành chưa được xác định chặt chẽ. Nó có thể được chỉ định bởi từng ứng dụng hoặc thậm chí là nhà phát hành tài sản.
Người gửi tiền cần tạo một cây tổng Merkle thưa thớt mới phản ánh số dư mới. Điều này được thực hiện bằng cách giảm số dư của một số lá và tăng số dư của những lá khác. Cây tổng Merkle thưa thớt đảm bảo rằng sẽ không có nội dung mới nào được tạo ra trong giao dịch như vậy và các yêu cầu trước đó đối với nội dung đó sẽ được loại bỏ hoàn toàn.

Xác định tài khoản
Việc tạo một tài sản yêu cầu giao dịch Taproot on-chain , trong đó không có giới hạn về số lượng tài sản có thể đúc hoặc số lượng tài khoản có thể giữ chúng. Như đã đề cập ở trên, để chuyển tài sản, cây Merkle cần được tổ chức lại và phát hành một giao dịch on-chain mới. Không có giới hạn về số lượng giao dịch Nội dung Taproot nội bộ có thể được phản ánh trong giao dịch on-chain này.
Bằng cách sử dụng phương pháp này, tiền sẽ được phân phối cho chủ tài khoản, được biểu thị bằng các lá trong cây tổng Merkle thưa thớt, nhưng khả năng thực hiện chuyển khoản nội bộ như vậy bị giới hạn ở chủ sở hữu khóa riêng Taproot nội bộ.

vũ trụ
Universe là dịch vụ cung cấp cho chủ sở hữu tài sản thông tin và chứng chỉ tài sản . Nó tương tự như Block Explorer Bitcoin và hiển thị dữ liệu giao dịch Taproot Assets, dữ liệu lưu trữ off-chain với máy trạm Taproot Assets. Sự khác biệt chính là vì hầu hết thông tin liên quan đến Tài sản Taproot đều ở off-chain nên sẽ dễ ẩn hơn.
Các vũ trụ có thể được điều hành bởi chính nhà phát hành tài sản hoặc do nhà phát hành chỉ định. Cũng có thể hình dung rằng Uniserve do cộng đồng điều hành sẽ tổng hợp thông tin do chủ sở hữu tài sản gửi.
Ví dụ: với ID nội dung đã biết, vũ trụ có thể cung cấp thông tin về đầu ra ban đầu của nó, cũng như siêu thông tin hiện tại như tài liệu, tập lệnh nội dung hoặc tổng số token đang lưu hành. Các dịch vụ cũng có thể nhận biết được nhiều nội dung (Multiverse) hoặc chỉ một đầu ra duy nhất (Pocket Universe).
Universe không có bất kỳ đặc quyền nào trong Thỏa thuận tài sản Taproot. Nó tạo ra dữ liệu giao dịch được xác minh dựa trên chuỗi khối Bitcoin . Một vũ trụ thù địch chỉ có thể tránh trả lại dữ liệu do khách hàng yêu cầu. Dữ liệu giao dịch của Taproot Assets không bị ràng buộc trong vũ trụ. Các sản phẩm sẵn có về dữ liệu do Universe cung cấp được thúc đẩy bởi các đơn vị muốn xác minh tài sản Taproot của họ nhanh chóng và rẻ tiền.
Sáp nhập hoặc phân chia tài sản Taproot
Như đã đề cập ở trên, nội dung có thể được chuyển trong cây Merkle thưa thớt của nội dung hoặc chúng có thể được gửi đến người giữ khóa Taproot khác. Đây được gọi là phân chia tài sản.
Trong quá trình chia tách tài sản, trước tiên người gửi cần cập nhật đầu ra của cây tổng Merkle thưa thớt bằng Taproot của chính mình, điều chỉnh số dư và tính toán lại gốc Merkle. Trong trường hợp hợp nhất, tổng gốc cũng thay đổi.
Ngoài ra, sẽ có cây tổng Merkle thưa thớt thứ hai dành riêng cho đầu ra Taproot mới. Cây Merkle thứ hai được người nhận tài sản tính toán, hoạt động tương tự như người phát hành trong ví dụ trên, ngoại trừ việc những tài sản này không được tạo từ đầu mà được tách biệt khỏi đầu ra trước đó, chẳng hạn như đầu ra Genesis của tài sản.
Bằng chứng về tài sản
Để có thể xác minh liệu việc phân chia tài sản có xảy ra hay không, người vận hành vũ trụ mới cần chứng minh
Tài sản được tạo tại giao dịch 0 (t0)
Nội dung tồn tại trên lá của cây Merkle ban đầu tại thời điểm t0
Số dư của lá này được đặt bằng 0 tại thời điểm t1
Nội dung tồn tại trên lá của cây Merkle mới tại thời điểm t1
Sau khi tài sản được chia, chủ sở hữu tài sản có thể thực hiện giao dịch nội bộ giống như tổ chức phát hành. Mỗi chứng chỉ trước khi tách luôn cần kèm theo bằng chứng cấp để xác minh xuất xứ.
Bằng chứng về Tài sản tăng trưởng tuyến tính với mỗi giao dịch mới on-chain . Mọi giao dịch tài sản cần kiểm toán trở lại đầu ra ban đầu của nó. Bằng chứng về Tài sản chỉ hợp lệ nếu đầu ra mà nó đề cập đến chưa được sử dụng trên chuỗi khối.
Đốt hoặc vô hiệu hóa tài sản Taproot
Khi đầu ra của nội dung được chi tiêu mà không được cam kết với cây tổng Merkle thưa thớt mới, nội dung đó được coi là không hợp lệ.
Điều này không rõ ràng đối với người quan sát bên thứ ba và trong một số trường hợp, tốt hơn là nên dành kết quả đầu ra cho một cây Merkle trống mới để chứng minh rằng nội dung đã bị đốt, vô hiệu hoặc "bị đốt cháy".





