Xác nhận và tái tổ chức chuỗi: cuối cùng thì cuối cùng đến mức nào?

·7 phút đọc·Bởi SSP Editorial Team
Ảnh bìa SSP Academy: xác nhận, tái tổ chức và tính chung cuộc trên blockchain

Xác nhận và tái tổ chức chuỗi: cuối cùng thì cuối cùng đến mức nào?

Giao dịch của bạn đã xác nhận. Bạn đã thấy dấu tích. Tiền đã tất toán — có điều «tất toán» hóa ra là một dải liên tục chứ không phải một trạng thái, và bạn nằm ở đâu trên dải ấy còn tùy chuỗi, tùy số tiền, và tùy việc đảo ngược nó sẽ tốn của ai đó bao nhiêu.

Đây là một trong số ít góc cơ chế chuỗi khối mà các chi tiết thực sự thay đổi điều bạn nên làm, nên nó xứng đáng hai mươi phút chú ý của bạn.

Một xác nhận thực sự đếm cái gì

Xác nhận không phải con dấu chấp thuận của bất kỳ ai. Nó là một phép đo độ sâu.

Khi giao dịch của bạn được đưa vào một khối, khối ấy nằm ở một độ cao nào đó trong chuỗi. Mỗi khối đào được phía trên lại chôn nó sâu thêm một lớp. Số xác nhận đơn giản là có bao nhiêu khối chồng lên khối của bạn, kể cả chính nó.

SSP tính điều này theo cách chuẩn: tipHeight - blockheight + 1. Con số +1 ấy không phải lỗi lệch một: một giao dịch nằm trong khối mới nhất có một xác nhận, chứ không phải không. Không xác nhận nghĩa là nó vẫn ở trong mempool — đã phát đi nhưng chưa được đưa vào đâu cả.

Lý do độ sâu có ý nghĩa là vì đảo ngược giao dịch của bạn đòi hỏi thay thế khối chứa nó, cộng với mọi khối dựng bên trên. Mỗi khối thêm vào khiến công việc ấy khó hơn. Trên một chuỗi bằng chứng công việc, không gì là không thể đảo ngược; nó chỉ đắt dần lên, và tới một độ sâu nào đó thì chi phí vượt quá bất cứ điều gì người ta có thể thu được.

Tái tổ chức là bình thường, không phải tấn công

Đây là phần khiến người ta lo lắng một cách không cần thiết: các đợt tái tổ chức chuỗi ngắn xảy ra thường xuyên, và gần như không đợt nào mang ác ý.

Hai thợ đào ở hai đầu thế giới có thể giải được một khối cách nhau vài giây. Trong một khoảnh khắc, mạng lưới thực sự bất đồng về việc khối nào là đỉnh. Rồi khối kế tiếp đáp xuống một trong hai, nhánh ấy dài hơn, và khối kia thành mồ côi. Mọi giao dịch chỉ nằm trong khối mồ côi sẽ quay lại mempool và được đào lại ngay sau đó.

Đây là giao thức vận hành đúng như thiết kế. Và đó cũng chính là lý do một xác nhận yếu hơn vẻ ngoài của nó — một giao dịch sâu một nằm trong khối vẫn có thể thua một cú tung đồng xu.

Tái tổ chức sâu lại là con thú khác. Chúng đòi hỏi hoặc một lượng sức đào khổng lồ, hoặc đôi khi thứ gì đó lạ hơn: lỗi đồng thuận của Ravencoin đã buộc phải viết lại sâu hơn nhiều so với bất kỳ đợt tái tổ chức thông thường nào, không phải vì ai đó tấn công mà vì các nút bất đồng về việc luật lệ là gì. Chuyện đó hiếm. Nó cũng nhắc rằng «chuỗi không thể thay đổi» là một lối nói tắt, chứ không phải vật lý.

Sáu xác nhận đến từ đâu

Quy ước sáu xác nhận không phải con số thần kỳ và chưa bao giờ được coi là một định luật phổ quát.

