SegWit là gì?
Trở lại năm 2017, Bitcoin gặp phải một vấn đề suýt nữa đã chia rẽ cộng đồng. Mạng lưới chỉ có thể xử lý khoảng 3 giao dịch mỗi giây. Phí giao dịch tăng vọt. Các khối bị đầy. Và mỗi người lại có một ý tưởng khác nhau về cách khắc phục vấn đề đó.
Giải pháp được chọn là SegWit, viết tắt của Segregated Witness (Chứng nhân phân tách). Nó được đề xuất bởi Pieter Wuille, một trong những nhà phát triển chính của Bitcoin Core, và nó đã thay đổi cách thức cấu trúc của mọi giao dịch bitcoin. Không phải là một sự điều chỉnh nhỏ. Đó là một sự thay đổi cơ bản về cách dữ liệu được chứa trong một khối. Tám năm sau, khoảng 96% tất cả các giao dịch bitcoin sử dụng địa chỉ SegWit. Nếu bạn đã mua hoặc gửi bitcoin trong vài năm qua, gần như chắc chắn bạn đã sử dụng nó mà không hề hay biết.
Vấn đề thực sự là gì?
Hãy để tôi phác họa bức tranh về năm 2016 cho bạn.
Bitcoin có giới hạn 1 MB cho mỗi khối. Satoshi đã đặt giới hạn đó vào năm 2010 để ngăn chặn các cuộc tấn công spam, và không ai gỡ bỏ nó. Các khối được khai thác cứ sau khoảng 10 phút. Với dung lượng 1 MB mỗi khối, điều đó có nghĩa là có thể có khoảng 1.650 giao dịch mỗi khối. Tính toán sơ bộ, ta thấy trung bình chỉ có khoảng 2-3 giao dịch mỗi giây trên toàn mạng Bitcoin. Cả hành tinh đang cùng chia sẻ một đường truyền mỏng manh như vậy.
Nhân tiện, Visa xử lý 65.000 giao dịch mỗi giây. Vậy nên, đúng là có vấn đề.
Đến cuối năm 2016, mỗi khối đều chạm đến giới hạn 1 MB. Khi không còn chỗ trống, người dùng Bitcoin bắt đầu cạnh tranh nhau về phí giao dịch, cố gắng hối lộ thợ đào để họ ưu tiên xử lý giao dịch của mình. Phí giao dịch tăng vọt. Gửi 10 đô la Bitcoin có thể tốn đến 15 đô la phí. Điều này thật vô lý.
Và rồi có một vấn đề phức tạp hơn nữa. Tính dễ bị thao túng của giao dịch. Tôi sẽ cố gắng giải thích một cách đơn giản. Khi bạn gửi bitcoin, mạng lưới sẽ tạo ra một ID cho giao dịch đó. Trước SegWit, ID đó được tạo ra từ toàn bộ giao dịch, bao gồm cả chữ ký. Vấn đề là gì? Ai đó có thể lấy được giao dịch chưa được xác nhận của bạn, chỉnh sửa mã hóa chữ ký (về mặt kỹ thuật vẫn giữ cho nó hợp lệ), và cuối cùng có được một ID khác cho cùng một khoản thanh toán. Cùng người gửi. Cùng người nhận. Cùng số tiền. Nhưng số ID khác nhau.
Tại sao bạn nên quan tâm? Bởi vì Mt. Gox, sàn giao dịch đã mất 840.000 BTC vào năm 2014, đã bị khai thác thông qua chính lỗi này. Và quan trọng hơn, bất kỳ hệ thống lớp thứ hai nào được xây dựng trên nền tảng Bitcoin (như các kênh thanh toán) đều cần tham chiếu các giao dịch bằng ID của chúng. Nếu các ID đó có thể thay đổi, toàn bộ hệ thống sẽ sụp đổ.
Bitcoin gặp phải hai vấn đề cùng lúc: kích thước khối quá nhỏ và ID giao dịch không đáng tin cậy. SegWit đã giải quyết cả hai vấn đề cùng một lúc.
Cách thức hoạt động của SegWit (không cần bằng cấp về khoa học máy tính)
Hãy hình dung một giao dịch Bitcoin giống như một tấm séc. Có phần ghi rõ ai trả cho ai và số tiền là bao nhiêu. Sau đó là chữ ký của bạn ở phía dưới để chứng minh tính hợp lệ. Trước khi có SegWit, cả hai phần đều được gộp vào một khối dữ liệu duy nhất, và toàn bộ khối đó được tính vào giới hạn kích thước khối 1 MB.
Điều khiến Pieter Wuille khó chịu là: dữ liệu chữ ký chiếm khoảng 65% mỗi giao dịch. Phần lớn mỗi khối dữ liệu không ghi lại những gì đã xảy ra, mà chỉ ghi lại bằng chứng cho thấy ai đó đã đồng ý. Điều đó thật lãng phí.
Ý tưởng của ông ấy: tách các chữ ký ra. Đặt chúng vào một phần riêng gọi là "chứng cứ". Dữ liệu giao dịch vẫn nằm trong khối chính. Dữ liệu chứng cứ được lưu trữ riêng biệt. Nó vẫn được kiểm tra bởi mọi nút trên mạng. Chỉ là trọng lượng của nó không giống nhau khi tính toán độ đầy của một khối.
Trên thực tế điều gì đã xảy ra? Số lượng giao dịch trong mỗi khối tăng từ khoảng 1.650 lên khoảng 2.700. Tốc độ xử lý giao dịch của Bitcoin tăng từ 2-3 giao dịch mỗi giây lên khoảng 7-10 giao dịch mỗi giây. Con số này vẫn còn nhỏ so với Visa. Nhưng đối với một mạng lưới đang gặp khó khăn vì chính sự thành công của mình, đây là khoảng không gian để thở.

