Tác giả: Ash Li, Noah Ho
Với việc tạo ra giao thức Thông thường, cung cấp khả năng đánh số và ghi bitcoin, nó đã mở rộng phạm vi sản phẩm có sẵn cho hệ sinh thái bitcoin và mang lại động lực mới cho hệ sinh thái bitcoin. Trong bài viết này, chúng ta sẽ đi sâu vào chi tiết về giao thức Thứ tự, bao gồm cách đánh số và theo dõi mỗi bitcoin cũng như cách các dòng chữ liên quan đến việc đánh số. Nhưng trước khi đi sâu vào chủ đề này, trước tiên chúng ta cần hiểu một số thông tin cơ bản về Bitcoin để giúp chúng ta hiểu rõ hơn những gì tiếp theo.
Sau khi hoàn thành bài viết này, bạn sẽ nắm vững cơ chế giao dịch và mô hình thanh toán của Bitcoin, hiểu cách Ordinals thực hiện đánh số và theo dõi cho từng satoshi cũng như cách tạo và giao dịch chữ khắc. Ngoài ra, bạn sẽ hiểu được sự khác biệt giữa các loại ví khác nhau.
I. Nền tảng Bitcoin
Bitcoin sử dụng mô hình giao dịch giống như tiền mặt và các khoản thanh toán của nó dựa trên mô hình có tên UTXO, khác với mô hình dựa trên số dư tài khoản truyền thống. Ví dụ: trong quy trình mô hình sổ sách kế toán tài khoản ngân hàng, khi A chuyển 100 đô la cho B, ngân hàng sẽ ghi lại ba bước tạo nên quy trình giao dịch. Bước đầu tiên là ghi nợ 100 USD từ tài khoản của A và ID bản ghi cho bước này là tid1. Bước thứ hai là gửi 100 USD vào tài khoản của B và ID hồ sơ cho bước này là tid2. Bước thứ ba là ghi lại bản ghi chuyển khoản liên kết tid1 với tid2, cho biết tài khoản của A giảm 100 USD và tài khoản của B tăng 100 USD. Bằng cách này, mối quan hệ chuyển giao giữa A và B được ghi lại và có thể được truy vấn và truy tìm trong tương lai. Bây giờ, chúng tôi sẽ giải thích cách thực hiện thanh toán Bitcoin bằng cách giới thiệu UTXO và mô hình thanh toán.
UTXO
Trong chuỗi khối Bitcoin, tất cả số dư được lưu trữ trong danh sách gọi là Đầu ra giao dịch chưa chi tiêu (UTXO). Mỗi UTXO chứa một số lượng bitcoin nhất định, cùng với thông tin về chủ sở hữu của những bitcoin đó và cho biết liệu chúng có sẵn hay không. Hãy coi nó như một tấm séc tiền mặt được ký tên của người nắm giữ, có thể được chuyển cho người khác sử dụng miễn là người giữ nó ký vào đó. Đối với một địa chỉ nhất định, tất cả số tiền UTXO của nó sẽ cộng vào số dư của ví tại địa chỉ đó. Bằng cách duyệt qua tất cả các UTXO, chúng tôi có thể thu được số dư hiện tại cho từng địa chỉ. Cộng tất cả số lượng UTXO sẽ bằng tổng số bitcoin hiện đang lưu hành.
Trong cấu trúc giao dịch của Bitcoin, mỗi giao dịch bao gồm một số đầu vào và đầu ra, trong đó mỗi đầu vào là một tham chiếu đến UTXO hiện có và mỗi đầu ra chỉ định địa chỉ mới nơi tiền sẽ được nhận và số tiền tương ứng. Sau khi giao dịch được bắt đầu, UTXO được tham chiếu trong phần đầu vào của nó sẽ tạm thời bị khóa để ngăn việc sử dụng lại cho đến khi giao dịch hoàn tất. Chỉ khi giao dịch này được người khai thác đóng gói thành công vào một khối và được mạng xác nhận thì trạng thái UTXO liên quan mới thay đổi. Cụ thể, các UTXO được sử dụng làm đầu vào cho giao dịch sẽ bị xóa khỏi danh sách UTXO, cho biết rằng chúng đã được sử dụng, trong khi đầu ra của giao dịch tạo ra các UTXO mới được thêm vào danh sách UTXO. Có thể hiểu là séc tiền mặt cũ được sử dụng rồi hết hạn sử dụng, tạo ra séc tiền mặt mới có quyền sở hữu thuộc về người nắm giữ mới.
Điều đáng nhấn mạnh là mỗi UTXO chỉ có thể được sử dụng một lần trong một giao dịch. Sau khi được sử dụng làm đầu vào, nó sẽ bị xóa vĩnh viễn khỏi danh sách UTXO. Đồng thời, đầu ra mới được tạo sẽ được thêm vào danh sách dưới dạng UTXO mới. danh sách UTXO liên tục thay đổi và khi mỗi khối mới được tạo, nó sẽ được cập nhật tương ứng. Và bằng cách phân tích lịch sử giao dịch trong blockchain, chúng tôi có thể xây dựng lại trạng thái của danh sách UTXO tại bất kỳ thời điểm nào.
Ngoài ra, tổng số tiền đầu vào của một giao dịch thường sẽ vượt quá tổng số tiền đầu ra một chút. Sự khác biệt này, được gọi là Phí giao dịch hoặc Phí mạng, được đưa ra như một động lực cho những người khai thác chịu trách nhiệm đóng gói các giao dịch thành các khối. Quy mô phí mạng tỷ lệ thuận với mức độ phức tạp của giao dịch, do đó, giao dịch có nhiều đầu vào và đầu ra hơn thường sẽ yêu cầu phí mạng cao hơn.
Bây giờ, để hiểu cấu trúc giao dịch Bitcoin một cách trực quan hơn, chúng ta sẽ đi qua một ví dụ cụ thể. Cấu trúc của giao dịch Bitcoin như sau, trong đó các biến vin và vout tương ứng là "đầu vào" và "đầu ra" của giao dịch Bitcoin. Các giao dịch bitcoin không được thể hiện bằng đầu vào và đầu ra, không giống như các mô hình số dư tài khoản truyền thống ghi lại các thay đổi dữ liệu theo hình tài khoản.

Chúng ta có thể chọn một bản ghi giao dịch ngẫu nhiên tại blockchain.com để phân tích. Hình bên dưới hiển thị một giao dịch có Hash ID 0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2. Nó chứa một đầu vào và hai đầu ra.

Bằng cách sử dụng lệnh bitcoin-cli getrawtransaction và decoderawtransaction, chúng ta có thể thấy cấu trúc cơ bản của các giao dịch trên:

Trong mạng Bitcoin, đầu ra giao dịch chứa hai thông tin quan trọng: địa chỉ (băm khóa công khai) và số tiền (bằng bitcoin). Nếu đầu ra của một giao dịch không được sử dụng làm đầu vào của các giao dịch khác thì đầu ra giao dịch này được gọi là đầu ra giao dịch chưa chi tiêu (UTXO). Bất cứ ai có khóa riêng tương ứng với khóa chung trong UTXO đều có quyền sử dụng hoặc chi tiêu UTXO này.
Hãy xem thông tin trong "vin" trong mã ở trên, cho biết UTXO đã chi cho giao dịch này đến từ một giao dịch khác (với id 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18) của đầu ra thứ 0 (có thể có nhiều đầu ra của một giao dịch, chỉ số được đánh số từ 0), chúng ta có thể tìm thấy số lượng UTXO này từ lịch sử giao dịch (ví dụ: 0,1), vì vậy Giá trị 0,1 này không cần phải ghi rõ ràng trong giao dịch mà có được bằng cách tra cứu thông tin UTXO. "Vout" của giao dịch này có hai đầu ra, là hai UTXO mới, tương ứng với số dư mới và chủ sở hữu, cho đến khi một giao dịch khác sử dụng chúng làm đầu vào.
Mô hình thanh toán
Để hiểu rõ hơn về mô hình thanh toán của mạng Bitcoin, chúng tôi trình bày một ví dụ về quy trình thanh toán cho khoản thanh toán từ A đến B với số lượng n bitcoin. Sơ đồ sau đây cho thấy quá trình gửi 3 bitcoin từ người dùng A đến người dùng B.

Đối với người dùng A, trước tiên cần xác định tập hợp tất cả các UTXO mà họ sở hữu, tức là tất cả số bitcoin mà người dùng A có thể sử dụng;
A chọn một hoặc nhiều UTXO từ bộ này làm đầu vào cho giao dịch và tổng của các đầu vào này là m(2+0,8+0,5=3,3 BTC) lớn hơn số tiền phải trả, n(3 BTC);
Người dùng A đặt hai đầu ra cho giao dịch, một đầu ra để thanh toán cho địa chỉ của B với số tiền n(3 BTC) và đầu ra còn lại để thanh toán cho một trong các địa chỉ thay đổi của chính A với số tiền m-n-fee(3.3-3- 0,001=0,299 BTC). (b) Ví của người dùng thường bao gồm nhiều địa chỉ, mỗi địa chỉ thường chỉ được sử dụng một lần và thay đổi sẽ được trả về địa chỉ mới theo mặc định;
Đang đợi người khai thác đóng gói giao dịch này trên chuỗi để xác nhận, B có thể nhận được thông tin giao dịch này. Vì kích thước khối có giới hạn trên (khoảng 1 MB) nên thợ đào sẽ ưu tiên xác nhận các giao dịch có tỷ lệ giao dịch cao (fee_rate=fee/size ) để nhận được mức phí hoàn trả cao nhất. Chúng ta có thể thấy phí giao dịch khai thác theo thời gian thực tại mempool. Nếu muốn xác nhận nhanh nhất trong quá trình chuyển tiền, chúng ta có thể chọn Mức độ ưu tiên cao hoặc tùy chỉnh mức phí giao dịch phù hợp.

II. Đánh số và theo dõi của Satoshi
Tổng số bitcoin là 21 triệu và mỗi bitcoin chứa 10^8 Satoshi (Thứ Bảy). Do đó, có 21 triệu * 10^8 satoshi trên mạng Bitcoin. giao thức Ordinals phân biệt các satoshi này bằng cách đánh số duy nhất cho mỗi satoshi. Phần này mô tả cách giao thức thực hiện điều này và cách nó theo dõi các tài khoản chứa mỗi satoshi. Ngoài ra, phân loại độ hiếm của satoshi sẽ được mô tả.
Đánh số của Satoshi
Theo giao thức Ordinals, satoshi được đánh số theo thứ tự chúng được khai thác. Hình dưới đây cho thấy sự thể hiện của satoshi thứ 0 được khai thác từ khối thứ 0.

Có nhiều cách biểu diễn khác nhau cho số thứ tự: (https://docs.orderals.com/overview.html)
Ký hiệu số nguyên: [2099994106992659]() Số thứ tự, được chỉ định theo thứ tự khai thác satoshi.
Ký hiệu thập phân: [3891094.16797]() Số đầu tiên là chiều cao khối mà satoshi được khai thác, số thứ hai là độ lệch của satoshi trong khối.
Ký hiệu độ: [3°111094′214″16797‴](). Số đầu tiên là chu kỳ, được đánh số bắt đầu từ 0, số thứ hai là chỉ số khối trong kỷ nguyên giảm một nửa, số thứ ba là chỉ số khối trong giai đoạn điều chỉnh độ khó và số cuối cùng là chỉ số sat trong khối.
Ký hiệu phần trăm: [99,99971949060254%]() . Vị trí của satoshi trong nguồn cung Bitcoin, được biểu thị bằng phần trăm.
Tên: [satoshi](). Mã hóa số thứ tự bằng cách sử dụng các ký tự từ a đến z.
Chúng ta sẽ xem qua một ví dụ về cách đánh số bitcoin mới được khai thác. Nhìn vào khối 795952 của chuỗi khối bitcoin, chúng ta có thể thấy rằng giao dịch đầu tiên trong số này, Tx 3a1f...b177 ghi lại phần thưởng của người khai thác (giao dịch coinbase). Giao dịch này chứa bitcoin mới được khai thác, được sử dụng làm phần thưởng trọn gói cho người khai thác, cũng như một khoản phí do người khởi tạo giao dịch trả cho người khai thác. Bằng cách nhìn vào đầu vào của sơ đồ bên dưới, chúng ta có thể thấy id UTXO của nó bao gồm một chuỗi các số 0 và chiều cao khối. Địa chỉ đầu ra sau đó là địa chỉ ví của người khai thác và số tiền là tổng của phần thưởng và phí được đề cập ở trên.

Nếu chúng ta xem xét kỹ hơn phần đầu ra cho người khai thác, chúng ta có thể thấy sự phân bổ địa chỉ, số lượng và satoshi chứa trong đó. Như đã đề cập trước đó, chúng chứa phần thưởng và phí khai thác. Trong số này, thông tin số satoshi màu xanh lá cây 1941220000000000–1941220625000000 là satoshi mới được tạo ra bởi phần thưởng khai thác, trong khi 712 satoshi còn lại tương ứng với tất cả các khoản phí trong khối.

Chúng tôi có thể xác minh số Thứ bảy 19412200000000000. Số khối của nó là 795952 và số thập phân là 795952.0, có nghĩa là chiều cao khối để khai thác Satoshi này là 795952 và số của Satoshi trong khối này là 0, theo sau là dấu hiếm cho những thứ không phổ biến. chúng tôi sẽ mô tả chi tiết ở phần sau.

Dòng chảy của Satoshi
Bởi vì mỗi BTC được tạo ra thông qua phần thưởng khai thác nên tất cả chúng đều có thể truy nguyên được. Tài khoản bitcoin sử dụng mô hình UTXO. Giả sử rằng người dùng A đã thu được satoshi thứ 100-110 bằng cách khai thác (toàn bộ 10 satoshi được lưu trữ trong cùng một UTXO với id adc123). Khi người dùng A muốn trả cho người dùng B 5 satoshi, anh ta chọn sử dụng id abc123 làm đầu vào của giao dịch, trong đó 5 satoshi được trao cho người dùng B và 5 satoshi được trả lại cho người dùng A dưới dạng tiền thừa. cả hai bản sao của 5 satoshi đều được lưu trữ tổng thể trong hai UTXO có id lần lượt là abc456 và abc789. Các id UTXO ở trên và số lượng satoshi chỉ được hiển thị dưới dạng ví dụ, trên thực tế, số lượng tối thiểu là 546sats và các id UTXO không được biểu thị ở dạng này.

Trong giao dịch trên, đường dẫn 10 satoshi của người dùng A là
khai thác tạo ra 10 satoshi với số [100, 110). Điều đó có nghĩa là satoshi được đánh số từ thứ 100 đến thứ 109 được lưu trữ trong UTXO với id abc123 và chủ sở hữu của nó là người dùng A.
Khi A thực hiện chuyển khoản, 10 satoshi được chia thành hai phần, mỗi phần có 5 satoshi. Nguyên tắc "nhập trước xuất trước" được sử dụng ở đây, tức là việc đánh số satoshi được xác định bởi chỉ số của chúng trong đầu ra giao dịch. Giả sử thứ tự đầu ra là Người dùng A và sau đó là Người dùng B thì 5 satoshi còn lại của Người dùng A được đánh số [100, 105) và được lưu trữ trong UTXO với id abc456, trong khi 5 satoshi của Người dùng B được đánh số [105 , 110) và được lưu trữ trong UTXO với id abc789.
Satoshi hiếm
Là một trò chơi phái sinh của giao thức Ordinals, độ hiếm của Satoshi có thể được xác định dựa trên thứ tự chúng được khai thác. Điều này sẽ dẫn đến một số Satoshi đặc biệt có độ hiếm khác nhau. Sau đây là mức độ hiếm của các Satoshi khác nhau:
chung: Bất kỳ sat nào không phải là sat đầu tiên trong khối của nó (Tổng nguồn cung: 2,1 triệu triệu)
không phổ biến: Sat đầu tiên của mỗi khối (Tổng nguồn cung: 6.929.999)
hiếm: Sat đầu tiên của mỗi giai đoạn điều chỉnh độ khó (Tổng nguồn cung: 3437)
sử thi: Sat đầu tiên của mỗi kỷ nguyên giảm một nửa (Tổng nguồn cung: 32)
huyền thoại: Sat đầu tiên của mỗi chu kỳ (Tổng nguồn cung: 5)
huyền thoại: Sat đầu tiên của khối Genesis (Tổng nguồn cung: 1)
Khái niệm satoshi hiếm này có thể tăng thêm sự quan tâm và giá trị cho hệ sinh thái bitcoin. Satoshi có độ hiếm khác nhau có thể có giá trị khác nhau trên thị trường, thu hút các nhà sưu tập và nhà đầu tư.
III. Phương pháp khắc chữ
Ordinals khác biệt đáng kể so với các NFT khác trên chuỗi không phải bitcoin. Một trong những khác biệt chính là siêu dữ liệu của Ordinals không được lưu trữ ở một vị trí cụ thể. Thay vào đó, siêu dữ liệu được nhúng vào dữ liệu nhân chứng của giao dịch, đó là lý do tại sao chúng tôi gọi nó là "dòng chữ", vì nó được "khắc" giống như dòng chữ trên một phần cụ thể của giao dịch bitcoin. Dữ liệu được gắn vào một satoshi cụ thể. Quy trình ghi chú này được triển khai thông qua Segregated Witness (SegWitness) và Pay-to-Taproot (P2TR), bao gồm hai giai đoạn: cam kết và tiết lộ. Có thể ghi bất kỳ loại nội dung nào (ví dụ: văn bản, hình ảnh hoặc video) trên một satoshi được chỉ định. Chúng tôi sẽ giới thiệu một phương pháp lưu trữ trực tiếp khác, OP_RETURN, bên dưới và giải thích lý do tại sao nó không được sử dụng làm phương tiện ghi. Ngoài ra, chúng tôi sẽ mô tả nhân chứng biệt lập và Pay-to-Taproot là gì cũng như vai trò của chúng trong dòng chữ. Cuối cùng chúng tôi sẽ giới thiệu cách viết chữ.
BẬT_RETURN
Trong máy khách Bitcoin Core phiên bản 0.9, sự thỏa hiệp cuối cùng đã đạt được bằng cách áp dụng toán tử RETURN. RETURN cho phép các nhà phát triển thêm 80 byte dữ liệu không thanh toán vào đầu ra giao dịch. Không giống như các khoản thanh toán giả, RETURN tạo ra một đầu ra không thể tiêu thụ được, có thể xác minh rõ ràng; dữ liệu đó không cần phải được lưu trữ trong bộ UTXO. Các đầu ra RETURN được ghi lại trên blockchain, chúng tiêu tốn dung lượng ổ đĩa và khiến blockchain tăng kích thước, nhưng chúng không được lưu trữ trong bộ UTXO và do đó không làm tăng nhóm bộ nhớ UTXO, cũng như không làm tăng thêm chi phí bộ nhớ đắt đỏ của nút đầy đủ.
Mặc dù OP_RETURN là một phương tiện lưu trữ thông tin rất đơn giản vào chuỗi khối Bitcoin nhưng nó cũng là một phương tiện ghi dữ liệu tiềm năng. Tuy nhiên, những hạn chế của OP_RETURN khiến nó gặp phải một số thách thức khi xử lý việc lưu trữ siêu dữ liệu. Đầu tiên, OP_RETURN chỉ có thể lưu trữ 80 byte dữ liệu, một giới hạn rõ ràng không được đáp ứng trong những trường hợp cần lưu trữ lượng dữ liệu lớn hơn. Thứ hai, dữ liệu OP_RETURN được lưu trữ trong phần đầu ra giao dịch và mặc dù dữ liệu đó không được lưu trữ trong bộ UTXO nhưng chúng chiếm không gian lưu trữ trong chuỗi khối, dẫn đến tăng kích thước của chuỗi khối. Cuối cùng, việc sử dụng OP_RETURN dẫn đến tăng phí giao dịch vì nó đòi hỏi phải trả nhiều phí hơn để đăng các giao dịch này.
Nhân chứng tách biệt
Ngược lại, SegWit đưa ra một cách tiếp cận mới giúp khắc phục những vấn đề này. SegWit là một bản nâng cấp giao thức chính cho Bitcoin, được đề xuất bởi Pieter Wuille, một nhà phát triển Bitcoin cốt lõi, vào năm 2015 và cuối cùng được chính thức áp dụng trong phiên bản 0.16.0 vào năm 2017. Tách biệt trong Segregated Witness có nghĩa là tách biệt, cô lập và Witness là một thứ được ký kết liên quan đến Một giao dịch. Do đó, SegWit là sự tách biệt dữ liệu chữ ký giao dịch nhất định (dữ liệu nhân chứng) khỏi giao dịch.
Lợi ích chính của việc tách chữ ký khỏi dữ liệu liên quan đến giao dịch là nó làm giảm kích thước dữ liệu được lưu trữ trong khối bitcoin. Điều này mang lại cho mỗi khối thêm dung lượng để lưu trữ nhiều giao dịch hơn và có nghĩa là mạng có thể xử lý nhiều giao dịch hơn và người gửi trả phí thấp hơn. Về mặt kỹ thuật, điều này có nghĩa là lấy thông tin scriptSig ra khỏi khối cơ sở và đưa nó vào cấu trúc dữ liệu mới. Bản nâng cấp Segwit giới thiệu trường nhân chứng mới trong đầu ra giao dịch để đảm bảo quyền riêng tư và hiệu suất. Mặc dù dữ liệu nhân chứng không được thiết kế để lưu trữ dữ liệu nhưng nó thực sự mang đến cho chúng tôi cơ hội lưu trữ nội dung như siêu dữ liệu ghi chú. Chúng ta hãy hiểu chứng kiến tách biệt một cách sinh động hơn bằng sơ đồ sau:



Rễ cái
P2TR là loại đầu ra giao dịch của Bitcoin được giới thiệu trong bản nâng cấp Taproot diễn ra vào năm 2021, cho phép các điều kiện giao dịch khác nhau được lưu trữ trong chuỗi khối theo cách riêng tư hơn. P2TR đóng một vai trò quan trọng trong chữ khắc của Ordinals. Về cơ bản, các dòng chữ nhúng nội dung dữ liệu cụ thể vào các giao dịch Bitcoin và bản nâng cấp Taproot và đặc biệt là P2TR, làm cho dữ liệu nhúng này trở nên linh hoạt và tiết kiệm hơn.
Đầu tiên, do cách lưu trữ tập lệnh Taproot, chúng tôi có thể lưu trữ nội dung dòng chữ trong các tập lệnh chi tiêu đường dẫn tập lệnh Taproot hầu như không giới hạn về nội dung, trong khi vẫn được giảm giá đối với dữ liệu nhân chứng, giúp việc lưu trữ nội dung dòng chữ tương đối tiết kiệm. Vì các tập lệnh Taproot chỉ có thể được sử dụng từ đầu ra Taproot đã có sẵn nên các dòng chữ được gửi/tiết lộ bằng quy trình gửi/tiết lộ hai giai đoạn. Đầu tiên, trong giao dịch gửi, đầu ra Taproot được tạo ra hứa hẹn một tập lệnh chứa nội dung dòng chữ. Sau đó, trong giao dịch tiết lộ, đầu ra do giao dịch gửi được sử dụng, do đó tiết lộ nội dung ghi trên chuỗi.
Cách tiếp cận này làm giảm đáng kể việc tiêu thụ tài nguyên. Nếu P2TR không được sử dụng, thông tin nhân chứng sẽ được lưu trữ trong đầu ra của giao dịch. Do đó, miễn là đầu ra này không được sử dụng, thông tin nhân chứng sẽ vẫn được lưu trữ trong bộ UTXO. Ngược lại, nếu sử dụng P2TR, thông tin nhân chứng sẽ không xuất hiện trong các giao dịch được tạo trong giai đoạn cam kết, do đó nó không được ghi vào bộ UTXO. Chỉ khi UTXO này được sử dụng thì thông tin nhân chứng mới xuất hiện trong đầu vào giao dịch trong giai đoạn tiết lộ. p2tr cho phép siêu dữ liệu được ghi vào chuỗi khối bitcoin, nhưng không bao giờ xuất hiện trong bộ UTXO. Vì việc duy trì/sửa đổi bộ UTXO yêu cầu nhiều tài nguyên hơn nên phương pháp này tiết kiệm rất nhiều tài nguyên.
Chữ khắc
Giao thức Ordinals tận dụng sự nới lỏng các hạn chế về kích thước của SegWit khi ghi vào nội dung mạng Bitcoin bằng cách lưu trữ nội dung ghi trong dữ liệu nhân chứng. Taproot giúp việc lưu trữ dữ liệu nhân chứng tùy ý trong các giao dịch bitcoin trở nên dễ dàng hơn, cho phép nhà phát triển Casey Rodarmor của Ordinals sử dụng lại các mã hoạt động cũ (OP_FALSE, OP_IF, OP_PUSH) cho những gì ông mô tả là "phong bì" để lưu trữ dữ liệu tùy ý cho cái được gọi là "chữ khắc".
Quá trình đúc một dòng chữ bao gồm hai bước sau:
Đầu tiên, cần tạo đầu ra Commit-to-Taproot của tập lệnh chứa nội dung của dòng chữ trong giao dịch đã gửi. Định dạng được lưu trữ là Taproot, tức là đầu ra của giao dịch trước đó là P2TR (Pay-To-Taproot) và đầu vào của giao dịch sau, với định dạng cụ thể được nhúng trong tập lệnh Taproot được chứng kiến; đầu tiên, chuỗi ord được đặt vào ngăn xếp để phân biệt dòng chữ khỏi những mục đích sử dụng khác. OP_PUSH 1 chỉ ra rằng lần đẩy tiếp theo chứa loại nội dung và OP_PUSH 0 chỉ ra rằng lần đẩy dữ liệu tiếp theo chứa chính nội dung đó. Các dòng chữ lớn phải sử dụng nhiều lần đẩy dữ liệu vì một trong những hạn chế của taproot là các lần đẩy dữ liệu riêng lẻ không được lớn hơn 520 byte. Tại thời điểm này, dữ liệu cho dòng chữ đã tương ứng với UTXO của đầu ra giao dịch nhưng chưa được công khai.

Dòng chữ chứa chuỗi "Xin chào thế giới!" được tuần tự hóa như trên Thứ hai, cần phải tiêu thụ đầu ra được tạo bằng cách gửi giao dịch trong giao dịch tiết lộ. Ở giai đoạn này, giao dịch được bắt đầu bằng cách lấy UTXO tương ứng với dòng chữ đó làm đầu vào. Tại thời điểm này, nội dung của dòng chữ tương ứng của nó được tiết lộ cho toàn bộ mạng.
Với hai bước được mô tả ở trên, nội dung dòng chữ đã được liên kết với UTXO được ghi. Một lần nữa, theo vị trí của satoshi được mô tả ở trên, dòng chữ được tạo trên satoshi đầu tiên tương ứng với UTXO đầu vào của nó và nội dung dòng chữ được bao gồm trong đầu vào hiển thị giao dịch. Theo phần giới thiệu về dòng chảy và theo dõi satoshi được mô tả ở trên, satoshi này có nội dung đặc biệt có thể được chuyển nhượng, mua, bán, bị mất và khôi phục. Cần lưu ý rằng chữ khắc không được lặp lại, nếu không những chữ khắc sau sẽ không có giá trị.
Chúng tôi sẽ minh họa chi tiết quá trình này bằng cách đưa ra một ví dụ về hình ảnh BTC NFT nhỏ, bao gồm hai giai đoạn chính được đề cập trước đó là cam kết và tiết lộ. Đầu tiên, chúng ta thấy Hash ID của giao dịch đầu tiên là 2ddf9...f585c. Có thể lưu ý rằng đầu ra của giao dịch này không chứa dữ liệu nhân chứng và không có dòng chữ liên quan trên trang web.

Tiếp theo, chúng ta xem xét giai đoạn thứ hai của bản ghi, có ID Hash là e7454...7c0e1. Ở đây chúng ta có thể thấy thông tin về dòng chữ Ordinals, đó chính là nội dung của dòng chữ nhân chứng. Địa chỉ đầu vào của giao dịch này là địa chỉ đầu ra của giao dịch trước đó, trong khi đầu ra là 0,00000546BTC (546 Satoshi) sẽ gửi NFT này đến địa chỉ của chính nó. Ngoài ra, chúng ta có thể tìm thấy satoshi nơi có dòng chữ này vào Thứ Bảy 1893640468329373.


Trong ví Bitcoin, chúng ta có thể thấy tài sản này. Nếu chúng tôi muốn giao dịch NFT này, chúng tôi có thể gửi nó trực tiếp đến địa chỉ của người khác, có nghĩa là gửi UTXO này, việc này sẽ hoàn thành dòng chữ khắc.

IV. ví tiền Bitcoin
Sau khi chúng ta hiểu Ordinals là gì, dòng chảy của Satoshi và kiến thức về chữ khắc, có nhiều kịch bản ứng dụng hiện đang xuất hiện, có thể là BRC-20, ORC-20, BRC-721, GBRC-721 và các giao thức phái sinh liên quan khác. yêu cầu chúng tôi phải có ví tương ứng để hỗ trợ và hiển thị thông tin token hoặc hình ảnh nhỏ NFT. Trong phần này chúng tôi sẽ giới thiệu khái niệm và đặc điểm của các địa chỉ ví bitcoin khác nhau.
Địa chỉ bitcoin bắt đầu bằng 1, 3 hoặc bc1. Giống như địa chỉ email, chúng có thể được chia sẻ với những người dùng Bitcoin khác, những người có thể sử dụng chúng để gửi Bitcoin trực tiếp vào ví của họ. Từ góc độ bảo mật, địa chỉ bitcoin không có bất kỳ nội dung nhạy cảm nào. Nó có thể được xuất bản ở bất cứ đâu mà không ảnh hưởng đến tính bảo mật của tài khoản. Không giống như địa chỉ email, chúng tôi có thể tạo địa chỉ mới thường xuyên nếu cần, tất cả địa chỉ này sẽ gửi tiền trực tiếp vào ví của bạn. Trên thực tế, nhiều ví hiện đại tự động tạo địa chỉ mới cho mỗi giao dịch để đảm bảo quyền riêng tư tối đa. Ví chỉ đơn giản là một tập hợp các địa chỉ và chìa khóa để mở khóa số tiền trong đó. Đầu tiên chúng ta cần biết địa chỉ ví Bitcoin được tạo ra như thế nào.
Khóa riêng và khóa công khai của Bitcoin
Bitcoin sử dụng đường cong elip Secp256k1, trong đó "khóa riêng" là một số ngẫu nhiên trong khoảng từ 1 đến n-1, n là một số rất lớn (256 bit) và n được biểu thị bằng ký hiệu khoa học xấp xỉ: 1.15792*10^77 .
Phạm vi rộng đến mức gần như không thể đoán được khóa riêng của người khác. Khóa riêng số nguyên ngẫu nhiên này có thể được biểu thị bằng 256 bit và có nhiều cách để mã hóa nó. Nếu khóa riêng trong WIF, dạng nén WIF không được mã hóa, nó có thể được giải mã để lấy "số nguyên ngẫu nhiên" ban đầu. Một cách khác là BIP38, đề xuất mã hóa khóa riêng bằng thuật toán AES. Khóa riêng thu được từ sơ đồ này bắt đầu bằng ký tự 6P và khóa riêng này phải được nhập dưới dạng mật khẩu để nhập vào nhiều ví bitcoin khác nhau, đây là khóa riêng mà chúng ta thường sử dụng.
Sau đó, chúng tôi sẽ sử dụng công thức đường cong elip K = kG để tạo khóa chung K của Bitcoin từ khóa riêng k. G là Điểm cơ sở, là tham số của secp256k1. Hai tọa độ của K là hai biểu thức của khóa chung đó là “Định dạng không nén” và “Định dạng nén”.

Không nén, là sự ghép trực tiếp của hai tọa độ x và y, trước tiền tố 0x04;
Dạng nén, mã hóa là 02 x khi y chẵn và 03 x khi y lẻ;
Địa chỉ bitcoin
Các loại địa chỉ bitcoin khác nhau có thể được hiển thị trong sơ đồ sau, với bốn cách biểu thị:

Định dạng kế thừa (P2PKH)
Ví dụ: 1Fh7ajXabJBpZPZw8bjD3QU4CuQ3pRty9u
Địa chỉ bắt đầu bằng số "1" và là định dạng địa chỉ ban đầu của Bitcoin, vẫn được sử dụng cho đến ngày nay. Nó còn được gọi là P2PKH, viết tắt của Pay To PubKey Hash và có được bằng cách tính toán khóa chung thông qua hàm băm.
Định dạng SegWit lồng nhau (P2SH)
Ví dụ: 3KF9nXowQ4asSGxRRzeiTpDjMuwM2nypAN
P2SH lồng nhau, lấy địa chỉ P2SH hiện có (bắt đầu bằng "3") và bao bọc nó bằng địa chỉ SegWit.
Định dạng SegWit gốc (Bech32)
Ví dụ: bc1qf3uwcxaz779nxedw0wry89v9cjh9w2xylnmqc3
Các địa chỉ bắt đầu bằng bc1 được đề xuất trong BIP0173 và chúng là địa chỉ Nhân chứng biệt lập gốc. địa chỉ được mã hóa bech32, một định dạng địa chỉ được phát triển riêng cho SegWit. bech32 đã được xác định trong BIP173 vào cuối năm 2017 và một trong những tính năng chính của định dạng. Một trong những tính năng chính là nó không phân biệt chữ hoa chữ thường (chỉ 0-9, az, được bao gồm trong địa chỉ), giúp nó có hiệu quả trong việc tránh nhầm lẫn và dễ đọc hơn khi nhập. Vì địa chỉ cần ít ký tự hơn nên địa chỉ được mã hóa bằng Base32 thay vì Base58 truyền thống, giúp việc tính toán dễ dàng và hiệu quả hơn. Dữ liệu có thể được lưu trữ chặt chẽ hơn trong mã QR. bech32 cung cấp tính bảo mật cao hơn, tối ưu hóa tổng kiểm tra và mã phát hiện lỗi tốt hơn, đồng thời giảm thiểu khả năng địa chỉ không hợp lệ.
Bản thân địa chỉ Bech32 tương thích với SegWit. Không cần thêm dung lượng để đặt địa chỉ SegWit vào địa chỉ P2SH, do đó phí thấp hơn với địa chỉ định dạng Bech32. Địa chỉ Bech32 có một số lợi thế so với địa chỉ Base58 cũ hơn (mã hóa Base58Check được sử dụng để mã hóa mảng byte trong Bitcoin thành chuỗi mà con người có thể mã hóa): mã QR nhỏ hơn; chống lỗi tốt hơn; an toàn hơn; không phân biệt chữ hoa chữ thường; và chỉ bao gồm các chữ cái viết thường nên dễ đọc, gõ và dễ hiểu hơn.
Định dạng Taproot (P2TR)
Bech32 có một nhược điểm: nếu ký tự cuối cùng của địa chỉ là p, việc chèn hoặc xóa bất kỳ số ký tự q nào ngay trước p sẽ không làm mất hiệu lực tổng kiểm tra của nó.
Để khắc phục nhược điểm này của Bech32, địa chỉ Bech32m được đề xuất trong BIP0350:
Đối với địa chỉ nhân chứng riêng biệt phiên bản 0, hãy sử dụng Bech32 trước đó;
Đối với địa chỉ nhân chứng biệt lập bản địa phiên bản 1 (hoặc cao hơn), Bech32m mới sẽ được sử dụng.
Đối với địa chỉ Bech32m, chúng luôn bắt đầu bằng bc1p (tức là địa chỉ Taproot) khi sử dụng phiên bản 1. Cụ thể, giống như một nhân chứng biệt lập ở địa phương, ví có thể bao gồm cụm từ hạt giống và cụm từ mật mã. Chúng được sử dụng để tạo các khóa công khai và riêng tư mở rộng được sử dụng để lấy địa chỉ đường dẫn tùy ý trong ví xác định phân cấp. Mục đích chính là lưu trữ BRC-20 cũng như NFT cho BTC, v.v.
V. Về chúng tôi
Spectrum Labs là một nhóm gồm các Thạc sĩ và Tiến sĩ tập trung vào nghiên cứu blockchain, cũng như những người kỳ cựu trong ngành công nghiệp blockchain. Chúng tôi dành riêng cho công nghệ chuỗi nghiên cứu blockchain và các ứng dụng của nó để giúp mọi người hiểu rõ hơn về blockchain. Các hoạt động chính của Spectrum Labs bao gồm viết báo cáo nghiên cứu, phát triển chương trình giảng dạy và phát triển công cụ.
Cộng đồng người Trung Quốc BTC NFT (中文社区) là một trung tâm giao tiếp bằng tiếng Trung của BTC NFT dành cho những người mới tham gia vào cộng đồng người Trung Quốc toàn cầu.
