1. Nền tảng bitcoin
Bitcoin áp dụng mô hình giao dịch giống như tiền mặt (hệ thống tiền mặt) và phương thức 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 kế toán tài khoản của ngân hàng, khi A chuyển 100 nhân dân tệ cho B, ngân hàng sẽ ghi lại ba bước, tạo thành quy trình giao dịch. Bước đầu tiên là trừ 100 nhân dân tệ từ tài khoản của A. ID hồ sơ của bước này là tid1. Bước thứ hai là gửi 100 nhân dân tệ vào tài khoản của B. ID hồ sơ của bước này là tid2. Bước thứ ba là ghi lại hồ sơ chuyển khoản, liên kết tid1 và tid2, cho biết tài khoản A giảm 100 nhân dân tệ và tài khoản B tăng 100 nhân dân tệ.
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à theo dõi trong tương lai. Bây giờ, chúng tôi sẽ giải thích phương thức thanh toán của Bitcoin thông qua việc 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 có tên là "Đầu ra giao dịch chưa chi tiêu" (UTXO). Mỗi UTXO chứa một lượng Bitcoin, thông tin chủ sở hữu và trạng thái sẵn có nhất định, tương tự như tấm séc có tên của chủ sở hữu. Séc này có thể được ký và chuyển cho người khác.
Số dư của một địa chỉ bằng tổng của tất cả các UTXO của nó. Số dư hiện tại của mỗi địa chỉ có thể được lấy bằng cách duyệt qua danh sách UTXO và tổng các UTXO này thể hiện tổng nguồn cung hiện tại của tất cả Bitcoin.

Trong cấu trúc giao dịch Bitcoin, mỗi giao dịch chứa đầu vào và đầu ra. Mỗi đầu vào là một tham chiếu đến UTXO hiện có và mỗi đầu ra chỉ định một địa chỉ và số tiền nhận mới. Sau khi giao dịch được tạo, UTXO được liên kết với đầu vào sẽ tạm thời bị khóa để ngăn việc sử dụng lại và trạng thái UTXO được liên kết sẽ chỉ thay đổi sau khi được người khai thác đóng gói và xác nhận thành công.
Cụ thể, UTXO đầu vào bị xóa và đầu ra tạo ra một UTXO mới và thêm nó vào danh sách. Điều này tương tự như việc tạo ra séc mới sau khi séc cũ hết hiệu lực, với quyền sở hữu séc mới được chuyển sang tên của người nắm giữ mới.
Cần nhấn mạnh rằng mỗi UTXO chỉ có thể được sử dụng một lần trong một giao dịch. Sau khi sử dụng, nó sẽ bị xóa vĩnh viễn và một đầu ra mới sẽ được tạo và thêm vào danh sách UTXO. Danh sách UTXO được cập nhật liên tục khi các khối mới được tạo. Bằng cách phân tích lịch sử giao dịch, trạng thái của danh sách UTXO tại bất kỳ thời điểm nào có thể được xây dựng lại.
Ngoài ra, tổng số tiền đầu vào của một giao dịch thường vượt quá tổng số tiền đầu ra một chút và khoản chênh lệch này trở thành phí giao dịch và đóng vai trò là động lực cho K công nhân. Phí giao dịch tỷ lệ thuận với độ phức tạp của giao dịch, do đó, giao dịch có nhiều đầu vào và đầu ra thường sẽ yêu cầu phí mạng cao hơn.

Để hiểu cấu trúc giao dịch của Bitcoin một cách sinh động hơn, chúng ta có thể tìm hiểu thêm qua ví dụ sau, trong đó “vin” tượng trưng cho đầu vào của giao dịch và “vout” tượng trưng cho đầu ra của giao dịch. Giao dịch bitcoin sử dụng cách tiếp cận đầu vào và đầu ra thay vì mô hình số dư tài khoản truyền thống.

Chúng ta có thể chọn ngẫu nhiên một bản ghi giao dịch trên blockchain.com để phân tích. Hình dưới đây cho thấy Hash ID là.
Giao dịch cho 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ể kiểm tra cấu trúc cơ bản của giao dịch trên:

