Tác giả: ZAN Team
Bài viết này chỉ mang tính chất chia sẻ công nghệ và không mang tính chất chia sẻ cấu thành bất kỳ đề xuất đầu tư nào.
Liệu BTC cũng có hợp đồng thông minh của riêng mình chứ?
Trong hệ sinh thái Bitcoin gần đây, Fractal BTC cuối cùng đã ra mắt mạng chính vào tháng 9 sau khi trải qua nhiều mạng thử nghiệm. Một tính năng chính của Fractal là khả năng có "hợp đồng thông minh" và gần như cùng lúc với mạng chính được ra mắt, giao thức mã thông báo CAT20 mới cũng được ra mắt. CAT20 có sự thông minh kỹ thuật gì? Chúng ta có thể học được gì?
Fractal Bitcoin
Trước khi hiểu CAT20, chúng ta cần hiểu ngắn gọn về Fractal Bitcoin, mối quan hệ của chúng Giống như ERC20 và ETH, giao thức CAT20 được triển khai trên Fractal Bitcoin.
Fractal Bitcoin, còn được gọi là Fractal Bitcoin, là mạng "lớp thứ hai" hoàn toàn tương thích với BTC. So với BTC, thời gian xác nhận khối của nó nhanh hơn, chỉ mất 1 phút. Nguyên tắc cơ bản của nó đơn giản như tên gọi của nó, đó là tạo ra một số bản sao của mạng BTC. Mỗi chuỗi sẽ xử lý các giao dịch càng nhiều thì tốc độ càng nhanh. Tuy nhiên, các chi tiết cụ thể, chẳng hạn như cách các chuỗi khác nhau giao tiếp vẫn chưa rõ ràng và không có tài liệu kỹ thuật tương ứng chính thức để tham khảo.
Nếu chỉ giao dịch chuỗi lớp thứ hai nhanh hơn thì dường như không có hứng thú. Tuy nhiên, việc kích hoạt OP_CAT trong Fractal, vốn đã bị BTC bỏ từ lâu vì lý do bảo mật, đã đưa khả năng của Fractal Bitcoin lên một tầm cao hơn. Một số người cho rằng OP_CAT có thể cho phép BTC có khả năng hợp đồng thông minh. cách này, có chỗ cho trí tưởng tượng.
Bây giờ, ai đó đã triển khai giao thức giống ERC20 trên Fractal Bitcoin.
Về lý do OP_CAT bị bỏ và tại sao nó có thể được sử dụng trên Fractal Bitcoin, chúng ta có thể nói về để sau, ở đây chúng tôi tập trung vào CAT20.
Giao thức CAT
Nội dung sau đây đề cập đến sách trắng: Giới thiệu | Giao thức CAT (https://catprotocol.org/)
Và kho lưu trữ github:
GitHub - CATProtocol/cat-token-box: Monorepo cho các gói triển khai giao thức CAT (https://github.com/CATProtocol/cat-token-box)
Với sự hỗ trợ cơ bản của OP_CAT, giao thức tương ứng, Giao thức CAT, sẽ sớm có sẵn. Hiện tại, giao thức đang thực sự chạy là giao thức CAT20 và bảng điều khiển tương ứng đã được thêm vào Unisat: https://explorer.unisat.io/fractal-mainnet/cat20.
Mọi người sẽ có thể phản ứng khi nhìn thấy cái tên CAT20. Nó sẽ giống với ERC20 hơn. So với giao thức ERC20 hoàn thiện, việc triển khai Token rất thuận tiện cho mọi người. CAT20 triển khai vòng đời tương tự như ERC20 như thế nào?
Triển khai
Trước khi triển khai, người dùng cần chỉ định địa chỉ ví và số token Basic của mình. info, thông tin cơ bản của token tương tự như ERC20:
Sẽ có một số khác biệt. CAT20 có thể đặt giới hạn số lượng và khai thác trước cho mỗi Mint. Tất nhiên, ERC20 cũng có thể đạt được những khả năng này thông qua khả năng hợp đồng.
Trong giai đoạn triển khai, hai giao dịch sẽ được bắt đầu, có thể được coi là hai giai đoạn: " cam kết " và " tiết lộ ". Trích dẫn sơ đồ chính thức, các giai đoạn triển khai như sau:
Trong giai đoạn " commit ", thông tin cơ bản của mã thông báo sẽ được ghi trong tập lệnh đầu ra của giao dịch, chẳng hạn như tên và ký hiệu của mã thông báo chờ đợi. HashId của giao dịch được bắt đầu trong giai đoạn " commit " sẽ được sử dụng làm mã định danh của mã thông báo để phân biệt các mã thông báo khác.
Bạn có thể thấy rằng utxo của giao dịch này " bc1pucq...ashx " tương ứng với cam kết. Sau đó, có hai giao dịch còn lại trỏ đến " bc1pszp...rehc4 ". Giao dịch đầu tiên được sử dụng để thanh toán phí gas cho giai đoạn " tiết lộ " sau và giao dịch còn lại là thay đổi.
Trong giai đoạn " reveal ", bạn có thể thấy rằng có hai đầu vào utxo, tương ứng với hai đầu ra đầu tiên của giai đoạn cam kết trước đó. Giao dịch này trước tiên sẽ xuất ra OP_RETURN, trong đó Hash của trạng thái ban đầu của CAT20 sẽ được lưu. Sau đó một Minter sẽ được xuất ra, nó sẽ đóng vai trò quan trọng trong quy trình Mint tiếp theo và được sử dụng để duy trì các thay đổi trạng thái của quy trình Mint.
Nhìn lại toàn bộ quá trình Triển khai, "commit " và " reveal " thực hiện theo hai bước gửi và tiết lộ thường được sử dụng trên blockchain và là một dự án triển khai tương đối phổ biến. Trong bằng cách này, một số dữ liệu của dự án sẽ chỉ được tiết lộ trong giai đoạn " tiết lộ ".
Mint
Trước tiên chúng ta hãy xem Mint Token Đây là giao dịch trông như thế nào. giống.
Như bạn có thể thấy trong hình trên, quy trình Mint có các đặc điểm sau.
Đầu vào của mint là một minter, được tạo ban đầu trong quá trình triển khai.
Mỗi xưởng đúc tiền có một và chỉ một máy đúc tiền làm đầu vào và bất kỳ số lượng máy đúc tiền nào làm đầu ra (hơi có vấn đề một chút) p >
Mỗi xưởng đúc tiền có một và chỉ một token (có chút vấn đề)
Thứ tự đầu ra là bắt buộc, minter phải được theo sau bởi token
I biết Mint Trên thực tế, chúng ta có thể tìm thấy một số tình huống đặc biệt sẽ làm cho toàn bộ quá trình Mint trở nên thú vị.
Ví dụ: minter là đầu ra của giao dịch mint. Nó có thể là 1, bội số hoặc thậm chí là 0. Nếu Mint được đặt thành 1 mỗi lần, thì số lượng máy đào có thể được sử dụng trong toàn bộ mạng sẽ không thay đổi (1), điều này sẽ khiến Mint trở nên đông đúc và mọi người cần phải lấy máy đào này để tránh điều này. trường hợp, cần phải đặt số lượng đầu ra của máy đúc mỗi lần lớn hơn 1, để sau khi đúc, ngày càng có thể sử dụng nhiều máy đúc hơn.
Tuy nhiên, mỗi sản lượng minter bổ sung có nghĩa là bạn cần phải trả thêm một khoản tiền utxo. Vì lý do kinh tế, sẽ có nhiều người vui lòng đặt minter về 0. , điều đó chắc chắn sẽ khiến máy đúc trở nên giảm phát, điều này đòi hỏi một số người phải đóng góp và tự nguyện trả tiền cho máy đúc thêm.
Trong phiên bản V2, mặc định là tạo hai Minter và trạng thái của hai Minter sẽ giống nhau nhất có thể.
Xây dựng giao dịch
Một số bạn có thể đã phát hiện ra vấn đề, đó là lý do tại sao nó có thể Xây dựng giao dịch bằng utxo của minter? Để hiểu rõ vấn đề này, bạn cần phân tích mã nguồn của “hợp đồng”.
1. tiết lộ utxo
Trước hết, chúng tôi thảo luận về quá trình tiết lộ Phân tích giao dịch trong , chúng tôi thấy rằng anh ấy đã sử dụng cam kết đầu ra của giao dịch trước đó làm đầu vào. Tại sao chúng tôi có thể lấy một utxo không phải là địa chỉ của chúng tôi và xây dựng đầu vào của giao dịch?
Theo lẽ thường, khóa riêng tương ứng với khóa chung và khóa chung lấy địa chỉ. Khi xác minh xem một utxo đầu vào có hợp lệ hay không, nó thường được xác định bằng cách so sánh xem chữ ký có phù hợp với giao dịch ban đầu hay không sau khi được giải mã bằng khóa chung. Phần logic này được viết bằng tập lệnh Bitcoin. Vì vậy, chúng ta có thể viết lại logic của tập lệnh một cách khéo léo. Cặp khóa chung và khóa riêng được viết trong tập lệnh thuộc về địa chỉ của chính chúng ta, để chúng ta có thể kiểm soát utxo của hai địa chỉ khác nhau.
Nhìn vào mã nguồn chúng ta có thể biết chuyện gì đã xảy ra:
Có một vấn đề khác ở đây, đó là khóa riêng tương ứng với một khóa công khai, vậy tại sao địa chỉ cam kết được tạo lại khác với địa chỉ của chúng tôi? Bạn có thể xem nó từ mã nguồn tại đây
p>
Nói cách khác, khóa riêng của chúng tôi sẽ điều chỉnh khóa chung theo ISSUE_PUBKEY, đây cũng là một tính năng của địa chỉ P2TR.
2. minter utxo
Trong quá trình tiết lộ, chúng tôi sử dụng các utxo khác nhau làm đầu vào nhưng khóa mã hóa thực sự giống nhau, đó là khóa riêng của người triển khai. Nhưng trong giai đoạn minter, mọi người đều có thể sử dụng những utxo này làm đầu vào, việc này được thực hiện như thế nào?
Tôi đoán phần này là khả năng của OP_CAT đã đề cập trước đó, tức là khả năng của hợp đồng thông minh. Mỗi minter là một hợp đồng thông minh. Tuy nhiên, hiện tại mã nguồn của phần này vẫn chưa được công bố và chưa biết cách triển khai cụ thể.
Trạng thái giao dịch (V2)
Trong minter, trạng thái cũng được giữ lại. Trạng thái này tồn tại ở hai nơi: một nằm trong OP_RETURN của đầu ra giao dịch và trạng thái còn lại được lưu trữ trong hợp đồng thông minh, đó là Minter và Token được đề cập ở trên.
Những gì được lưu trữ trong OP_RETURN là Hash của trạng thái đầu ra giao dịch hiện tại và thời gian Mint còn lại của Mã thông báo sẽ được lưu trữ trong hợp đồng. Sau mỗi Mint, số lượng Mint của Minter mới được tạo sẽ bằng số lượng Mint còn lại chia cho hai. Được biểu thị bằng sơ đồ:
< p style="text-align: left;">Khi gõ xong, số còn lại của tất cả Minter là 0.
Trở lại hình ảnh ban đầu, ngoài Minter là hợp đồng thông minh thì Token được tạo ra cũng là hợp đồng thông minh, đó là CAT20. CAT20 có hai trạng thái cơ bản: số lượng và địa chỉ chủ sở hữu Token. Bạn có thể thấy rằng không giống như BRC20 hoặc dòng chữ trước đó, CAT20 không có trên UTXO trong địa chỉ của bạn.
Chuyển
Khi chuyển, số lượng mã thông báo đầu vào và đầu ra của giao dịch sẽ được xây dựng. cần phải nhất quán. Tất nhiên, có thể có nhiều mã thông báo khác nhau trong cùng một giao dịch, miễn là số lượng đầu vào và đầu ra của các mã thông báo khác nhau nhất quán.
Ghi
Nếu muốn ghi Token, bạn chỉ cần chuyển Token đến một địa chỉ bình thường.
Tóm tắt
Như bạn có thể thấy, tất cả các thao tác đều do chính người dùng xây dựng. tính linh hoạt rất cao nên cần phải thực hiện rất nhiều logic xác minh trong phần hợp đồng. Một số lỗ hổng đã lộ diện cho đến nay cũng là do sơ suất trong logic xác minh.
Thiết kế như vậy có thể có một số lợi ích:
Nếu muốn tìm trạng thái nắm giữ của tất cả các Token, bạn chỉ cần kiểm tra utxo của token và không cần phải tiếp tục tìm kiếm.
Nếu bạn muốn xem tình hình hiện tại của mint, bạn có thể tìm kiếm các giao dịch với cat trong dữ liệu trong OP_RETURN.