article image

SegWit2X và việc bảo vệ lặp lại đang gây tranh cãi

Bitcoin

23/09/2017

2192

Tháng 11 sắp tới, những người ký kết còn lại của "Hiệp định New York" (NYA) dự định triển khai hard fork "SegWit2X" để tăng gấp đôi giới hạn trọng lượng khối của Bitcoin cho phép không gian khối lên tới 8 megabyte. Vì không phải tất cả mọi người đều ủng hộ hard fork đó, điều này có thể "chia tách" mạng lưới Bitcoin thành hai blockchain và tiền tệ không tương thích nhau, không giống như BitcoinBitcoin Cash (Bcash) cách đây hai tháng trước.

Tuy nhiên, hard fork NYA này đang gây tranh cãi và không chỉ vì nó thiếu sự đồng thuận. Nó cũng gây tranh cãi vì sự lựa chọn thiết kế của nhóm phát triển phía sau BTC1, phần mềm client liên quan đến Hiệp định New York. Có lẽ điều quan trọng nhất là nhóm phát triển này do Jeff Garzik, giám đốc điều hành của Bloq đã từ chối thực hiện việc bảo vệ khỏi các replay attack (tấn công lặp lại), một biện pháp mà Bcash đã thực hiện. Một phần của lý do này đó là ít nhất một người ký tên vào NYA - Wayniloans - đã rút khỏi thỏa thuận.

Vậy bảo vệ lặp lại là gì, tại sao BTC1 nên thực hiện nó ... và tại sao lại không?

Bảo vệ lặp lại là gì? (Và các cuộc tấn công lặp lại là gì?)

Bitcoin có thể sẽ bị "chia tách" lần nữa vào tháng 11. (Có thể cho là chính xác hơn nếu xem xét các nút và các thợ đào bị "tách"  là một loại tiền mã hóa hoàn toàn mới với blockchain và token mới - chứ không phải sự phân chia Bitcoin thực sự). Bài này sẽ đề cập đến blockchain và tiền tệ theo sau giao thức Bitcoin hiện tại là "Legacy Bitcoin""BTC". Blockchain và tiền tệ theo sau hard fork Hiệp định New York được gọi là "SegWit2X""B2X".

Nếu sự phân chia này xảy ra, hai blockchain sẽ giống hệt nhau. Tất cả các giao dịch trước đây và (do đó) "số dư" được sao chép từ blockchain Legacy Bitcoin vào blockchain SegWit2X. Mọi người sở hữu BTC sẽ sở hữu một khoản B2X tương ứng.

Nếu không có bảo vệ lặp lại, các giao dịch mới sẽ có giá trị như nhau trên cả hai chuỗi. Điều này có nghĩa là các giao dịch này có thể được sao chép hoặc "lặp lại" từ chuỗi này sang chuỗi khác - nói cách khác là để chúng xảy ra trên cả hai chuỗi. Đây được gọi là "tấn công lặp lại".

Giả sử Alice giữ BTC vào thời điểm chia tách, có nghĩa là cô ấy cũng sở hữu B2X sau khi chia tách. Tiếp đó, sau khi chia tách, cô ấy muốn gửi BTC cho Bob. Vì vậy cô ấy tạo ra một giao dịch mà sử dụng BTC từ một trong những địa chỉ Legacy Bitcoin của cô ấy đến một trong những địa chỉ Bitcoin của Bob. Sau đó, cô chuyển giao giao dịch này qua mạng lưới Legacy Bitcoin cho một thợ đào Bitcoin Legacy để nhận nó và đưa vào một khối Bitcoin Legacy. Việc thanh toán được xác nhận; mọi thứ đều tốt.

Nhưng giao dịch tương tự này hoàn toàn hợp lệ trên blockchain SegWit2X. Bất cứ ai - kể cả Bob - có thể thực hiện giao dịch Legacy Bitcoin của Alice và cũng truyền nó qua mạng lưới SegWit2X để người thợ đào cho vào trong một khối SegWit2X. (Điều này thậm chí có thể xảy ra tình cờ khá dễ dàng.) Nếu thanh toán này cũng được xác nhận, Alice đã vô tình gửi Bob không chỉ BTC mà còn thêm một khoản B2X tương tự.

Và, dĩ nhiên, tất cả điều này cũng đúng theo chiều ngược lại. Nếu Alice gửi B2X đến Bob, cô ấy cũng có thể vô tình gửi cho anh ta BTC. Thiếu bảo vệ lặp lại trở thành một vấn đề cho người sử dụng của cả hai chuỗi. Không ai muốn vô tình gửi tiền - ngay cả khi đó là "tiền miễn phí".

