Hợp đồng hộp thư đến tuần tự< /h3>Hợp đồng sẽ nhận được lô giao dịch do trình sắp xếp trình tự gửi để đảm bảo tính sẵn có của dữ liệu. Xem xét kỹ hơn, dữ liệu lô trong SequencerInbox ghi lại hoàn toàn thông tin đầu vào giao dịch của Lớp 2. Ngay cả khi trình tuần tự ngừng hoạt động vĩnh viễn, bất kỳ ai cũng có thể khôi phục trạng thái hiện tại của Lớp 2 dựa trên bản ghi lô và tiếp quản phần bị lỗi /thiết bị sắp xếp chạy trốn.
Sử dụng phương pháp vật lý, L2 mà chúng ta thấy chỉ là hình chiếu của lô trong SequencerInbox và nguồn sáng là STF. Vì nguồn sáng STF không dễ dàng thay đổi nên hình dạng của bóng chỉ được xác định bởi lô đóng vai trò là đối tượng.
Hợp đồng Hộp thư đến tuần tự được gọi là hộp nhanh. Trình sắp xếp thứ tự gửi các giao dịch được xử lý trước cụ thể tới nó. Và chỉ Dữ liệu của trình sắp xếp mới có thể được nộp cho nó. Hộp nhanh tương ứng là hộp chậm Hộp thư đến của người trì hoãn, chức năng của nó sẽ được mô tả trong quy trình tiếp theo.
Trình xác thực sẽ luôn giám sát hợp đồng SequencerInbox. Bất cứ khi nào trình sắp xếp thứ tự phát hành một Lô cho hợp đồng, một sự kiện trên chuỗi sẽ được đưa ra. Sau khi Trình xác thực lắng nghe sự xuất hiện của sự kiện này, Nó sẽ tải xuống dữ liệu lô và sau khi thực thi cục bộ, phát hành RBlock cho hợp đồng giao thức Rollup trên chuỗi ETH.

Có một chức năng gọi là tích lũy trong cầu nối của Arbitrum hợp đồng Các thông số của bộ tích lũy sẽ được ghi lại cho lô L2 mới gửi, cũng như số lượng và thông tin các giao dịch mới nhận vào Hộp thư đến chậm.

(Trình sắp xếp liên tục gửi các lô tới SequencerInbox)

(Thông tin cụ thể theo lô, trường dữ liệu tương ứng với Dữ liệu hàng loạt, kích thước của phần dữ liệu này rất lớn và ảnh chụp màn hình không được hiển thị đầy đủ)
Hợp đồng SequencerInbox có hai chức năng chính:
thêm Sequencer L2Batch From Origin(),Trình sắp xếp sẽ gọi hàm này mỗi lần gửi dữ liệu Batch tới hợp đồng Sequencer Inox.
force Inclusion(), Hàm này có thể được gọi bởi bất kỳ ai và được sử dụng để thực hiện các giao dịch chống kiểm duyệt. Cách thức hoạt động của chức năng này sẽ được giải thích chi tiết sau khi chúng ta nói về hợp đồng Hộp thư đến bị trì hoãn.
Hai hàm trên sẽ gọi bridge.enqueueSequencerMessage() để cập nhật bộ tích lũy tham số tích lũy trong hợp đồng bridge.
Giá Gas
Rõ ràng, các giao dịch L2 không thể miễn phí vì điều này sẽ dẫn đến các cuộc tấn công DoS. Trong Ngoài ra, còn có chi phí vận hành của chính bộ phân loại L2 cũng như chi phí gửi dữ liệu trên L1. Khi người dùng bắt đầu giao dịch trong mạng Lớp 2, cấu trúcphí gas như sau:
Chi phí xuất bản dữ liệu phát sinh do chiếm giữ Tài nguyên lớp 1,Chủ yếu đến từ các lô do trình sắp xếp thứ tự gửi (mỗi lô có nhiều giao dịch của người dùng) và chi phí cuối cùng được chia đều giữa những người khởi tạo giao dịch. Thuật toán định giá phí được tạo ra khi phát hành dữ liệu rất linh hoạt và trình sắp xếp sẽ định giá dựa trên trạng thái lãi lỗ gần đây, quy mô lô và giá gas Ethereum hiện tại.
Chi phí mà người dùng phải chịu do chiếm tài nguyên Lớp 2 đặt giới hạn gas mỗi giây có thể đảm bảo hệ thống hoạt động ổn định (hiện tại Arbitrum One là 7 triệu). Giá hướng dẫn khí của L1 và L2 được ArbOS theo dõi và điều chỉnh và các công thức sẽ không được mô tả ở đây vào thời điểm hiện tại.

