Tác giả gốc: Johan
Các nhánh blockchain được chia thành các nhánh mềm và các nhánh cứng.Bài viết này tập trung vào 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. Đồng thuận là thuật toán để mỗi nút trong hệ thống chuỗi khối đạt được sự thống nhất dữ liệu. Trong trường hợp bình thường, mỗi nút cần chạy thuật toán với cùng một quy tắc. Ví dụ: Bitcoin chạy dựa trên PoW (workload Proof), Ethereum từng là thuật toán đồ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 sự phân nhánh, đây là một hiện tượng rất phổ biến trong chuỗi khối, thường là sự phân nhánh ở khoảng cách ngắn, liên quan đến thuật toán đồng thuận, đôi khi các khối cạnh tranh xuất hiện ở cùng độ cao, nhưng cuối cùng sẽ có các khối bị loại bỏ và chỉ một khối sẽ được giữ lại. Nhưng hard fork thì khác. Loại fork này đượ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 với mạng ban đầu. Các khối được tạo ra chỉ có thể được xác minh trên chuỗi phân nhánh và không thể được xác minh 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ụ: fork EthereumPoW (ETHW) phổ biến gần đây.
tiêu đề cấp đầu tiên
lớp mạng
Vì chuỗi rẽ nhánh là một chuỗi khối độc lập với mạng ban đầu, nên trước tiên, nó cần được cách ly ở lớp mạng (P2P):
1. Nút hạt giống
Nút gốc, còn được gọi là bootnode hoặc seednode, là nút mà mạng sẽ cố gắng kết nối đầu tiên khi chuỗi khối khởi động. Khi chuỗi rẽ 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 gốc, để khám phá thêm các nút ngang hàng khác trong mạng, sau đó, nó có thể đồng bộ hóa thêm các khối và đạt được sự đồng thuận. Do đó, danh sách các nút gốc phải được sửa đổi để ngăn các nút kết nối với mạng ban đầu.
2. Người ngoài hành tinh tấn công
Ngay cả khi danh sách các nút gốc thay đổi, điều đó không có nghĩa là mạng đã rẽ nhánh sẽ không được kết nối với mạng ban đầu, bởi vì giao thức P2P của cả hai bên là như nhau, nếu một nút vô tình thêm kết nối nút của mạng khác, thì hai nút sẽ Bắt tay thành công và bên kia được thêm vào nhóm địa chỉ nút. Không chỉ vậy, các nút của cả hai bên cũng sẽ chia sẻ địa chỉ trong các nút của riêng họ với nhau, điều này sẽ gây ô nhiễm lẫn nhau cho nhóm nút của các mạng song phương. Về vấn đề này, SlowMist trước đây đã tiết lộ riêngXung đột chuỗi công cộng! Lỗ hổng tấn công của người ngoài hành tinh từ giao thức P2P。
Để giải quyết vấn đề ô nhiễm lẫn nhau của các vùng địa chỉ, cần phải thực hiện nhận dạng mạng trên giao thức truyền thông. Ethereum ban đầu không hỗ trợ tách mạng, nhưng trong các phiên bản tiếp theo, NetworkID đã được thêm vào giao thức như một dấu hiệu 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, trong khi ở phiên bản đầu tiên của ETHW, NetworkID không được phân nhánh và có thể có lỗ hổng tấn công của người ngoài hành tinh.
tiêu đề cấp đầu tiên
lớp đồng thuận
1. Cách ly giao dịch
Thông thường, khi tương tác với chuỗi khối, 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 các thợ mỏ hoặc nhà sản xuất khối đóng gói thành một khối. Nhưng nếu có một nhánh trong chuỗi khối, giao dịch có thể được đóng gói thành các khối khác nhau bởi hai mạng. Giả sử đây là một lần chuyển giao trên chuỗi ban đầu, thì sẽ có cùng một giao dịch trên chuỗi đã chia tách. Chuyển giao, rõ ràng đây là một hành vi bất ngờ, sẽ gây ra tổn thất tài sản.
Tại thời điểm này, cần phải bảo vệ việc phát lại giao dịch, trong phiên bản đầu tiên của Ethereum không có sự bảo vệ này, sau EIP155, ChainID đã được thêm vào cấu trúc giao dịch để đảm bảo rằng giao dịch được ký bởi người dùng là chỉ được sử dụng trong mạng hiện tại. Nếu Ethereum bị 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 chỉ là 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 cần phải sau chiều cao ngã ba Chỉ bằng cách sử dụng ChainID mới, hoạt động bình thường của chuỗi đã rẽ nhánh mới có thể được đảm bảo.
ChainID không tồn tại trong cấu trúc giao dịch của Bitcoin, vậy nó thực hiện bảo vệ lặp lại như thế nào? Bitcoin sử dụng một mô hình gọi là UTXO. Nói một cách đơn giản, nó chi tiêu 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 và sẽ không có cảnh lặp lại.
Tuy nhiên, trong trường hợp hard fork, vẫn sẽ có các vấn đề về phát lại giao dịch, chẳng hạn như BCH fork vào năm 2017 và BSV fork sau đó. Bằng cách thêm SIGHASH_FORKID (0x40) vào chữ ký dữ liệu giao dịch của BCH, các giao dịch trên BCH và BTC không còn tương thích với nhau, để đạt được mục đích bảo vệ lặp lại.
2. Điều chỉnh công suất máy tính
Trước khi rẽ nhánh, chuỗi ban đầu chiếm toàn bộ sức mạnh tính toán của toàn bộ mạng, do đó, theo thuật toán đồng thuận PoW, độ khó tính toán của việc tạo khối của nó là tương đối cao. Sau khi rẽ nhánh, sức mạnh tính toán được phân phối cho các chuỗi khối khác nhau và chuỗi được rẽ 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ệ. Tại thời điểm này, cần phải giảm độ khó tính toán ban đầu sau khi rẽ nhánh và giành một khoảng thời gian để chuỗi rẽ nhánh nhanh chóng điều chỉnh sức mạnh tính toán.
3. Ngăn chặn các cuộc tấn công 51%
Mạng và các giao dịch bị cô lập, chuỗi khối được chia nhỏ, các khối mới được tạo ra một cách trơn tru và mọi thứ dường như bình thường. Tuy nhiên, vấn đề bảo mật vẫn còn nổi cộm, bên cạnh đó vẫn còn một dạng tấn công phổ biến hơn và khó phòng chống hơn: Tấn công 51%.
Khai thác là tìm kiếm lợi nhuận. Khi có một đồng tiền phân nhánh, những người khai thác ở bên có thu nhập khai thác cao nhất sẽ chuyển sức mạnh tính toán của họ sang mạng đó. Tuy nhiên, thực tế là đồng tiền phân tách thường có giá tiền tệ thấp, dẫn đến một sức mạnh tính toán tổng thể rất thấp. . Lấy ETHW fork làm ví dụ, chúng ta có thể thấy từ 2miners rằng sức mạnh tính toán cao nhất của mạng ETH ban đầu vượt quá 900TH/s, trong khi sức mạnh tính toán của ETHW chỉ khoảng 30TH/s tại thời điểm viết bài. lượng lớn sức mạnh tính toán không phải là một đ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.
tiêu đề cấp đầu tiên
lớp ứng dụng
Chúng tôi phân loại các ứng dụng dựa trên giao dịch, chẳng hạn như hợp đồng thông minh dựa trên máy ảo, vào lớp ứng dụng. Khi blockchain được 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.
1. Phát lại chữ ký
Phát lại chữ ký cũng giống như phát lại giao dịch đã đề cập ở trên. 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. Việc phát lại trên mỗi chuỗi, dẫn đến mất tài sản.
2. Lời tiên tri thất bại
Hầu hết các hợp đồng thông minh trong blockchain sau fork vẫn có thể chạy bình thường, chẳng hạn như hợp đồng Token và hợp đồng AMM.Các hệ thống tự chạy này có thể chạy ổn định mà không cần dựa vào dữ liệu ngoài chuỗi, nhưng các hệ thống cho vay như MakerDAO lại phụ thuộc nhiều vào giá của Dữ liệu tiên tri, sau khi mất hỗ trợ nguồn cấp dữ liệu giá khỏi chuỗi, nó sẽ không thể tiếp tục hoạt động.
3. Thay đổi giá đột ngột
Chuỗi khối được chia nhỏ và một ứng dụng 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 là chính thống? Câu hỏi này quay lại với sự đồ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 nó sẽ giữ nguyên giá trị đồng thuận ban đầu, còn tài sản trên blockchain kia sẽ mất giá trị ngay lập tức.
tóm tắt
tóm tắt
Cho đến nay, chúng tôi đã phân tích tính bảo mật của các nhánh blockchain từ lớp mạng, lớp đồng thuận và lớp ứng dụng và chúng tôi có thể thấy các rủi ro kỹ thuật tồn tại.Chúng tôi cần phải hết sức thận trọng đối với các nhánh. Hơn nữa, đằng sau nhiều đợt phân tách không chỉ là nhu cầu thay đổi công nghệ, mà một số có thể có lợi ích thương mại trực tiếp, chẳng hạn như người khởi xướng trực tiếp thu được một số lượng lớn tiền phân tách trong đợt phân bổ, những điều này yêu cầu người dùng hiểu chính xác và tránh tổn thất cần thiết vô lý .
Chuỗi khối là một hệ thống phi tập trung và việc nâng cấp của nó không phụ thuộc vào một cá nhân hay tổ chức nào, vì vậy các nhánh trong chuỗi khối là điều khó tránh khỏi, mặc dù nó gây ra sự nhầm lẫn cho cộng đồng người dùng nhưng nó cũng thúc đẩy sự phát triển của hệ thống để phục vụ xã hội tốt hơn.