Về mặt kỹ thuật, có những cách để "chia tách" coin trên cả hai chuỗi để đảm bảo chúng chỉ có thể được sử dụng trên một chuỗi. Điều này ví dụ có thể yêu cầu các coin được khai thác mới được trộn vào một giao dịch. Khóa thời gian cũng có thể cung cấp các giải pháp. Nhưng điều này đòi hỏi nỗ lực và không dễ dàng, đặc biệt đối với người dùng bình thường - không đề cập đến nhiều người dùng bình thường thậm chí còn không biết những gì đang xảy ra ngay từ đầu.

Để tránh những rắc rối này, ít nhất một phía chia tách có thể thêm một quy tắc giao thức để đảm bảo rằng các giao dịch mới có giá trị trên một chuỗi mà không phải trên chuỗi khác. Đây được gọi là bảo vệ lặp lại.

Tại sao BTC1 nên thực hiện bảo vệ lặp lại? (Tại sao không phải Bitcoin Core?)

Trong trường hợp chia tách, ít nhất một bên phải thực hiện bảo vệ lặp lại. Nhưng nhiều nhà phát triển Bitcoin Core và những người khác - tin rằng chỉ có một lựa chọn khả thi. Đó là bên chia tách - trong trường hợp này là BTC1 - nên làm điều đó.

Có một số tranh cãi về điều này.

Trước tiên, BTC1 thực hiện bảo vệ lặp lại là hợp lí nhất vì nó đòi hỏi nỗ lực ít nhất. BTC1 là một client mới đã thực hiện các quy tắc giao thức mới và nó vẫn chưa được triển khai rộng rãi. Sẽ khá dễ dàng cho BTC1 thực hiện bảo vệ lặp lại.

Trong khi đó, Bitcoin Core sẽ không đủ khả năng để thực hiện bảo vệ lặp lại của riêng mình. Mặc dù nó có ưu thế và thậm chí được một số người coi là việc thực hiện tham chiếu xác nhận giao thức, Bitcoin Core không phải là bên thực hiện Bitcoin duy nhất trên mạng lưới. Bitcoin Knots, Bcoin, Libbitcoin và các client thay thế khác đều phải thực hiện bảo vệ lặp lại. (Và đó là thậm chí không nhắc đến các client nút không đầy đủ.)

Nhưng thậm chí quan trọng hơn, thực tế của tình hình hiện nay là tất cả các nút Bitcoin đã triển khai không được bảo vệ lặp lại. Và một cách hợp lý là chúng không thể: Một số các nút này thậm chí xuất hiện trước Hiệp định New York. Vì vậy, ngay cả khi Bitcoin Core và các cài đặt khác đã thực hiện bảo vệ lặp lại trong các phiên bản mới của phần mềm của chúng vẫn sẽ không đủ. Tất cả người dùng sau đó cũng phải cập nhật phiên bản mới này trong khoảng hai tháng: một khoảng thời gian rất ngắn để nâng cấp rộng khắp mạng lưới.

Nếu chỉ có một số nút trên mạng lưới nâng cấp lên các phiên bản mới này, Bitcoin thực sự có thể chia thành ba phần: Legacy Bitcoin, SegWit2X "Bitcoin bảo vệ lặp lại". Không cần phải nói, việc tách thành ba này sẽ làm cho vấn đề trở nên tồi tệ hơn – chứ không phải tốt hơn.

Cuối cùng, có một chút tranh cãi về lý luận triết học. Bất cứ ai muốn áp dụng các quy tắc giao thức mới theo như các cuộc tranh luận có trách nhiệm tách ra theo cách an toàn nhất có thể. Trách nhiệm này không nên rơi vào những người muốn tiếp tục sử dụng giao thức hiện tại: Họ nên được tự do tiếp tục sử dụng giao thức như hiện tại.

Nhiều nhà phát triển - bao gồm cả nhà sáng lập RSK Sergio Lerner, người đã soạn thảo đề xuất SegWit2Mb mà SegWit2X dựa trên đó - đã lập luận rằng BTC1 nên thực hiện bảo vệ lặp lại. Trên thực tế, nhiều nhà phát triển nghĩ rằng bất kỳ hard fork nào, ngay cả một hard fork có vẻ như không gây tranh cãi nên thực hiện bảo vệ chống lại.

Nhưng cho đến nay, nhóm phát triển BTC1 sẽ chỉ xem xét bảo vệ lặp lại tùy chọn.

Có vấn đề gì với bảo vệ lặp lại tùy chọn?