Khối lượng khối: phương pháp toán học mới
Đây mới là điểm thông minh. Cách làm hiển nhiên nhất là chỉ cần thay đổi giới hạn 1 MB thành 2 MB. Nhưng đó sẽ là một hard fork. Mọi node trên mạng Bitcoin đều cần phải cập nhật, nếu không chúng sẽ bị loại khỏi chuỗi. Hard fork rất rắc rối. Nhiều người sẽ bị bỏ lại phía sau.
Pieter Wuille đã nghĩ ra một giải pháp thông minh hơn. Thay vì đo khối dữ liệu bằng byte thô, SegWit sử dụng "trọng lượng khối". Dữ liệu giao dịch thông thường được tính là 4 đơn vị trọng lượng trên mỗi byte. Dữ liệu chứng thực chỉ được tính là 1 đơn vị trọng lượng trên mỗi byte. Giới hạn tối đa là 4 triệu đơn vị trọng lượng tổng cộng.
Điều đó có nghĩa là gì trong thực tế? Một khối không có dữ liệu chứng thực vẫn có dung lượng tối đa là 1 MB, như mọi khi. Các node cũ không thấy điều gì bất thường. Một khối chứa đầy các giao dịch SegWit về lý thuyết có thể đạt gần 4 MB. Trong thực tế, hầu hết các khối có dung lượng khoảng 1,5 đến 2 MB.
Điều tuyệt vời ở đây là: SegWit được phát hành dưới dạng soft fork. Các node chưa nâng cấp vẫn hoạt động bình thường. Chúng chỉ không thể thấy dữ liệu witness trong phần mới. Chuỗi khối Bitcoin không bị chia tách. Không có "Bitcoin cũ" và "Bitcoin mới". Một chuỗi, một mạng lưới, tương thích ngược. Chỉ riêng điều đó thôi đã là một thành tựu kỹ thuật đáng được ghi nhận.
| Trước SegWit | Sau SegWit |
|---|---|
| Kích thước khối: tối đa 1 MB | Khối lượng: tối đa 4 triệu đơn vị trọng lượng |
| Khoảng 1.650 giao dịch mỗi khối | Khoảng 2.700 giao dịch mỗi khối |
| 2-3 TPS | 7-10 TPS |
| Dữ liệu chữ ký bên trong khối | Dữ liệu chữ ký trong trường xác nhận riêng biệt. |
| Mã giao dịch bao gồm chữ ký | Mã giao dịch chỉ dựa trên dữ liệu cốt lõi. |
Khắc phục tính dễ thay đổi của giao dịch
Mọi người liên tục bàn tán về vấn đề kích thước khối. Điều đó cũng dễ hiểu, vì đó là vấn đề được nêu ra nhiều nhất. Nhưng tôi nghĩ việc khắc phục lỗi khả năng thay đổi giao dịch mới là phần quan trọng hơn, và hầu hết mọi người ngoài giới lập trình viên hầu như không biết về điều đó.
Vấn đề là thế này. Trước SegWit, khi ví Bitcoin của bạn tạo một giao dịch, mã định danh giao dịch (gọi là TXID) được tính toán từ tất cả các thông tin trong giao dịch, bao gồm cả chữ ký. Và đây là phần kỳ lạ: chữ ký số có thể được thể hiện bằng nhiều định dạng hợp lệ khác nhau. Cùng một chữ ký, cùng một bằng chứng quyền sở hữu, nhưng chuỗi byte lại hơi khác nhau.
Điều đó có nghĩa là ai đó có thể lấy được giao dịch chưa được xác nhận của bạn, mã hóa lại chữ ký theo một cách khác nhưng vẫn hợp lệ, và phát tán nó. Mạng lưới sẽ xác nhận phiên bản đã được chỉnh sửa. Cùng người gửi, cùng người nhận, cùng số tiền. Nhưng TXID hoàn toàn khác.
Tôi biết. Nghe có vẻ khó hiểu. Nhưng nó rất quan trọng. Hãy tưởng tượng bạn xây dựng một hệ thống trong đó bước B tham chiếu đến ID của bước A. Nếu ai đó có thể thay đổi ID của bước A sau khi nó đã được gửi đi nhưng trước khi được xác nhận, bước B sẽ bị lỗi. Toàn bộ chuỗi logic của bạn sẽ sụp đổ.
SegWit đã khắc phục điều này bằng cách tính toán TXID chỉ từ các phần không phải là phần xác nhận. Chữ ký giờ nằm trong trường xác nhận, tách biệt với ID. Không ai có thể can thiệp vào nó. ID giao dịch được khóa vĩnh viễn.
SegWit và Mạng Lightning
Đây là lý do tại sao việc khắc phục tính dễ bị thay đổi lại quan trọng. Mạng Lightning là cách Bitcoin dự định xử lý hàng triệu giao dịch thanh toán mỗi giây. Bạn và tôi mở một kênh thanh toán. Chúng ta gửi Bitcoin qua lại giữa hai người, ngoài chuỗi khối chính. Khi hoàn tất, chỉ có số dư ròng cuối cùng được thanh toán trên chuỗi. Một giao dịch duy nhất trên chuỗi khối Bitcoin thay vì hàng trăm giao dịch.
Lightning hoạt động bằng cách xây dựng các chuỗi giao dịch tham chiếu lẫn nhau thông qua ID của chúng. Nếu ai đó có thể thay đổi ID giữa chừng, giao dịch hoàn tiền bảo vệ bạn sẽ trở nên vô hiệu. Bạn có thể mất tiền. Toàn bộ khái niệm kênh thanh toán phụ thuộc vào tính ổn định của ID.
SegWit đã giúp chúng ổn định. Chấm hết. Nếu không có bản vá lỗi đó, việc triển khai Lightning sẽ quá rủi ro. Và nếu không có Lightning, Bitcoin sẽ mãi chỉ đạt 7-10 giao dịch mỗi giây. Đó không phải là một mạng lưới thanh toán. Đó chỉ là một lớp thanh toán dành cho các nhà đầu tư lớn.
Tôi nghĩ thế này: SegWit không chỉ là một bản nâng cấp. Nó là nền tảng. Taproot vào năm 2021, Mạng Lightning, thậm chí cả các bản khắc Ordinals vào năm 2023. Tất cả những điều đó đều không thể xảy ra nếu không có những thay đổi cấu trúc được thực hiện vào tháng 8 năm 2017.
Các định dạng địa chỉ: cũ, được đóng gói và SegWit gốc
Bạn có bao giờ để ý rằng một số địa chỉ Bitcoin bắt đầu bằng "1", một số bằng "3", và một số bằng "bc1"? Đó chính là bản nâng cấp SegWit đang hiển thị trong ví của bạn.
Các địa chỉ bắt đầu bằng "1" là địa chỉ cũ. Định dạng cũ. Không hỗ trợ SegWit. Bạn sẽ phải trả phí cao nhất. Nếu ví của bạn vẫn cung cấp các địa chỉ này, hãy cập nhật phần mềm.
Các địa chỉ bắt đầu bằng "3" được mã hóa bằng SegWit. Giao dịch bitcoin sử dụng SegWit bên trong, nhưng nó được mã hóa để các ví cũ chưa từng nghe đến SegWit vẫn có thể gửi bitcoin đến đó. Rẻ hơn so với các phương thức truyền thống, nhưng không phải là lựa chọn rẻ nhất.
Các địa chỉ bắt đầu bằng "bc1q" là địa chỉ SegWit gốc, còn được gọi là Bech32. Đây là loại địa chỉ tốt nhất. Phí giao dịch thấp nhất. Khả năng kiểm tra lỗi tốt nhất (định dạng địa chỉ này phát hiện lỗi chính tả tốt hơn). Và hiện nay 96% giao dịch sử dụng loại địa chỉ này.
Bạn cũng có thể thấy các địa chỉ "bc1p". Đó là Taproot, một bản nâng cấp mới hơn từ năm 2021 được xây dựng trên nền tảng SegWit. Chủ đề khác, nhưng đáng để biết rằng chúng tồn tại.
| Loại địa chỉ | Bắt đầu với | Mức phí | SegWit? |
|---|---|---|---|
| Di sản (P2PKH) | 1 | Cao nhất | KHÔNG |
| SegWit được đóng gói (P2SH) | 3 | Trung bình | Vâng (đã được gói) |
| SegWit gốc (Bech32) | bc1q | Thấp nhất | Vâng (người bản xứ) |
| Rễ cọc (Bech32m) | bc1p | Thấp nhất | Có + Taproot |
Bạn thực sự tiết kiệm được bao nhiêu phí?
Đây là điều mà những người bạn không rành về kỹ thuật của tôi thực sự muốn biết. Rẻ hơn bao nhiêu?
Unchained đã tính toán các con số. Một giao dịch SegWit chữ ký đơn tiêu chuẩn giúp bạn tiết kiệm khoảng 53% phí so với hệ thống cũ. Nếu bạn sử dụng thiết lập đa chữ ký 2/3 (thường gặp trong lưu ký), bạn sẽ tiết kiệm được khoảng 64%. Đây không phải là sai số làm tròn. Vào những ngày bận rộn mà người dùng hệ thống cũ phải trả 30 đô la cho mỗi giao dịch, bạn chỉ phải trả dưới 15 đô la với SegWit gốc.
Tại sao? Lại là do cách tính trọng lượng khối. Dữ liệu chứng thực được tính là 0,25 byte ảo thay vì 1. Giao dịch của bạn chiếm ít dung lượng hơn trong khối. Thợ đào tính phí ít hơn cho việc này. Đơn giản vậy thôi.
Nếu ví Bitcoin của bạn vẫn cung cấp cho bạn các địa chỉ bắt đầu bằng "1", bạn đang lãng phí tiền mỗi khi gửi tiền. Hãy chuyển sang SegWit gốc. Chỉ mất năm phút. Coinbase, Ledger, Trezor, BlueWallet, Sparrow, tất cả đều hỗ trợ nó. Hoàn toàn không có nhược điểm nào.

