Tiêu đề gốc: " Giải thích sương mù chậm | Những thách thức bảo mật do các nhánh blockchain mang lại 》
Tác giả gốc: Johan, Nhóm bảo mật sương mù chậm
Các fork blockchain được chia thành fork mềm và fork cứng. Bài viết này chủ yếu thảo luận về hard fork, một phương pháp nâng cấp phần mềm không hỗ trợ khả năng tương thích ngược. Hard fork là sự phân chia hoặc thay đổi sự đồng thuận. Sự đồng thuận là thuật toán được sử dụng bởi mỗi nút trong hệ thống chuỗi khối để đạt được tính nhất quán của dữ liệu. Trong trường hợp bình thường, mỗi nút cần chạy một thuật toán có cùng quy tắc. Ví dụ: Bitcoin chạy dựa trên sự đồng thuận PoW (load of work) Proof), Ethereum từng là đồng thuận PoW và gần đây đã chuyển sang thuật toán đồng thuận PoS thông qua "The Merge".
Có nhiều lý do dẫn đến fork, đây là một hiện tượng rất phổ biến trong blockchain, thường là fork trong khoảng cách ngắn, có liên quan đến thuật toán đồng thuận. , đôi khi sẽ có các khối cạnh tranh ở cùng độ cao, nhưng cuối cùng một số khối sẽ bị bỏ đi và chỉ còn lại một khối. Nhưng hard fork thì khác. Đây là một fork được lên kế hoạch và có mục đích. Một số máy khách nút triển khai các phiên bản chương trình khác nhau từ mạng ban đầu. Các khối được tạo ra chỉ có thể vượt qua xác minh trên chuỗi phân nhánh và không thể được sử dụng bởi mạng ban đầu. Mạng chấp nhận và không chấp nhận các khối từ mạng ban đầu. Ví dụ: phân nhánh EthereumPoW (ETHW) phổ biến gần đây.