Việc triển khai bảo vệ lặp lại tùy chọn ví dụ như đề xuất của cựu nhà phát triển Bitcoin, Gavin Andresen.

Nói ngắn gọn, kiểu bảo vệ lặp lại tùy chọn này sẽ làm cho các giao dịch Legacy Bitcoin đặc biệt ("OP_RETURN") không hợp lệ trên chuỗi SegWit2X. Bất cứ ai muốn chia coin của họ có thể sử dụng BTC với một giao dịch như vậy. Các giao dịch này sau đó sẽ xác nhận trên blockchain Bitcoin Legacy nhưng không nằm trong chuỗi SegWit2X. Điều này tách các coin một cách hiệu quả thành các địa chỉ khác nhau ("đầu ra") trên cả hai chuỗi.

Bảo vệ lặp lại tùy chọn như vậy có lẽ tốt hơn không có gì, nhưng nó vẫn không phải là một giải pháp cuối cùng.

Một vấn đề là blockchain Bitcoin Legacy phải bao gồm tất cả các giao dịch OP_RETURN này. Điều này có thể dẫn đến nhiều giao dịch hơn trên mạng lưới và sẽ đòi hỏi thêm dữ liệu cho mỗi giao dịch. Tất cả dữ liệu này phải được truyền, xác minh và (ít nhất là tạm thời) được lưu trữ bởi tất cả các nút Legacy Bitcoin. Nó sẽ là một gánh nặng cho mạng lưới Legacy Bitcoin.

Nhưng quan trọng hơn, có lẽ sẽ không quá dễ dàng để sử dụng tùy chọn này. Nó có thể đáp ứng nhu cầu cho người dùng chuyên nghiệp - các sàn giao dịch, nhà cung cấp dịch vụ ví và các nhà cung cấp dịch vụ khác - cũng như người dùng cá nhân am hiểu về công nghệ. Nhưng nói chung đây cũng là nhóm người dùng có thể chia coin của họ ngay cả khi không có bảo vệ lặp lại. Người dùng bình thường nếu họ thậm chí có thể nhận thức được những gì đang xảy ra có lẽ sẽ rất khó khăn để sử dụng bảo vệ lặp lại tùy chọn.

Do đó tùy chọn bảo vệ lặp lại cung cấp sự giúp đỡ tốt nhất cho những người ít cần nó và không giúp nhiều mấy cho những người cần nó nhất.

Liệu NYA có loại bỏ bảo vệ lặp lại?

Mặc dù không rõ những gì đã được thảo luận sau những cánh cửa đóng kín, Hiệp định New York dường như là một thoả thuận rất nhỏ bé. Được công bố vào ngày 23 tháng 5 năm 2017, nó thực sự chỉ bao gồm hai điểm cụ thể:

 

- Kích hoạt Segregated Witness ở ngưỡng 80 phần trăm, báo hiệu ở bit 4, và

- Kích hoạt một hard fork 2 MB trong vòng sáu tháng.

Với điểm đầu tiên hoàn thành thông qua BIP91, điểm còn lại là một hard fork 2 megabyte trước ngày 23 tháng 11. (Điều này giả định rằng hard fork này đã không được hoàn thành với việc tạo ra Bitcoin Cash được hỗ trợ bởi một số người ký tên NYA.)

Đáng chú ý, rất nhiều chi tiết không được đề cập đầy đủ. Chẳng hạn, thỏa thuận thậm chí không tuyên bố rằng những người ký tên phải chạy phần mềm BTC1: Bất kỳ việc triển khai phần mềm nào thực hiện một hard fork 2 megabyte đều có thể làm được. Điều này thậm chí có thể bao gồm một phần mềm triển khai thực hiện bảo vệ lặp lại. Và dĩ nhiên, không có gì trong NYA ngăn BTC1 thực hiện việc bảo vệ chống lại; một số người ký tên thậm chí có thể mong đợi điều đó.

Tại sao BTC1 không thực hiện bảo vệ lặp lại?

Có rất nhiều lý do tại sao BTC1 có thể không muốn thêm bảo vệ lặp lại.

Lý do thứ nhất là việc bảo vệ lặp lại yêu cầu phải có ví xác minh thanh toán giản lược (SPV) và một số thin client khác nhằm nâng cấp để gửi và nhận các giao dịch trên SegWit2X. Vì vậy, việc bảo vệ lặp lại theo lời nhà phát triển của BTC1 Jeff Garzik sẽ "phá vỡ" ví SPV; chúng sẽ không tương thích với SegWit2X cho đến khi được nâng cấp.

