
Tổng hợp các phát triển công nghệ mới khiến Bitcoin bùng nổ trở lại
Tuyển chọn TechFlowTuyển chọn TechFlow

Tổng hợp các phát triển công nghệ mới khiến Bitcoin bùng nổ trở lại
Vấn đề xung đột giữa việc ứng dụng quy mô lớn và năng lực vốn có của Bitcoin luôn tồn tại trong công nghệ gốc của Bitcoin.
Tác giả: Fu Shaoqing, SatoshiLab, Đảo Vạn Vật BTC Studio
1. Những khám phá và xung đột chính trong công nghệ gốc của Bitcoin
Công nghệ gốc của Bitcoin luôn tồn tại mâu thuẫn giữa việc ứng dụng quy mô lớn và khả năng vốn có mà Bitcoin nên đạt được. Việc mở rộng quy mô ứng dụng và giao dịch có thực sự đồng nghĩa với các lệnh giao dịch phức tạp hơn và không gian giao dịch lớn hơn? Có nhất thiết phải tích hợp mọi chức năng vào hệ thống đơn lẻ của Bitcoin? Trong giai đoạn đầu, khi hệ sinh thái công nghệ Bitcoin chưa hoàn thiện, những hiện tượng này dường như đều là vấn đề nội tại của bản thân Bitcoin. Theo thời gian phát triển công nghệ, nhiều câu hỏi sẽ có lời giải rõ ràng hơn.
Bài viết này liệt kê một số vấn đề liên quan, cũng như quá trình hình thành và giải quyết các vấn đề đó. Qua bài viết, ta có thể thấy mối liên hệ giữa các vấn đề với công nghệ, cũng như sự thay đổi của chuỗi chính Bitcoin và các "chuỗi thử nghiệm" liên quan. Công nghệ Bitcoin luôn được các dự án và nhóm khác nhau thăm dò (kể cả Ethereum cũng là một hình thức khám phá nhằm khắc phục những điểm chưa hoàn thiện của Bitcoin), chỉ là những thay đổi trên mạng chính Bitcoin vẫn chưa rõ rệt, cho đến khi xuất hiện các công nghệ như Taproot, thúc đẩy sự ra đời của các giao thức như Ordinals, đưa Bitcoin bước vào một cao trào phát triển mới.
Nhìn tổng thể các quá trình phát triển và công nghệ liên quan, ta có thể thấy mối liên kết giữa chúng, từ đó suy luận thêm về định hướng phát triển và kiến trúc tổng thể.
1.1. Ngôn ngữ script của Bitcoin và những lần loại bỏ lệnh
Ngôn ngữ lập trình của Bitcoin là một ngôn ngữ script theo dạng ký pháp Ba Lan nghịch đảo, không có câu lệnh vòng lặp hay điều kiện kiểm soát (sẽ được mở rộng ở phần Taproot & Taproot Script). Do đó, người ta thường nói rằng ngôn ngữ script của Bitcoin không đầy đủ Turing, dẫn đến một số hạn chế nhất định.
Tuy nhiên, chính vì những hạn chế này, hacker không thể dùng ngôn ngữ script để viết các vòng lặp vô tận (gây tê liệt mạng) hoặc mã độc gây tấn công DOS, nhờ đó tránh được các cuộc tấn công vào mạng Bitcoin. Các nhà phát triển Bitcoin cũng cho rằng blockchain cốt lõi không nên có tính đầy đủ Turing để ngăn chặn các cuộc tấn công và tắc nghẽn mạng.
Tuy vậy, cũng do những hạn chế này, mạng Bitcoin không thể chạy các chương trình phức tạp khác, không thể thực hiện các chức năng "hữu ích". Một số hệ thống blockchain sau này, để giải quyết vấn đề cụ thể và đáp ứng nhu cầu người dùng, đã trực tiếp thay đổi điều này. Ví dụ, ngôn ngữ sử dụng bởi Ethereum lại có tính đầy đủ Turing.
Các loại lệnh script Bitcoin phổ biến:
Từ khóa:
1. Hằng số. Ví dụ: OP_0, OP_FALSE
2. Điều khiển luồng. Ví dụ: OP_IF, OP_NOTIF, OP_ELSE, …
3. Ngăn xếp. Ví dụ: OP_TOALTSTACK (đẩy dữ liệu vào đỉnh ngăn xếp phụ, xóa khỏi ngăn xếp chính), …
4. Chuỗi ký tự. Ví dụ: OP_CAT (nối hai chuỗi, đã bị vô hiệu hóa), OP_SIZE (đẩy độ dài chuỗi của phần tử đỉnh ngăn xếp vào ngăn xếp (không cần rút phần tử))
5. Logic bit. Ví dụ: OP_AND, OP_OR, OP_XOR
6. Logic số học. Ví dụ: OP_1ADD (giá trị đầu vào cộng 1), OP_1SUB (giá trị đầu vào trừ 1)
7. Mã hóa. Ví dụ: OP_SHA1 (hash đầu vào bằng thuật toán SHA-1), OP_CHECKSIG()
8. Từ khóa giả
9. Từ khóa dành riêng
Các loại script Bitcoin phổ biến:
Script:
1. Giao dịch tiêu chuẩn thanh toán tới địa chỉ Bitcoin (pay-to-pubkey-hash)
2. Giao dịch tạo Bitcoin tiêu chuẩn (pay-to-pubkey)
3. Đầu ra có thể chứng minh là không thể chi tiêu / có thể xóa
4. Đầu ra Anyone-Can-Spend
5. Giao dịch đố vui
Năm loại script giao dịch tiêu chuẩn bao gồm: Thanh toán tới hash khóa công khai (P2PKH), thanh toán tới khóa công khai, chữ ký đa khóa (giới hạn tối đa 15 khóa), thanh toán tới hash script (P2SH), và đầu ra dữ liệu (OP_RETURN).
Xem thêm chi tiết tại: https://en.bitcoin.it/wiki/Script
Việc loại bỏ các lệnh hỗ trợ bởi Bitcoin
Trong lịch sử Bitcoin đã nhiều lần xảy ra việc loại bỏ lệnh. Trên biểu đồ dưới đây, phần màu đỏ là các lệnh đã bị loại bỏ.
(1) Xử lý chuỗi
(2)
(3) Toán học

Tại sao lại loại bỏ lệnh? Bảo mật chỉ là một khía cạnh, nếu nhìn nhận việc loại bỏ lệnh theo tư tưởng thiết kế phân tầng thì ta hiểu được tính hợp lý; cách làm này giúp giao thức nền tảng cơ bản và ổn định hơn. Có lẽ ngay từ đầu Satoshi Nakamoto đã nhận ra vấn đề này, nếu không đã không chủ động loại bỏ lệnh. Tư duy thông thường của con người là xây dựng một hệ thống nhỏ trực tiếp đáp ứng nhu cầu người dùng, với các lệnh và chức năng hoàn chỉnh, chứ không phải một giao thức lớn đòi hỏi sự phối hợp.
Điều này dẫn đến một thực tế: chỉ có Bitcoin mới thích hợp làm mạng lớp một. Trong bài viết “Giá Bitcoin quá cao sẽ thúc đẩy sự ra đời của một chuỗi thay thế” tôi đã phân tích hiện tượng này, xét từ góc độ kinh tế và kỹ thuật, có khả năng xuất hiện chuỗi thay thế cho Bitcoin. Nhưng từ đặc điểm cơ bản của Bitcoin và góc độ thiết kế phân tầng, gần như chỉ Bitcoin mới có thể làm hạ tầng mạng lớp một, dù có chuỗi thay thế thì cũng chỉ là sản phẩm lớp 1.5. Ở cấp độ mạng lớp một, hàng thật chỉ có Bitcoin, các chuỗi khác dù có tác dụng thay thế cũng chỉ là hàng giả.
1.2. Lịch sử phân nhánh, nguyên nhân và ý nghĩa của Bitcoin
Trong lịch sử phát triển Bitcoin, ngoài vấn đề loại bỏ lệnh còn có tranh cãi về kích thước khối, thường xuyên gây ra phân nhánh cứng (hard fork) của Bitcoin.
Ban đầu BTC không giới hạn kích thước khối, để xử lý nhiều giao dịch trong cùng thời gian. Tuy nhiên khi giá BTC rất thấp và chi phí giao dịch ác ý cũng rất rẻ, để giải quyết vấn đề này, Satoshi Nakamoto đã chủ trì một phân nhánh mềm vào ngày 12 tháng 9 năm 2010, thêm giới hạn khối không vượt quá 1MB. Ông nhấn mạnh đây là giới hạn tạm thời, sau này có thể tăng dần và kiểm soát được để đáp ứng nhu cầu mở rộng.
Dưới đây là sơ đồ lịch sử phân nhánh của Bitcoin:

Khi Bitcoin trở nên phổ biến, tình trạng tắc nghẽn mạng và thời gian xác nhận kéo dài ngày càng nghiêm trọng. Năm 2015, Gavin Andresen và Mike Hearn tuyên bố sẽ triển khai đề xuất BIP-101 trong phiên bản BitcoinXT mới, nâng giới hạn khối lên 8MB. Tuy nhiên, các nhà phát triển cốt lõi như Greg Maxell, Luke Jr, Pieter Wuille phản đối, cho rằng cách làm này sẽ làm tăng ngưỡng vận hành nút toàn phần và gây ảnh hưởng khó kiểm soát. Cuộc tranh luận cuối cùng lan rộng về cả chủ đề lẫn phạm vi tham gia.
Từ nội dung trên, ta thấy Satoshi Nakamoto từng bày tỏ: “Giới hạn kích thước khối này là tạm thời, tương lai có thể tăng dần và kiểm soát để đáp ứng nhu cầu mở rộng.” Nhưng khi nào nên phân nhánh để hỗ trợ khối lớn hơn? Liệu việc tách riêng một chuỗi hỗ trợ khối lớn có giải quyết được vấn đề? Trong những tranh cãi liên tục, đã xuất hiện nhiều ví dụ. Ví dụ, BCH có kích thước khối 8M, sau đó tăng lên 32M. BSV có khối 128M. Ngoài BCH (và BSV sau này), giai đoạn này còn xuất hiện nhiều loại tiền phân nhánh BTC khác. Theo BitMEXResearch, chỉ trong một năm sau khi BCH phân nhánh, đã xuất hiện ít nhất 50 loại tiền phân nhánh mới.
Ở phần sau ta sẽ thấy Segwit và Taproot trên mạng chính Bitcoin cũng đã nâng không gian khối từ 1M lên 4M ở mức độ nhất định.
Phân nhánh Bitcoin là một hình thức khám phá phát triển, thử nghiệm thay đổi bản thân để đáp ứng nhu cầu ngày càng tăng. Bao gồm nhu cầu người dùng, thợ đào, nhà đầu tư, nhà phát triển, ...
1.3. Một vài khám phá điển hình trong phát triển Bitcoin
Sau khi Satoshi rời đi, người kế nhiệm Gavin Andresen đã dẫn dắt việc thành lập Bitcoin Core và Quỹ Bitcoin. Trong giai đoạn này, luôn tồn tại những khám phá về khả năng mở rộng của BTC, đặc biệt trong lĩnh vực phát hành tài sản.
(1) Colored Coins (Tiền được tô màu)
Yoni Assia, CEO eToro, lần đầu tiên đề xuất tiền được tô màu trong một bài viết ngày 27 tháng 3 năm 2012. Ý tưởng này tiếp tục phát triển, trên các diễn đàn như Bitcointalk, khái niệm tiền màu bắt đầu hình thành và thu hút sự chú ý. Cuối cùng, Meni Rosenfeld đã công bố một bản bạch thư chi tiết về tiền màu vào ngày 4 tháng 12 năm 2012.
Ý tưởng về tiền được tô màu là đánh dấu đặc biệt (tô màu) một phần cụ thể của Bitcoin để đại diện cho các tài sản và giá trị rộng hơn. Trong thực tiễn, tiền được tô màu chia thành hai loại chính:
1) Dựa trên OP_RETURN: Ví dụ Open Assets do Flavien Charlon đề xuất năm 2013, sử dụng OP_RETURN (được giới thiệu trong Bitcoin v0.9.0, có thể dùng để lưu trữ lượng dữ liệu nhỏ trên Bitcoin, ban đầu giới hạn 40 byte, sau tăng lên 80 byte). Mã hoạt động được lưu vào script và hoàn tất "tô màu" và giao dịch bằng cách đọc bên ngoài. (Mô hình này tương tự Ordinals, dựa vào chỉ mục bên ngoài để xác định tính hợp lệ của tài sản).
2) Dựa trên OP_RETURN: Đại diện tiêu biểu là EPOBC Protocol do ChromaWay đề xuất năm 2014, thông tin bổ sung của tài sản EPOBC được lưu trong trường nSequence của giao dịch Bitcoin, mỗi loại và tính hợp lệ của tài sản EPOBC cần truy ngược về giao dịch khởi nguyên để xác định.
(2) MasterCoin (OMNI)
JR Willett công bố ý tưởng MasterCoin vào ngày 6 tháng 1 năm 2012, gọi là "bản trắng thứ hai của Bitcoin", và chính thức khởi động dự án bằng hình thức ICO vào tháng 7 năm 2013, cuối cùng huy động được 5120 BTC (trị giá 500.000 USD lúc đó). Khác với Colored Coins, MasterCoin xây dựng một lớp nút hoàn chỉnh, thông qua việc quét khối Bitcoin để duy trì cơ sở dữ liệu mô hình trạng thái, cơ sở dữ liệu này nằm trên các nút bên ngoài blockchain. Thiết kế này cung cấp chức năng phức tạp hơn Colored Coins, như tạo tài sản mới, sàn giao dịch phi tập trung, phản hồi giá tự động, v.v. Năm 2014, Tether cũng phát hành stablecoin trên Bitcoin thông qua giao thức Mastercoin, tức là Tether USD (OMNI) nổi tiếng.
(3) CounterParty
Counterparty chính thức ra mắt năm 2014. Counterparty cũng dùng OP_RETURN để lưu dữ liệu vào mạng BTC. Nhưng khác với tiền được tô màu, tài sản trên Counterparty không tồn tại dưới dạng UTXO, mà thông qua việc tải thông tin vào OP_RETURN để thể hiện chuyển nhượng tài sản. Khi chủ sở hữu tài sản ký giao dịch chứa dữ liệu đặc biệt bằng địa chỉ sở hữu, tài sản được chuyển nhượng. Qua cách này, Counterparty có thể phát hành tài sản, giao dịch và xây dựng nền tảng tương thích hợp đồng thông minh kiểu Ethereum.
Ngoài ra, cũng có quan điểm cho rằng Ethereum, Ripple và BitShares thuộc về "Bitcoin 2.0" ở nghĩa rộng hơn.
1.4. Sự không hoàn hảo của Bitcoin và giao thức phân tầng
Sự không hoàn hảo (hoặc hạn chế) của hệ thống Bitcoin thể hiện ở vài khía cạnh (những điểm chưa hoàn thiện trong bài này được tổng hợp từ bản trắng Ethereum, không nhất thiết là thiếu sót thực sự).
1. Hệ thống tài khoản UTXO của Bitcoin
Trong các dự án blockchain hiện nay, có hai cách lưu trữ dữ liệu chính: mô hình tài khoản/số dư và mô hình UTXO. Bitcoin sử dụng mô hình UTXO, trong khi Ethereum, EOS sử dụng mô hình tài khoản/số dư.
Trong ví Bitcoin, ta thường thấy số dư tài khoản, nhưng trong hệ thống Bitcoin do Satoshi thiết kế, không có khái niệm số dư. "Số dư Bitcoin" là sản phẩm do ứng dụng ví Bitcoin tạo ra. UTXO (Unspent Transaction Outputs) là các đầu ra giao dịch chưa chi tiêu, là khái niệm cốt lõi trong việc tạo và xác minh giao dịch Bitcoin. Giao dịch tạo thành cấu trúc chuỗi, mọi giao dịch Bitcoin hợp lệ đều có thể truy ngược về một hoặc nhiều đầu ra giao dịch trước đó, nguồn gốc của các chuỗi này đều là phần thưởng khai thác, đầu cuối là các đầu ra chưa chi tiêu hiện tại.
Vì vậy trên thực tế không có Bitcoin, chỉ có UTXO. Giao dịch Bitcoin gồm đầu vào và đầu ra, mỗi giao dịch tiêu thụ một đầu vào và tạo ra một đầu ra (output), đầu ra được tạo ra chính là "đầu ra giao dịch chưa chi tiêu", tức UTXO.
Nếu muốn thực hiện hợp đồng thông minh, mô hình tài khoản UTXO gặp vấn đề rất lớn. Gavin Wood, người thiết kế sách vàng Ethereum, hiểu rất sâu về UTXO. Tính năng mới lớn nhất của Ethereum là hợp đồng thông minh, do cân nhắc hợp đồng thông minh, Gavin Wood thấy việc dựa trên UTXO để thực hiện hợp đồng thông minh đầy đủ Turing là khó khăn. Trong khi mô hình tài khoản mang tính hướng đối tượng tự nhiên, mỗi giao dịch đều được ghi nhận trên tài khoản tương ứng (nonce++). Để dễ quản lý tài khoản, đã giới thiệu trạng thái toàn cục, mỗi giao dịch đều thay đổi trạng thái này. Điều này tương ứng với thế giới thực, mỗi thay đổi nhỏ đều thay đổi thế giới. Vì vậy Ethereum sử dụng hệ thống tài khoản, các chuỗi công khai sau này cơ bản đều dựa trên các dạng hệ thống tài khoản.
Một khuyết điểm nghiêm trọng khác của UTXO là không thể kiểm soát tinh vi mức độ rút tiền của tài khoản. Điểm này được đề cập trong bản trắng Ethereum.
2. Ngôn ngữ script của Bitcoin, không đầy đủ Turing
Mặc dù ngôn ngữ script Bitcoin hỗ trợ nhiều phép tính, nhưng không hỗ trợ tất cả. Thiếu hụt lớn nhất là script Bitcoin không có câu lệnh vòng lặp và điều kiện kiểm soát. Vì vậy, ta nói ngôn ngữ script Bitcoin không đầy đủ Turing, dẫn đến một số hạn chế. Tất nhiên, do những hạn chế này, hacker không thể dùng ngôn ngữ script để viết vòng lặp vô tận (gây tê liệt mạng) hoặc mã độc gây tấn công DOS, nhờ đó tránh được tấn công DOS lên mạng Bitcoin. Các nhà phát triển Bitcoin cũng cho rằng blockchain cốt lõi không nên có tính đầy đủ Turing để tránh một số tấn công và tắc nghẽn mạng. Nhưng chính vì những hạn chế này, mạng Bitcoin không thể chạy các chương trình phức tạp. Mục đích không hỗ trợ câu lệnh vòng lặp là để tránh vòng lặp vô hạn khi xác nhận giao dịch.
Lý do không hỗ trợ đầy đủ Turing vì bảo mật là chưa đủ thuyết phục. Hơn nữa, ngôn ngữ không đầy đủ Turing có khả năng làm rất hạn chế.
3. Những bất cập khác của Bitcoin: Bảo mật, khả năng mở rộng
Vấn đề tập trung khai thác: Thuật toán khai thác Bitcoin cơ bản là yêu cầu thợ đào sửa đổi nhẹ tiêu đề khối hàng triệu lần cho đến khi một nút tìm được phiên bản có giá trị băm nhỏ hơn mục tiêu. Tuy nhiên, thuật toán khai thác này dễ bị hai hình thức tấn công tập trung. Thứ nhất, hệ sinh thái khai thác bị chi phối bởi ASIC (mạch tích hợp chuyên dụng) và chip máy tính được thiết kế riêng, hiệu quả tăng hàng ngàn lần trong nhiệm vụ khai thác Bitcoin cụ thể. Điều này có nghĩa khai thác Bitcoin không còn mang tính phi tập trung cao và bình đẳng, mà cần vốn khổng lồ để tham gia hiệu quả. Thứ hai, phần lớn thợ đào Bitcoin thực tế không còn xác minh khối tại chỗ; họ phụ thuộc vào các mỏ tập trung cung cấp tiêu đề khối. Vấn đề này khá nghiêm trọng: hiện nay, ba mỏ khai thác hàng đầu gián tiếp kiểm soát khoảng 50% sức mạnh xử lý trong mạng Bitcoin.
Khả năng mở rộng là vấn đề quan trọng của Bitcoin. Sử dụng Bitcoin, mỗi giờ tăng khoảng 1MB. Nếu mạng Bitcoin xử lý 2000 giao dịch/giây như Visa, mỗi ba giây sẽ tăng 1MB (1GB mỗi giờ, 8TB mỗi năm). Số lượng giao dịch thấp cũng gây tranh cãi trong cộng đồng Bitcoin, khối lớn tuy cải thiện hiệu suất nhưng lại tiềm ẩn rủi ro tập trung.
Từ góc độ vòng đời sản phẩm, một số bất cập nhỏ của Bitcoin có thể được cải thiện trong hệ thống hiện tại, nhưng phương pháp cải thiện bị giới hạn bởi hệ thống hiện tại. Nhưng nếu có thể giải quyết các vấn đề này trong một hệ thống mới, thì hoàn toàn có thể không cần lo lắng về các giới hạn của hệ thống cũ. Khi muốn xây dựng một hệ thống blockchain mới, những cải tiến chức năng nhỏ này cũng có thể được thiết kế và nâng cấp ngay từ đầu.
Thiết kế phân tầng
Thiết kế phân tầng là phương pháp và phương pháp luận con người dùng để xử lý các hệ thống phức tạp, chia hệ thống thành nhiều tầng cấu trúc và định nghĩa mối quan hệ, chức năng giữa các tầng, nhằm đạt được tính mô-đun, khả năng bảo trì và mở rộng, từ đó nâng cao hiệu quả thiết kế và độ tin cậy của hệ thống.
Đối với một hệ thống giao thức rộng lớn và đồ sộ, việc sử dụng phân tầng mang lại lợi ích rõ rệt. Cách làm này giúp dễ hiểu, dễ phân công thực hiện và cải tiến theo module. Ví dụ như mô hình 7 tầng ISO/OSI trong mạng máy tính, nhưng trong thực tế triển khai có thể hợp nhất một số tầng, ví dụ giao thức mạng cụ thể TCP/IP là giao thức 4 tầng. Cụ thể, ưu điểm của phân tầng giao thức: các tầng độc lập nhau, linh hoạt tốt, cấu trúc có thể tách rời, dễ triển khai và bảo trì, thúc đẩy chuẩn hóa.
Xét từ góc độ giao thức phân tầng, Bitcoin vì phải ở vị trí nền tảng cơ bản nhất, nên UTXO, không đầy đủ Turing, thời gian tạo khối dài, dung lượng khối nhỏ, người sáng lập biến mất... không phải là khuyết điểm, mà ngược lại là đặc điểm mà một mạng lớp một nên có.
Ghi chú: Tác giả có giải thích chi tiết hơn về phân tầng giao thức trong bài “Tổng hợp hệ thống kiến thức cơ bản về xây dựng lớp 2 (Layer 2) của Bitcoin phiên bản 1.5”.
2. Các công nghệ mới quan trọng trong phát triển Bitcoin (mở rộng khối và mở rộng khả năng)
Ở phần trước, ta đã thảo luận về các xung đột chính và một số ví dụ khám phá trong công nghệ Bitcoin ban đầu, nhưng nhiều cái dẫn đến phân nhánh cứng hoặc tạo ra chuỗi dị cấu hoàn toàn mới. Trên chính chuỗi blockchain Bitcoin, những khám phá này cũng tạo ra nhiều thành quả, về bản chất là mở rộng khối và mở rộng khả năng. Chúng thể hiện chủ yếu ở các khía cạnh sau.
2.1. OP_RETURN
Các nhà phát triển Bitcoin luôn muốn mở rộng khả năng của Bitcoin, thể hiện ở vài khía cạnh:
(1) Việc sử dụng OP_RETURN
OP_RETURN là một mã hoạt động script, dùng để dừng script và trả về giá trị đỉnh ngăn xếp. Mã hoạt động này giống như hàm trả về trong ngôn ngữ lập trình. Trong lịch sử Bitcoin, chức năng của mã OP_RETURN đã được sửa đổi nhiều lần, hiện nay chủ yếu được dùng như một phương pháp lưu trữ dữ liệu trên sổ cái. Chức năng của OP_RETURN từng thay đổi lớn trong quá khứ, hiện nay nó là cơ chế quan trọng, cho phép lưu trữ dữ liệu tùy ý trên chuỗi.
OP_RETURN ban đầu dùng để dừng sớm việc thực thi script, kết quả thực thi sẽ được hiển thị như mục đỉnh ngăn xếp. Mã hoạt động này từng có lỗ hổng dễ bị lợi dụng, nhưng Satoshi nhanh chóng vá lại.
Những thay đổi tiếp theo đối với chức năng OP_RETURN
Trong lần nâng cấp Bitcoin Core v0.9.0, script "đầu ra OP_RETURN" được làm thành loại đầu ra tiêu chuẩn, cho phép người dùng đính kèm dữ liệu vào "đầu ra giao dịch không thể chi tiêu". Giới hạn lượng dữ liệu có thể dùng trong script này ban đầu bị giới hạn 40 byte, sau nâng lên 80 byte.
Lưu trữ dữ liệu trên blockchain:
Việc thay đổi OP_RETURN luôn trả về false tạo ra kết quả thú vị. Vì không có mã hoạt động hay dữ liệu nào sau OP_RETURN được đánh giá, người dùng mạng bắt đầu dùng mã này để lưu trữ dữ liệu định dạng tùy ý.
Trong thời kỳ Bitcoin Cash (BCH), từ ngày 1 tháng 8 năm 2017 đến ngày 15 tháng 11 năm 2018, độ dài dữ liệu đính kèm vào đầu ra OP_RETURN được mở rộng lên 220 byte, dữ liệu lớn hơn thúc đẩy các ứng dụng sáng tạo trên blockchain, ví dụ đăng nội dung lên mạng xã hội blockchain.
Trên BSV, giới hạn 220 byte được giữ trong một thời gian ngắn. Sau đó, vào tháng 1 năm 2019, do mã OP_RETURN dừng script theo cách các nút không xác minh bất kỳ mã hoạt động nào tiếp theo, nên các nút cũng không kiểm tra script có nằm trong giới hạn kích thước script tối đa 520 byte hay không. Nhờ vậy, các nhà vận hành nút trên mạng quyết định tăng dung lượng giao dịch tối đa lên 100KB, trao cho nhà phát triển nhiều tự do sáng tạo ứng dụng hơn, cho phép ứng dụng mới đặt dữ liệu lớn và phức tạp hơn vào sổ cái Bitcoin. Lúc đó có ví dụ ứng dụng, ai đó đã đưa cả một website vào sổ cái BSV.
OP_RETURN dù có mở rộng chức năng nhất định, nhưng nhìn chung khả năng vẫn còn hạn chế. Vì vậy, công nghệ Segregated Witness (SegWit) ra đời.
(2) Segwit - Chứng cứ tách biệt
Chứng cứ tách biệt (Segregated Witness), viết tắt SegWit, do Pieter Wuille (nhà phát triển cốt lõi Bitcoin, đồng sáng lập Blockstream) lần đầu đề xuất vào tháng 12 năm 2015, sau đó hình thành BIP 141 của Bitcoin. SegWit sửa đổi nhẹ cấu trúc dữ liệu giao dịch trong khối Bitcoin để giải quyết các vấn đề sau:
1) Vấn đề thay đổi giao dịch (transaction malleability).
2) Chứng minh SPV có thể chọn không truyền chữ ký giao dịch, giảm lượng dữ liệu cần truyền trong Merkle proof.
3) Tăng dung lượng khối gián tiếp.
Hai mục đầu tiên chủ yếu tăng cường bảo mật và hiệu suất, trong đó ảnh hưởng lớn nhất đến công nghệ mới là mục thứ ba, tăng gián tiếp dung lượng khối (xem khái niệm Trọng lượng khối (Block weight) bên dưới), tạo nền tảng cho việc mở rộng khả năng của Bitcoin, dẫn đến việc Taproot (phiên bản thứ hai của SegWit) được tăng cường thêm.
Mặc dù mở rộng gián tiếp dung lượng khối, SegWit vẫn bị giới hạn bởi kích thước khối. Giới hạn kích thước khối Bitcoin là 1MB, do dữ liệu chứng cứ (witness) không nằm trong giới hạn này, để tránh lạm dụng dữ liệu witness, vẫn giới hạn tổng kích thước khối. Một khái niệm mới được đưa ra là Trọng lượng khối (Block weight)
Trọng lượng khối = Kích thước cơ sở * 3 + Tổng kích thước
Kích thước cơ sở là kích thước khối không bao gồm dữ liệu witness
Tổng kích thước là kích thước khối tuần tự hóa giao dịch theo BIP 144 (theo byte), bao gồm dữ liệu cơ sở và dữ liệu witness.
SegWit giới hạn Trọng lượng khối <= 4M.
SegWit còn về mặt kỹ thuật giúp Bitcoin mở rộng thông qua mạng lưới Lightning, phần này không đi sâu chi tiết.
(3) Taproot - Phiên bản SegWit thứ hai
Nếu dùng trực tiếp từ Taproot, nhiều người nghĩ là khái niệm mới, nhưng nếu nói đây là phiên bản thứ hai của SegWit, hầu hết sẽ hiểu được mối liên hệ. Các BIP liên quan đến Taproot là 340, 341, 342, tên gọi là: BIP 340 (Chữ ký Schnorr cho secp256k1), BIP 341 (Taproot: Quy tắc chi tiêu SegWit phiên bản 1), BIP 342 (Xác thực script Taproot).
Tháng 11 năm 2021, Taproot chính thức có hiệu lực dưới dạng phân nhánh mềm. Bản nâng cấp này kết hợp BIP 340, BIP 341 và BIP 342. Trong đó BIP 340 giới thiệu chữ ký Schnorr có thể xác minh nhiều giao dịch cùng lúc, thay thế thuật toán chữ ký số đường cong elliptic (ECDSA), một lần nữa mở rộng dung lượng mạng và tăng tốc xử lý giao dịch hàng loạt, tạo khả năng triển khai hợp đồng thông minh phức tạp; BIP 341 thực hiện Cây cú pháp trừu tượng Merkl hóa (MAST) để tối ưu hóa lưu trữ dữ liệu giao dịch trên blockchain; BIP 342 (Tapscript) mở rộng khả năng ngôn ngữ script gốc Bitcoin bằng cách sử dụng ngôn ngữ mã hóa script của Bitcoin.
Do không gian mở rộng từ Segwit và Taproot, dẫn đến sự ra đời của Schnorr, cây MAST và Taproot Scripts, nhiệm vụ của chúng là mở rộng chức năng mạng chính Bitcoin.
2.2. Schnorr, MAST, Taproot Scripts
Qua phần 2.1, ta thấy Bitcoin liên tục khám phá việc mở rộng dung lượng và khả năng, cho đến khi xuất hiện công nghệ Taproot và một vài công nghệ quan trọng liên quan như Schnorr, MAST, Taproot Scripts,格局 khả năng của Bitcoin mới thực sự được mở rộng.
(1) Chữ ký Schnorr
Sự phát triển của Taproot, trong khi mở rộng khả năng, cũng đặt ra yêu cầu nhất định đối với thuật toán chữ ký, do đó chữ ký Schnorr bắt đầu xuất hiện, thay thế thuật toán chữ ký số đường cong elliptic (ECDSA). Chữ ký Schnorr là một phương án chữ ký số, có thể ký giao dịch và tin nhắn một cách hiệu quả và an toàn. Nó lần đầu được Claus Schnorr mô tả trong một bài báo năm 1991. Schnorr được đánh giá cao nhờ tính đơn giản, an toàn có thể chứng minh và tính tuyến tính.
Ưu điểm của chữ ký Schnorr:
1) Chữ ký Schnorr có nhiều ưu điểm, bao gồm hiệu quả cao, tăng cường quyền riêng tư, đồng thời giữ lại mọi chức năng và giả định an toàn của ECDSA. Chữ ký Schnorr có thể đạt được kích thước chữ ký nhỏ hơn, thời gian xác minh nhanh hơn, và cải thiện khả năng chống lại một số loại tấn công.
2) Ưu điểm nổi bật nhất của chữ ký Schnorr là tập hợp khóa (key aggregation), gộp nhiều chữ ký thành một chữ ký, chữ ký này hợp lệ cho tổng các khóa của chúng. Nói cách khác, Schnorr cho phép nhiều bên hợp tác tạo ra một chữ ký hợp lệ cho tổng các khóa công khai của họ. Tập hợp chữ ký cho phép gộp chữ ký của nhiều người ký thành một chữ ký đơn lẻ.
Tập hợp khóa có thể giảm phí giao dịch và tăng khả năng mở rộng nền tảng, vì chữ ký điện tử từ thiết lập đa chữ ký chiếm cùng không gian trong khối như chữ ký từ giao dịch một bên. Đặc tính này của Schnorr có thể dùng để giảm kích thước thanh toán đa chữ ký và các giao dịch liên quan, ví dụ giao dịch kênh mạng Lightning.
3) Một đặc tính quan trọng khác của Schnorr là tính không thể sửa đổi.
4) Schnorr còn mang lại nhiều lợi ích về quyền riêng tư. Nó khiến các phương án đa chữ ký không thể phân biệt từ bên ngoài với khóa công khai đơn truyền thống, Schnorr khiến người quan sát khó phân biệt chi tiêu đa chữ ký và chi tiêu chữ ký đơn trong hoạt động trên chuỗi. Ngoài ra, trong thiết lập đa chữ ký n-trong-m, Schnorr khiến người quan sát bên ngoài khó xác định qua thông tin trên chuỗi những người tham gia nào đã ký trong giao dịch, những người nào chưa ký.
Chữ ký Schnorr được triển khai trong BIP-340, như một phần của bản nâng cấp phân nhánh mềm Taproot, và được kích hoạt tại độ cao khối 709.632 vào ngày 14 tháng 11 năm 2021. Schnorr giúp chữ ký số BTC nhanh hơn, an toàn hơn và dễ xử lý hơn. Đáng chú ý, chữ ký Schnorr tương thích ngược với thuật toán mật mã của BTC, do đó có thể được giới thiệu thông qua nâng cấp phân nhánh mềm.
(2) Cây cú pháp trừu tượng MAST
Viết tắt MAST trong tiếng Trung và tiếng Anh có chút mơ hồ. Chính thức BIP (BIP 114) và một số bài viết dùng MAST là viết tắt của Merklized Abstract Syntax Tree (Cây cú pháp trừu tượng Merkl hóa). Một số tài liệu khác dùng Merklized Alternative Script Trees (MAST) dịch sang tiếng Trung là Cây script thay thế Merkl hóa (MAST). Trong cuốn sách "Mastering Bitcoin" và một bài viết, đều dùng cách giải thích viết tắt này: https://cointelegraph.com/learn/a-beginners-guide-to-the-bitcoin-taproot-upgrade.
Cây cú pháp trừu tượng Merkl hóa và Cây script thay thế Merkl hóa (MAST) về chức năng trông giống nhau. Về dịch thuật, cá nhân tôi cảm thấy nên giữ cách dùng trong giao thức BIP chính thức của Bitcoin.
Khái niệm đằng sau MAST đến từ hai khái niệm: Cây cú pháp trừu tượng (AST) và Cây Merkle.
Cây cú pháp trừu tượng (AST) thuộc lĩnh vực nguyên lý biên dịch và ngôn ngữ hình thức trong khoa học máy tính. AST là một biểu diễn trung gian trong quá trình biên dịch, dùng để biểu diễn cấu trúc ngữ nghĩa của mã nguồn. Nó chuyển mã nguồn thành cấu trúc dạng cây, mỗi nút đại diện cho một đơn vị ngữ nghĩa, các cạnh biểu thị mối quan hệ giữa chúng. AST đóng vai trò quan trọng trong giai đoạn phân tích từ vựng và cú pháp của trình biên dịch, giúp trình biên dịch hiểu ý nghĩa mã nguồn và thực hiện các bước tối ưu hóa và tạo mã đích sau đó. Nói đơn giản, AST là một phương pháp mô tả chương trình bằng cách chia nó thành các khối nhỏ độc lập, giúp chương trình dễ phân tích và tối ưu hóa hơn. Để tạo AST, cần nối tất cả các phương trình với các tiền đề của chúng bằng mũi tên, cho đến khi tất cả tiền đề được tìm thấy. Hình dưới là
Chào mừng tham gia cộng đồng chính thức TechFlow
Nhóm Telegram:https://t.me/TechFlowDaily
Tài khoản Twitter chính thức:https://x.com/TechFlowPost
Tài khoản Twitter tiếng Anh:https://x.com/BlockFlow_News