Nó đến từ chính phép tính xác suất trong bản cáo bạch của Bitcoin: với một kẻ tấn công nắm một phần sức đào, khả năng họ đuổi kịp từ phía sau sau một số khối nhất định là bao nhiêu? Câu trả lời giảm theo hàm mũ khi độ sâu tăng. Sáu khối đẩy xác suất thành công xuống vùng không đáng kể — đối với một kẻ tấn công nắm thiểu số khiêm tốn sức đào trên một chuỗi lớn như Bitcoin.

Mỗi phần của mệnh đề in nghiêng ấy đều quan trọng, và đây chính là chỗ người ta đi sai. Sáu xác nhận trên Bitcoin tương đương chừng một giờ của phép tính đắt đỏ nhất hành tinh. Sáu xác nhận trên một chuỗi bằng chứng công việc nhỏ có thể tương đương một lượng sức đào mà ai đó chỉ cần thuê trong một buổi chiều.

Điều này không phải giả định. Các chuỗi bằng chứng công việc nhỏ hơn — trong đó có Ethereum Classic và Bitcoin Gold — đã hứng chịu những cuộc tấn công năm mươi mốt phần trăm thật sự, với các vụ chi tiêu kép thật nhắm vào các sàn giao dịch. Phản ứng của ngành không phải là bỏ rơi những chuỗi ấy, mà là nâng vọt yêu cầu xác nhận, đôi khi lên hàng nghìn. Sự bất đối xứng đó là toàn bộ bài học: độ sâu xác nhận chỉ có ý nghĩa khi đặt cạnh việc chuỗi thực sự mua được bao nhiêu an toàn cho mỗi khối.

Bằng chứng cổ phần đổi hẳn câu hỏi

Trên một chuỗi có tính chung cuộc tường minh, mô hình khác về loại chứ không chỉ về mức độ.

Các trình xác thực của Ethereum định kỳ bỏ phiếu để chung cuộc hóa các điểm kiểm tra. Một khi điểm kiểm tra đã chung cuộc — mất chừng hai kỷ nguyên, cỡ mười ba phút — việc đảo ngược nó không còn là chuyện tính nhanh hơn ai đó. Nó đòi hỏi một phần rất lớn toàn bộ ether đang đặt cọc phải đã bỏ phiếu cho các điểm kiểm tra mâu thuẫn, điều này phát hiện được và dẫn tới việc số cọc đó bị hủy. Bảo đảm ở đây không phải «đảo ngược chuyện này sẽ tốn kém», mà là «kẻ đảo ngược chuyện này mất một khoản tiền khổng lồ một cách chứng minh được».

Đó là một khẳng định thực sự mạnh hơn độ sâu xác suất, và đó là lý do chờ tính chung cuộc trên Ethereum là một kiểu chờ khác với việc đếm khối trên Bitcoin. Solana cũng vạch một ranh giới tương tự giữa giao dịch được xác nhận lạc quan và giao dịch đã bén rễ hoàn toàn.

Thực tế: trên các chuỗi bằng chứng công việc, bạn đếm độ sâu. Trên các chuỗi bằng chứng cổ phần, bạn muốn biết khối chứa giao dịch của mình đã chung cuộc hay chưa — một câu hỏi có hoặc không, chứ không phải một tổng đang chạy.

Sự bất đối xứng không ai nhắc tới

Xác nhận quan trọng khi bạn nhận. Chúng gần như chẳng quan trọng khi bạn gửi.

Nếu bạn đã trả cho ai đó, việc giao dịch của bạn bị một đợt tái tổ chức đảo ngược chỉ hơi phiền — nó quay lại mempool rồi xác nhận lại, và người nhận chỉ phải đợi lâu hơn một chút. Bạn chẳng mất gì.

Nếu ai đó đã trả cho bạn, và bạn giao hàng, giải ngân hay gửi sản phẩm dựa trên một xác nhận nông, thì một đợt tái tổ chức nghĩa là bạn đã cho đi thứ gì đó để đổi lấy một khoản thanh toán không còn tồn tại. Mọi cuộc tấn công chi tiêu kép từng đáng kể đều vận hành theo lối này: chúng nhắm vào những bên hành động quá sớm với dòng tiền đi vào.