Việc sắp xếp và lựa chọn từ ngữ này gây ra tranh cãi. Nếu SegWit2X thực hiện bảo vệ lặp lại (và nếu ví của SPV không nâng cấp), các ví này vẫn có thể gửi và nhận các giao dịch trên Legacy Bitcoin hoàn toàn ổn. Trên hết, chúng sẽ không vô tình chi tiêu B2X nếu không có ý định.

Trong khi đó, nếu chuỗi SegWit2X không thực hiện bảo vệ lặp lại (và nếu ví SPV không nâng cấp), người dùng có thể không chắc chắn nếu ví của họ đang nhận hoặc gửi các giao dịch BTC hoặc các giao dịch B2X hay cả hai. Họ cũng có thể không chắc chắn nếu số dư trong ví của họ là số dư BTC hoặc số dư B2X hay cả hai. Và nếu hash power di chuyển từ chuỗi này sang chuỗi khác theo thời gian, những ví này thậm chí có thể chuyển từ hiển thị số dư BTC sang số dư B2X hoặc ngược lại mà người dùng không biết. (Vấn đề này có thể được giải quyết ở mức độ nào đó thông qua cách giải quyết khác nhưng điều này vẫn chưa được thực hiện.)

Thật vậy, không triển khai bảo vệ lặp lại trên SegWit2X có thể "phá vỡ" ví SPV nặng nề hơn nhiều.

Trường hợp (hợp lý) duy nhất mà việc triển khai thực hiện bảo vệ lặp lại có lẽ sẽ không phá vỡ ví SPV nặng nề hơn nhiều nếu không có Legacy Bitcoin để nói đến. Thật vậy, Hiệp định New York có ý định "nâng cấp" Bitcoin thay vì chia tách thành một coin mới như Bcash. Và dựa trên tín hiệu của các thợ đào và tuyên bố ý định của một số công ty Bitcoin lớn, một số người ký tên NYA cho rằng Legacy Bitcoin sẽ không thể tồn tại.

Do đó, việc triển khai thực hiện bảo vệ lặp lại đôi khi được coi là sự thừa nhận rằng SegWit2X sẽ tách ra từ Bitcoin (Legacy) thành một cái gì đó mới và sẽ không được coi là phiên bản nâng cấp của Bitcoin.

Nhưng giả định rằng Legacy Bitcoin sẽ không tồn tại được là giả thuyết lớn. Trên thực tế, tín hiệu của thợ đào là vô nghĩa, trong khi Bitcoin Core - triển khai Bitcoin chiếm ưu thế - sẽ không chấp nhận một hard fork. Ngoài ra còn có một danh sách đáng kể các công ty mà vẫn chưa nói rằng họ hỗ trợ hard fork bao gồm hai trong số 10 bể đào hàng đầu. Tương tự, vẫn không rõ rằng liệu nhiều người dùng (cá nhân) cũng sẽ hỗ trợ SegWit2X hay không. Việc thực hiện bảo vệ wipe out (một biện pháp an toàn khác) cũng cho thấy rằng ngay cả các nhà phát triển BTC1 cũng không chắc chắn rằng sẽ chỉ có một chuỗi.

Và có lẽ quan trọng hơn, không rõ rằng bảo vệ lặp lại sẽ ảnh hưởng như thế nào đến bất kỳ điều này. Nếu các thợ đào, các nhà phát triển, các công ty và người dùng đang xem xét SegWit2X là bản nâng cấp của Bitcoin thì có lẽ họ sẽ làm như vậy khi có hoặc không có bảo vệ lặp lại.

Đây là lý do tại sao cũng có thể cho rằng BTC1 đang từ chối bảo vệ lặp lại cho mục đích cụ thể là có thể gây rối nhiều nhất có thể. Nếu chuỗi Legacy Bitcoin trở nên không có hiệu lực sử dụng, SegWit2X có thể có cơ hội tốt nhất để được công nhận là "Bitcoin".

Nguồn bitcoinmagazine

Dịch Công nghệ tiền ảo

(xin vui lòng tôn trọng người dịch nếu có sử dụng lại bài viết)

tag: bitcoin, segwit2x, replay attack, tấn công lặp lại của bitcoin, tấn công lặp lại

admin avatar

admin Tác giả

Yêu thích công nghệ tiền ảo và các lĩnh vực công nghệ liên quan tới blockchain. Muốn mang lại kiến thức và tin tức mới nhất tới người Việt.

Bài viên liên quan

Để lại bình luận

Địa chỉ mail của bạn sẽ không công khai. Các ô có dấu * yêu cầu bắt buộc phải điền.