Trong mạng Bitcoin, đầu ra của mỗi giao dịch chứa hai thông tin chính: đị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 chưa được sử dụng làm đầu vào của các giao dịch khác thì đầu ra đó được gọi là đầu ra giao dịch chưa chi tiêu (UTXO). Bất kỳ ai sở hữu khóa riêng tương ứng với khóa chung trong UTXO đều có quyền sử dụng (nghĩa là chi tiêu) UTXO này.
Hãy xem thông tin trong "vin" trong đoạn mã trên. Nó chỉ ra rằng UTXO được chi tiêu bởi giao dịch này đến từ đầu ra thứ 0 (một giao dịch có thể có nhiều đầu ra, chỉ mục) của một giao dịch khác (ID của nó là 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18). từ 0).
Chúng ta có thể tìm ra số lượng UTXO này (ví dụ: 0,1 Bitcoin) từ lịch sử giao dịch. Do đó, trong giao dịch này, người dùng này đã chi 0,1 Bitcoin và giá trị 0,1 không cần phải ghi rõ ràng trong giao dịch mà có được bằng cách truy vấn thông tin UTXO.
"Vout" của giao dịch này chứa hai đầu ra, đại diện cho hai UTXO mới, tương ứng với số dư mới và chủ sở hữu. Những UTXO mới này sẽ tồn tại 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 sử dụng một ví dụ để giới thiệu quy trình thanh toán số lượng n Bitcoin mà A đến B thanh toán. Hình dưới đây cho thấy quá trình người dùng A gửi 3 Bitcoin cho người dùng B.

Đối với người dùng A, trước hết 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ể kiểm soát;
A chọn một hoặc nhiều UTXO từ bộ này làm đầu vào của giao dịch. Tổng số lượ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ố lượng n (3 BTC) cần có. được trả tiền;
Người dùng A đặt hai đầu ra cho giao dịch, một đầu ra được thanh toán cho địa chỉ của B, số tiền là n (3 BTC) và đầu ra còn lại được thanh toán cho một trong các địa chỉ thay đổi của chính A, số tiền là mn-fee (3,3-3 - 0,001 = 0,299 BTC). Ví của người dùng thường bao gồm nhiều địa chỉ. Nói chung, mỗi địa chỉ chỉ được sử dụng một lần và thay đổi sẽ được trả về địa chỉ mới theo mặc định;
Sau khi nhân viên K đóng gói và xác nhận giao dịch trên blockchain, người nhận B sẽ có thể lấy thông tin về giao dịch.

Vì kích thước của mỗi khối bị giới hạn (thường là khoảng 1 MB), nhân viên K ưu tiên các giao dịch có tỷ lệ giao dịch cao (fee_rate=fee/size) để thu được lợi nhuận phí cao nhất.
Chúng tôi có thể kiểm tra tốc độ giao dịch khai thác K theo thời gian thực trong nhóm giao dịch chưa được xác nhận (mempool). Nếu muốn nhận được xác nhận sớm nhất có thể trong quá trình chuyển khoản, chúng ta có thể chọn Mức độ ưu tiên cao hoặc tùy chỉnh tỷ lệ giao dịch phù hợp.

2. Đánh số và theo dõi Công
Tổng nguồn cung Bitcoin là 21 triệu và mỗi Bitcoin chứa 10^8 Satoshi (Thứ Bảy). Vì vậy, trong mạng Bitcoin, chúng tôi có tổng cộng 21 triệu * 10^8 satoshi.
Giao thức Ordinals sử dụng cách đánh số duy nhất cho mỗi Satoshi để đảm bảo tính duy nhất của nó và khả năng theo dõi chính xác tài khoản mà chúng thuộc về. Ngoài ra, việc phân loại độ hiếm của satoshi sẽ được đơn giản hóa.
số của Satoshi
Theo giao thức Ordinals, satoshi được đánh số theo thứ tự khai thác. Hình bên dưới hiển thị biểu diễn của Satoshi thứ 0 được khai thác trong khối thứ 0.

