Phân tích lý do khiến Arbitrum được bàn tán sôi nổi
星球君的朋友们
2021-06-04 09:22
本文约4161字,阅读全文需要约17分钟
Giao thức Arbitrum Rollup mới có thể mang lại kết quả đáng tin cậy cho những người trung thực.

Bài viết này được sao chép từ: Cộng đồng tài chính phi tập trung; Tác giả: ChinaDeFi; In lại với sự cho phép.

Arbitrum Rollup là một giao thức ngoài chuỗi được điều chỉnh bởi hợp đồng Ethereum trên chuỗi. Nhà phát triển dApp có một bộ hợp đồng được viết bằng Solidity, mà nhà phát triển biên dịch thành máy ảo Arbitrum (VM) để chạy trên Arbitrum Rollup. Chúng tôi muốn họ chạy nhanh.

Khái niệm cơ bản về Rollup

Hãy bắt đầu với những điều cơ bản. Trạng thái của máy ảo được tổ chức dưới dạng cây Merkle, do đó có thể tính toán hàm băm mật mã của trạng thái máy ảo. Tại bất kỳ thời điểm nào trong giao thức, một số trạng thái của VM được xác nhận đầy đủ. Băm của nó được lưu trữ trên chuỗi.

Những người tham gia giao thức có thể đưa ra xác nhận có tranh chấp (DA), tuyên bố rằng bắt đầu với một hàm băm trạng thái nhất định, theo một số điều kiện tiên quyết kỹ thuật, VM có thể thực hiện một số bước tính toán cụ thể, dẫn đến một hàm băm trạng thái mới được chỉ định và VM thực hiện thanh toán được chỉ định và phát ra sự kiện nhật ký được chỉ định trong quá trình tính toán đó. DA có thể hợp lệ (tức là có thật) hoặc không hợp lệ. Bên lập DA sẽ được yêu cầu đặt cọc tính hợp lệ của DA.

Một xác nhận gây tranh cãi tạo ra một điểm quyết định cho giao thức

Như được hiển thị ở bên trái, các xác nhận gây tranh cãi tạo ra các điểm quyết định hợp lý mà tại đó giao thức cuối cùng phải được giải quyết. Nếu DA hợp lệ, hệ thống sẽ chuyển sang trạng thái mới ở góc trên bên phải, với hàm băm trạng thái mới và các tác dụng phụ (thanh toán và nhật ký) được chỉ định trong DA. Hoặc ở một nhánh khác, DA không hợp lệ, nó bị từ chối và trạng thái vẫn như cũ.

Giao thức Arbitrum trước đó

Giao thức Arbitrum ban đầu xử lý từng xác nhận tranh chấp tại một thời điểm. DA sẽ được yêu cầu bởi ai đó và sau đó một giai đoạn thử thách sẽ trôi qua trong thời gian đó bất kỳ ai cũng có thể thách thức DA. Nếu không có phản đối nào, DA sẽ được xác nhận; nếu không, giao thức tranh chấp sẽ được chạy và DA sẽ bị hủy.

Điều này là đơn giản, nhưng có hai nhược điểm. Đầu tiên, vì chỉ có một DA có thể hoạt động tại một thời điểm nên tốc độ xử lý của VM sẽ bị hạn chế. Về cơ bản, quá trình phải dừng lại trong mỗi thử thách. Thứ hai, một tác nhân độc hại có thể đóng băng một máy ảo bằng cách cố tình thách thức tất cả các DA do máy ảo đó tạo ra. Điều này sẽ khiến kẻ tấn công phải trả một loạt chi phí, nhưng nếu sẵn sàng trả chi phí đó, họ có thể trì hoãn tiến độ trong thời gian dài, ít nhất là trong một số trường hợp.

Giao thức Arbitrum mới, cải tiến

Giao thức Arbitrum Rollup mới giải quyết cả hai thiếu sót này. Nhiều DA có thể được "đường ống dẫn" để VM có thể tiến hành nhanh như quá trình tính toán của trình xác thực mô phỏng VM. Thứ hai, như chúng ta sẽ thấy bên dưới, một "tác nhân độc hại không thể làm chậm tiến độ, họ chỉ có thể tạm thời trì hoãn việc công nhận trên chuỗi các kết quả vốn đã là "kết quả không đáng tin cậy" đối với các tác nhân trung thực .

Sao có thể như thế được?

Mỗi tiểu bang có thể có nhiều nhất một DA theo sau nó. Nếu DA không tuân theo trạng thái, thì bất kỳ ai cũng có thể tạo DA tuân theo trạng thái đó, do đó tạo ra một điểm nhánh mới. Kết quả có thể là một cây trong tương lai.