Mặc dù quy trình tính giá gas cụ thể tương đối phức tạp nhưng người dùng không cần phải hãy lưu ý về nó Nhìn vào những chi tiết này, có thể thấy rõ rằng phí giao dịch Rollup rẻ hơn nhiều so với phí giao dịch trên mạng chính ETH.
Bằng chứng gian lận lạc quan
Nhắc lại những điều trên, L2 thực chất chỉ là công cụ phân loại trong hộp nhanh Hình chiếu của lô đầu vào giao dịch được gửi trong , đó là:
Đầu vào giao dịch -> STF -> Đầu ra trạng thái. Đầu vào đã được xác định, STF không thay đổi và kết quả đầu ra cũng được xác định.Hệ thống chống gian lận và giao thức Arbitrum Rollup là công bố gốc trạng thái đầu ra lên L1 dưới dạng RBlock (hay còn gọi là xác nhận) và Một hệ thống chứng minh lạc quan.
Trên L1, có dữ liệu đầu vào được công bố bởi trình sắp xếp chuỗi và trạng thái đầu ra được công bố bởi trình xác minh. Hãy xem xét kỹ xem có cần thiết phải công bố trạng thái của Lớp 2 lên chuỗi không?
Vì đầu vào đã xác định hoàn toàn đầu ra và dữ liệu đầu vào được hiển thị công khai nên việc gửi trạng thái kết quả đầu ra có vẻ dư thừa? Nhưng ý tưởng này bỏ qua nhu cầu thực tế về giải quyết trạng thái giữa hai hệ thống L1-L2, nghĩa là hành vi rút L2 về L1 yêu cầu bằng chứng về trạng thái.
Khi xây dựng Rollup, một trong những ý tưởng cốt lõi là đưa phần lớn công việc tính toán và lưu trữ lên L2 để tránh chi phí cao của L1, nghĩa là L1 không biết trạng thái của L2. Nó chỉ giúp bộ phân loại L2 công bố dữ liệu đầu vào của tất cả các giao dịch chứ không chịu trách nhiệm tính toán trạng thái của L2.
Hành vi rút tiền về cơ bản dựa trên thông báo chuỗi chéo do L2 đưa ra, mở khóa số tiền tương ứng từ hợp đồng L1 và chuyển chúng vào tài khoản L1 của người dùng hoặc thực hiện các nhiệm vụ khác đồ đạc.
Tại thời điểm này, hợp đồng Lớp 1 sẽ hỏi: Trạng thái của bạn trên Lớp 2 là gì và làm cách nào để chứng minh rằng bạn thực sự có những tuyên bố này để vượt qua? . Tại thời điểm này, người dùng phải cung cấp Bằng chứng Merkle tương ứng, v.v.