Có nhiều cách để thể hiện Satoshi:
Ký hiệu số nguyên: Ví dụ: 2099994106992659, đại diện cho số sê-ri được gán cho Satoshi theo thứ tự khai thác.
Ký hiệu thập phân: Ví dụ: 3891094.16797, chữ số đầu tiên biểu thị chiều cao của khối nơi Satoshi được khai thác và chữ số thứ hai biểu thị số Satoshi trong khối.
Ký hiệu độ: Ví dụ: 3°111094′214″16797‴, chữ số đầu tiên là dấu chấm, được đánh số bắt đầu từ 0, chữ số thứ hai là chỉ số khối của kỷ nguyên giảm một nửa và chữ số thứ ba là chỉ số khối trong độ khó kỳ điều chỉnh, chữ số cuối cùng là chỉ số sat trong khối.
Ký hiệu phần trăm: Ví dụ: 99,99971949060254% biểu thị vị trí của Satoshi trong nguồn cung Bitcoin, được biểu thị bằng phần trăm.
Tên: Ví dụ Satoshi. Tên mã hóa số thứ tự bằng các ký tự từ a đến z.

Hãy lấy một ví dụ để giải thích cách đánh số Bitcoin mới được khai thác. Quan sát khối thứ 795952 của chuỗi khối Bitcoin, nó chứa một giao dịch có tên "Tx 3a1f...b177", ghi lại phần thưởng của nhân viên K (giao dịch coinbase). Giao dịch này bao gồm Bitcoin mới được khai thác, được sử dụng làm phần thưởng cho công nhân K, cũng như phí xử lý mà người khởi tạo giao dịch phải trả cho công nhân K.
Bằng cách nhìn vào phần đầu vào, chúng ta có thể thấy ID của UTXO, bao gồm một chuỗi số 0 và chiều cao của khối. Và trong phần đầu ra, chúng ta có thể thấy các địa chỉ đã nhận được những phần thưởng và phí này cũng như tổng số tiền của chúng.

Nếu chúng ta kiểm tra thêm phần đầu ra cho K công nhân, 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 bao gồm phần thưởng khai thác K và phí xử lý.
Trong số đó, thông tin số sats xanh 1941220000000000–1941220625000000 là satoshi mới được tạo ra bằng cách khai thác phần thưởng K và 712 bản ghi satoshi còn lại tương ứng với tất cả phí xử lý trong khối.

Chúng tôi có thể xác minh số Thứ bảy 1941220000000000.
Số khối của nó là 795952 và ký hiệu thập phân (thập phân) là 795952.0, có nghĩa là chiều cao khối khai thác Satoshi này là 795952, số lượng Satoshi trong khối này là 0 và độ hiếm tiếp theo được đánh dấu là không phổ biến. sẽ giới thiệu chi tiết ở các phần sau.

Sự lưu thông của Công
Mô hình giao dịch của Bitcoin sử dụng mô hình Đầu ra giao dịch chưa chi tiêu (UTXO), có nghĩa là mỗi Bitcoin (BTC) có thể được truy tìm nguồn gốc của nó. Hãy minh họa quá trình này bằng một ví dụ:
Giả sử rằng người dùng A đã nhận được phần thưởng bằng cách khai thác K, chứa Bitcoin từ Satoshi thứ 100 đến Satoshi thứ 110. Những Bitcoin này đều được lưu trữ trong cùng một UTXO (Đầu ra giao dịch chưa chi tiêu).
Bây giờ, khi người dùng A muốn trả cho người dùng B 5 satoshi, anh ấy chọn sử dụng UTXO có ID abc123 làm đầu vào cho giao dịch. Giao dịch này sẽ gửi 5 satoshi cho người dùng B và trả lại 5 satoshi khi thay đổi cho người dùng A.
Hai 5 satoshi này sẽ trở thành một tổng thể, nhưng sẽ được lưu trữ trong hai UTXO khác nhau, chẳng hạn như abc456 và abc789.
Id UTXO ở trên và số lượng satoshi chỉ được hiển thị dưới dạng ví dụ. Trong các tình huống thực tế, số lượng satoshi tối thiểu được gửi được giới hạn ở 546 và id UTXO không được biểu thị ở dạng này.