lời hứa

lời hứa

Một phần quan trọng khác của giao thức là đặt cược. Bất cứ ai cũng có thể đặt cược vào một hộp vuông trên cây. Bằng cách đặt cược vào một hình vuông, người dùng có thể khẳng định rằng hình vuông cuối cùng sẽ được giao thức xác nhận. Người dùng xác nhận rằng nhánh chính xác được lấy tại mỗi DA trên đường dẫn từ trạng thái hiện tại đến ô vuông mà anh ta đã đặt. Hiểu sai và người dùng có thể mất tiền đặt cọc của bạn.

Hoạt động cầm cố không thể bị thu hồi. Người dùng có thể di chuyển khoản tiền gửi của mình sang phải—lên hoặc xuống tại mỗi điểm chi nhánh—nhưng không được di chuyển sang trái, vì điều đó tương đương với việc hủy bỏ cam kết cam kết trước đó của họ.

Bên đưa ra yêu cầu tranh chấp phải đặt cược vào người kế vị "DA hợp lệ" của DA đó. Thông thường, họ có thể đáp ứng yêu cầu này bằng cách di chuyển cái hiện có sang bên phải để đặt nó vào ô kế tiếp mong muốn. (Trong trường hợp hiếm hoi họ không thể làm điều này, họ có thể đặt cược thêm tiền vào ô vuông mong muốn. Nhưng lưu ý rằng họ sẽ đặt cược vào hai con đường không trùng nhau, vì vậy cuối cùng họ sẽ phải thua ít nhất một trong hai con đường cam kết - thật không khôn ngoan khi mâu thuẫn với chính mình.)

Một chi tiết khác về cam kết là: nếu khối được người dùng cam kết được xác nhận và trở thành một bản ghi lịch sử được chấp nhận, người dùng có thể chọn rút tiền ký gửi cam kết của mình. Điều này có nghĩa là nếu người dùng đúng, họ có thể giữ cổ phần của mình và đợi hệ thống "bắt kịp" chính họ, sau đó người dùng có thể lấy lại cổ phần của mình.

Một cây trạng thái điển hình hơn - một loạt các khẳng định đúng

Tại thời điểm này, người dùng có thể lo ngại rằng cây khả năng có thể trở nên rất lớn và các nhánh của nó. Điều này khó có thể xảy ra trong thực tế vì nó yêu cầu nhiều bên tham gia vào các kết quả không nhất quán lẫn nhau. Chỉ một người có thể đúng và những người khác sẽ mất trái phiếu cổ phần của họ. Nhiều khả năng, "cây" thực sự là một chuỗi DA hợp lệ, hết chuỗi này đến chuỗi khác, tất cả đều được đặt cược cho cùng một kết quả.

Thời hạn cam kết

Chúng tôi cần hệ thống đưa ra quyết định về từng xác nhận bị tranh chấp trước khi mất quá nhiều thời gian. Do đó, khi DA được thêm vào chuỗi, tạo điểm nhánh, ngày hết hạn được liên kết với DA này. Trong tương lai, khi thời hạn đủ dài, mọi người sẽ có thời gian để kiểm tra xem DA có hợp lệ hay không và nếu họ chọn làm như vậy, hãy nhận một giao dịch trực tuyến dựa trên kết quả của DA. Nếu bất kỳ ai muốn cam kết ủng hộ hoặc phản đối tính hợp lệ của DA này, họ phải thực hiện trước thời hạn. (Khoản đặt cọc vẫn có thể được giới thiệu sau thời hạn, nhưng họ không tham gia vào việc quyết định có hỗ trợ DA hay không.) Khi đến thời hạn, tất cả các khoản đặt cọc liên quan đến quyết định DA sẽ được biết.

tranh luận

Nếu Alice và Bob được đặt cược vào các ô vuông khác nhau, thì một trong hai điều sẽ đúng. Hoặc là sẽ có một con đường dẫn đến bên phải, từ một trong số chúng sang bên kia—có nghĩa là các yêu sách của chúng nhất quán với nhau—hoặc sẽ không có con đường nào như vậy. Nếu không có đường chuyển động phải nối ô vuông của Alice và Bob, thì chúng phải phân kỳ theo một cách nào đó. Sẽ luôn có một điểm tranh chấp duy nhất giữa chúng - một DA duy nhất trong đó một khoản đặt cược hợp lệ trong khi khoản đặt cược kia không hợp lệ.

Alice và Bob đang chuẩn bị cho một cuộc tranh chấp

Khi xảy ra tranh chấp giữa hai bên, hệ thống có thể bắt đầu một giao thức giải quyết tranh chấp tương tác giữa hai bên.

