Tựa gốc: "Bedrock Người giải thích"

Được viết bởi: Quan chức lạc quan

Biên soạn bởi: Frank, Tin tức tầm nhìn xa

Bedrock là tên của phiên bản chính thức đầu tiên của OP Stack, một tập hợp các thành phần mô-đun nguồn mở và miễn phí được thiết kế để thúc đẩy sự phát triển của Optimism.

Tóm tắt cải tiến

Bedrock cải tiến so với người tiền nhiệm của nó, bao gồm:

  • Giảm phí giao dịch bằng cách sử dụng tính năng nén giao dịch hàng loạt được tối ưu hóa và Ethereum làm lớp sẵn có của dữ liệu;

  • Giảm độ trễ trong việc đóng gói các giao dịch L1 thành các bản tổng hợp thông qua việc xử lý tốt hơn việc tổ chức lại L1;

  • Kích hoạt hệ thống chứng minh mô-đun thông qua việc tái sử dụng mã;

  • Cải thiện hiệu suất nút bằng cách loại bỏ nợ thiết kế.

phí thấp hơn

Bedrock sử dụng chiến lược nén dữ liệu được tối ưu hóa để giảm thiểu chi phí dữ liệu. Chúng tôi hiện đang đánh giá tác động của thay đổi này nhưng chúng tôi hy vọng nó sẽ giảm đáng kể phí.

Bedrock cũng loại bỏ tất cả chi phí gas liên quan đến việc thực thi EVM khi gửi dữ liệu tới L1, điều này sẽ giảm chi phí thêm 10% so với các phiên bản trước của giao thức.

Thời gian tín dụng tiền gửi ngắn hơn

Bedrock đã giới thiệu hỗ trợ sắp xếp lại L1 trong phần mềm nút, giúp giảm đáng kể thời gian người dùng phải chờ ghi có tiền gửi.

Các phiên bản trước của giao thức có thể mất tới 10 phút để xác nhận khoản tiền gửi, trong khi với Bedrock, chúng tôi dự kiến ​​khoản tiền gửi sẽ được xác nhận trong vòng 3 phút.

Cải thiện bằng chứng mô-đun

Bedrock trừu tượng hóa hệ thống chứng minh từ Ngăn xếp OP để bản tổng hợp có thể sử dụng các bằng chứng lỗi hoặc bằng chứng hợp lệ (chẳng hạn như zk-SNARK) để chứng minh việc thực thi chính xác sau khi nhập vào bản tổng hợp. Bản tóm tắt này cũng sẽ cho phép sử dụng Cannon để chứng minh. lỗi hệ thống.

Cải thiện hiệu suất nút

Hiệu suất phần mềm nút được cải thiện đáng kể bằng cách thực hiện nhiều giao dịch trong một "khối" tổng hợp thay vì mô hình "một giao dịch trên mỗi khối" của các phiên bản trước.

Điều này cho phép chi phí cập nhật Merkle Trie được trải rộng trên nhiều giao dịch, với khối lượng giao dịch hiện tại sẽ làm giảm mức tăng trưởng dữ liệu trạng thái khoảng 15GB mỗi năm.

Hiệu suất của nút cũng được cải thiện hơn nữa bằng cách loại bỏ nợ kỹ thuật khỏi các phiên bản trước của giao thức, bao gồm loại bỏ nhu cầu về nút "lớp vận chuyển dữ liệu" riêng biệt để lập chỉ mục L1 và cập nhật phần mềm nút để truy vấn hiệu quả các giao dịch từ dữ liệu L1.

Cải thiện tính tương đương của Ethereum

Bedrock được thiết kế ngay từ đầu để "nhất quán" với Ethereum nhất có thể và nhiều sai lệch so với Ethereum trong các phiên bản trước của giao thức đã bị loại bỏ, bao gồm:

  • Mô hình “Một giao dịch trên mỗi khối”;

  • Tùy chỉnh opcode để lấy thông tin khối L1;

  • Các trường phí L1/L2 riêng biệt trong API JSON-RPC;

  • Trình bày ERC20 tùy chỉnh của số dư ETH.