Nếu bạn muốn thành công fork Xây dựng một blockchain không hề dễ dàng. Đây không chỉ là vấn đề sao chép trực tiếp mã của mạng ban đầu. Cần phải có những sửa đổi cơ bản để đảm bảo hoạt động an toàn của nó. Để đạt được mục đích này, chúng tôi đã tóm tắt một số vấn đề bảo mật và phương pháp bảo vệ phổ biến.
Vì chuỗi phân nhánh là một chuỗi khối độc lập với mạng ban đầu, nên Đầu tiên , cần có sự cách ly ở lớp mạng (P2P):
Nút hạt giống, còn được gọi là nút khởi động hoặc nút hạt giống, là nút đầu tiên mà mạng sẽ cố gắng kết nối khi chuỗi khối khởi động. Khi chuỗi phân nhánh được bắt đầu, trước tiên nó sẽ kết nối với các nút trong danh sách nút giống để khám phá thêm các nút ngang hàng khác trong mạng, sau đó có thể đồng bộ hóa thêm các khối và đạt được sự đồng thuận. Do đó, danh sách nút giống phải được sửa đổi để ngăn các nút kết nối với mạng ban đầu.
Ngay cả khi danh sách nút hạt giống thay đổi, điều đó không có nghĩa là rằng mạng phân phối sẽ không được kết nối với mạng ban đầu vì giao thức P2P của cả hai bên giống nhau. Nếu một nút vô tình thêm kết nối nút vào mạng khác, hai nút sẽ bắt tay thành công và thêm nhau vào mạng nhóm địa chỉ nút. Không chỉ vậy, các nút ở cả hai bên cũng sẽ chia sẻ địa chỉ trong các nút riêng của chúng với nhau, do đó gây ra sự lây nhiễm lẫn nhau trong nhóm nút mạng song phương. Liên quan đến vấn đề này, Slow Mist trước đó đã tiết lộ riêng về "Chuỗi công khai xung đột!" Lỗ hổng tấn công của người ngoài hành tinh từ các giao thức P2P".
Để giải quyết vấn đề ô nhiễm lẫn nhau của nhóm địa chỉ, việc nhận dạng mạng cần phải được thực hiện trên giao thức truyền thông. Ethereum ban đầu không hỗ trợ phân tách mạng, nhưng các phiên bản tiếp theo đã thêm NetworkID vào giao thức như một biểu tượng để phân biệt mạng. NetworkID thường là ChainID của mỗi chuỗi. Ví dụ: NetworkID và ChainID của mạng chính Ethereum đều là 1 và NetworkID chưa được phân nhánh trong phiên bản đầu tiên của ETHW và có thể có lỗ hổng tấn công của người ngoài hành tinh.
Trong mạng Bitcoin, các giá trị Magic được sử dụng để xác định các mạng khác nhau, thường được xác định trong chuỗi params. Ví dụ: giá trị mạng chính Bitcoin là F9BEB4D9 . Giá trị mạng thử nghiệm là FABFB5DA.
Thông thường khi tương tác với blockchain, chúng ta cần ký một giao dịch bằng khóa riêng của mình, sau đó giao dịch đó được phát lên mạng và được người khai thác hoặc nhà sản xuất khối đóng gói thành một khối. Nhưng nếu blockchain phân tách, giao dịch có thể được hai mạng đóng gói thành các khối khác nhau. Giả sử đây là một lần chuyển tiền trên chuỗi ban đầu thì sẽ có lần chuyển tiền tương tự trên chuỗi phân nhánh. Chuyển tiền rõ ràng là một hành vi không mong muốn và sẽ xảy ra gây thất thoát tài sản.
Tại thời điểm này, cần phải thực hiện lại giao dịch. Trong các phiên bản đầu tiên của Ethereum, không có sự bảo vệ như vậy. Sau đó, nó đã được thêm vào giao dịch cấu trúc sau EIP155.ChainID, đảm bảo rằng các giao dịch được ký bởi người dùng chỉ được sử dụng trên mạng hiện tại. Nếu Ethereum fork thì ChainID cũng cần được xác định lại, tất nhiên việc này không đơn giản như chỉ sửa đổi ChainID trong cấu hình, vì chuỗi fork cần phải tương thích với các khối cũ nên phải sau chiều cao fork . Chỉ bằng cách sử dụng ChainID mới, chuỗi phân nhánh mới có thể hoạt động bình thường.
ChainID không tồn tại trong cấu trúc giao dịch của Bitcoin, vậy nó cung cấp khả năng bảo vệ lặp lại như thế nào? Bitcoin sử dụng mô hình gọi là UTXO. Nói một cách đơn giản, nó thực hiện một giao dịch (UTXO) thay vì một tài khoản. Thông thường, sẽ không có hai giao dịch giống hệt nhau trong một mạng mới ra mắt nên sẽ không có cảnh Phát lại.
Tuy nhiên, trong trường hợp hard fork, vẫn sẽ có vấn đề phát lại giao dịch, chẳng hạn như fork BCH năm 2017 và fork BSV tiếp theo. Bằng cách thêm SIGHASH_FORKID (0x40) vào chữ ký dữ liệu giao dịch, BCH làm cho các giao dịch trên giao dịch BCH và BTC không còn tương thích với nhau, từ đó đạt được mục đích bảo vệ chống lặp lại.
Trước fork, chuỗi ban đầu chiếm toàn bộ sức mạnh tính toán của toàn bộ chuỗi Sau đó, theo thuật toán đồng thuận PoW, độ khó tính toán khối của nó cũng tương đối cao. Sau khi phân nhánh, sức mạnh tính toán được phân tán sang các chuỗi khối khác nhau và chuỗi phân nhánh thường không thể có đủ sức mạnh tính toán để tạo ra các khối mới do không đủ sự đồng thuận và sự phát triển của các khối sẽ bị đình trệ. Lúc này, cần giảm bớt độ khó tính toán ban đầu sau khi phân nhánh và cung cấp cho chuỗi phân nhánh một khoảng thời gian để nhanh chóng điều chỉnh sức mạnh tính toán.
Mạng và các giao dịch được cách ly và các khối Chuỗi phân nhánh, các khối mới được sản xuất thành công và mọi thứ dường như bình thường. Tuy nhiên, vấn đề bảo mật vẫn còn tồn tại và vẫn còn một cuộc tấn công phổ biến và khó phòng thủ hơn: cuộc tấn công 51%.
Khai thác là hướng đến lợi nhuận. Khi một loại tiền tệ phân nhánh xuất hiện, những người khai thác có lợi nhuận khai thác cao hơn sẽ chuyển sức mạnh tính toán của họ sang mạng đó, nhưng thực tế là các đồng tiền phân nhánh có xu hướng có giá tiền tệ thấp, dẫn đến sức mạnh tính toán tổng thể rất thấp. Lấy fork ETHW làm ví dụ, chúng ta có thể thấy từ 2miners rằng sức mạnh tính toán đỉnh cao của mạng ETH ban đầu đã vượt quá 900TH/s, nhưng tại thời điểm viết bài, sức mạnh tính toán của ETHW chỉ khoảng 30TH/s. sức mạnh tính toán lớn không phải là điều tốt. Một cuộc tấn công 51% vào ETHW có thể được thực hiện bất cứ lúc nào.
Hầu như không có cách nào tốt để ngăn chặn cuộc tấn công 51% này, cách duy nhất để ngăn chặn nó là tăng số lượng xác nhận.
Chúng tôi xem xét các ứng dụng được xây dựng trên các giao dịch, chẳng hạn như các ứng dụng dựa trên máy ảo Hợp đồng thông minh được phân loại chung là lớp ứng dụng. Khi một blockchain phân nhánh, nó cũng sẽ có tác động rất lớn đến các ứng dụng chạy trên blockchain.
Việc phát lại chữ ký cũng giống như việc phát lại giao dịch được đề cập ở trên. Nguyên tắc tương tự cũng được áp dụng cho việc phát hành. Có một số hợp đồng, chẳng hạn như Gnosis Safe, sẽ xác minh chữ ký của người dùng trong hợp đồng. Nếu chữ ký không chứa ChainID thì chữ ký rất có thể sẽ được phát lại trên cả hai chuỗi, dẫn đến tổn thất tài sản.
Hầu hết các hợp đồng thông minh trong blockchain sau fork vẫn giữ nguyên Có thể hoạt động bình thường, chẳng hạn như hợp đồng Token và hợp đồng AMM. Các hệ thống tự vận hành này có thể hoạt động ổn định mà không cần dựa vào dữ liệu ngoài chuỗi. Tuy nhiên, các hệ thống cho vay như MakerDAO phụ thuộc rất nhiều vào dữ liệu giá của các nhà tiên tri. Sau khi mất đi sự hỗ trợ của nguồn cấp dữ liệu giá ngoài chuỗi, Nó sẽ không thể tiếp tục chạy.
Blockchain đã phân nhánh và một ứng dụng đang chạy trên hai chuỗi cùng một lúc. Người dùng nên sử dụng chuỗi nào? Cái nào được coi là “chính thống”? Vấn đề này quay lại vấn đề đồng thuận, thông thường blockchain nào có sự đồng thuận chính thống thì tài sản trên đó sẽ giữ nguyên giá trị đồng thuận ban đầu, trong khi tài sản trên blockchain khác sẽ mất giá trị ngay lập tức.
Sự thay đổi mạnh mẽ về giá như vậy sẽ khiến các ứng dụng DeFi sụp đổ hoàn toàn và các ứng dụng cho vay sẽ không bao giờ có thể đóng vị thế của mình. Trong khoảng thời gian, tài sản "trở về 0" được trao đổi lấy mã thông báo chuỗi chính thông qua các ứng dụng như AMM, do đó giữ lại một số giá trị. Trong sự cố fork ETHW, chúng tôi đã quan sát thấy một số lượng lớn hành vi chênh lệch giá trên chuỗi phân nhánh.
Cho đến nay, chúng ta đã phân tích được khối từ lớp mạng, lớp đồng thuận và lớp ứng dụng. Tính bảo mật của các nhánh phân nhánh đã được phân tích và chúng ta có thể thấy những rủi ro kỹ thuật liên quan. Chúng ta cần xử lý các nhánh phân nhánh thật cẩn thận. Hơn nữa, nhiều fork không chỉ được thúc đẩy bởi nhu cầu thay đổi công nghệ mà một số có thể mang lại lợi ích thương mại trực tiếp. Ví dụ: người khởi xướng trực tiếp nhận được một lượng lớn tiền fork trong fork. Điều này đòi hỏi người dùng phải hiểu chính xác và tránh những hiểu lầm không cần thiết . những tổn thất cần thiết.
Blockchain là một hệ thống phi tập trung. Việc nâng cấp nó không phụ thuộc vào một cá nhân hay tổ chức nào nên việc phân nhánh là điều không thể tránh khỏi trong blockchain, mặc dù nó mang lại sự hỗn loạn cho cộng đồng người dùng, nó cũng thúc đẩy hệ thống tiến lên để phục vụ xã hội tốt hơn.
Liên kết gốc a>
Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:
Nhóm Telegram đăng ký: https://t.me/theblockbeats
Nhóm Telegram thảo luận: https://t.me/BlockBeats_App
Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia