Segregated Witness (SegWit): giải thích dễ hiểu

SegWit (viết tắt của Segregated Witness) là một nâng cấp giao thức cho Bitcoin, thay đổi cách định dạng giao dịch để khắc phục lỗi “dễ bị thay đổi” (transaction malleability) và tăng số giao dịch chứa được trong mỗi khối mà không cần hard fork. SegWit được đề xuất bởi Pieter Wuille (BIP141) và kích hoạt trên mạng Bitcoin vào ngày 24/08/2017.

SegWit giải quyết tính “dễ thay đổi” của giao dịch ra sao?

Trước SegWit, chữ ký (scriptSig) là một phần của dữ liệu được băm ra mã giao dịch (txid). Nếu ai đó thay đổi cách mã hóa chữ ký mà không làm sai quy tắc, txid có thể đổi khác dù giá trị giao dịch không đổi—gây rắc rối cho các quy trình phụ thuộc vào txid cố định. SegWit tách phần chữ ký ra vùng dữ liệu mới gọi là “witness” và không dùng witness để tính txid. Nhờ đó, sau khi ký xong, txid không còn bị ảnh hưởng bởi thay đổi chữ ký, vấn đề “malleability” được loại bỏ.

Vì sao SegWit mở đường cho Lightning Network?

Lightning cần các cam kết giao dịch có thể thực thi trên chuỗi khi có tranh chấp, và các txid liên quan phải ổn định (không đổi bất ngờ). Bản thảo/whitepaper Lightning (Poon & Dryja, 2016) nêu thẳng: phải khắc phục malleability để cho phép thanh toán ngoài chuỗi giữa các bên không tin cậy. SegWit chính là mảnh ghép giúp điều kiện này trở thành hiện thực.

SegWit “tăng kích thước khối” theo cách nào?

SegWit giới thiệu khái niệm “trọng lượng khối” (block weight) thay cho giới hạn kích thước khối 1 MB trước đây. Mỗi byte dữ liệu không phải witness được tính 4 đơn vị trọng lượng (WU), còn mỗi byte witness chỉ tính 1 WU; tổng trọng lượng khối bị giới hạn ở 4.000.000 WU. Nhờ “chừa chỗ trống” cho witness, một khối có thể chứa nhiều giao dịch hơn nhưng vẫn tuân thủ soft fork.

Loại dữ liệuTrọng lượng quy đổi
Byte không phải witness4 WU/byte
Byte witness1 WU/byte
Giới hạn mỗi khối4.000.000 WU

Script/định dạng giao dịch mới trong SegWit

SegWit thêm hai loại script: P2WPKH (trả tới băm khóa công khai, bản SegWit) và P2WSH (trả tới băm script, bản SegWit). Để thuận lợi giai đoạn chuyển tiếp, có “SegWit bọc” (wrapped SegWit): P2SH-P2WPKH và P2SH-P2WSH. Khi bọc, địa chỉ trông giống địa chỉ P2SH cũ (bắt đầu bằng “3”) nên ví/thiết bị cũ vẫn có thể gửi vào; khi chi tiêu, phần witness mới lộ ra để tận dụng lợi ích phí của SegWit.

Bech32 là gì?

Bech32 (BIP173; sau này có bech32m, BIP350) là kiểu mã hóa địa chỉ dành cho SegWit “gốc” (native). Địa chỉ native SegWit bắt đầu bằng “bc1…”, dễ đọc, thân thiện QR và có kiểm tra lỗi tích hợp; dùng không gian khối hiệu quả hơn so với Base58 cũ. Taproot (SegWit v1) dùng bech32m, thường thấy tiền tố “bc1p…”, còn SegWit v0 dùng “bc1q…”.