Bedrock cũng đã bổ sung hỗ trợ cho EIP-1559, tổ chức lại blockchain và các tính năng Ethereum khác có trên L1.

Nguyên tắc thiết kế

Bedrock được xây dựng theo mô-đun và có thể mở rộng trong khi sử dụng lại mã hiện có từ Ethereum và hướng tới đạt được sự tương đương 100% với Ethereum bất cứ khi nào có thể.

Mô-đun

Bằng cách sử dụng các giao diện và sơ đồ phiên bản được xác định rõ ràng, Bedrock có thể dễ dàng thay thế các thành phần khác nhau trong ngăn xếp OP và thêm chức năng mới.

Điều này cho phép nó thích ứng với sự phát triển trong tương lai của hệ sinh thái Ethereum với kiến ​​trúc linh hoạt, chẳng hạn như:

  • Nút tổng hợp được tách biệt khỏi máy khách thực thi;

  • Thiết kế mô-đun chống lỗi.

tái sử dụng mã

Bedrock sử dụng kiến ​​trúc và cơ sở hạ tầng Ethereum hiện có bất cứ khi nào có thể. Cách tiếp cận này cho phép OP Stack kế thừa các lợi thế về bảo mật và hiệu ứng Lindy từ cơ sở mã đã được thử nghiệm trong trận chiến được sử dụng bởi mạng chính Ethereum.

Bạn sẽ tìm thấy các ví dụ về điều này trong suốt quá trình thiết kế, bao gồm:

  • máy khách thực thi được sửa đổi tối thiểu;

  • Hợp đồng EVM thay vì mã máy khách được biên dịch trước.

Tương đương Ethereum

Bedrock được thiết kế để tương thích tối đa với trải nghiệm của nhà phát triển Ethereum hiện có, nhưng có một số trường hợp ngoại lệ do sự khác biệt cơ bản giữa L1 ​​và rollup: mô hình phí khác nhau, thời gian chặn nhanh hơn (2 giây so với 12 giây) và các loại giao dịch đặc biệt bao gồm giao dịch tiền gửi L1.

Những ngoại lệ này bao gồm:

  • Kiểm tra lỗi của các ứng dụng khách thực thi Ethereum được thiết kế để chứng minh những sửa đổi tối thiểu;

  • Ethereum thực hiện tái sử dụng mã phía máy khách để các nút và người đặt hàng trong mạng L2 sử dụng.

giao thức

Các bản tổng hợp được xây dựng dựa trên tính sẵn có của dữ liệu (thường là chuỗi khối L1 như Ethereum). Trong cấu hình phổ biến nhất, giao thức tổng hợp lấy "chuỗi L2 chuẩn" từ hai nguồn thông tin chính:

  • Dữ liệu giao dịch được trình sắp xếp thứ tự xuất bản lên L1;

  • Giao dịch gửi tiền được gửi bằng tài khoản và hợp đồng thông minh tới hợp đồng bắc cầu trên L1.

Sau đây là các thành phần cơ bản của thỏa thuận:

  • Bằng cách tương tác trực tiếp với hợp đồng thông minh trên L1, tiền gửi được ghi vào “chuỗi L2 tiêu chuẩn”;

  • Việc rút tiền được ghi vào "chuỗi L2 chuẩn" và ngầm kích hoạt các tương tác với các hợp đồng và tài khoản thông minh trên L1;

  • Các đợt ghi dữ liệu tương ứng với các đợt khi tổng hợp;

  • Dẫn xuất khối là cách diễn giải dữ liệu đọc trên L1 để hiểu "chuỗi L2 chuẩn";

  • Hệ thống chứng minh xác định tính hữu hạn của các gốc đầu ra được xuất bản trên L1 để chúng có thể được thực thi (ví dụ: thực hiện rút tiền).

tiền gửi

