Tác giả: CaptainZ, cựu nhà nghiên cứu GametaverseDAO Nguồn: X, @hiCaptainZ
Khi tôi nghiên cứu hệ sinh thái BTC và các dự án khắc khác nhau trong hai tuần qua, tôi nhận thấy rằng có rất ít bài viết có thể giới thiệu rõ ràng các nguyên tắc và chi tiết kỹ thuật: ví dụ: khi dòng chữ đang được truyền, Giao dịch được bắt đầu như thế nào, số sat trong UTXO được theo dõi như thế nào, nội dung khắc được đặt trong tập lệnh ở đâu và tại sao BRC20 yêu cầu hai thao tác khi chuyển tiền? Tôi thấy rằng nếu không hiểu rõ những chi tiết kỹ thuật này thì khó có thể hiểu được sự khác biệt giữa các giao thức khác nhau như BRC20, BRC420, nguyên tử, tem và Rune. Bài viết này sẽ đi sâu vào kiến thức cơ bản về blockchain BTC và cố gắng giải đáp những vấn đề trên câu hỏi.
Cấu trúc khối BTC
Bản chất của blockchain là Công nghệ kế toán nhiều người dùng, Theo thuật ngữ khoa học máy tính, là cơ sở dữ liệu phân tán, các bản ghi (tài khoản) trong từng khoảng thời gian tạo thành một khối, sau đó sổ cái được mở rộng theo trình tự thời gian.
p> p>
Chúng tôi đã sử dụng excel để tạo bảng giải thích cách hoạt động của blockchain. Một file excel đại diện cho một blockchain, trong đó mỗi bảng riêng biệt đại diện cho một khối, các khối được sắp xếp theo thứ tự thời gian từ 560331, 560332. đến mới nhất là 560336. 560336 sẽ đóng gói các giao dịch mới nhất trong khối. Phần chính của khối là phương pháp hạch toán kép phổ biến nhất trong lĩnh vực kế toán, một mặt ghi địa chỉ ghi nợ (debit) là đầu vào, còn địa chỉ một mặt ghi là tín dụng ( tín dụng), là đầu ra cho. Giá trị tương ứng với số lượng BTC của địa chỉ tương ứng. Số lượng xu Đầu vào sẽ lớn hơn số lượng xu Đầu ra và sự khác biệt là phí chuyển ở cấp độ người dùng và phí xử lý mà người khai thác (người kế toán) thu được. Tiêu đề khối sẽ lấy chiều cao của khối trước, giá trị băm của khối trước, thời gian tạo (dấu thời gian) của khối này và một số ngẫu nhiên. Vậy với tư cách là một công nghệ kế toán phi tập trung, ai sẽ nắm quyền kế toán của khối tiếp theo? Nó dựa vào số ngẫu nhiên này và giá trị băm tương ứng của nó. Những người khai thác có khả năng tính toán thực hiện phép tính băm trên số ngẫu nhiên của khối hiện tại. Người khai thác đầu tiên nhận được giá trị băm đáp ứng các điều kiện sẽ có quyền kế toán của khối tiếp theo và giành được phần thưởng khối và phí chuyển nhượng. Cuối cùng là vùng script, có thể được sử dụng để tạo một số ứng dụng mở rộng, ví dụ: script op_return có thể được sử dụng làm cột postscript. Cần lưu ý rằng trong khối thực tế, vùng script được gắn với thông tin đầu vào và đầu ra chứ không thực sự là một vùng riêng biệt khác. Ví dụ: tập lệnh được đính kèm với đầu vào là tập lệnh mở khóa (ScriptSig), yêu cầu địa chỉ ví để ủy quyền chữ ký khóa riêng nhằm cho phép chuyển, trong khi tập lệnh được đính kèm với đầu ra là tập lệnh khóa (ScriptPubKey), được sử dụng để đặt điều kiện mở khóa để nhận BTC (nói chung Điều kiện là "chỉ những người có khóa riêng tương ứng mới có thể sử dụng").
p> p>
p>
Hai hình ảnh trên là bảng cấu trúc dữ liệu đầu vào và đầu ra ban đầu. Ở cấp độ thực thi, tập lệnh xuất hiện dưới dạng các tham số ngẫu nhiên của thông tin giao dịch. Tập lệnh mở khóa ( ScriptSig) cần phải ở chế độ riêng tư. Ủy quyền khóa, còn được gọi là "dữ liệu nhân chứng".
SegWit và Taproot#
Mặc dù mạng Bitcoin đã hoạt động được hơn 10 năm, Chưa có sự cố nào đáng chú ý nhưng cũng có lúc chi phí giao dịch tăng vọt đến mức không còn khả thi. Do đó, các nhà phát triển Bitcoin đã thảo luận về cách tốt nhất để mở rộng mạng lưới nhằm xử lý khối lượng giao dịch ngày càng tăng trong tương lai.
Cuộc tranh luận này đã nổ ra vào năm 2017, khi cộng đồng phát triển Bitcoin chia thành hai nhóm, những nhóm ủng hộ việc sử dụng soft fork để triển khai một tính năng có tên SegWit, và những người ủng hộ việc sử dụng soft fork để triển khai tính năng có tên SegWit. Một phe là phe “khối lớn” hỗ trợ mở rộng khối trực tiếp.
Chúng tôi đã đề cập ở trên rằng tập lệnh mở khóa cần sử dụng ủy quyền khóa riêng để tạo ra "dữ liệu nhân chứng", vậy dữ liệu nhân chứng này có thể được tách ra khỏi khối không? , qua đó tăng số lượng giao dịch mà mỗi khối có thể thực hiện một cách ngụy trang? Segregated Witness chính thức được kích hoạt vào tháng 8 năm 2017. Cách thực hiện của nó là chia tất cả dữ liệu giao dịch thành hai phần, một phần là thông tin cơ bản của giao dịch (Dữ liệu giao dịch), phần còn lại là thông tin chữ ký của giao dịch (Dữ liệu chứng kiến) và lưu thông tin chữ ký trong dữ liệu mới cấu trúc, nằm trong một khối mới gọi là "nhân chứng tách biệt (nhân chứng)" và được truyền tách biệt khỏi giao dịch ban đầu.
p> p>
Về mặt kỹ thuật, việc triển khai SegWit có nghĩa là các giao dịch không còn cần bao gồm dữ liệu nhân chứng (nó sẽ không chiếm không gian 1MB ban đầu được Bitcoin sắp xếp cho các khối). Thay vào đó, ở cuối khối, một không gian riêng biệt bổ sung được tạo cho dữ liệu nhân chứng. Nó hỗ trợ truyền dữ liệu tùy ý và có "trọng lượng khối" được chiết khấu để giữ một lượng lớn dữ liệu trong giới hạn kích thước khối của Bitcoin một cách khéo léo để tránh sự cần thiết phải phân nhánh cứng. Bằng cách này, giới hạn trên của kích thước dữ liệu giao dịch của giao dịch Bitcoin được tăng lên, trong khi phí giao dịch của dữ liệu chữ ký sẽ giảm. Trước SegWit nâng cấp, giới hạn trên về dung lượng của Bitcoin là 1 MB. Sau SegWit , mặc dù giới hạn trên của dung lượng giao dịch thuần túy vẫn là 1M, nhưng kích thước của không gian Segregated Witness đã đạt 4 MB .
Taproot được triển khai vào tháng 11 năm 2021 và bao gồm 3 Đề xuất cải tiến Bitcoin (BIP) khác nhau, bao gồm: Taproot, Tapscript và một sơ đồ chữ ký số mới có tên là "Schnorr Chữ ký". Taproot được thiết kế để mang lại nhiều lợi ích cho người dùng Bitcoin, chẳng hạn như tăng tính riêng tư trong giao dịch và giảm phí giao dịch. Nó cũng sẽ cho phép Bitcoin thực hiện các giao dịch phức tạp hơn, từ đó mở rộng các kịch bản ứng dụng (một số opcode mới đã được thêm vào).
Những bản cập nhật này là yếu tố hỗ trợ chính cho Ordinals NFT, lưu trữ dữ liệu NFT trong tập lệnh chi tiêu trong đường dẫn tập lệnh Taproot (không gian dữ liệu chứng kiến). Bản nâng cấp này giúp cấu trúc và lưu trữ dữ liệu nhân chứng tùy ý dễ dàng hơn, đặt nền tảng cho tiêu chuẩn "ord". Khi các yêu cầu về dữ liệu được nới lỏng, người ta giả định rằng một giao dịch có thể lấp đầy toàn bộ khối bằng dữ liệu giao dịch và nhân chứng của nó - đạt giới hạn kích thước khối 4 MB (không gian dữ liệu nhân chứng) - mở rộng đáng kể các loại phương tiện có thể được đặt trên chuỗi. .
Một số người có thể hỏi, vì một số chuỗi được đưa vào tập lệnh nên có hạn chế nào đối với các chuỗi này không? Điều gì sẽ xảy ra nếu những tập lệnh này thực sự được thực thi? Nếu bạn đặt nội dung một cách tùy tiện thì có bị mã lỗi từ chối tạo block không? Thao tác này sẽ hiển thị lệnh OP_FALSE. OP_FALSE (cũng được biểu thị bằng "0" trong Tập lệnh Bitcoin) đảm bảo rằng đường dẫn thực thi trong ngôn ngữ tập lệnh không bao giờ đi vào nhánh OP_IF và vẫn không được thực thi. Nó hoạt động như một phần giữ chỗ hoặc không có thao tác (No Operation) trong tập lệnh, tương tự như một "nhận xét" trong ngôn ngữ cấp cao, để đảm bảo rằng mã tiếp theo không được thực thi.
p> p>
Mô hình chuyển UTXO
Trên đây là những nguyên tắc cơ bản khi nghiên cứu BTC dưới góc độ Cấu trúc dữ liệu máy tính Hãy cùng thảo luận về mô hình UTXO dưới góc độ mô hình tài chính.
UTXO là tên viết tắt của Đầu ra giao dịch chưa chi tiêu. Bản dịch tiếng Trung là "đầu ra giao dịch chưa chi tiêu". Thực tế có thể hiểu là đầu ra giao dịch chưa chi tiêu còn lại trong quá trình chuyển khoản . quỹ. Vậy tại sao Bitcoin lại sử dụng khái niệm như vậy? Điều này bắt đầu với mô hình giao dịch tài khoản và mô hình số dư tài khoản của phương pháp kế toán.
Vì ở trong hệ thống tập trung quá lâu nên chúng ta đã rất quen với phương pháp hạch toán của mô hình số dư tài khoản. Khi người dùng A chuyển 100 nhân dân tệ cho người dùng B, trước tiên ngân hàng sẽ kiểm tra xem tài khoản ngân hàng của A có 100 nhân dân tệ hay không. Nếu có, ngân hàng sẽ trừ 100 nhân dân tệ từ tài khoản của A và sau đó thêm 100 nhân dân tệ vào tài khoản của B. Bằng cách này, việc chuyển tiền Đã được hoàn thành.
Tuy nhiên, không có khái niệm về sự cân bằng trong thuật toán tính toán của Bitcoin. Chỉ một giao dịch được ghi lại trên sổ cái phân tán của blockchain và số dư hiện tại của tài khoản không được ghi trực tiếp (việc ghi lại số dư thường yêu cầu một nút máy chủ chuyên dụng để ghi lại, nút này được tập trung). Giả sử số dư hiện tại của người dùng A là 1.000 nhân dân tệ. Nếu người dùng A chuyển 100 nhân dân tệ cho người dùng B thì việc chuyển tiền sẽ được ghi là:
Giao dịch 1 Người dùng A cho người dùng B chuyển 100 nhân dân tệ
Giao dịch 2 Người dùng A chuyển 900 nhân dân tệ (UTXO) cho chính người dùng A
Mặc dù giao dịch 2 ở đây là một giao dịch nhưng về mặt chức năng, nó đóng vai trò là số dư tài khoản, cho biết sau khi hoàn tất chuyển khoản 100 tệ, trong tài khoản của A vẫn còn 900 tệ.
Vậy thì câu hỏi đặt ra là tại sao chúng ta phải tạo một UTXO như vậy? Bởi vì chỉ các giao dịch mới có thể được ghi lại trên blockchain BTC nên số dư tài khoản không thể được ghi lại. Nếu không có UTXO này, việc tính toán số dư đòi hỏi phải tích lũy tất cả các giao dịch đến và đi của tài khoản, việc này rất tốn thời gian và tốn tài nguyên tính toán. Sự xuất hiện của UTXO đã khéo léo tránh được điểm khó khăn là phải quay lại tất cả các giao dịch khi tính toán số dư.
UTXO có một điểm đặc biệt, đó là giống như tiền xu, nó không thể bị phá vỡ và sử dụng. Vậy làm cách nào để bạn có thể gộp số tiền đầu vào trong quá trình giao dịch và làm thế nào để bạn nhận được sự thay đổi? Chúng ta có thể sử dụng sự tương tự về tiền xu (trên thực tế, bất cứ khi nào bạn nhìn thấy từ UTXO, vui lòng tự động dịch nó thành "coin").
Xiao Ming chuyển 1 Bitcoin cho Xiao Gang. Toàn bộ quá trình là như thế này. Xiao Ming cần thu thập đủ đầu vào. Ví dụ: trong giao dịch trước đó tương ứng với địa chỉ của Xiao Ming, anh ấy đã tìm thấy một UTXO có mệnh giá 0,9, không đủ cho 1 Bitcoin. May mắn thay, nhiều đầu vào được cho phép trong giao dịch, vì vậy Xiao Ming đã tìm thấy một UTXO khác có mệnh giá là 0,2, do đó sẽ có hai đầu vào trong giao dịch chuyển khoản này. Cũng sẽ có hai đầu ra cùng lúc, một đầu ra trỏ đến địa chỉ của Xiaogang, với mệnh giá là 1 Bitcoin. Các điểm khác trỏ đến địa chỉ của chính Xiao Ming, với mệnh giá 0,1 Bitcoin. Đầu ra này là sự thay đổi (gas bị bỏ qua trong ví dụ này).
Nói cách khác, trong túi của Hiểu Minh có hai đồng xu, một đồng có mệnh giá 0,9 và một có mệnh giá 0,2. Vào thời điểm này , Tiểu Minh cần trả đồng xu có mệnh giá là 1 nên anh ta cần đồng thời đưa hai đồng xu cho Tiểu Cương, sau khi Tiểu Cương nhận được, anh ta đưa cho Tiểu Minh 0,1 tiền lẻ. Vì vậy, bản chất của mô hình kế toán này là tránh việc “tính số dư” thông qua hành động “làm thay đổi”.
Hệ thống sắp xếp của giao thức thứ tự
Giao thức thứ tự có thể nói là sự bùng nổ của vòng này của hệ sinh thái BTC Nguồn là phân tách BTC đồng nhất thành đơn vị sat nhỏ nhất, sau đó đánh dấu mỗi sat bằng một số sê-ri. Việc đó được thực hiện như thế nào?
Chúng tôi biết rằng tổng số BTC là 21 triệu và một BTC có thể được chia thành ít nhất 100 triệu phần (sat), vì vậy đơn vị nhỏ nhất của BTC là Thứ Bảy, cho dù những BTC này hay đơn vị nhỏ nhất là Thứ Bảy, đều là các token FT đồng nhất điển hình. Bây giờ chúng ta cố gắng gán thứ tự cho những sat này.
Khi nói về cấu trúc dữ liệu khối trước đó, chúng tôi đã đề cập rằng thông tin giao dịch cần chỉ ra địa chỉ và số lượng đầu vào cũng như địa chỉ và số lượng đầu ra . Mỗi khối chứa hai phần giao dịch: phần thưởng khối BTC và phí chuyển khoản. Giao dịch phí phải có đầu vào và đầu ra, nhưng phần thưởng khối là BTC được tạo ngẫu nhiên và không có địa chỉ đầu vào, vì vậy trường "đầu vào từ" trống, còn được gọi là "giao dịch coinbase". Tổng số 21 triệu BTC đến từ giao dịch coinbase này, giao dịch này cũng được xếp hạng đầu tiên trong danh sách giao dịch trong số tất cả các khối.
Giao thức thứ tự quy định như sau:
Đánh số: Mỗi sat được đánh số theo thứ tự chúng được khai thác
Chuyển: theo thứ nhất- quy tắc vào trước ra trước, Chuyển từ đầu vào sang đầu ra của giao dịch
Quy tắc đầu tiên tương đối đơn giản, nó xác định rằng số chỉ có thể được tạo bởi giao dịch coinbase trong phần thưởng khai thác. Ví dụ: nếu phần thưởng khai thác của khối đầu tiên là 50 BTC thì khối đầu tiên sẽ được phân bổ sats trong phạm vi [0;1;2;...;4,999,999,999]; phần thưởng khối thứ hai cũng sẽ là Khi đó 50 BTC, khối thứ hai sẽ phân bổ sats trong phạm vi [5.000.000.000;5.000.000.001;...;9.999.999.999].
Phần khó hiểu ở đây là vì UTXO thực sự chứa nhiều satoshi, nên mỗi satoshi trong UTXO này trông giống như Chúng đều là giống nhau, làm thế nào để xếp hạng chúng? Điều này thực sự được xác định bởi quy tắc thứ hai. Hãy đưa ra một ví dụ đơn giản:
Trước tiên tôi giả sử rằng đơn vị chia tối thiểu của BTC là 1 và tổng cộng là 10 khối, phần thưởng khối cho mỗi khối là 10 BTC, tức là tổng số tiền là 100. Chúng tôi có thể gán trực tiếp số sê-ri (0-99) cho 100 BTC này. Nếu không có chuyển khoản thì chúng ta chỉ biết số 10 BTC ở khối thứ nhất là (0-9), số 10 BTC ở khối thứ hai là (10-19), cho đến khu vực thứ mười là số khối 10 BTC là (90-99). Vì không có chi phí và không có đầu ra nên chúng tôi chỉ có thể chỉ định phạm vi số cho mỗi 10 BTC.
Giả sử hai khoản chi tiêu (đầu ra) được thêm vào khối thứ hai, một là 3 BTC và một là "đổi" 7 BTC, tương ứng với Người khác đã chuyển 3 BTC và trả lại cho tôi 7 BTC. Lúc này, trong danh sách giao dịch của khối, giả sử rằng 7 BTC được trao cho chính mình thay đổi xếp thứ nhất (số tương ứng là 10-16) và 3 BTC được trao cho người khác xếp thứ hai (số tương ứng là 17- 19). Điều này xác nhận tập hợp sat tuần tự có trong một UTXO nhất định thông qua việc truyền đầu ra.
Lưu ý rằng mỗi sat không phải UTXO! Vì UTXO là đơn vị giao dịch nhỏ nhất không thể chia nhỏ được, sat chỉ có thể tồn tại trong  ;UTXO , và UTXO chứa một phạm vi sats nhất định và sats số chỉ có thể được chia thành một đầu ra mới được tạo sau khi chi tiêu UTXO nhất định.
Về cách thể hiện "số" này, Ordinal hỗ trợ nhiều dạng, chẳng hạn như "phương thức số nguyên" đã đề cập ở trên và các phương thức thập phân khác. , phương thức độ , phương pháp phần trăm, danh pháp chữ cái thuần túy.
p> p>
Sau khi sats có số seri thống nhất thì có thể xem xét ghi khắc. Như chúng tôi đã đề cập ở trên, bạn có thể tải lên các tệp thuộc bất kỳ loại dữ liệu nào trong không gian 4M của vùng dữ liệu nhân chứng, cho dù đó là văn bản, hình ảnh hay video. Sau khi tải lên, các tệp sẽ được tự động chuyển đổi sang hệ thập lục phân và được lưu trữ trong vùng tập lệnh taproot . Vì vậy, 1 UTXO tương ứng với 1 vùng tập lệnh Taproot và 1 UTXO này sẽ chứa nhiều sats cùng lúc (toàn bộ là một tập hợp các chuỗi sats. Để ngăn chặn các cuộc tấn công bụi, số lượng Bitcoin trong một UTXO duy nhất bị giới hạn đến không ít hơn 546 satoshi. .). Để thuận tiện cho việc ghi âm, giao thức Thông thường quy định một cách giả tạo "sử dụng số sat đầu tiên của bộ chuỗi này để thể hiện mối quan hệ ràng buộc" (các từ gốc của sách trắng là số sat đầu tiên của đầu ra đầu tiên), ví dụ: chứa (17-19 ) UTXO của sats có số 17 được sử dụng trực tiếp để thay thế bộ này và liên kết nội dung được ghi.
Truyền và chuyển nội dung thứ tự#
NFT thứ tự rõ ràng có nghĩa là chuyển đổi các tệp khác nhau Tải nó lên vào tập lệnh trong Vùng nhân chứng tách biệt và liên kết chuỗi sats được đặt với tập lệnh đó, từ đó thực hiện việc phát hành tài sản NFT trên chuỗi BTC. Nhưng ở đây còn có một vấn đề khác, script trong Segregated Witness Zone chứa script mở khóa đầu vào và script khóa đầu ra, vậy nội dung được đặt trong script nào? Câu trả lời đúng là cả hai. Tôi phải đề cập đến cơ chế tiết lộ cam kết trong công nghệ blockchain ở đây.
Cơ chế cam kết tiết lộ trong blockchain là một giao thức được sử dụng để đảm bảo xử lý thông tin công bằng và minh bạch. Cơ chế này thường được sử dụng trong các tình huống mà thông tin ẩn cần phải được gửi (chẳng hạn như phiếu bầu hoặc giá thầu) và sau đó sẽ được tiết lộ vào một thời điểm sau đó. Cơ chế Cam kết-Tiết lộ được chia thành hai giai đoạn: Giai đoạn Cam kết và Giai đoạn Tiết lộ.
Giai đoạn cam kết: Trong giai đoạn này, người dùng gửi thông tin của họ (chẳng hạn như lựa chọn biểu quyết hoặc giá thầu giá), nhưng thông tin này được mã hóa. Thông thường, người dùng tạo ra một hàm băm của tin nhắn này (tức là một bản tóm tắt mật mã của tin nhắn) và sau đó gửi hàm băm này tới blockchain. Do đặc tính của hàm băm, chúng có thể tạo ra một đầu ra duy nhất (giá trị băm) không thể đảo ngược từ thông báo gốc. Điều này có nghĩa là thông tin gốc không thể được suy ra từ giá trị băm. Quá trình này đảm bảo tính bảo mật của thông tin tại thời điểm gửi.
Giai đoạn tiết lộ: Tại một thời điểm được xác định trước sau đó, người dùng phải tiết lộ thông tin ban đầu của mình và chứng minh rằng nó phù hợp với thông tin đã gửi trước đó các trận đấu băm. Điều này thường được thực hiện bằng cách gửi thông tin gốc cùng với bất kỳ dữ liệu bổ sung nào (chẳng hạn như nonce hoặc "muối") được sử dụng để tạo ra giá trị băm. Sau đó, mạng xác minh rằng hàm băm của tin nhắn gốc này giống với hàm băm được gửi trước đó. Nếu trùng khớp thì tin nhắn gốc được chấp nhận là hợp lệ.
Như chúng tôi đã nói trước đây, nội dung được khắc cần phải được ràng buộc với tập hợp chuỗi sats có trong UTXO. UTXO nằm trong khối là một đầu ra nên nó phải được gắn vào tập lệnh khóa của đầu ra. Tuy nhiên, các nút đầy đủ BTC cần duy trì và truyền tải cục bộ tất cả các bộ UTXO của toàn bộ mạng. Hãy tưởng tượng rằng nếu 10.000 tệp video 4M được tải trực tiếp lên 10.000 tập lệnh khóa UTXO thì tất cả các nút đầy đủ sẽ cần không gian lưu trữ cực cao và tốc độ mạng cực nhanh, có thể nói rằng toàn bộ chuỗi sẽ trực tiếp sụp đổ. . Vì vậy, giải pháp duy nhất là đưa nội dung đó vào script mở khóa của đầu vào, sau đó để nội dung này “trỏ” sang đầu ra khác.
Vì vậy, việc truyền tài sản Thứ tự cần được chia thành hai bước (ví hợp nhất hai bước này và khi xây dựng giao dịch, cam kết- tiết lộ cha này- son giao dịch, trải nghiệm người dùng sẽ cảm thấy rằng chỉ có một bước và tiết kiệm phí gas).
Trong giai đoạn truyền, trước tiên người dùng cần tải giá trị băm của một tệp nhất định lên UTXO trong giao dịch cam kết (địa chỉ A của họ chuyển tới địa chỉ B của anh ta address) Tập lệnh khóa, vì là giá trị băm nên không chiếm quá nhiều không gian cơ sở dữ liệu UTXO của nút đầy đủ. Thứ hai, người dùng xây dựng một giao dịch mới (địa chỉ B của họ chuyển tiền đến địa chỉ A của anh ta), được gọi là giao dịch tiết lộ. Đầu vào tại thời điểm này cần sử dụng UTXO chứa giá trị băm tệp trong giao dịch cam kết trước đó và đầu vào Tập lệnh mở khóa phải chứa tệp khắc gốc. Để sử dụng các từ gốc trong sách trắng, đó là "Đầu tiên, trong cam kết, tạo một đầu ra taproot được gửi tới tập lệnh chứa nội dung dòng chữ. Thứ hai, trong giao dịch tiết lộ, hãy sử dụng đầu ra do giao dịch cam kết tạo ra để hiển thị nội dung dòng chữ trên dây chuyền. ."
Trong giai đoạn chuyển giao, NFT thông thường hơi khác so với BRC20. Vì NFT thông thường là chuyển toàn bộ nên bạn chỉ cần để chuyển trực tiếp NFT bị ràng buộc đến một UTXO nhất định. Chỉ cần đưa nó cho người nhận, tương tự như chuyển BTC thông thường. Tuy nhiên, vì BRC20 liên quan đến việc chuyển số tiền tùy chỉnh nên nó cũng được chia thành hai bước. Bước đầu tiên được gọi là Ghi "CHUYỂN", và bước thứ hai được gọi là Chuyển "CHUYỂN". Giao dịch khắc thực sự tương tự như quá trình đúc của một NFT thông thường, ngụ ý một cặp giao dịch cha-con hoàn trả cam kết. Giao dịch chuyển khoản bước thứ hai tương tự như chuyển khoản NFT thông thường, chuyển trực tiếp tài sản BRC20 được liên kết với một UTXO nhất định cho người nhận. . Một số ví sẽ xây dựng ba giao dịch này (giao dịch giữa cha, con và ba thế hệ) cùng lúc để tiết kiệm thời gian và gas.
p> p>
Tóm lại, giao dịch cam kết được sử dụng để liên kết nội dung được khắc (giá trị băm của nội dung gốc) và sats được tuần tự hóa (UTXO) và tiết lộ giao dịch được sử dụng để liên kết Nội dung được hiển thị (nội dung gốc). Cặp cha con này đã làm việc cùng nhau để hoàn thành việc đúc NFT.
P2TR và một ví dụ#
Cuộc thảo luận kỹ thuật ở trên về việc truyền vẫn chưa kết thúc, bởi vì Một số người có thể tò mò, giao dịch tiết lộ xác minh thông tin ghi trong giao dịch cam kết như thế nào? Tại sao chúng ta cần địa chỉ AB của riêng mình để chuyển tiền cho nhau khi cấu trúc giao dịch? Tôi thấy không cần thiết phải chuẩn bị hai chiếc ví khi viết dòng chữ. Ở đây chúng ta cần nói về một trong những nâng cấp lớn của Taproot, P2TR.
P2TR (Trả tiền cho Taproot) là một loại giao dịch Bitcoin mới được giới thiệu trong bản nâng cấp Taproot. Giao dịch P2TR mang lại sự riêng tư và linh hoạt hơn bằng cách cho phép người dùng chi tiêu Bitcoin bằng cách sử dụng một khóa công khai duy nhất hoặc các tập lệnh phức tạp hơn như ví đa chữ ký hoặc hợp đồng thông minh. Điều này đạt được thông qua việc sử dụng Cây cú pháp trừu tượng Merkleized (MAST) và chữ ký Schnorr, các kỹ thuật giúp mã hóa hiệu quả nhiều điều kiện chi tiêu trong một giao dịch.
Tạo điều kiện chi tiêu
Để tạo giao dịch P2TR, trước tiên người dùng xác định chi tiêu condition , chẳng hạn như một khóa chung hoặc một tập lệnh phức tạp hơn chỉ định các yêu cầu để chi tiêu Bitcoin (ví dụ: ví đa chữ ký hoặc hợp đồng thông minh).
Tạo đầu ra Taproot
Sau đó, người dùng tạo đầu ra Taproot bao gồm một khóa chung duy nhất (khóa chung thể hiện chi tiêu tình trạng ). Khóa chung này được lấy từ sự kết hợp giữa khóa chung của người dùng và hàm băm của tập lệnh, sử dụng quy trình gọi là "tinh chỉnh". Điều này đảm bảo rằng đầu ra trông giống như một khóa công khai tiêu chuẩn, khiến nó không thể phân biệt được với các giao dịch khác trên blockchain.
Chi tiêu Bitcoin
Khi người dùng muốn chi tiêu Bitcoin, họ có thể sử dụng khóa công khai duy nhất của mình (nếu đáp ứng các điều kiện chi tiêu ), hoặc tiết lộ tập lệnh gốc và cung cấp chữ ký hoặc dữ liệu cần thiết để đáp ứng các điều kiện chi tiêu. Điều này được thực hiện bằng cách sử dụng Tapscript, cho phép thực hiện các điều kiện chi tiêu hiệu quả và linh hoạt hơn.
Xác minh giao dịch
Người khai thác và nút sau đó xác minh giao dịch bằng cách kiểm tra chữ ký và dữ liệu Schnorr được cung cấp cùng với các điều kiện chi tiêu. Nếu các điều kiện được đáp ứng, giao dịch được coi là hợp lệ và Bitcoin có thể được sử dụng.
Quyền riêng tư và tính linh hoạt được nâng cao
Vì giao dịch P2TR chỉ tiết lộ các điều kiện chi tiêu cần thiết khi chi tiêu Bitcoin nên chúng có mức độ bảo mật cao được duy trì. Ngoài ra, việc sử dụng chữ ký MAST và Schnorr cho phép mã hóa hiệu quả nhiều điều kiện chi tiêu, cho phép thực hiện các giao dịch phức tạp và linh hoạt hơn mà không làm tăng quy mô tổng thể của giao dịch.
Trên đây là cách áp dụng cơ chế tiết lộ cam kết trong P2TR. Chúng tôi sẽ minh họa nó bằng một trường hợp thực tế.
Sử dụng trình duyệt blockchain https://www.blockchain.com/ Hãy nghiên cứu quy trình truyền của NFT hình ảnh thứ tự, bao gồm cả cam kết tiết lộ trước đó hai giai đoạn.
Đầu tiên, chúng ta thấy Hash ID của giao dịch cam kết là (2ddf90ddf7c929c8038888fc2b7591fb999c3ba3c3c7b49d54d01f8db4af585c). Có thể lưu ý rằng đầu ra của giao dịch này không chứa dữ liệu dòng chữ (thực ra đó là giá trị băm của tệp hình ảnh 16 cơ chế) và không có thông tin dòng chữ liên quan trên trang web. Địa chỉ đầu ra (bc1p4mtc....) này thực chất là một địa chỉ tạm thời được tạo thông qua quá trình "tinh chỉnh" (đại diện cho khóa chung của điều kiện mở khóa tập lệnh) và chia sẻ khóa riêng với địa chỉ chính của taproot (bc1pg2mp...) . UTXO thứ hai trong giao dịch này thuộc về hoạt động "thay đổi" được trả về. Bằng cách này, sự ràng buộc của nội dung dòng chữ với sats có trong UTXO đầu tiên đã đạt được.
p> p>
Tiếp theo, chúng tôi kiểm tra bản ghi của giao dịch tiết lộ và ID Hash của nó là (e7454db518ca3910d2f17f41c7b215d6cba00f29bd186ae77d4fcd7f0ba7c0e1). Ở đây chúng ta có thể xem thông tin dòng chữ Ordinals. Địa chỉ đầu vào của giao dịch này là địa chỉ đầu ra tạm thời được tạo bởi giao dịch trước đó (bc1p4mtc....). Tập lệnh mở khóa đầu vào chứa tệp thập lục phân của hình ảnh gốc và đầu ra 0,00000546BTC (546 Satoshi) là Gửi NFT này đến địa chỉ chính taproot của bạn (bc1pg2mp...). Dựa trên nguyên tắc First in First Out và “số lượng satoshi đầu tiên của đầu ra đầu tiên bị ràng buộc”, mặc dù số lượng sats có trong hai UTXO trước và sau khi thay đổi, số thứ tự sat bị ràng buộc vẫn không thay đổi. Vì vậy, chúng ta có thể tìm thấy satoshi nơi đặt dòng chữ này (thứ bảy 1893640468329373).
(https://orderals.com/sat/1893640468329373)
Hai giao dịch này ( Thuộc về cho giao dịch cha-con) sẽ được ví gửi vào nhóm bộ nhớ cùng lúc khi đúc tiền, do đó, nó chỉ tốn một gas và có khả năng cao là nó sẽ vào cùng một khối và được ghi lại và phát sóng bởi thợ mỏ (hai giao dịch trong ví dụ trên cũng có trong khối 790468.). Sau đó, các công cụ khai thác và nút xác minh bằng cách kiểm tra chữ ký Schnorr và hàm băm hình ảnh thập lục phân được cung cấp trong đầu vào trong giao dịch tiết lộ so với hàm băm hình ảnh thập lục phân trong tập lệnh khóa đầu ra trong giao dịch cam kết. Nếu cả hai giao dịch giống nhau, giao dịch được coi là hợp lệ và Bitcoin UTXO có thể được sử dụng. Sau đó, hai giao dịch này sẽ tự nhiên được ghi lại vĩnh viễn trong cơ sở dữ liệu chuỗi khối BTC và hình ảnh NFT sẽ tự nhiên được lưu và hiển thị. . Nếu hai giá trị băm khác nhau, cả hai giao dịch sẽ bị hủy và việc ghi sẽ không thành công.
Giao thức và bộ chỉ mục BRC20
Đối với giao thức Thông thường, chúng tôi khắc một đoạn văn bản, đó là Text NFT (tương ứng với Loot trên Ethereum), nếu khắc hình ảnh thì là hình ảnh NFT (tương ứng với PFP trên Ethereum), nếu khắc một đoạn nhạc thì đó là NFT âm thanh. Vậy điều gì sẽ xảy ra nếu chúng ta khắc một đoạn mã và đoạn mã này là đoạn mã để "phát hành token FT có thể thay thế"?
BRC20 triển khai, đúc và chuyển Mã thông báo bằng cách sử dụng giao thức Thông thường để đặt dòng chữ thành định dạng dữ liệu JSON. JSON chứa một số đoạn mã để mô tả Mã thông báo. nhiều thuộc tính khác nhau như làm nguồn cung cấp, đơn vị khai thác tối đa và mã duy nhất. Chúng tôi đã đề cập trong bài viết trước rằng bản chất của mã thông báo BRC20 là mã thông báo SFT bán thay thế, nghĩa là trong một số trường hợp, nó có thể được sử dụng làm giao dịch NFT và trong một số trường hợp, nó có thể được sử dụng làm giao dịch NFT. Giao dịch FT. Kiểu ghép nối này Làm thế nào để đạt được việc kiểm soát "các tình huống khác nhau"? Câu trả lời là người lập chỉ mục.
Người lập chỉ mục thực chất là người ghi sổ, dùng để ghi lại các thông tin nhận được vào các danh mục trong cơ sở dữ liệu. Trong giao thức Thông thường, bộ chỉ mục xác định các thay đổi về số liệu thống kê được sắp xếp ở các địa chỉ khác nhau bằng cách theo dõi đầu vào và đầu ra. Trong giao thức BRC-20, bộ chỉ mục có một chức năng bổ sung: ghi lại các thay đổi về số dư mã thông báo trong dòng chữ ở các địa chỉ khác nhau.
Vì vậy, chúng ta có thể thấy các hình thức tồn tại mã thông báo khác nhau từ góc nhìn của người kế toán: Mã thông báo giao thức BRC20 thực sự tồn tại trong cơ sở dữ liệu ba. Trong Lớp 1 đầu tiên, người kế toán là người khai thác BTC, loại cơ sở dữ liệu là "cơ sở dữ liệu được xâu chuỗi" và BTC được tạo ra là tài sản FT. Trong lớp 2 thứ hai, người kế toán là người lập chỉ mục thứ tự, loại cơ sở dữ liệu là "cơ sở dữ liệu quan hệ" và các sat được tạo có số sê-ri là nội dung NFT. Ở lớp thứ ba3, người kế toán là người lập chỉ mục BRC20, loại cơ sở dữ liệu là "cơ sở dữ liệu quan hệ" và tài sản BRC20 được tạo là tài sản FT. Khi chúng ta tính BRC20 dưới dạng "mảnh", quan điểm là bộ chỉ mục thứ tự (được bộ chỉ mục này ghi lại), đương nhiên là NFT; khi chúng ta nghĩ về BRC20 dưới dạng các "mảnh" được phân chia ( Đặc biệt là sau khi nạp lại vào một trao đổi tập trung), phối cảnh của trạm là bộ chỉ mục BRC20 (được ghi bởi người lập chỉ mục hoặc máy chủ của sàn giao dịch tập trung), đương nhiên là FT. Từ đó, chúng ta có thể rút ra kết luận rằng sự tồn tại của mã thông báo bán linh hoạt SFT là do trình độ kế toán khác nhau.
Không phải blockchain chỉ là một cơ sở dữ liệu phân tán nên có một nhóm nhân viên kế toán như thợ mỏ cùng nhau duy trì "cơ sở dữ liệu được xâu chuỗi" này (vì chỉ được xâu chuỗi cơ sở dữ liệu có thể đạt được sự phân cấp thực sự). Nhưng sau khi đi lòng vòng, chúng ta vẫn quay lại con đường cũ là “cơ sở dữ liệu quan hệ” tập trung. Đây cũng là lý do cơ bản tại sao cách đây một thời gian, những người khởi xướng giao thức Ordinal, người khởi xướng giao thức BRC20 và ví unisat lại rất hào hứng về việc có nên nâng cấp bộ chỉ mục hay không - những người kế toán có ý kiến khác nhau.
Tuy nhiên, sau hơn chục năm phát triển, ngành vẫn tích lũy được nhiều kinh nghiệm "phân quyền". Người lập chỉ mục có thể sử dụng "cơ sở dữ liệu chuỗi" thay thế cho cơ sở dữ liệu quan hệ? Bằng chứng gian lận hoặc ZKP có thể được sử dụng để đảm bảo an ninh và phân cấp không? Liệu nhu cầu về DA trong hệ sinh thái Bitcoin có lan sang các DA khác, từ đó thúc đẩy sự thịnh vượng và tích hợp của hệ sinh thái đa chuỗi? Tôi dường như nhìn thấy nhiều khả năng hơn.
Tài liệu tham khảo
https://www.aixinzhijie.com/books/261/ master_bitcoin/_book/
https://learnblockchain.cn/article/5717
https ://zhuanlan.zhihu.com/p/361854961
https://www.odaily.news/post/5187233
https://learnblockchain.cn/article/5376
https://www.panewslab.com/zh/articledetails /1301r1ibp79c.html
https://docs.orderals.com/inscriptions.html
https://thebitcoinmanual.com/articles/pay-to-taproot-p2tr/