Tiền tố địa chỉĐịnh dạng chínhGhi chú tương thích
1…Legacy (P2PKH)Cũ, phí cao hơn, tương thích rộng
3…P2SH (có thể là “wrapped SegWit”)Nhìn giống nhau; chỉ khi chi tiêu mới biết có bọc SegWit hay không
bc1q…Native SegWit v0 (P2WPKH/P2WSH)Phí/hiệu quả tốt hơn nếu ví/sàn hỗ trợ
bc1p…Taproot (v1, bech32m)Dành cho Taproot/Schnorr

Lịch sử kích hoạt và tranh cãi SegWit/SegWit2x

SegWit (BIP141) được khoá tín hiệu vào đầu tháng 8/2017 và kích hoạt ngày 24/08/2017. Cùng thời điểm, “New York Agreement” (SegWit2x) đề xuất: kích hoạt SegWit trước, rồi hard fork tăng blocksize danh nghĩa lên 2 MB sau đó. Tuy nhiên, đề xuất 2x thiếu đồng thuận từ cộng đồng node và nhà phát triển; đến 08/11/2017 nhóm ủng hộ tuyên bố hủy kế hoạch vì “thiếu đồng thuận”. Một phần áp lực kích hoạt SegWit đến từ phong trào UASF (BIP148), nhấn mạnh vai trò của các nút đầy đủ trong quy trình đồng thuận.

Vì sao nhiều người vận hành node phản đối SegWit2x?

Tăng kích thước khối bằng hard fork khiến yêu cầu băng thông/lưu trữ tăng nhanh, làm giảm số người có thể chạy node cá nhân và rủi ro tập trung hóa. Phần lớn nhà phát triển cũng bày tỏ lo ngại tương tự, nên SegWit2x không đạt được đồng thuận rộng rãi và bị đình chỉ.

“Địa chỉ của tôi có phải SegWit không?”, “Gửi vào SegWit có được không?”

Những địa chỉ ví lớn cũ như địa chỉ số 3 của Binance sử dụng P2SH.

Nếu địa chỉ bắt đầu bằng “bc1…”, đó là native SegWit; “3…” thường là P2SH—có thể là wrapped SegWit hoặc P2SH khác (chỉ khi chi tiêu mới phân biệt chắc chắn); “1…” là legacy. Bạn có thể gửi BTC qua lại giữa các loại địa chỉ; mạng lưới hỗ trợ tương thích để không “chia cắt” người dùng. Vì phí/hiệu quả, native SegWit (bc1q…) thường là lựa chọn tốt nếu ví/sàn của bạn hỗ trợ; nếu cần tương thích tối đa với hệ thống cũ, địa chỉ P2SH (3…) là cầu nối an toàn.

Tóm gọn dễ hiểu:

Địa chỉ Bitcoin bắt đầu bằng bc1 là địa chỉ Bech32/Bech32m, tức “native SegWit”. Chúng gồm hai nhóm chính:

  • bc1q… → SegWit v0 (P2WPKH/P2WSH).
  • bc1p… → Taproot (SegWit v1).

Mức độ áp dụng và tác động phí

Kể từ khi kích hoạt, tỷ lệ giao dịch sử dụng ngõ vào SegWit tăng đều và đến 2024 đã chiếm đa số, giúp tối ưu không gian khối và giảm chi phí trung bình mỗi giao dịch so với thời kỳ trước SegWit (khi mempool đông).

Kết luận ngắn gọn

SegWit làm sạch “nút thắt” kỹ thuật (malleability) và đưa ra cơ chế tính “trọng lượng khối”, giúp Bitcoin tăng thông lượng mà vẫn giữ tương thích ngược. Nhờ vậy, những lớp mở rộng như Lightning Network mới có thể vận hành bền vững, còn người dùng phổ thông được hưởng phí thấp hơn và trải nghiệm mượt hơn—mà không đánh đổi tính phi tập trung cốt lõi của mạng.

Hải Nguyễn

Hải Nguyễn

Kiến thức và kinh nghiệm sẽ giúp bạn không bị mất tiền trong thị trường crypto.