Khoản tiền gửi là một giao dịch trên L1 và sẽ được bao gồm trong danh sách tổng hợp. Theo định nghĩa, tiền gửi được đảm bảo nằm trong "chuỗi L2 chuẩn" như một phương tiện để ngăn chặn việc kiểm duyệt hoặc kiểm soát L2.

Bất kỳ tin nhắn nào được gửi từ L1

Giao dịch gửi tiền là các giao dịch tổng hợp được thực hiện như một phần của khoản tiền gửi. Với Bedrock, tiền gửi là các giao dịch Ethereum hoàn toàn phổ quát, chẳng hạn như tài khoản trên Ethereum hoặc hợp đồng thông minh có thể tạo ra hợp đồng "tiền gửi".

Bedrock định nghĩa hợp đồng tiền gửi có sẵn trên L1: đó là hợp đồng thông minh mà tài khoản L1 và hợp đồng thông minh có thể tương tác để ghi vào L2. Giao dịch gửi tiền trên L2 được bắt nguồn từ các giao dịch do hợp đồng gửi tiền này phát hành và bao gồm các tham số dự kiến ​​như từ, đến và dữ liệu.

Vui lòng xem phần Thông số kỹ thuật của Thỏa thuận Hợp đồng Đặt cọc để biết chi tiết.

Mua Gas L2 được đảm bảo trên L1

Bedrock cũng làm rõ cơ chế đốt Gas và thị trường phí đặt cọc. Gas chi cho L2 bằng các giao dịch gửi tiền được mua trên L1 thông qua việc đốt Gas.

Gas này được mua cụ thể trên thị trường phí và có giới hạn cứng đối với tổng lượng Gas được cung cấp cho tất cả các giao dịch gửi tiền trong một khối L1. Cơ chế này được sử dụng để ngăn chặn các cuộc tấn công Từ chối dịch vụ (DoS) có thể xảy ra. Khi viết giao dịch từ L1 sang L2, vì các giao dịch này tiêu tốn rất nhiều Gas trên L2, nhưng lại rất rẻ trên L1.

Gas được cung cấp cho các giao dịch gửi tiền đôi khi được gọi là "Gas được đảm bảo". Gas được đảm bảo là duy nhất ở chỗ nó được thanh toán bằng cách đốt Gas trên L1 và do đó không được hoàn lại.

Và tổng lượng Gas L1 cần đốt trên mỗi đơn vị Gas L2 được đảm bảo phụ thuộc vào giá Gas L2 được báo cáo theo cơ chế sạc kiểu EIP-1559. Ngoài ra, người dùng còn nhận được trợ cấp gas động dựa trên lượng L1 Gas đã sử dụng để tính phí cập nhật cơ chế tính phí.

Để được giải thích sâu hơn, vui lòng đọc thông số kỹ thuật của giao thức trong phần gửi tiền.

Rút tiền

Rút tiền là các giao dịch xuyên lớp được bắt đầu trên L2 và được hoàn thành bởi các giao dịch được thực hiện trên L1. Điều đáng chú ý là tài khoản L2 có thể sử dụng tính năng rút tiền để gọi hợp đồng L1 hoặc chuyển ETH từ tài khoản L2 sang tài khoản L1.

Việc rút tiền được bắt đầu bằng cách gọi hợp đồng được triển khai trước Message Passer trên L2, hợp đồng này ghi lại các thuộc tính quan trọng của tin nhắn trong bộ lưu trữ của nó và sau đó việc rút tiền được hoàn thành trên L1 bằng cách gọi hợp đồng OptimismPortal để chứng minh sự bao gồm của thông báo rút tiền này.

Theo cách này, việc rút tiền và gửi tiền là khác nhau: Giao dịch rút tiền phải được hoàn thành bằng hợp đồng thông minh trên L1, thay vì dựa vào thông tin lấy từ các khối.

Quy trình rút tiền hai bước

Lỗi xác thực bằng chứng rút tiền là nguyên nhân sâu xa của nhiều vụ hack cầu nối chuỗi trong vài năm qua. Phiên bản Bedrock giới thiệu một bước bổ sung trong quy trình rút tiền của các phiên bản trước được thiết kế để cung cấp thêm biện pháp bảo vệ chống lại các loại lỗi này.

Trong quy trình rút tiền gồm hai bước, mỗi lần rút tiền phải gửi bằng chứng Merkle tương ứng với lần rút tiền 7 ngày trước lần thoát cuối cùng. Cơ chế bảo mật mới này cung cấp cho các công cụ giám sát đủ 7 ngày để tìm và phát hiện chứng chỉ rút tiền không hợp lệ.

Nếu chứng chỉ rút tiền được phát hiện là không hợp lệ trong thời gian này, việc sửa chữa hợp đồng thông minh có thể được triển khai trước khi tiền bị mất, điều này giúp giảm đáng kể nguy cơ thỏa hiệp cầu nối xuyên chuỗi.

Vui lòng xem phần Thông số kỹ thuật của Thỏa thuận rút tiền để biết chi tiết.

Trong Bedrock, định dạng có dây được xác định để truyền thông báo giữa L1 ​​và L2 (tức là L2 lấy các khối từ L1, L2 ghi giao dịch vào L1), định dạng có dây này được thiết kế để giảm chi phí ghi vào L1 và độ phức tạp của phần mềm ở mức tối thiểu.

Tối ưu hóa nén dữ liệu

Để tối ưu hóa việc nén dữ liệu, danh sách giao dịch L2 (được gọi là lô trình sắp xếp chuỗi) được sắp xếp thành các nhóm đối tượng (được gọi là kênh). Kích thước tối đa của mỗi kênh có thể được xác định trong một tham số có thể định cấu hình, ban đầu sẽ được đặt thành 9,5 M. Các kênh này. dự kiến ​​sẽ được nén bằng chức năng nén và gửi tới L1.

nộp song song hàng loạt

Để song song hóa các thông báo từ trình sắp xếp thứ tự gửi dữ liệu kênh nén tới L1, các kênh tiếp tục được phân tách thành "khung kênh", là các khối dữ liệu kênh nén có thể vừa với một giao dịch L1.

Giả sử rằng các "khung kênh" độc lập với nhau và thứ tự được biết trước, các giao dịch Ethereum được trình sắp xếp chuỗi gửi đến L1 có thể được gửi song song, do đó giảm thiểu độ phức tạp của phần mềm trình sắp xếp chuỗi và cho phép đệm tất cả không gian dữ liệu có sẵn trên L1.

Giảm thiểu khí Ethereum

Bedrock loại bỏ tất cả khí thực thi được hệ thống L1 sử dụng để gửi dữ liệu kênh tới L1 trong các giao dịch được gọi là "giao dịch theo đợt". Tất cả logic xác minh trước đây xảy ra trên hợp đồng thông minh L1 đã được chuyển sang logic phái sinh khối. Thay vào đó, "giao dịch theo đợt" được gửi đến một địa chỉ EOA duy nhất trên Ethereum, được gọi là "địa chỉ hộp thư đến theo đợt".

Các lô vẫn phải được kiểm tra tính hợp lệ (tức là chúng phải được mã hóa chính xác), cũng như các giao dịch riêng lẻ trong lô (ví dụ: chữ ký phải hợp lệ), các lô không hợp lệ và các giao dịch riêng lẻ không hợp lệ trong các lô hợp lệ được coi là bị loại bỏ và không liên quan đến hệ thống.

Lưu ý: Ethereum sẽ sớm được nâng cấp lên phiên bản mới bao gồm EIP-4844, giới thiệu thị trường phí ghi dữ liệu riêng và tăng giới hạn trên về lượng dữ liệu mà giao thức Ethereum sẵn sàng lưu trữ. Thay đổi này dự kiến ​​sẽ giảm hơn nữa. số lượng Chi phí liên quan đến việc xuất bản lên L1.

Để được giải thích sâu hơn, hãy đọc Đặc tả định dạng cáp.