Vậy nên nguyên tắc trung thực rất giản dị. Khi bạn chi tiêu, một xác nhận cho bạn biết giao dịch là thật và bạn có thể thôi lo. Khi bạn nhận giá trị từ một người lạ, độ sâu bạn đòi hỏi nên tăng theo số tiền đặt cược và thu hẹp lòng tin của bạn đúng ở những chuỗi mà khối rẻ để tạo ra.

SSP cho bạn thấy gì, và không cho thấy gì

Danh sách hoạt động của SSP cho bạn một huy hiệu nhị phân: đã xác nhận hoặc chưa xác nhận. Đó là chủ ý, bởi với tuyệt đại đa số nhu cầu thường ngày thì nhị phân đã là toàn bộ câu trả lời. Mở rộng một dòng giao dịch sẽ cho bạn số xác nhận trực tiếp và độ cao khối, tính theo đỉnh chuỗi hiện tại.

Giờ là giới hạn trung thực: không có gì trong SSP đặt điều kiện theo độ sâu xác nhận. Ví sẽ không cảnh báo rằng ba xác nhận là mỏng đối với số tiền bạn vừa nhận, và nó không có khái niệm «đủ» — nó báo con số rồi để phán đoán lại cho bạn. Không ví nào thực sự làm khác được, vì «đủ» còn tùy bạn sắp làm gì với số tiền ấy, điều mà ví không thể biết. Nhưng điều đó nghĩa là việc diễn giải là phần việc của bạn, và một dấu tích xanh không phải cùng một khẳng định với «không thể đảo ngược».

Cũng đáng nhớ rằng số xác nhận bạn đang đọc đến từ bất kỳ nút nào ví bạn đang nói chuyện cùng. Trong đúng loại sự cố mà độ sâu quan trọng nhất — một cú rẽ nhánh gây tranh cãi, một lỗi đồng thuận, một cú chia chuỗi — thì đó cũng chính là lúc một nguồn duy nhất đáng tin nhất.

Vài quy tắc ngón tay cái đáng giữ

Không xác nhận không phải là thanh toán. Đó là lời tuyên bố ý định trả tiền. Với những khoản nhỏ, rủi ro thấp, giao dịch trực tiếp thì có thể ổn. Với mọi thứ khác thì đó chưa phải một giao dịch đã tất toán.

Một xác nhận là thật nhưng nông. Ổn để chi tiêu. Mỏng để nhận bất cứ thứ gì đáng kể từ người bạn không tin.

Sáu là quy ước ở tầm Bitcoin, không phải hằng số phổ quát. Trên chuỗi mà sức đào thuê rẻ, sáu xác nhận có thể đáng giá rất ít, và con số đúng có thể cao hơn nhiều bậc độ lớn.

Trên chuỗi bằng chứng cổ phần, hãy hỏi về tính chung cuộc thay vì đếm. Đã chung cuộc nghĩa là một điều mạnh hơn hẳn về bản chất so với sâu.

Điều chỉnh độ sâu theo giá trị. Ba mươi giây kiên nhẫn thì rẻ. Một sai lầm không thể đảo ngược thì không.

Ý tưởng nền tảng, một khi thấm, lại yên lòng một cách lặng lẽ. Chẳng có gì trong tiền mã hóa là chung cuộc theo cách một chứng minh toán học là chung cuộc. Thứ bạn nhận được thay vào đó là một chi phí đảo ngược leo dốc theo thời gian, cùng khả năng tự quyết định chi phí ấy cần cao đến đâu trước khi bạn hành động. Đó là một bảo đảm yếu hơn điều phần lớn người ta tưởng mình đang có — và trung thực hơn nhiều so với bất cứ điều gì một ngân hàng nói với bạn về một khoản thanh toán vẫn có thể bị đòi lại nhiều tháng sau.

Chia sẻ bài viết này

Bài viết liên quan