Do thỏa thuận giải quyết tranh chấp, một bên sẽ bị coi là không đúng. Bên đó sẽ mất trái phiếu cầm cố. Trái phiếu cam kết sẽ bị xóa khỏi ô vuông mà nó nằm trên đó. Một phần sẽ được chuyển cho bên tranh chấp khác và phần còn lại sẽ bị đốt cháy.

Nhiều tranh chấp có thể đang diễn ra cùng một lúc, nhưng mỗi người đặt cược chỉ có thể tham gia vào tối đa một tranh chấp tại một thời điểm. Mỗi tranh chấp làm giảm số lượng các bất đồng trong hệ thống vì tiền đặt cược của người thua cuộc bị xóa sạch. Bên bị mất khoản tiền gửi cầm cố có thể đặt lại nếu họ muốn, nhưng khoản tiền gửi cầm cố mới sẽ không thể ảnh hưởng đến DA đã qua thời hạn cầm cố. Kết quả cuối cùng của việc này là sau khi giai đoạn đặt cược của DA trôi qua, tranh chấp sẽ dần dần giải quyết được bất kỳ sự bất đồng nào về cách DA nên được xử lý.

xác minh kết quả

Sau khi thời hạn đặt cược của DA đã qua và tất cả số tiền đặt cược kịp thời (trước thời hạn đặt cược đã đặt) còn lại nằm trên cùng một nhánh của DA đó, hệ thống có thể xác nhận kết quả của DA đó. DA được chấp nhận hoặc bị từ chối và trạng thái hiện tại di chuyển đến ô vuông thích hợp ở bên phải của DA. Nếu DA được xác nhận là hợp lệ, các tác dụng phụ của nó (chẳng hạn như thanh toán) sẽ được triển khai trên chuỗi và đây là cách trạng thái của VM tiến lên phía trước.

Thông thường, các bên sẽ hành động trung thực vì họ không muốn mất cổ phần của mình bằng cách đặt cược sai. Trong một chuỗi duy nhất, chỉ DA hợp lệ mới được xác nhận và không ai sẽ đặt cược vào bất kỳ nhánh DA không hợp lệ nào. Trong trường hợp này, mỗi DA có thể được xác nhận ngay lập tức khi hết thời gian đặt cọc.

tại sao nó không đáng tin cậy

Một thuộc tính quan trọng của Arbitrum Rollup là nó không đáng tin cậy - một bên trung thực có thể buộc VM hành xử đúng và đạt được tiến bộ. Hãy tưởng tượng rằng Alice luôn đặt cược vào nhánh thực của mỗi DA và nếu cây trống, cô ấy khẳng định DA.

Bởi vì Alice được đặt cược trên nhánh thực, cô ấy thắng mọi cuộc tranh chấp mà cô ấy tham gia. Nếu những người khác không đồng ý với Alice, thì họ (a) hoặc mất liên kết cổ phần trong một tranh chấp không liên quan đến bên thứ ba, hoặc (b) kết thúc tranh chấp với Alice và mất liên kết với cô ấy. Dù bằng cách nào, tất cả những người không đồng ý với Alice cuối cùng sẽ mất trái phiếu cổ phần của họ. Chỉ những người đồng ý với Alice mới sống sót, vì vậy con đường của Alice xuyên qua cái cây cuối cùng sẽ chỉ có người đánh cược đúng lúc - con đường của Alice cũng sẽ được xác nhận.

Nếu Alice trung thực, bất kể người khác làm gì, hình vuông màu xanh lá cây cuối cùng sẽ được xác nhận

Bởi vì hệ thống không đáng tin cậy trong trường hợp này, nếu Alice đặt cược vào một ô vuông và cô ấy biết đường dẫn đến ô vuông đó là có thật, thì Alice có thể chắc chắn rằng ô cô ấy đang đặt cuối cùng sẽ được xác nhận. Đối với Alice, con đường này cũng tốt như con đường cuối cùng.

Ngay cả khi người dùng không đặt cược vào một đường dẫn, nếu anh ta thấy một số người đặt cược trên đường dẫn đó và bản thân người dùng tin rằng ít nhất một trong số những người đó trung thực - thì đường dẫn này cũng tốt như đường dẫn cuối cùng.

Lợi ích của việc không tin tưởng vào kết quả

Ví dụ kinh điển này xuất phát từ các cuộc thảo luận trước đây về các giao thức tổng số khác. Giả sử một VM muốn trả cho Alice một khoản tiền. Sự kiện thanh toán được thực hiện trên con đường trung thực, nhưng sẽ mất một thời gian trước khi xác nhận trực tuyến của nơi thanh toán xảy ra.