Khối ngã ba

Trong Bedrock, giao thức được thiết kế để đảm bảo rằng thời gian gửi tiền trên L1 có liên quan đến nguồn gốc khối của "chuỗi L2 chuẩn". Điều này thực hiện là một chức năng thuần túy là ghi dữ liệu vào L1 thông qua các thuộc tính khối sắp xếp thứ tự, ký gửi và khối L1.

Để đạt được điều này, giao thức xác định các chiến lược đảm bảo tiền gửi, xử lý dấu thời gian L1 và L2 cũng như xử lý các cửa sổ đặt hàng trong kênh để đảm bảo đặt hàng chính xác.

Tiền gửi được đảm bảo vào tài khoản

Các mục tiêu của giao thức phái sinh khối được xác định như sau:

Sau khi mỗi "khoảng thời gian khối L2" trôi qua, phải có khối L2 và dấu thời gian của khối L2 được đồng bộ hóa với dấu thời gian của L1 (tức là đảm bảo rằng các khoản tiền gửi được đưa vào theo thứ tự thời gian hợp lý).

Trong Bedrock, khái niệm "kỷ nguyên sắp xếp" được đưa ra: đó là phạm vi của các khối L2 bắt nguồn từ một chuỗi các khối L1. Mỗi kỷ nguyên được xác định bằng một "số kỷ nguyên", bằng với số trong cửa sổ sắp xếp. Số thứ tự khối của khối L1 đầu tiên. Kích thước của các kỷ nguyên có thể khác nhau, tùy thuộc vào một số hạn chế.

Kênh bắt nguồn từ lô xử lý dấu thời gian của khối L1 được liên kết với "số kỷ nguyên" làm điểm neo để xác định thứ tự giao dịch trên L2. Giao thức đảm bảo rằng khối L2 đầu tiên của kỷ nguyên sẽ không bao giờ bị trễ so với dấu thời gian của khối L1 của kỷ nguyên phù hợp. Khối đầu tiên của kỷ nguyên phải chứa tiền gửi trên L1 để đảm bảo rằng tiền gửi sẽ được xử lý.

Lưu ý rằng trong phiên bản Bedrock, mục tiêu khoảng thời gian chặn trên L2 được định cấu hình là 2 giây.

Xử lý dấu thời gian L1 và L2

Bedrock cố gắng giải quyết vấn đề đối chiếu dấu thời gian trên L2 với dấu thời gian trên L1 tồn tại trong các giao dịch tiền gửi.

Nó thực hiện điều này bằng cách cho phép một khoảng thời gian ngắn để sắp xếp để tự do áp dụng dấu thời gian trên các giao dịch L2 giữa các kỷ nguyên.

Cửa sổ tuần tự là chuỗi các khối L1 mà từ đó các kỷ nguyên có thể được tạo ra. Trong cửa sổ sắp xếp, số khối L1 đầu tiên N chứa "các giao dịch theo đợt" của kỷ nguyên.​

Cửa sổ sắp xếp chứa các khối, tùy thuộc vào kích thước của cửa sổ sắp xếp: tham số cấu hình mức cuộn cố định phải có ít nhất là 2, việc tăng tham số này sẽ mang lại cho trình sắp xếp chuỗi nhiều cơ hội hơn để sắp xếp các giao dịch L2 trên tiền gửi, hạ thấp nó để sắp xếp trình tự Thời gian chặt chẽ hơn cửa sổ được máy chủ giới thiệu để gửi "giao dịch theo đợt". Đây là sự cân bằng giữa việc tạo ra các cơ hội MEV và việc tăng độ phức tạp của phần mềm.

Một hằng số giao thức được gọi là "độ lệch trình sắp xếp tối đa" kiểm soát dấu thời gian tối đa mà một khối có thể có trong kỷ nguyên của nó. Với độ lệch này, trình sắp xếp chuỗi có thể gặp sự cố tạm thời khi kết nối với L1.

Chặn đường ống ngã ba

"Chuỗi L2 chuẩn" có thể được xử lý từ đầu bằng cách bắt đầu từ trạng thái khởi tạo L2, đặt chuỗi L2 bắt đầu ở kỷ nguyên đầu tiên, sau đó xử lý tất cả các cửa sổ sắp xếp để xác định các lô trình sắp xếp theo thứ tự đơn giản hóa sau đây và Trình tự chính xác cho ống lắng đọng:

Bằng chứng thất bại

Sau khi trình sắp xếp chuỗi xử lý một hoặc nhiều khối L2, đầu ra từ các tính toán giao dịch được thực hiện trong các khối này sẽ cần phải được ghi bằng L1 để cho phép thực thi tin nhắn L2 đến L1 một cách không tin cậy, chẳng hạn như rút tiền, v.v.

Trong Bedrock, đầu ra được băm dưới dạng cấu trúc cây, giảm thiểu chi phí chứng minh bất kỳ phần dữ liệu nào được đầu ra thu thập. Những người đề xuất định kỳ gửi các gốc đầu ra tới L1 đóng vai trò là các gốc Merkle cho toàn bộ "chuỗi L2 chuẩn".

Các bản nâng cấp trong tương lai cho OP Stack phải bao gồm đặc điểm kỹ thuật của một biến thể chống lỗi với các ràng buộc để khuyến khích những người đề xuất đề xuất các gốc đầu ra chính xác.

Để biết chi tiết đầy đủ, hãy đọc đặc tả giao thức trong phần Đề xuất gốc đầu ra L2.

thực hiện

Ở Bedrock, OP Stack phải phụ thuộc rất nhiều vào sự phân tách các mối quan tâm kỹ thuật được chỉ định của Ethereum bằng cách phản ánh sự tách biệt giữa lớp thực thi và lớp đồng thuận của Ethereum.

Vì vậy, Bedrock đã giới thiệu việc tách các máy khách thực thi và các nút tổng hợp theo cách tương tự.

Thực thi khách hàng

Máy khách thực thi là các hệ thống mà trình sắp xếp thứ tự và các loại toán tử nút khác chạy để xác định trạng thái của chuỗi L2 chuẩn. Nó cũng thực hiện các chức năng khác như xử lý các giao dịch gửi đến và liên lạc ngang hàng, cũng như xử lý trạng thái của hệ thống để xử lý các truy vấn hướng đến nó.

Với Bedrock, OP Stack đặt mục tiêu sử dụng lại đặc tả ứng dụng khách thực thi của chính Ethereum và nhiều hoạt động thực thi của nó. Trong bản phát hành này, Bedrock đã trình diễn một sửa đổi cực kỳ hạn chế đối với ứng dụng khách Ethereum go-ethereum, với sự khác biệt chưa đến 2000 dòng mã.

Có hai lý do cơ bản cho sự khác biệt: xử lý giao dịch tiền gửi và tính phí giao dịch.

Xử lý giao dịch tiền gửi

Để thể hiện các giao dịch được gửi trong một danh sách tổng hợp, một loại giao dịch bổ sung sẽ được giới thiệu. Việc triển khai của khách hàng triển khai loại giao dịch mới này dựa trên tiêu chuẩn giao dịch loại EIP-2718.

Tính phí giao dịch

Về cơ bản, các bản tổng hợp cũng có hai loại phí liên quan đến giao dịch:

Một là phí sắp xếp thứ tự. Chi phí vận hành trình sắp xếp chuỗi được tính bằng cách sử dụng cùng một bảng khí và cùng thuật toán EIP-1559 như Ethereum, được giao thức sử dụng để vận hành trình sắp xếp chuỗi và dao động theo thời gian dựa trên tắc nghẽn mạng.

Một khoản phí sẵn có dữ liệu khác. Chi phí sẵn có của dữ liệu liên quan đến việc ghi các giao dịch hàng loạt vào L1 và nhằm mục đích trang trải phí của người sắp xếp thứ tự để gửi các giao dịch hàng loạt tới L1.