Vì vậy, nếu chúng tôi xây dựng một Bản tổng hợp mà không có chức năng rút tiền thì về mặt lý thuyết là không thể đồng bộ hóa trạng thái với L1 và không cần hệ thống chứng minh trạng thái như bằng chứng gian lận (mặc dù có thể gây ra các vấn đề khác). Nhưng trong các ứng dụng thực tế, điều này rõ ràng là không khả thi.
Trong cái gọi là bằng chứng lạc quan, hợp đồng không kiểm tra xem trạng thái đầu ra được gửi tới L1 có chính xác hay không và tin tưởng một cách lạc quan rằng mọi thứ đều chính xác. Hệ thống bằng chứng lạc quan sẽ cho rằng có ít nhất một Người xác thực trung thực bất cứ lúc nào. Nếu xảy ra trạng thái không chính xác, trạng thái đó sẽ bị thách thức thông qua bằng chứng gian lận.
Ưu điểm của thiết kế này là không cần phải chủ động xác minh mọi RBlock được cấp cho L1 để tránh lãng phí gas. Trên thực tế, đối với OPR, việc xác minh mọi xác nhận là không thực tế, vì mỗi Rblock chứa một hoặc nhiều khối L2 và mỗi giao dịch phải được thực hiện lại trên L1, không khác gì việc thực hiện các giao dịch L2 trực tiếp trên L1, điều này làm mất đi giá trị ý nghĩa của việc mở rộng Lớp 2.
ZKR không gặp phải vấn đề này vì ZK Proof rất ngắn gọn. Nó chỉ cần xác minh một Bằng chứng rất nhỏ và không cần thực sự thực hiện nhiều bước tương ứng đằng sau Bằng chứng giao dịch. Do đó, ZKR hoạt động không lạc quan, mỗi khi trạng thái được giải phóng sẽ có hợp đồng Verfier để xác minh toán học.
Mặc dù bằng chứng gian lận không thể ngắn gọn như bằng chứng không có kiến thức, Arbitrum sử dụng phương pháp vòng tròn "bằng chứng chia nhiều vòng-một bước" Trong Quá trình tương tác, điều cuối cùng cần chứng minh chỉ là một mã vận hành máy ảo duy nhất và chi phí tương đối nhỏ.
Giao thức cuộn lên
Trước tiên, chúng ta hãy xem lối vào để bắt đầu thử thách và bắt đầu proofs , tức là cách thức hoạt động của giao thức Rollup.
Hợp đồng cốt lõi của giao thức Rollup là RollupProxy.sol. Trong khi đảm bảo cấu trúc dữ liệu nhất quán, cấu trúc tác nhân kép hiếm được sử dụng, một tác nhân tương ứng với The hai triển khai RollupUserLogic.sol và RollupAdminLogic.sol hiện không thể phân tích cú pháp tốt trong các công cụ như Quét.
Ngoài ra, còn có hợp đồng ChallengeManager.sol chịu trách nhiệm quản lý các thách thức và chuỗi hợp đồng OneStepProver để xác định bằng chứng gian lận.

(Nguồn: Trang web chính thức của L2BEAT)
Trong RollupProxy, các bản ghi được xử lý bằng nhiều cách khác nhau Trình xác thực Một loạt RBlock được gửi (còn gọi là xác nhận), tức là các hộp trong hình bên dưới: xanh lục - đã xác nhận, xanh lam - chưa được xác nhận, vàng - giả mạo.

RBlock chứa The trạng thái cuối cùng sau khi thực hiện một hoặc nhiều khối L2 kể từ RBlock cuối cùng. Các RBlock này tạo thành một Chuỗi tổng hợp chính thức (lưu ý rằng bản thân sổ cái L2 thì khác). Trong những trường hợp lạc quan, Chuỗi tổng hợp này sẽ không có phân nhánh vì phân nhánh có nghĩa là Người xác thực đã gửi Khối tổng hợp xung đột.
Để đề xuất hoặc đồng ý với một xác nhận, người xác minh cần phải cam kết một lượng ETH nhất định cho xác nhận đó và trở thành Người đặt cược. Bằng cách này, khi xảy ra bằng chứng thách thức/lừa đảo, tài sản thế chấp của người thua cuộc sẽ bị tịch thu, đây là cơ sở kinh tế để đảm bảo hành vi trung thực của người xác minh.
Khối màu xanh số 111 ở góc dưới bên phải của bức ảnh cuối cùng sẽ bị làm sai lệch vì khối gốc số 104 của nó sai (màu vàng).
Ngoài ra, người xác minh A đã đề xuất Khối tổng hợp số 106, nhưng B không đồng ý và phản đối nó.

