Bài viết này chỉ nhằm mục đích chia sẻ kỹ thuật và không mang tính chất tư vấn đầu tư.

BTC cũng sẽ 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 “hợp đồng thông minh” và giao thức mã thông báo CAT20 mới đã được ra mắt gần như cùng lúc với mạng chính được ra mắt. CAT20 có sự thông minh kỹ thuật gì? Chúng ta có thể học được gì?

Bitcoin phân dạng

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ó điểm nào phấn khích. 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ỏ rơi và tại sao nó có thể được sử dụng trên Fractal Bitcoin, chúng ta có thể nói về nó sau. Ở đây chúng ta tập trung vào CAT20.

Giao thức CAT

Vui lòng tham khảo sách trắng để biết nội dung sau: Giới thiệu Giao thức CAT (https://catprotocol.org/)

Và kho lưu trữ github:

GitHub - CATProtocol/cat-token-box: Một 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, một giao thức thực sự đang chạy là giao thức CAT20 và một bảng 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 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à thông tin cơ bản về mã thông báo. Thông tin cơ bản về mã thông báo tương tự như ERC20:

技术角度解读CAT20:分形比特币上的新代币协议

 

Sẽ có một số khác biệt. CAT20 có thể đặt giới hạn khai thác trước và số lượng 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ể 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:

技术角度解读CAT20:分形比特币上的新代币协议

Ở giai đoạn "cam kết", 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, ký hiệu, v.v. của mã thông báo. HashId của giao dịch được bắt đầu trong giai đoạn "cam kết" sẽ được sử dụng làm ký hiệu của mã thông báo để phân biệt các mã thông báo khác.

技术角度解读CAT20:分形比特币上的新代币协议

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à tiền lẻ.

Trong giai đoạn "tiết lộ", bạn có thể thấy 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.

技术角度解读CAT20:分形比特币上的新代币协议

Nhìn lại toàn bộ quá trình Triển khai, "cam kết" và "tiết lộ" tuân theo hai bước gửi và tiết lộ thường được sử dụng trên blockchain. Đây là một cách tương đối phổ biến để triển khai các dự án. Một số dữ liệu của dự án chỉ ở dạng "tiết lộ". các giai đoạn sẽ được tiết lộ.

BẰNG

Khi chúng ta nhìn vào Mint Token lần đầu tiên, giao dịch trông như thế này.

技术角度解读CAT20:分形比特币上的新代币协议

Như bạn có thể thấy trong hình trên, quy trình của Mint có các đặc điểm sau.

  • Đầu vào của mint là một miner, được tạo ban đầu trong quá trình triển khai.

  • Mỗi máy đúc có một và chỉ một máy đúc làm đầu vào và bất kỳ số lượng máy đúc nào làm đầu ra (có một chút vấn đề)

  • Mỗi xưởng đúc tiền chỉ có một mã thông báo (có một chút vấn đề)

  • Thứ tự đầu ra là bắt buộc, miner phải được theo sau bởi token

Biết được quy trình Mint, chúng ta thực sự có thể tìm thấy một số tình huống đặc biệt sẽ làm cho toàn bộ quy trình Mint trở nên thú vị.

Ví dụ: minter, là đầu ra của giao dịch mint, có thể là 1, bội số hoặc thậm chí 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. trong trường hợp này, bạn cần đặ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 bổ sung của máy đúc tiền có nghĩa là bạn cần phải trả nhiều tiền hơn. Vì lý do kinh tế, sẽ có nhiều người vui lòng đặt máy đúc tiền về 0, điều này chắc chắn sẽ khiến máy đúc tiền giảm phát, điều này đòi hỏi một số người phải đến quyên góp và trả tiền. thêm thợ đúc một cách tự nguyện.

Trong phiên bản V2, mặc định là tạo hai máy đúc và trạng thái của hai máy đúc sẽ giống nhau nhất có thể.

Cấu trúc giao dịch

Một số bạn bè có thể đã phát hiện ra một vấn đề, đó là tại sao utxo của minter có thể được sử dụng để xây dựng các giao dịch? Để 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

Đầu tiên, chúng tôi phân tích giao dịch trong quá trình tiết lộ và chúng tôi thấy rằng nó 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 giải mã bằng khóa chung có nhất quán với giao dịch ban đầu hay không. 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ể thấy điều gì đã xảy ra:

技术角度解读CAT20:分形比特币上的新代币协议

 

Có một vấn đề khác ở đây, đó là khóa riêng tương ứng với khóa chung, 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 ta? Ở đây bạn có thể thấy nó từ mã nguồn

技术角度解读CAT20:分形比特币上的新代币协议

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 đặc điểm của địa chỉ P2TR.

2、bạc hà

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 trên thực tế, khóa mã hóa 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 khai và chúng tôi 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 bảo tồn. 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 đượ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. Biểu diễn bằng sơ đồ:

技术角度解读CAT20:分形比特币上的新代币协议

 

Khi kết thúc trò chơi, số Minter còn lại là 0.

Quay 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 khoản

Khi chuyển, số lượng token đầu vào và đầu ra trong giao dịch 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.

技术角度解读CAT20:分形比特币上的新代币协议

Đốt cháy

Nếu muốn đốt Token thì bạn chỉ cần chuyển Token về địa chỉ bình thường.

Tóm tắt

Có thể thấy mọi thao tác đều do người dùng tự xây dựng nên rất linh hoạt 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:

  1. 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 tiếp tục tra cứu.

  2. Nếu bạn muốn kiểm tra 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 OP_RETURN.

ZAN ở đây để lấy nước mà không cần bất kỳ ngưỡng nào!

Mẹo: Bạn có thể nhận 0,01 ETH testnet miễn phí cứ sau 24 giờ để hỗ trợ bạn trải nghiệm và thử nghiệm các dự án Web3 trong hệ sinh thái Ethereum. Nhấp để nhận ngay: https://zan.top/faucet?chInfo=ch_WZ.

Nhiều chuỗi công khai khác sẽ sớm được hỗ trợ ~

Bài viết này được viết bởi Yeezo (tài khoản X @GaoYeezo75065) của ZAN Team (tài khoản X @zan_team)