Kết quả của việc không tin tưởng khiến Alice có quyền truy cập ngay vào tiền của mình. Nếu Bob có tiền chưa đặt cược, anh ta có thể đưa ngay số tiền đó cho Alice để đổi lấy việc Alice chỉ định các khoản thanh toán chưa được xác nhận trong tương lai cho Bob (cộng với việc trả cho Bob một khoản phí tối thiểu). Bob có thể đảm bảo điều này bằng cách đặt cược vào một kết quả trung thực — và sau đó anh ấy có thể yên tâm đợi khoản thanh toán cuối cùng được xác nhận. Không chỉ Bob có thể làm điều này. Bất cứ ai có trái phiếu đều có thể cho Alice và những người khác giống như cô ấy vay theo cách tương tự. Những người này có thể cạnh tranh với nhau bằng cách đưa ra mức phí thấp hơn, làm giảm chi phí kiếm được trái phiếu của Alice.

Vấn đề là khả năng tồn tại của cơ chế thị trường này phụ thuộc vào kết quả cuối cùng của sự mất lòng tin. Nếu "mọi người" đã biết rằng điều gì đó cuối cùng sẽ được xác nhận, thì sự chậm trễ trong xác nhận trên chuỗi sẽ ít gây phiền toái hơn.

Điều này không chỉ áp dụng cho các khoản thanh toán mà còn cho những thứ khác mà VM cũng thực hiện. Nếu VM sẽ phát ra một mục nhật ký thông báo rằng có điều gì đó đã xảy ra, thì kết quả không đáng tin cậy có nghĩa là bất kỳ ai cũng có thể tin tưởng rằng mục nhật ký đó sẽ được xác định trên chuỗi.

cuộc tấn công bị trì hoãn

Bởi vì hệ thống không đáng tin cậy, các tác nhân độc hại không thể ép buộc một kết quả không chính xác. Tất cả những gì họ có thể làm là làm chậm quá trình. Làm như vậy đòi hỏi họ phải hy sinh khoản đặt cọc của mình, điều này có thể tốn kém nếu khoản đặt cọc lớn.

Giả sử ai đó muốn phát động một cuộc tấn công trì hoãn, họ sẵn sàng hy sinh trái phiếu cam kết. thiệt hại tồi tệ nhất họ có thể làm là gì?

Điều đầu tiên cần lưu ý là các tác nhân độc hại không thể ngăn cản các tác nhân trung thực tiếp tục xây dựng các nhánh trung thực của cây. Họ cũng không thể ngăn cản những người tin tưởng trung thực đạt được sự tin tưởng không đáng tin cậy khi cuối cùng họ xác nhận các fork trung thực.

Tất cả những gì kẻ tấn công có thể làm là đặt cược vào một nhánh giả để trì hoãn xác nhận trên chuỗi về đường dẫn trung thực. Mỗi cổ phần họ đặt tạo ra nhiều tranh chấp hơn cho những người tham gia trung thực, những người lấy đi một phần lớn tiền đặt cọc của kẻ tấn công. Khi tất cả trái phiếu cổ phần của kẻ tấn công đã bị lấy đi, quá trình trên chuỗi sẽ tiếp tục.

Điều gì sẽ xảy ra nếu kẻ tấn công đặt nhiều rủi ro vào kết quả sai?Sau đó, các khoản tiền gửi cam kết này sẽ bị lấy đi từng thứ một trong tranh chấp. Nếu nhiều người tham gia vào kết quả trung thực, thì tất cả những người đó đều có thể mở tranh chấp với kẻ tấn công, song song lấy đi trái phiếu cam kết của kẻ tấn công. Lưu ý rằng mọi người sẽ có một cái nhìn rõ ràng về những gì đang diễn ra và nhiều người sẽ muốn tham gia vào hành động, đặt cược vào kết quả thực sự để họ có thể tham gia vào đám đông sử dụng tranh cãi để cướp những kẻ tấn công. thế chấp điên cuồng. Nếu có K người đặt cọc ở phía trung thực, kẻ tấn công sẽ chi K tiền đặt cọc để mua sự chậm trễ tranh chấp. Điều này có thể thu hút nhiều người đặt cược trung thực hơn nếu kẻ tấn công đặt một khoản đặt cọc lớn hơn. Đây là một động lực xấu cho kẻ tấn công.

tối ưu hóa

Các tối ưu hóa khác nhau có khả năng giảm số lượng sổ sách kế toán trên chuỗi cần thiết để vận hành giao thức và giảm chi phí gas trên chuỗi.

星球君的朋友们
作者文库