Cuối cùng thì thử thách ở B , hợp đồng ChallengeManager chịu trách nhiệm xác minh quy trình phân chia của các bước thử thách:
1. Phân chia là một quá trình trong đó cả hai bên thay phiên nhau thực hiện Dữ liệu lịch sử chứa trong mỗi Khối tổng hợp được phân đoạn và bên kia chỉ ra phần nào của đoạn dữ liệu có vấn đề. Một quá trình tương tự như sự phân đôi (thực tế là N/K) liên tục và dần dần thu hẹp phạm vi.
2. Sau đó, bạn có thể tiếp tục xác định giao dịch và kết quả có vấn đề, sau đó chia nhỏ nó thành một lệnh máy còn tranh chấp trong giao dịch.
3. Hợp đồng ChallengeManager chỉ kiểm tra xem "các đoạn dữ liệu" được tạo sau khi phân đoạn dữ liệu gốc có hợp lệ hay không.
4. Khi người thách đấu và người bị thách thức xác định hướng dẫn máy sẽ bị thách thức, người thách thức gọi oneStepProveExecution() để gửi lệnh A step- bằng chứng gian lận từng bước chứng minh rằng có điều gì đó không đúng với kết quả thực hiện lệnh máy này.

Bằng chứng một bước< / h3>Bằng chứng một bước là cốt lõi của toàn bộ bằng chứng gian lận của Arbitrum. Chúng ta hãy xem chứng minh một bước cụ thể chứng minh điều gì.
Điều này trước tiên đòi hỏi phải hiểu WAVM, Máy ảo Wasm Arbitrum, là một máy ảo được biên soạn bởi mô-đun ArbOS và mô-đun lõi Geth (máy khách Ethereum). Vì L2 rất khác với L1 ở nhiều chỗ nên lõi Geth ban đầu phải được sửa đổi nhẹ và hoạt động cùng với ArbOS.
Vì vậy, quá trình chuyển đổi trạng thái trên L2 thực sự là công việc chung của ArbOS+Geth Core.

Trọng tài Máy khách nút (trình tự sắp xếp, trình xác thực, nút đầy đủ, v.v.) biên dịch chương trình xử lý ArbOS+Geth Core nêu trên thành mã máy gốc mà máy chủ nút có thể xử lý trực tiếp (dành cho x86/ARM/PC/Mac/v.v.).
Nếu bạn thay đổi ngôn ngữ đích thu được sau khi biên dịch thành Wasm, bạn sẽ nhận được WAVM được người xác minh sử dụng khi tạo bằng chứng gian lận và hợp đồng xác minh bằng chứng một bước, cũng mô phỏng các chức năng của máy ảo WAVM.
Vậy tại sao nó cần được biên dịch thành mã byte Wasm khi tạo bằng chứng gian lận? Lý do chính là để xác minh hợp đồng chống gian lận một bước, cần sử dụng hợp đồng thông minh Ethereum để mô phỏng máy ảo VM có thể xử lý một bộ hướng dẫn nhất định và WASM rất dễ thực hiện mô phỏng trên hợp đồng.

Nhưng so với mã máy Native thì WASM chạy nhanh hơn một chút chậm hơn, vì vậy các nút/hợp đồng của Arbitrum sẽ chỉ sử dụng WAVM khi tạo và xác minh bằng chứng gian lận.
Sau các vòng phân chia tương tác trước đó, chứng minh một bước cuối cùng đã chứng minh được hướng dẫn một bước trong tập lệnh WAVM.
Như bạn có thể thấy từ đoạn mã bên dưới, OneStepProofEntry trước tiên phải xác định mã hoạt động của lệnh cần được chứng minh thuộc về danh mục nào, sau đó gọi bộ chứng minh tương ứng như vậy như Mem, Math, v.v. Chuyển hướng dẫn từng bước vào hợp đồng của người chứng minh.

Kết quả cuối cùng sauHash sẽ được trả về ChallengeManager. Nếu hàm băm Nếu hàm băm sau thao tác lệnh không nhất quán với hàm băm được ghi trên Khối tổng hợp thì thử thách đã thành công. Nếu chúng nhất quán, điều đó có nghĩa là không có vấn đề gì với kết quả thực thi của lệnh này được ghi trên Khối tổng hợp và thử thách đã thất bại.

Trong bài viết tiếp theo, chúng ta sẽ phân tích Arbitrum và thậm chí cả hợp đồng Layer2 và Layer1 A mô-đun xử lý các chức năng nhắn tin/cầu nối chuỗi chéo và làm rõ hơn cách Lớp 2 thực sự sẽ đạt được khả năng chống kiểm duyệt.