Trong Bedrock, phần phí sẵn có của dữ liệu được xác định dựa trên thông tin trong hợp đồng thông minh của hệ thống tổng hợp có tên GasPriceOracle, dựa trên các thuộc tính khối L1 được chèn vào đầu mỗi kỷ nguyên trong quá trình tạo khối. Thông tin về giá Gas được truy xuất. đã cập nhật.

Bedrock chỉ định rằng cả hai chi phí đều được thêm vào một trường khi sử dụng JSON-RPC.

nút cuộn

Không giống như Ethereum, Bedrock không có sự đồng thuận PoS. Ngược lại, sự đồng thuận của "chuỗi L2 chuẩn" được xác định bằng đạo hàm khối. Máy khách thực thi của OP Stack giao tiếp với một thành phần mới thực hiện phân nhánh khối được gọi là nút tổng hợp, giao tiếp với máy khách thực thi bằng cách sử dụng cùng một API công cụ như Ethereum.

Nút cuộn lên là một thành phần không trạng thái chịu trách nhiệm lấy trạng thái của hệ thống bằng cách đọc dữ liệu và gửi trên L1. Trong Bedrock, các nút tổng hợp có thể được sử dụng để sắp xếp thứ tự các giao dịch đến từ người dùng hoặc các nút tổng hợp khác hoặc để xác thực các giao dịch đã được xác nhận xuất bản trên L1 bằng cách chỉ dựa vào L1.

Các cách sử dụng khác nhau của các nút tổng hợp được tóm tắt dưới đây:

Xác minh "chuỗi L2 chuẩn"

Chế độ đơn giản nhất để chạy các nút cuộn lên là chỉ tuân theo "chuỗi L2 chuẩn". Trong chế độ này, nút tổng hợp không có nút ngang hàng và được sử dụng nghiêm ngặt để đọc dữ liệu từ L1 và giải thích dữ liệu theo quy tắc giao thức phái sinh khối.

Một mục đích của nút như vậy là để xác minh rằng mọi gốc đầu ra được chia sẻ bởi các nút khác hoặc được xuất bản trên L1 đều chính xác theo định nghĩa giao thức. Ngoài ra, những người đề xuất có ý định gửi gốc đầu ra tới L1 có thể tự mình sử dụng lạc quan_outputAtBlock để tạo gốc đầu ra mà họ cần và trả về hàm băm 32 byte tương ứng với gốc đầu ra L2.

Để thực hiện việc này, các nút chỉ cần tuân theo tiêu đề khối "đã hoàn thiện". Thuật ngữ "đã hoàn thiện" đề cập đến sự đồng thuận Ethereum PoS (tức là hợp quy và gần như không thể đảo ngược) và tiêu đề khối L2 "đã hoàn thiện" là khu vực của "chuỗi L2 chuẩn" chỉ bắt nguồn từ khối L1 "đã hoàn thiện". cái đầu.

Tham gia vào mạng L2

Cách phổ biến nhất để sử dụng nút cuộn lên là tham gia vào mạng lưới các nút cuộn lên khác, theo dõi các quy trình và trạng thái L2. Ở chế độ này, nút tổng hợp đồng thời đọc dữ liệu và gửi tiền mà nó quan sát được từ L1, diễn giải chúng thành các khối và chấp nhận các giao dịch gửi đến từ người dùng và các đồng nghiệp trong mạng của các nút tổng hợp khác.