Vấn đề gây tranh cãi: Tại sao SegWit suýt nữa đã không được triển khai?
Thành thật mà nói, phần này thú vị hơn cả phần công nghệ. SegWit suýt nữa đã chết trước khi ra mắt.
Cuộc tranh luận thoạt nhìn có vẻ đơn giản. Một phe, "những người cản trở lớn", muốn tăng giới hạn kích thước khối từ 1 MB lên 8 MB hoặc cao hơn. Nhiều không gian hơn, nhiều giao dịch hơn. Một giải pháp đơn giản. Bitmain, công ty khai thác bitcoin lớn nhất hành tinh, đã ủng hộ mạnh mẽ phe này. Một số người cáo buộc Bitmain phản đối SegWit vì nó sẽ loại bỏ ASICBOOST, một thủ thuật bí mật được tích hợp trong chip khai thác của họ, mang lại cho họ lợi thế về tốc độ so với các đối thủ cạnh tranh. Bitmain đã phủ nhận điều đó. Giới tiền điện tử không tin họ.
Phe còn lại chủ yếu là các nhà phát triển Bitcoin Core và những người vận hành các node đầy đủ tại nhà. Lập luận của họ: nếu làm cho các khối lớn hơn gấp 8 lần, bạn sẽ cần băng thông, dung lượng lưu trữ và sức mạnh xử lý gấp 8 lần để vận hành một node. Vài năm nữa, chỉ có các trung tâm dữ liệu và trang trại khai thác mới đủ khả năng xác thực chuỗi khối Bitcoin. Sự phi tập trung sẽ chết dần chết mòn.
Tôi đã theo dõi diễn biến này trực tiếp và thực sự cảm thấy Bitcoin có thể không vượt qua được cuộc tranh luận này. Mọi người la hét lẫn nhau trên Twitter, Reddit và tại các hội nghị. Thậm chí còn có một cuộc họp kín ở New York (cái gọi là "Thỏa thuận New York") nơi một nhóm các công ty cố gắng dàn xếp một thỏa thuận kết hợp SegWit với việc tăng kích thước khối sau này. Thỏa thuận đó cũng thất bại.
Điều thực sự đã xảy ra: SegWit được kích hoạt vào ngày 1 tháng 8 năm 2017 dưới dạng một soft fork do người dùng kích hoạt. Những người khai thác Bitcoin phản đối điều này đã tách ra và tạo ra Bitcoin Cash (BCH) cùng ngày. BCH sử dụng khối 8 MB (hiện nay là 32 MB) và không có SegWit. Nó vẫn tồn tại. Giá trị của nó chỉ bằng một phần nhỏ so với giá Bitcoin.
Ngày 1 tháng 8 được một số người gọi là "Ngày Độc lập của Bitcoin". Ý nghĩa của sự kiện này là các nhà điều hành nút mạng, chứ không phải các công ty khai thác, mới là người có tiếng nói cuối cùng về các quy tắc của Bitcoin. Tiền lệ đó quan trọng hơn bất kỳ dòng mã nào trong bản nâng cấp SegWit.
Áp dụng SegWit ngày nay
Cuộc tranh luận đã kết thúc. Tính đến năm 2025, 96% giao dịch Bitcoin sử dụng SegWit. Mọi ví điện tử lớn đều hỗ trợ nó. Mọi sàn giao dịch đều hỗ trợ nó. Nếu bạn vẫn đang sử dụng các địa chỉ cũ, lời giải thích duy nhất là phần mềm bạn chưa cập nhật trong nhiều năm.
Việc nâng cấp SegWit cũng đã mở đường cho tất cả những gì diễn ra sau đó. Taproot ra mắt vào tháng 11 năm 2021 và bổ sung thêm chữ ký Schnorr vào cấu trúc của SegWit. Ordinal xuất hiện vào năm 2023 và bắt đầu đưa các tệp JPEG vào không gian dữ liệu chứng thực mà SegWit đã tạo ra. Mọi người có nhiều ý kiến trái chiều về điều này, nhưng điểm mấu chốt vẫn là: SegWit đã tạo ra không gian đó, và các nhà phát triển đã lấp đầy nó.
Vậy SegWit có quan trọng với bạn không? Nếu bạn sử dụng Bitcoin, thì câu trả lời là có. Hãy mở cài đặt ví của bạn và kiểm tra định dạng địa chỉ. Nếu nó bắt đầu bằng "bc1q" thì bạn ổn. Nếu nó bắt đầu bằng "1", bạn nên chuyển sang SegWit ngay hôm nay. Phí thấp hơn, xác nhận nhanh hơn trong thời gian tắc nghẽn và truy cập đầy đủ vào thanh toán Lightning.
Bạn sẽ không bao giờ nghĩ đến SegWit trong cuộc sống hàng ngày. Nó giống như hệ thống đường ống nước ngầm dưới sàn nhà vậy. Nhưng nếu không có ai lắp đặt nó vào năm 2017, cả ngôi nhà có lẽ đã bị ngập lụt rồi.