Nội dung chính: Trong các bài viết trước, chúng tôi đã đề cập rằng hợp đồng Hộp thư đến trình sắp xếp được thiết kế đặc biệt để nhận các lô dữ liệu giao dịch do trình sắp xếp trình tự xuất bản trên Lớp 1. Đồng thời, chúng tôi đã chỉ ra rằng Hộp thư đến theo trình tự còn được gọi là “hộp nhanh”, tương ứng là Hộp thư đến bị trì hoãn (gọi tắt là Hộp thư đến). Tiếp theo, chúng tôi sẽ giải thích chi tiết về các thành phần liên quan đến việc truyền tin nhắn xuyên chuỗi, chẳng hạn như Hộp thư đến bị trì hoãn.
Các giao dịch xuyên chuỗi có thể được chia thành L1 đến L2 (gửi tiền) và L2 đến L1 (rút tiền). Lưu ý rằng việc gửi và rút tiền được đề cập ở đây không nhất thiết liên quan đến tài sản xuyên chuỗi, nhưng có thể là thông điệp không trực tiếp bao gồm tài sản. Vì vậy, hai từ này chỉ đại diện cho hai hướng hành vi liên quan đến chuỗi chéo.
So với các giao dịch L2 thuần túy, các giao dịch xuyên chuỗi trao đổi thông tin ở hai hệ thống khác nhau là L1 và L2 nên quy trình phức tạp hơn.
Ngoài ra, cái mà chúng ta thường gọi là hành vi chuỗi chéo là chuỗi chéo trên hai mạng không liên quan bằng cách sử dụng cầu nối chuỗi chéo chế độ chứng kiến. Tính bảo mật của chuỗi chéo này phụ thuộc vào cầu nối chuỗi chéo. Trong lịch sử, các cây cầu xuyên chuỗi dựa trên chế độ nhân chứng thường xuyên gặp phải các vụ trộm cắp.
Ngược lại, hành vi chuỗi chéo giữa Rollup và mạng chính Ethereum về cơ bản khác với các hoạt động chuỗi chéo nói trên. Điều này là do trạng thái của Lớp 2 được xác định bởi dữ liệu được ghi trên Lớp 1. Miễn là bạn sử dụng cầu nối chuỗi chéo Rollup chính thức, cấu trúc hoạt động của nó được đảm bảo tuyệt đối.
Điều này cũng nêu bật bản chất của Rollup, từ góc nhìn của người dùng, nó xuất hiện như một chuỗi độc lập. Tuy nhiên, trên thực tế, cái gọi là “Lớp 2” chỉ là một cửa sổ hiển thị nhanh được Rollup mở cho người dùng và cấu trúc giống như chuỗi thực sự của nó vẫn được ghi lại trên Lớp 1. Do đó, chúng ta có thể coi L2 là một nửa chuỗi hoặc là “chuỗi được tạo trên Lớp 1”.
Điều quan trọng cần lưu ý là các hoạt động xuyên chuỗi không đồng bộ và không mang tính nguyên tử. Không giống như trên một chuỗi nơi kết quả của giao dịch được biết sau khi được xác nhận, các giao dịch xuyên chuỗi không thể đảm bảo rằng một số sự kiện nhất định sẽ xảy ra ở phía bên kia tại một thời điểm cụ thể. Do đó, các giao dịch chuỗi chéo có thể không thành công do các vấn đề phần mềm, nhưng với các phương pháp chính xác, chẳng hạn như Vé có thể thử lại, sẽ không có bất kỳ vấn đề nào như tiền bị kẹt.
Vé có thể thử lại là công cụ cơ bản được sử dụng khi gửi tiền thông qua cầu nối chính thức của Arbitrum cho cả mã thông báo ETH và ERC20. Vòng đời của nó bao gồm ba bước:
Gửi vé trên L1: Tạo một phiếu gửi tiền bằng phương thức createRetryableTicket() trong hợp đồng Hộp thư đến bị trì hoãn và gửi nó.
Tự động đổi vé trên L2: Trong hầu hết các trường hợp, trình sắp xếp thứ tự có thể tự động đổi vé cho người dùng mà không cần can thiệp thủ công thêm.
Đổi thủ công trên L2: Trong một số trường hợp nhất định, chẳng hạn như giá xăng tăng đột ngột trên L2 khi lượng xăng trả trước trên vé không đủ, việc đổi quà tự động có thể không thành công. Trong những trường hợp như vậy, cần có sự can thiệp thủ công của người dùng. Lưu ý rằng nếu quy đổi tự động không thành công, vé phải được quy đổi thủ công trong vòng 7 ngày; nếu không, vé có thể bị xóa (dẫn đến mất tiền vĩnh viễn) hoặc yêu cầu thanh toán một khoản phí để gia hạn hợp đồng thuê.
Hơn nữa, trong quy trình rút tiền của cầu chính thức Arbitrum, mặc dù có một số điểm tương đồng đối xứng với hành vi gửi tiền về mặt quy trình, nhưng không có khái niệm về Retryables. Điều này có thể được hiểu từ góc độ của chính giao thức Rollup và bằng cách kiểm tra một số điểm khác biệt:
Không có quy đổi tự động trong quá trình rút tiền vì EVM không có bộ tính giờ hoặc tự động hóa. Mặc dù việc quy đổi tự động có thể được triển khai trên L2 với sự hỗ trợ của trình sắp xếp thứ tự, nhưng người dùng trên L1 cần tương tác thủ công với hợp đồng Hộp thư đi để yêu cầu tài sản của họ.
Cũng không có vấn đề hết hạn vé khi rút tiền; miễn là thời gian thử thách đã qua, tài sản có thể được yêu cầu bất cứ lúc nào.
Các giao dịch chuỗi chéo liên quan đến tài sản ERC-20 rất phức tạp. Chúng ta có thể xem xét một số câu hỏi:
Chúng tôi không có ý định trả lời tất cả những câu hỏi này vì chúng quá phức tạp để có thể giải quyết một cách toàn diện. Những câu hỏi này chỉ nhằm minh họa mức độ phức tạp của các giao dịch chuỗi chéo ERC-20.
Hiện tại, nhiều giải pháp mở rộng quy mô sử dụng giải pháp danh sách trắng + danh sách thủ công để tránh các vấn đề phức tạp và điều kiện biên khác nhau.
Arbitrum sử dụng hệ thống Cổng để giải quyết hầu hết các điểm yếu của giao dịch chuỗi chéo ERC20, có các đặc điểm sau:
Để minh họa sự cần thiết của các cổng tùy chỉnh, hãy xem xét một ví dụ tương đối đơn giản về chuyển WETH chuỗi chéo.
WETH là ERC20 tương đương với ETH. Vì Ether đóng vai trò là tiền tệ chính nên nhiều chức năng phức tạp trong dApp không thể đạt được trực tiếp. Do đó, cần có ERC20 tương đương như WETH. Bằng cách gửi một số ETH vào hợp đồng WETH, chúng sẽ bị khóa trong hợp đồng, tạo ra số lượng WETH tương đương.
Tương tự như vậy, WETH có thể được đốt để rút ETH. Rõ ràng, lượng WETH lưu hành và lượng ETH bị khóa sẽ luôn duy trì tỷ lệ 1:1.
Nếu bây giờ chúng ta chuyển trực tiếp chuỗi WETH sang L2, chúng ta sẽ thấy một số vấn đề lạ:
Rõ ràng, điều này vi phạm nguyên tắc thiết kế của WETH. Do đó, khi vượt qua chuỗi chéo WETH, dù gửi hay rút, trước tiên cần phải mở chuỗi vào ETH, sau đó chuyển qua và gói lại vào WETH. Đây là lúc Cổng WETH phát huy tác dụng.
Tương tự, đối với các token khác có logic phức tạp hơn, chúng yêu cầu các Cổng được thiết kế tinh vi và cẩn thận hơn để hoạt động bình thường trong môi trường chuỗi chéo. Cổng tùy chỉnh của Arbitrum kế thừa logic giao tiếp chuỗi chéo của Cổng tiêu chuẩn và cho phép các nhà phát triển tùy chỉnh hành vi chuỗi chéo liên quan đến logic mã thông báo, đáp ứng hầu hết các yêu cầu.
Bản sao của SequencerInbox, còn được gọi là hộp nhanh, là Hộp thư đến (có tên chính thức là Hộp thư đến bị trì hoãn). Tại sao lại phân biệt hộp nhanh và hộp chậm? Bởi vì hộp nhanh được thiết kế đặc biệt để nhận các lô giao dịch L2 do trình sắp xếp chuỗi xuất bản và mọi giao dịch không được trình sắp xếp chuỗi xử lý trước trong mạng L2 sẽ không xuất hiện trong hợp đồng hộp nhanh.
Vai trò đầu tiên của hộp chậm là xử lý hành vi gửi tiền từ L1 đến L2. Người dùng bắt đầu gửi tiền thông qua hộp chậm, sau đó trình sắp xếp trình tự sẽ phản ánh trên L2. Cuối cùng, bản ghi tiền gửi này sẽ được trình sắp xếp trình tự đưa vào trình tự giao dịch L2 và gửi tới hợp đồng hộp nhanh, SequencerInbox.
Trong trường hợp này, việc người dùng gửi trực tiếp các giao dịch gửi tiền vào hộp nhanh là không phù hợp vì các giao dịch được gửi tới SequencerInbox sẽ cản trở trình tự giao dịch thông thường của Lớp 2, do đó ảnh hưởng đến hoạt động của trình sắp xếp thứ tự.
Vai trò thứ hai của hộp bị trì hoãn là khả năng chống kiểm duyệt. Các giao dịch được gửi trực tiếp đến hợp đồng hộp bị trì hoãn thường được trình sắp xếp tổng hợp vào hộp nhanh trong vòng 10 phút. Tuy nhiên, nếu trình sắp xếp thứ tự cố tình bỏ qua yêu cầu của bạn, hộp bị trì hoãn có tính năng bao gồm lực lượng:
Nếu một giao dịch được gửi đến Hộp thư đến bị trì hoãn và vẫn chưa được trình sắp xếp thứ tự tổng hợp thành chuỗi giao dịch sau 24 giờ, thì người dùng có thể kích hoạt chức năng bao gồm lực lượng trên Lớp 1 theo cách thủ công. Hành động này buộc các yêu cầu giao dịch bị trình sắp xếp thứ tự bỏ qua phải được tổng hợp vào hộp nhanh, SequencerInbox, và sau đó được phát hiện bởi tất cả các nút Arbitrum One, do đó được đưa vào chuỗi giao dịch Lớp 2 một cách mạnh mẽ.
Như chúng tôi đã đề cập trước đó, dữ liệu trong hộp nhanh thể hiện thực thể dữ liệu lịch sử của L2. Do đó, trong trường hợp kiểm duyệt độc hại, các giao dịch cuối cùng có thể được đưa vào sổ cái L2 bằng cách sử dụng hộp bị trì hoãn, bao gồm các tình huống như buộc phải rút tiền từ Lớp 2.
Từ đó, có thể thấy rằng trình sắp xếp cuối cùng không thể kiểm duyệt vĩnh viễn các giao dịch theo bất kỳ hướng hoặc lớp nào.
Một số chức năng cốt lõi của Hộp thư đến chậm như sau:
Tuy nhiên, điều quan trọng cần lưu ý là hàm ForceInclusion() thực sự nằm trong hợp đồng hộp nhanh. Để rõ ràng, chúng tôi đã thảo luận vấn đề này ở đây cùng với các chức năng hộp chậm.
Outbox chỉ liên quan đến việc rút tiền và có thể hiểu là hệ thống ghi nhận và quản lý các hành vi rút tiền:
Dưới đây, chúng tôi sẽ giải thích quy trình gửi và rút tiền bằng ETH làm ví dụ. Quy trình dành cho mã thông báo ERC20 cũng tương tự, với việc bổ sung Cổng, nhưng chúng tôi sẽ không trình bày chi tiết về điều đó ở đây.
Người dùng gọi hàm drawEth() của hợp đồng ArbSys trên L2 và đốt số lượng ETH tương ứng trên L2.
Trình sắp xếp thứ tự sẽ gửi yêu cầu rút tiền đến hộp nhanh.
Nút Trình xác thực tạo Khối tổng hợp mới dựa trên chuỗi giao dịch trong hộp nhanh, khối này sẽ chứa các giao dịch rút tiền ở trên.
Sau khi Khối tổng hợp vượt qua giai đoạn thử thách và được xác nhận, người dùng có thể gọi hàm Outbox.execute Transaction() trên L1 để chứng minh rằng các tham số được đưa ra bởi hợp đồng ArbSys đã đề cập ở trên.
Sau khi hợp đồng Outbox được xác nhận là chính xác, số ETH tương ứng trong bridge sẽ được mở khóa và gửi đến người dùng.
Sử dụng cây cầu chính thức Rollup lạc quan liên quan đến việc chờ đợi một khoảng thời gian thử thách. Để khắc phục vấn đề này, chúng tôi có thể sử dụng cầu nối chuỗi chéo của bên thứ ba riêng tư:
Hàm ForceInclusion() được sử dụng để chống lại việc kiểm duyệt trình tự sắp xếp. Nó có thể được áp dụng cho mọi giao dịch cục bộ L2, giao dịch L1 đến L2 và giao dịch L2 đến L1. Vì hoạt động kiểm duyệt độc hại của trình sắp xếp chuỗi ảnh hưởng đáng kể đến trải nghiệm giao dịch nên chúng tôi thường chọn rút tiền khỏi L2. Dưới đây là ví dụ về việc sử dụng ForceInclusion() để buộc rút tiền:
Trong bối cảnh rút ETH, chỉ có bước 1 và 2 liên quan đến kiểm duyệt trình tự sắp xếp. Vì vậy, chúng ta chỉ cần sửa đổi hai bước sau:
Cuối cùng người dùng có thể rút tiền từ Outbox, các bước còn lại thực hiện tương tự như quy trình rút tiền thông thường.
Ngoài ra, còn có các hướng dẫn chi tiết trong kho hướng dẫn trọng tài hướng dẫn người dùng về cách thực hiện các giao dịch cục bộ L2 và các giao dịch L2 đến L1 bằng cách sử dụng ForceInclusion() thông qua Arb SDK.
Mời người khác bỏ phiếu
Nội dung chính: Trong các bài viết trước, chúng tôi đã đề cập rằng hợp đồng Hộp thư đến trình sắp xếp được thiết kế đặc biệt để nhận các lô dữ liệu giao dịch do trình sắp xếp trình tự xuất bản trên Lớp 1. Đồng thời, chúng tôi đã chỉ ra rằng Hộp thư đến theo trình tự còn được gọi là “hộp nhanh”, tương ứng là Hộp thư đến bị trì hoãn (gọi tắt là Hộp thư đến). Tiếp theo, chúng tôi sẽ giải thích chi tiết về các thành phần liên quan đến việc truyền tin nhắn xuyên chuỗi, chẳng hạn như Hộp thư đến bị trì hoãn.
Các giao dịch xuyên chuỗi có thể được chia thành L1 đến L2 (gửi tiền) và L2 đến L1 (rút tiền). Lưu ý rằng việc gửi và rút tiền được đề cập ở đây không nhất thiết liên quan đến tài sản xuyên chuỗi, nhưng có thể là thông điệp không trực tiếp bao gồm tài sản. Vì vậy, hai từ này chỉ đại diện cho hai hướng hành vi liên quan đến chuỗi chéo.
So với các giao dịch L2 thuần túy, các giao dịch xuyên chuỗi trao đổi thông tin ở hai hệ thống khác nhau là L1 và L2 nên quy trình phức tạp hơn.
Ngoài ra, cái mà chúng ta thường gọi là hành vi chuỗi chéo là chuỗi chéo trên hai mạng không liên quan bằng cách sử dụng cầu nối chuỗi chéo chế độ chứng kiến. Tính bảo mật của chuỗi chéo này phụ thuộc vào cầu nối chuỗi chéo. Trong lịch sử, các cây cầu xuyên chuỗi dựa trên chế độ nhân chứng thường xuyên gặp phải các vụ trộm cắp.
Ngược lại, hành vi chuỗi chéo giữa Rollup và mạng chính Ethereum về cơ bản khác với các hoạt động chuỗi chéo nói trên. Điều này là do trạng thái của Lớp 2 được xác định bởi dữ liệu được ghi trên Lớp 1. Miễn là bạn sử dụng cầu nối chuỗi chéo Rollup chính thức, cấu trúc hoạt động của nó được đảm bảo tuyệt đối.
Điều này cũng nêu bật bản chất của Rollup, từ góc nhìn của người dùng, nó xuất hiện như một chuỗi độc lập. Tuy nhiên, trên thực tế, cái gọi là “Lớp 2” chỉ là một cửa sổ hiển thị nhanh được Rollup mở cho người dùng và cấu trúc giống như chuỗi thực sự của nó vẫn được ghi lại trên Lớp 1. Do đó, chúng ta có thể coi L2 là một nửa chuỗi hoặc là “chuỗi được tạo trên Lớp 1”.
Điều quan trọng cần lưu ý là các hoạt động xuyên chuỗi không đồng bộ và không mang tính nguyên tử. Không giống như trên một chuỗi nơi kết quả của giao dịch được biết sau khi được xác nhận, các giao dịch xuyên chuỗi không thể đảm bảo rằng một số sự kiện nhất định sẽ xảy ra ở phía bên kia tại một thời điểm cụ thể. Do đó, các giao dịch chuỗi chéo có thể không thành công do các vấn đề phần mềm, nhưng với các phương pháp chính xác, chẳng hạn như Vé có thể thử lại, sẽ không có bất kỳ vấn đề nào như tiền bị kẹt.
Vé có thể thử lại là công cụ cơ bản được sử dụng khi gửi tiền thông qua cầu nối chính thức của Arbitrum cho cả mã thông báo ETH và ERC20. Vòng đời của nó bao gồm ba bước:
Gửi vé trên L1: Tạo một phiếu gửi tiền bằng phương thức createRetryableTicket() trong hợp đồng Hộp thư đến bị trì hoãn và gửi nó.
Tự động đổi vé trên L2: Trong hầu hết các trường hợp, trình sắp xếp thứ tự có thể tự động đổi vé cho người dùng mà không cần can thiệp thủ công thêm.
Đổi thủ công trên L2: Trong một số trường hợp nhất định, chẳng hạn như giá xăng tăng đột ngột trên L2 khi lượng xăng trả trước trên vé không đủ, việc đổi quà tự động có thể không thành công. Trong những trường hợp như vậy, cần có sự can thiệp thủ công của người dùng. Lưu ý rằng nếu quy đổi tự động không thành công, vé phải được quy đổi thủ công trong vòng 7 ngày; nếu không, vé có thể bị xóa (dẫn đến mất tiền vĩnh viễn) hoặc yêu cầu thanh toán một khoản phí để gia hạn hợp đồng thuê.
Hơn nữa, trong quy trình rút tiền của cầu chính thức Arbitrum, mặc dù có một số điểm tương đồng đối xứng với hành vi gửi tiền về mặt quy trình, nhưng không có khái niệm về Retryables. Điều này có thể được hiểu từ góc độ của chính giao thức Rollup và bằng cách kiểm tra một số điểm khác biệt:
Không có quy đổi tự động trong quá trình rút tiền vì EVM không có bộ tính giờ hoặc tự động hóa. Mặc dù việc quy đổi tự động có thể được triển khai trên L2 với sự hỗ trợ của trình sắp xếp thứ tự, nhưng người dùng trên L1 cần tương tác thủ công với hợp đồng Hộp thư đi để yêu cầu tài sản của họ.
Cũng không có vấn đề hết hạn vé khi rút tiền; miễn là thời gian thử thách đã qua, tài sản có thể được yêu cầu bất cứ lúc nào.
Các giao dịch chuỗi chéo liên quan đến tài sản ERC-20 rất phức tạp. Chúng ta có thể xem xét một số câu hỏi:
Chúng tôi không có ý định trả lời tất cả những câu hỏi này vì chúng quá phức tạp để có thể giải quyết một cách toàn diện. Những câu hỏi này chỉ nhằm minh họa mức độ phức tạp của các giao dịch chuỗi chéo ERC-20.
Hiện tại, nhiều giải pháp mở rộng quy mô sử dụng giải pháp danh sách trắng + danh sách thủ công để tránh các vấn đề phức tạp và điều kiện biên khác nhau.
Arbitrum sử dụng hệ thống Cổng để giải quyết hầu hết các điểm yếu của giao dịch chuỗi chéo ERC20, có các đặc điểm sau:
Để minh họa sự cần thiết của các cổng tùy chỉnh, hãy xem xét một ví dụ tương đối đơn giản về chuyển WETH chuỗi chéo.
WETH là ERC20 tương đương với ETH. Vì Ether đóng vai trò là tiền tệ chính nên nhiều chức năng phức tạp trong dApp không thể đạt được trực tiếp. Do đó, cần có ERC20 tương đương như WETH. Bằng cách gửi một số ETH vào hợp đồng WETH, chúng sẽ bị khóa trong hợp đồng, tạo ra số lượng WETH tương đương.
Tương tự như vậy, WETH có thể được đốt để rút ETH. Rõ ràng, lượng WETH lưu hành và lượng ETH bị khóa sẽ luôn duy trì tỷ lệ 1:1.
Nếu bây giờ chúng ta chuyển trực tiếp chuỗi WETH sang L2, chúng ta sẽ thấy một số vấn đề lạ:
Rõ ràng, điều này vi phạm nguyên tắc thiết kế của WETH. Do đó, khi vượt qua chuỗi chéo WETH, dù gửi hay rút, trước tiên cần phải mở chuỗi vào ETH, sau đó chuyển qua và gói lại vào WETH. Đây là lúc Cổng WETH phát huy tác dụng.
Tương tự, đối với các token khác có logic phức tạp hơn, chúng yêu cầu các Cổng được thiết kế tinh vi và cẩn thận hơn để hoạt động bình thường trong môi trường chuỗi chéo. Cổng tùy chỉnh của Arbitrum kế thừa logic giao tiếp chuỗi chéo của Cổng tiêu chuẩn và cho phép các nhà phát triển tùy chỉnh hành vi chuỗi chéo liên quan đến logic mã thông báo, đáp ứng hầu hết các yêu cầu.
Bản sao của SequencerInbox, còn được gọi là hộp nhanh, là Hộp thư đến (có tên chính thức là Hộp thư đến bị trì hoãn). Tại sao lại phân biệt hộp nhanh và hộp chậm? Bởi vì hộp nhanh được thiết kế đặc biệt để nhận các lô giao dịch L2 do trình sắp xếp chuỗi xuất bản và mọi giao dịch không được trình sắp xếp chuỗi xử lý trước trong mạng L2 sẽ không xuất hiện trong hợp đồng hộp nhanh.
Vai trò đầu tiên của hộp chậm là xử lý hành vi gửi tiền từ L1 đến L2. Người dùng bắt đầu gửi tiền thông qua hộp chậm, sau đó trình sắp xếp trình tự sẽ phản ánh trên L2. Cuối cùng, bản ghi tiền gửi này sẽ được trình sắp xếp trình tự đưa vào trình tự giao dịch L2 và gửi tới hợp đồng hộp nhanh, SequencerInbox.
Trong trường hợp này, việc người dùng gửi trực tiếp các giao dịch gửi tiền vào hộp nhanh là không phù hợp vì các giao dịch được gửi tới SequencerInbox sẽ cản trở trình tự giao dịch thông thường của Lớp 2, do đó ảnh hưởng đến hoạt động của trình sắp xếp thứ tự.
Vai trò thứ hai của hộp bị trì hoãn là khả năng chống kiểm duyệt. Các giao dịch được gửi trực tiếp đến hợp đồng hộp bị trì hoãn thường được trình sắp xếp tổng hợp vào hộp nhanh trong vòng 10 phút. Tuy nhiên, nếu trình sắp xếp thứ tự cố tình bỏ qua yêu cầu của bạn, hộp bị trì hoãn có tính năng bao gồm lực lượng:
Nếu một giao dịch được gửi đến Hộp thư đến bị trì hoãn và vẫn chưa được trình sắp xếp thứ tự tổng hợp thành chuỗi giao dịch sau 24 giờ, thì người dùng có thể kích hoạt chức năng bao gồm lực lượng trên Lớp 1 theo cách thủ công. Hành động này buộc các yêu cầu giao dịch bị trình sắp xếp thứ tự bỏ qua phải được tổng hợp vào hộp nhanh, SequencerInbox, và sau đó được phát hiện bởi tất cả các nút Arbitrum One, do đó được đưa vào chuỗi giao dịch Lớp 2 một cách mạnh mẽ.
Như chúng tôi đã đề cập trước đó, dữ liệu trong hộp nhanh thể hiện thực thể dữ liệu lịch sử của L2. Do đó, trong trường hợp kiểm duyệt độc hại, các giao dịch cuối cùng có thể được đưa vào sổ cái L2 bằng cách sử dụng hộp bị trì hoãn, bao gồm các tình huống như buộc phải rút tiền từ Lớp 2.
Từ đó, có thể thấy rằng trình sắp xếp cuối cùng không thể kiểm duyệt vĩnh viễn các giao dịch theo bất kỳ hướng hoặc lớp nào.
Một số chức năng cốt lõi của Hộp thư đến chậm như sau:
Tuy nhiên, điều quan trọng cần lưu ý là hàm ForceInclusion() thực sự nằm trong hợp đồng hộp nhanh. Để rõ ràng, chúng tôi đã thảo luận vấn đề này ở đây cùng với các chức năng hộp chậm.
Outbox chỉ liên quan đến việc rút tiền và có thể hiểu là hệ thống ghi nhận và quản lý các hành vi rút tiền:
Dưới đây, chúng tôi sẽ giải thích quy trình gửi và rút tiền bằng ETH làm ví dụ. Quy trình dành cho mã thông báo ERC20 cũng tương tự, với việc bổ sung Cổng, nhưng chúng tôi sẽ không trình bày chi tiết về điều đó ở đây.
Người dùng gọi hàm drawEth() của hợp đồng ArbSys trên L2 và đốt số lượng ETH tương ứng trên L2.
Trình sắp xếp thứ tự sẽ gửi yêu cầu rút tiền đến hộp nhanh.
Nút Trình xác thực tạo Khối tổng hợp mới dựa trên chuỗi giao dịch trong hộp nhanh, khối này sẽ chứa các giao dịch rút tiền ở trên.
Sau khi Khối tổng hợp vượt qua giai đoạn thử thách và được xác nhận, người dùng có thể gọi hàm Outbox.execute Transaction() trên L1 để chứng minh rằng các tham số được đưa ra bởi hợp đồng ArbSys đã đề cập ở trên.
Sau khi hợp đồng Outbox được xác nhận là chính xác, số ETH tương ứng trong bridge sẽ được mở khóa và gửi đến người dùng.
Sử dụng cây cầu chính thức Rollup lạc quan liên quan đến việc chờ đợi một khoảng thời gian thử thách. Để khắc phục vấn đề này, chúng tôi có thể sử dụng cầu nối chuỗi chéo của bên thứ ba riêng tư:
Hàm ForceInclusion() được sử dụng để chống lại việc kiểm duyệt trình tự sắp xếp. Nó có thể được áp dụng cho mọi giao dịch cục bộ L2, giao dịch L1 đến L2 và giao dịch L2 đến L1. Vì hoạt động kiểm duyệt độc hại của trình sắp xếp chuỗi ảnh hưởng đáng kể đến trải nghiệm giao dịch nên chúng tôi thường chọn rút tiền khỏi L2. Dưới đây là ví dụ về việc sử dụng ForceInclusion() để buộc rút tiền:
Trong bối cảnh rút ETH, chỉ có bước 1 và 2 liên quan đến kiểm duyệt trình tự sắp xếp. Vì vậy, chúng ta chỉ cần sửa đổi hai bước sau:
Cuối cùng người dùng có thể rút tiền từ Outbox, các bước còn lại thực hiện tương tự như quy trình rút tiền thông thường.
Ngoài ra, còn có các hướng dẫn chi tiết trong kho hướng dẫn trọng tài hướng dẫn người dùng về cách thực hiện các giao dịch cục bộ L2 và các giao dịch L2 đến L1 bằng cách sử dụng ForceInclusion() thông qua Arb SDK.