Trong giao dịch trên, đường lưu thông 10 satoshi của người dùng A là:
Khai thác K tạo ra 10 satoshi, được đánh số [100, 110). Điều đó có nghĩa là satoshi 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 là 5 satoshi. Nguyên tắc "nhập trước, xuất trước" được áp dụng ở đây, tức là thứ tự các số Satoshi được xác định theo chỉ số của chúng trong đầu ra giao dịch.
Giả sử thứ tự đầu ra là người dùng A trước, sau đó là người dùng B, thì số thứ tự của 5 satoshi còn lại của người dùng A là [100, 105), được lưu trữ trong UTXO với id abc456 và 5 satoshi của người dùng B là Chuỗi số là [105, 110) và được lưu trữ trong UTXO với id abc789.

Satoshi hiếm
Là một phần phụ của giao thức Ordinals, độ hiếm 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. Dưới đây là mức độ hiếm của các Satoshi khác nhau:
Mức chung: bất kỳ satoshi nào ngoại trừ satoshi đầu tiên của khối (tổng nguồn cung là 2100 nghìn tỷ)
không phổ biến Mức độ xuất sắc: satoshi đầu tiên của mỗi khối (tổng nguồn cung là 6929999)
hiếm: satoshi đầu tiên của mỗi giai đoạn điều chỉnh độ khó (tổng nguồn cung là 3437)
hoành tráng: Satoshi đầu tiên sau mỗi đợt halving (tổng nguồn cung là 32)
huyền thoại: satoshi đầu tiên mỗi chu kỳ (tổng nguồn cung là 5)
huyền thoại: Satoshi đầu tiên trong khối nguyên thủy (tổng nguồn cung là 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ư.

3. Phương pháp khắc chữ
Một điểm khác biệt đáng kể giữa Ordinals và các NFT không phải chuỗi Bitcoin khác là siêu dữ liệu của chúng không được lưu trữ ở một vị trí cụ thể.
Thay vào đó, siêu dữ liệu này được nhúng vào dữ liệu nhân chứng (trường 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ì dữ liệu được “khắc” vào các bit giống như dòng chữ trên một phần cụ thể của giao dịch tiền xu. , dữ liệu này được đính kèm với một Satoshi cụ thể.
Quá trình ghi chú này được thực hiện thông qua Segregated Witness (SegWit) và Pay-to-Taproot (P2TR). Nó bao gồm hai giai đoạn: cam kết và tiết lộ bất kỳ dạng nội dung nào (chẳng hạn như văn bản, hình ảnh hoặc video) trên Satoshi được chỉ định.
Tiếp theo, chúng tôi sẽ trình bày chi tiết một phương pháp lưu trữ trực tiếp hơn khác, OP_RETURN và giải thích lý do tại sao nó không hoạt động với các dòng chữ. Đồng thời, chúng ta sẽ khám phá các khái niệm về Segwit và Pay-to-Taproot cũng như vai trò của chúng trong Inscription. Cuối cùng, chúng ta sẽ đi sâu vào các phương pháp khắc chữ.

OP_RETURE
Trong phiên bản 0.9 của ứng dụng khách Bitcoin Core, cuối cùng đã đạt được thỏa hiệp bằng cách sử 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 có thể xác minh rõ ràng nhưng không thể chi tiêu và không cần được lưu trữ trong bộ sưu tập UTXO (Đầu ra giao dịch chưa chi tiêu).
Các đầu ra RETURN được ghi lại trên blockchain, điều này sẽ chiếm dung lượng ổ đĩa và khiến kích thước blockchain tăng lên, nhưng chúng sẽ không chiếm bộ sưu tập UTXO và do đó sẽ không làm cho bộ sưu tập UTXO phình to, cũng như không làm tăng chi phí bộ nhớ đắt tiền của nút đầy đủ.
Mặc dù OP_RETURN là phương pháp lưu trữ thông tin trực tiếp trên chuỗi khối Bitcoin nhưng nó cũng đặt ra một số thách thức. Trước hết, OP_RETURN chỉ có thể lưu trữ 80 byte dữ liệu, rõ ràng là không đủ cho các tình huống cần lưu trữ nhiều dữ liệu hơn.
Thứ hai, dữ liệu OP_RETURN được lưu trữ trong đầu ra giao dịch. Mặc dù chúng sẽ không chiếm bộ sưu tập UTXO nhưng chúng sẽ chiếm không gian lưu trữ của blockchain, khiến kích thước blockchain tăng lên.
Cuối cùng, việc sử dụng OP_RETURN sẽ làm tăng phí giao dịch vì nó yêu cầu phải trả nhiều tiền hơn để đăng các giao dịch này.

Nhân chứng tách biệt
So với các phương pháp trước đây, SegWit cung cấp một giải pháp mới có thể giải quyết các vấn đề trên.
SegWit là một bản nâng cấp giao thức quan trọng cho Bitcoin. Nó được nhà phát triển cốt lõi Bitcoin Pieter Wuille đề xuất lần đầu tiên vào năm 2015 và cuối cùng đã được áp dụng chính thức trong phiên bản 0.16.0 vào năm 2017.
"Tách biệt" trong Segregated Witness (SegWit) có nghĩa là tách biệt hoặc cô lập, trong khi "Nhân chứng" liên quan đến dữ liệu chữ ký liên quan đến giao dịch. Do đó, khái niệm cốt lõi của SegWit là tách dữ liệu chữ ký giao dịch nhất định (còn gọi là dữ liệu nhân chứng) khỏi dữ liệu giao dịch thực tế.
Lợi ích chính của việc tách dữ liệu chữ ký khỏi dữ liệu giao dịch là giảm kích thước dữ liệu được lưu trữ trong các khối Bitcoin. Điều này dẫn đến công suất khả dụng cao hơn trên mỗi khối để đáp ứng nhiều giao dịch hơn, điều đó cũng có nghĩa là mạng có thể xử lý nhiều giao dịch hơn và người dùng phải trả phí giao dịch thấp hơn.
Về mặt kỹ thuật, điều này có nghĩa là di chuyển dữ liệu chữ ký tập lệnh (scriptSig) ban đầu có trong cấu trúc khối cơ sở sang cấu trúc dữ liệu mới. Các nút xác thực và K công nhân cũng sẽ xác minh chữ ký tập lệnh trong cấu trúc dữ liệu mới này để đảm bảo tính hợp lệ của giao dịch.

Bản nâng cấp SegWit cũng giới thiệu trường dữ liệu nhân chứng mới để nâng cao tính riêng tư và hiệu quả. Mặc dù dữ liệu nhân chứng không được thiết kế đặc biệt để lưu trữ dữ liệu giao dịch văn bản gốc, nhưng nó thực sự mang đến cho chúng ta cơ hội lưu trữ những thứ như siêu dữ liệu dòng chữ.
Chúng ta sử dụng hình sau để hiểu Segregated Witness một cách sống động hơn:

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 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 một cách riêng tư hơn.
Trong kiến trúc này, P2TR đóng một vai trò quan trọng trong việc ghi dữ liệu của Ordinals. Inscription thực sự nhúng dữ liệu cụ thể vào các giao dịch Bitcoin và các bản nâng cấp Taproot, cụ thể là P2TR, làm cho việc nhúng dữ liệu này trở nên linh hoạt và tiết kiệm hơn.
Trước hết, do phương thức lưu trữ mã lệnh Taproot nên chúng ta có thể lưu trữ dữ liệu dòng chữ trong đường dẫn lệnh Taproot và các mã lệnh này hầu như không có hạn chế về nội dung, đồng thời chúng ta cũng có thể được hưởng chiết khấu đối với dữ liệu chứng kiến. làm cho việc lưu trữ dữ liệu chữ khắc trở nên tương đối tiết kiệm.
Tuy nhiên, do việc sử dụng các hướng dẫn Taproot chỉ có thể đến từ đầu ra Taproot hiện có nên việc lưu trữ các dòng chữ sẽ áp dụng quy trình cam kết/tiết lộ hai giai đoạn. Đầu tiên, trong giao dịch cam kết, đầu ra Taproot được thiết lập hứa hẹn chứa dữ liệu ghi.

Sau đó, trong một giao dịch tiết lộ, đầu ra được thiết lập bởi giao dịch cam kết sẽ đượ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 sử dụng tài nguyên. Nếu P2TR không được sử dụng, dữ liệu nhân chứng sẽ được lưu trữ trong đầu ra giao dịch, miễn là đầu ra này không được sử dụng, dữ liệu nhân chứng sẽ luôn tồn tại trong bộ UTXO.
Ngược lại, nếu sử dụng P2TR, dữ liệu nhân chứng sẽ không xuất hiện trong giao dịch được tạo trong giai đoạn cam kết và do đó sẽ không được ghi vào bộ UTXO. Chỉ khi UTXO này được sử dụng thì dữ liệu 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 ghi dữ liệu gốc vào chuỗi khối Bitcoin, nhưng không phải lúc nào cũng chiếm không gian tập trung trong 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 có thể tiết kiệm đáng kể tài nguyên.

chữ khắc
Giao thức Ordinals mở rộng giới hạn kích thước ghi trên mạng Bitcoin bằng cách sử dụng SegWit để lưu trữ nội dung văn bản gốc trong nhân chứng, cho phép lưu trữ siêu dữ liệu lên tới 4MB.
Taproot đơn giản hóa quy trình lưu trữ dữ liệu nhân chứng tùy ý trong các giao dịch Bitcoin, cho phép nhà phát triển Casey Rodarmor của Ordinals sử dụng lại các opcode cũ (OP_FALSE, OP_IF, OP_PUSH) để tạo ra cái gọi là "phong bì" để lưu trữ những gì được gọi là ""Dòng chữ"bất kỳ thông tin nào.
Quá trình đúc bản khắc bao gồm hai bước sau:
Đầu tiên, trong giao dịch cam kết, bạn cần tạo một lời hứa trỏ đến đầu ra Taproot chứa nội dung dòng chữ. Định dạng của bộ lưu trữ này là Taproot, đầu ra của giao dịch trước đó phải là P2TR (Pay-To-Taproot) và nội dung của một định dạng cụ thể được nhúng trong tập lệnh chứng kiến Taproot.
Đầu tiên, chuỗi "ordn" được đẩy lên ngăn xếp để phân biệt mục đích của dòng chữ. Sau đó, sử dụng 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 có chứa chính nội dung đó.
Vì một trong những hạn chế của Taproot là một lần đẩy dữ liệu không thể vượt quá 520 byte nên cần có nhiều lần đẩy dữ liệu để lưu trữ các dòng chữ lớn. Tại thời điểm này, dữ liệu ghi đã được liên kết với đầu ra giao dịch chưa được chi tiêu (UTXO) của đầu ra giao dịch, nhưng vẫn chưa được công khai.

Thứ hai, trong giao dịch tiết lộ, đầu ra được tạo ra cần phải được tiêu thụ. Ở 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 dòng chữ liên quan đến UTXO sẽ được hiển thị trên toàn bộ mạng.
Thông qua hai bước trên, nội dung dòng chữ đã được liên kết với một UTXO cụ thể. Theo phương pháp định vị của Satoshi (UTXO) đã giới thiệu trước đó, dòng chữ được khắc 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 đưa vào đầu vào hiển thị giao dịch.
Theo sự lưu hành và theo dõi của Satoshi (UTXO) đã nói ở trên, Satoshi chứa nội dung đặc biệt này có thể được chuyển nhượng, mua, bán, bị mất và phục hồi. Cần lưu ý rằng dòng chữ không thể được lặp lại, nếu không những dòng chữ tiếp theo sẽ không hợp lệ.
Để giải thích quá trình này chi tiết hơn, hãy xem qua một ví dụ hướng dẫn cách ghi một bức tranh nhỏ về Bitcoin NFT. Quá trình này bao gồm hai giai đoạn cam kết và tiết lộ đã đề cập trước đó.
Đầu tiên, chúng ta có thể thấy ID băm của giao dịch đầu tiên là 2ddf9...f585c. Cần 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ó thông tin ghi chú liên quan trên trang web.

Tiếp theo, chúng tôi kiểm tra bản ghi giai đoạn thứ hai, có ID Hash là e7454…7c0e1. Tại đây chúng ta có thể xem thông tin về dòng chữ Ordinals, đó là nội dung dòng chữ của lời khai.
Địa chỉ đầu vào của giao dịch này là địa chỉ đầu ra của giao dịch trước đó và đầu ra 0,00000546BTC (546 Satoshi) dùng để chuyển NFT này sang địa chỉ riêng của nó. Đồng thời, chúng ta cũng 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ể chuyển trực tiếp nó đến địa chỉ của người khác, tức là chuyển UTXO, do đó hoàn tất việc chuyển dòng chữ.

4. Ví Bitcoin
Sau khi chúng ta hiểu hệ sinh thái thông thường, sự lưu hành của satoshi và kiến thức liên quan về chữ khắc là gì, hiện tại có nhiều kịch bản ứng dụng, cho dù đó là sự xuất hiện của BRC-20, ORC-20, BRC-721, GBRC-721 và các giao thức phái sinh có liên quan khác, yêu cầu Chúng tôi có ví tương ứng để hỗ trợ và hiển thị thông tin mã thông báo hoặc hình ảnh nhỏ NFT.
Trong phần này chúng tôi sẽ giới thiệu các khái niệm và đặc điểm của các địa chỉ ví Bitcoin khác nhau.
Địa chỉ bitcoin thường bắt đầu bằng 1, 3 hoặc bc1 và giống như địa chỉ email, có thể được chia sẻ với những người dùng Bitcoin khác để chuyển Bitcoin trực tiếp vào ví của bạn.
Từ góc độ bảo mật, địa chỉ Bitcoin không chứa thông tin nhạy cảm và do đó có thể được chia sẻ công khai bất kỳ lúc nào mà không ảnh hưởng đến tính bảo mật tài khoản của bạn. Không giống như địa chỉ email, bạn có thể tạo địa chỉ Bitcoin mới nếu cần và tất cả chúng đều 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 thiết lập địa chỉ mới cho mỗi giao dịch để tối đa hóa quyền riêng tư. Ví chỉ đơn giản là một tập hợp các địa chỉ và khóa để mở khóa số tiền bên trong nó. Đầ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 tư và công khai của Bitcoin
Bitcoin sử dụng đường cong elip Secp256k1. “Private key” 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) được biểu thị bằng ký hiệu khoa học như sau:

Phạm vi này rất rộng và gần như không thể bẻ khóa riêng của người khác. Khóa riêng này là một số nguyên ngẫu nhiên, thường được biểu thị bằng 256 bit nhị phân và có thể được mã hóa theo nhiều cách khác nhau. Khóa riêng sử dụng WIF (Định dạng nhập ví) hoặc định dạng nén WIF không được mã hóa và có thể được giải mã trực tiếp thành số nguyên ngẫu nhiên thô.
Một phương pháp khác là BIP38 (Đề xuất cải tiến Bitcoin số 38), khuyến nghị sử dụng thuật toán AES để mã hóa khóa riêng. Khóa riêng được tạo bởi sơ đồ này bắt đầu bằng ký tự 6P và phải nhập mật khẩu để nhập nó vào các ví Bitcoin khác nhau. Đây là cách chúng ta thường sử dụng bảo vệ khóa riêng.
Tiếp theo, chúng tôi sử dụng công thức đường cong elip K = kG, trong đó k là khóa riêng và G là Điểm cơ sở, là đối số của đường cong elip secp256k1.
Thông qua công thức này, chúng ta có thể nhận được 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".

Hình thức Không nén là nối trực tiếp hai tọa độ x và y với nhau, sau đó thêm tiền tố 0x04 vào phía trước;
Dạng nén có nghĩa là khi y là số chẵn thì mã là 02 x, còn khi y là số lẻ thì mã là 03 x;
Địa chỉ Bitcoin
Các loại địa chỉ Bitcoin khác nhau được hiển thị trong hình bên dưới. Có bốn phương pháp biểu diễn:

1. Định dạng kế thừa (P2PKH)
Ví dụ: 1Fh7ajXabJBpZPZw8bjD3QU4CuQ3pRty9u
Địa chỉ bắt đầu bằng "1", đây là định dạng địa chỉ ban đầu của Bitcoin và vẫn được sử dụng cho đến ngày nay. Nó có được bằng cách tính toán Hash từ khóa chung, còn được gọi là P2PKH, là tên viết tắt của Pay To PubKey Hash (thanh toán cho hàm băm khóa chung).
2. Định dạng SegWit lồng nhau (P2SH)
Ví dụ: 3KF9nXowQ4asSGxRRzeiTpDjMuwM2nypAN
Địa chỉ bắt đầu bằng "3". P2SH là tên viết tắt của Pay To Script Hash, hỗ trợ các chức năng phức tạp hơn địa chỉ Legacy. P2SH lồng nhau, lấy địa chỉ P2SH hiện có (bắt đầu bằng "3") và đóng gói nó cùng với địa chỉ SegWit.

3. Định dạng SegWit gốc (Bech32)
Ví dụ: bc1qf3uwcxaz779nxedw0wry89v9cjh9w2xylnmqc3
BIP0173 đã giới thiệu các định dạng địa chỉ bắt đầu bằng "bc1", là những địa chỉ được sử dụng cho Nhân chứng tách biệt gốc (SegWit). Định dạng địa chỉ này sử dụng mã hóa Bech32 và được thiết kế riêng cho SegWit. Địa chỉ ở định dạng Bech32 đã được xác định trong BIP173 vào cuối năm 2017. Một trong những tính năng chính của nó là không phân biệt chữ hoa chữ thường nên dễ tránh nhầm lẫn khi nhập và cũng dễ đọc hơn.
So với mã hóa Base58 truyền thống, Bech32 sử dụng mã hóa Base32 nên cần ít ký tự hơn trong địa chỉ, tính toán hiệu quả hơn và có thể lưu trữ gọn hơn trong mã QR.
Ngoài ra, Bech32 còn cung cấp khả năng bảo mật cao hơn và phát hiện lỗi tổng kiểm tra được tối ưu hóa tốt hơn, giảm thiểu nguy cơ đị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 để đưa địa chỉ SegWit vào địa chỉ P2SH nên sử dụng địa chỉ định dạng Bech32 thì phí xử lý sẽ thấp hơn.
Nhìn chung, địa chỉ Bech32 có một số ưu điểm so với địa chỉ Base58 truyền thống: mã QR được tạo nhỏ hơn, ít lỗi hơn, an toàn hơn, không phân biệt chữ hoa chữ thường và chỉ chứa các chữ cái viết thường nên dễ đọc, gõ và dễ dàng hơn hiểu.

4. Đị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 thì 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ững thiếu sót trên của Bech32, địa chỉ Bech32m đã được đề xuất trong BIP0350:
Đối với các địa chỉ Segwit gốc có phiên bản 0, hãy sử dụng Bech32 trước đó;
Đối với các địa chỉ Segwit gốc phiên bản 1 (hoặc cao hơn), Bech32m mới sẽ được sử dụng.
Đối với các địa chỉ Bech32m, khi số phiên bản của chúng là 1, chúng luôn bắt đầu bằng "bc1p", nghĩa là chúng là địa chỉ Taproot. Tương tự như Segwit gốc, các địa chỉ này có thể được tạo từ cụm từ gốc và cụm mật khẩu được sử dụng để tạo khóa chung và khóa riêng của bộ mở rộng, cho phép lấy địa chỉ cho các đường dẫn khác nhau trong ví xác định phân cấp.

Điều này chủ yếu được sử dụng để lưu trữ các tài sản kỹ thuật số như mã thông báo BRC-20 cũng như NFT của Bitcoin.