Các nút tham gia vào mạng có thể sử dụng các tiêu đề khối an toàn và không an toàn của L2 mà chúng đang đồng bộ hóa.

  • Các tiêu đề khối L2 an toàn đại diện cho các bản cuộn có thể được xây dựng trong đó mỗi khối (bao gồm các tiêu đề) có thể được lấy hoàn toàn từ chuỗi L1 tham chiếu trước khi L1 phải được "hoàn thiện" (tức là việc tổ chức lại vẫn có thể xảy ra trên L1);

  • Các tiêu đề khối L2 không an toàn bao gồm các khối không an toàn chưa được lấy từ L1. Các khối này đến từ việc vận hành nút tổng hợp dưới dạng trình sắp xếp thứ tự hoặc từ việc đồng bộ hóa không an toàn với trình sắp xếp chuỗi. Đây còn được gọi là tiêu đề khối "mới nhất". Trong trường hợp không đồng ý, luôn chọn tiêu đề khối L2 an toàn thay vì tiêu đề khối L2 không an toàn. Khi xảy ra bất đồng, phần không an toàn của chuỗi sẽ tổ chức lại;

Trong hầu hết các trường hợp, đối với các ứng dụng của người dùng cuối, các nút tổng hợp trong mạng L2 sẽ tham chiếu các tiêu đề khối L2 không an toàn.

Sắp xếp giao dịch

Cách thứ ba để sử dụng các nút tổng hợp là đặt hàng các giao dịch. Ở chế độ này, các nút cuộn lên sẽ tạo các khối mới bên trên các tiêu đề khối L2 không an toàn. Hiện tại, chỉ có một trình sắp xếp thứ tự cho mỗi mạng OP Stack.

Trình sắp xếp thứ tự cũng chịu trách nhiệm xuất bản các lô giao dịch lên L1 để các nút khác trong mạng có thể đồng bộ hóa từ nó.

máy trộn

Vai trò của trình sắp xếp chuỗi là tạo ra các lô giao dịch, vì mục đích này, trình sắp xếp chuỗi có thể chạy các nút tổng hợp và có các quy trình riêng biệt thực thi các lô bằng cách đọc từ các nút tổng hợp đáng tin cậy mà chúng chạy trên đó.

Điều này đảm bảo rằng một thành phần bổ sung của OP Stack, được gọi là trình xử lý giao dịch hàng loạt, đọc dữ liệu giao dịch từ nút tổng hợp và diễn giải nó thành một giao dịch hàng loạt để ghi vào L1, thành phần bộ xử lý hàng loạt chịu trách nhiệm đọc và chạy bởi trình sắp xếp thứ tự Nút cuộn lên tiêu đề khối L2 không an toàn, tạo các giao dịch theo đợt và ghi chúng vào L1.

Hợp đồng cầu tiêu chuẩn

Bedrock cũng bao gồm một cặp hợp đồng bắc cầu dành cho các loại tiền gửi phổ biến nhất, được gọi là Hợp đồng cầu tiêu chuẩn. Các hợp đồng này gói gọn các hợp đồng gửi và rút tiền, cung cấp giao diện đơn giản để gửi và rút tiền ETH và mã thông báo ERC-20.

Các hợp đồng bắc cầu này được thiết kế sao cho một bên của cầu nối chuỗi chéo có mã thông báo gốc và bên kia chứa mã thông báo được bao bọc có thể quản lý việc đúc và đốt mã thông báo gốc liên quan đến việc khóa mã thông báo gốc trong hợp đồng và sau đó khóa mã thông báo gốc. mã thông báo gốc trong cầu nối chuỗi chéo. Phía bên kia tạo ra một lượng mã thông báo được đóng gói bằng nhau.

Để biết thêm thông tin, hãy xem phần Đặc tả giao thức cầu nối chuỗi chéo tiêu chuẩn.

Pháo

Mặc dù việc xây dựng và xác minh chống lỗi được triển khai trong Cannon, nhưng đặc tả trò chơi chống lỗi và việc tích hợp trình thách thức gốc đầu ra vào nút tổng hợp là một phần của các mốc đặc tả tiếp theo.

đọc thêm

Đặc tả giao thức

Đặc tả giao thức xác định các chi tiết kỹ thuật của OP Stack và là nguồn thông tin cập nhật nhất về hoạt động bên trong của giao thức.

Sự khác biệt nền tảng

Để có cái nhìn sâu hơn về sự khác biệt giữa Bedrock và các phiên bản trước, hãy xem Bedrock khác biệt như thế nào.