Chúng tôi bắt đầu xây dựng Reth vào năm 2022 để cung cấp sự chống chịu cho Ethereum L1, và giải quyết việc mở rộng lớp thực thi trên Layer 2.
Hôm nay, chúng tôi rất háo hức chia sẻ con đường của Reth để đạt 1 gigagas mỗi giây trong L2 vào năm 2024, và lộ trình dài hạn của chúng tôi để vượt qua điều đó.
Chúng tôi mời cộng đồng hệ sinh thái hợp tác với chúng tôi khi chúng tôi đẩy ranh giới về hiệu suất và đánh giá mạnh mẽ trong lĩnh vực tiền điện tử.
Có một con đường rất đơn giản để tiền điện tử đạt tỷ lệ quy mô toàn cầu và thoát khỏi việc đầu cơ như trường hợp sử dụng chủ yếu: Giao dịch cần phải rẻ và nhanh chóng.
Hiệu suất thường được đo bằng chỉ số “Giao dịch trên Giây” (TPS). Đối với Ethereum và các blockchain EVM khác, một chỉ số có thể chính xác hơn là “gas trên giây.” Chỉ số này phản ánh lượng công việc tính toán mà mạng có thể xử lý mỗi giây, trong đó “gas” là đơn vị đo lường nỗ lực tính toán cần thiết để thực hiện các giao dịch hoặc hợp đồng thông minh.
Tiêu chuẩn hóa xung quanh khí mỗi giây như một chỉ số hiệu suất cho phép hiểu rõ hơn về khả năng và hiệu suất của một chuỗi khối. Nó cũng giúp đánh giá các hậu quả về chi phí trên hệ thống, bảo vệ chống lại các cuộc tấn công từ chối dịch vụ tiềm ẩn có thể lợi dụng các đo lường ít tinh vi hơn. Chỉ số này giúp so sánh hiệu suất trên các chuỗi tương thích với Máy ảo Ethereum (EVM) khác nhau.
Chúng tôi đề xuất cộng đồng EVM áp dụng gas mỗi giây như một chỉ số tiêu chuẩn, kèm theo việc tích hợp các chiều khác của giá gasđể tạo ra một tiêu chuẩn hiệu suất toàn diện.
Gas mỗi giây được xác định bằng cách chia sử dụng gas mục tiêu mỗi khối cho thời gian khối. Ở đây, chúng tôi giới thiệu khả năng thông lượng và độ trễ hiện tại của gas mỗi giây trên các chuỗi EVM L1 và L2 khác nhau (không đầy đủ):
Chúng tôi nhấn mạnh về gas mỗi giây để đánh giá kỹ lưỡng hiệu suất mạng EVM, bao gồm cả chi phí tính toán và lưu trữ. Các mạng như Solana, Sui hoặc Aptos không được bao gồm do mô hình chi phí riêng biệt của họ. Chúng tôi khuyến khích nỗ lực hòa hợp các mô hình chi phí trên tất cả các mạng blockchain để cho phép so sánh toàn diện và công bằng.
Chúng tôi đang làm việc trên một bộ công cụ đánh giá liên tục cho Reth sao chép công việc thực sự, nếu bạn muốn hợp tác vào điều này, vui lòng liên hệ. Chúng tôi cần một TPC Benchmarkcho các nút.
Chúng tôi đã được một phần động viên để xây dựng Reth vào năm 2022 bởi nhu cầu cấp bách phải có một ứng dụng được xây dựng một cách có mục đích cho web-scale rollups. Chúng tôi nghĩ rằng chúng tôi có một con đường tiến lên hứa hẹn.
Reth đã đạt 100-200mgas/s trong quá trình đồng bộ trực tiếp (bao gồm phục hồi của người gửi, thực hiện giao dịch và tính toán trie trên mỗi khối); 10 lần từ đây sẽ đưa chúng ta đến mục tiêu ngắn hạn của chúng ta là 1 gigagas/s.
Khi chúng tôi tiến triển phát triển Reth, kế hoạch mở rộng của chúng tôi phải cân bằng khả năng mở rộng với hiệu quả:
Các tối ưu hóa mà chúng tôi đang khám phá ở đây không liên quan đến việc giải quyết tăng trưởng của bang, mà chúng tôi đang nghiên cứu riêng.
Dưới đây là tóm tắt cách chúng tôi dự định đạt được mục tiêu đó:
Trên toàn bộ ngăn xếp, chúng tôi cũng đang tối ưu hóa cho IO và CPU bằng cách sử dụng mô hình actor, để cho phép mỗi phần của ngăn xếp được triển khai như một dịch vụ với kiểm soát tốt đẹp về sử dụng. Cuối cùng, chúng tôi đang tích cực đánh giá các cơ sở dữ liệu thay thế, nhưng chưa quyết định về ứng cử viên nào.
Mục tiêu của chúng tôi ở đây là tối đa hóa hiệu suất và hiệu quả của một máy chủ hoặc laptop chạy Reth.
Trong các môi trường blockchain như Máy ảo Ethereum (EVM), việc thực thi bytecode xảy ra thông qua một trình thông dịch, xử lý tuần tự các lệnh. Phương pháp này giới thiệu chi phí vì nó không thực hiện các hướng dẫn lắp ráp gốc trực tiếp, thay vào đó hoạt động thông qua lớp VM.
Biên dịch Just-In-Time (JIT) giải quyết vấn đề này bằng cách chuyển đổi bytecode thành mã máy native ngay trước khi thực thi, từ đó cải thiện hiệu suất bằng cách tránh qua quá trình phiên dịch của VM. Kỹ thuật này, biên dịch hợp đồng thành mã máy tối ưu từ trước, đã được cố định trong các VM khác như Java và WebAssembly.
Tuy nhiên, JIT có thể dễ bị tổn thương bởi mã độc được thiết kế để lợi dụng quá trình JIT, hoặc có thể quá chậm để chạy trực tiếp trong quá trình thực thi. Reth sẽ Ahead-of-Time (AOT) biên dịch các hợp đồng có nhu cầu cao nhất và lưu trữ chúng trên đĩa, để tránh bytecode không đáng tin cậy cố gắng lạm dụng bước biên dịch mã nguồn của chúng ta trong quá trình thực thi trực tiếp.
Chúng tôi đã đang làm việc trên một trình biên dịch JIT/AOT cho Revm, hiện đang được tích hợp với Reth. Chúng tôi sẽ công khai mã nguồn cho điều này trong những tuần sắp tới sau khi hoàn thành việc đo lường hiệu suất của chúng tôi. Khoảng 50% thời gian thực thi trung bình được dành cho trình thông dịch EVM, vì vậy điều này sẽ cung cấp cải tiến thực thi EVM khoảng ~2 lần, mặc dù trong một số trường hợp tải nặng hơn về tính toán thì có thể sẽ có tác động lớn hơn. Chúng tôi sẽ chia sẻ các bảng đo và tích hợp của trình biên dịch JIT EVM của chúng tôi trong Reth trong những tuần sắp tới.
Khái niệm về Máy Ảo Ethereum Song Song (Parallel EVM) cho phép xử lý giao dịch đồng thời, khác biệt so với mô hình thực thi tuần tự truyền thống của EVM. Chúng tôi có 2 hướng tiếp cận ở đây:
Dựa vào phân tích lịch sử của chúng tôi, kho lưu trữ Ethereum khoảng ~80% được truy cập một cách độc lập, có nghĩa là song song có thể mang lại cải tiến lên đến 5 lần trong việc thực thi EVM.
Chúng tôi vừa viết vềtác động của state root đối với hiệu suất và sự khác biệt giữa mô hình cơ sở dữ liệu Reth từ các khách hàng khác, cũng như lý do tại sao nó quan trọng.
Trong mô hình Reth, việc tính toán gốc trạng thái là một quy trình riêng biệt so với việc thực thi giao dịchxem chúng tôi mã), cho phép sử dụng các cửa hàng KV tiêu chuẩn không cần biết gì về trie. Điều này hiện mất >75% thời gian từ đầu đến cuối để niêm phong một khối và là một khu vực rất thú vị để tối ưu hóa.
Chúng tôi xác định 2 "chiến thắng dễ dàng" sau đây có thể mang lại cho chúng tôi hiệu suất gốc trạng thái gấp 2-3 lần mà không cần bất kỳ thay đổi giao thức nào:
Vượt xa điều đó, chúng ta thấy một số con đường phía trước bằng cách phân nhánh khỏi hành vi gốc trạng thái Ethereum L1.
Có một vài câu hỏi ở đây:
Chúng tôi sẽ thực hiện trên nhiều điểm trên trong suốt năm 2024 và đạt được mục tiêu 1gigagas/giây.
Tuy nhiên, việc tăng cường theo chiều dọc cuối cùng sẽ đối mặt với các giới hạn vật lý và thực tế. Không có một máy duy nhất nào có thể xử lý nhu cầu tính toán của thế giới. Chúng tôi nghĩ rằng có 2 con đường phía trước ở đây, cho phép chúng tôi mở rộng bằng cách giới thiệu thêm hộp khi tải thêm tăng lên:
Các ngăn xếp L2 ngày nay đòi hỏi chạy nhiều dịch vụ để theo dõi chuỗi: L1 CL, L1 EL, chức năng phái sinh L1 -> L2 (có thể được đóng gói với L2 EL), và L2 EL. Mặc dù tuyệt vời cho tính linh hoạt, điều này trở nên phức tạp khi chạy nhiều ngăn xếp nút. Hãy tưởng tượng phải chạy 100 rollups!
Chúng tôi muốn cho phép triển khai rollups trong cùng quy trình như Reth và giảm chi phí vận hành của việc chạy hàng nghìn rollups gần như về 0.
Chúng tôi đã bắt đầu với điều này với chúng tôi Các dự án mở rộng thực hiện ([1], [2]) , nhiều hơn trong những tuần tới đây.
Các bộ xử lý hiệu suất cao có thể có đủ cầu cần trên một chuỗi duy nhất đến mức cần mở rộng ra ngoài một máy duy nhất. Điều này không thể thực hiện trong các triển khai nút khối ngày nay.
Chúng tôi muốn cho phép chạy các nút Reth nguyên sinh trên đám mây, triển khai như một ngăn xếp dịch vụ có thể tự động mở rộng theo yêu cầu tính toán và sử dụng lưu trữ đối tượng trên đám mây hình như vô hạn. Đây là một kiến trúc phổ biến trong các dự án cơ sở dữ liệu không máy chủ như NeonDB, CockroachDB hoặc Amazon Aurora.
Xem sớm suy nghĩtừ nhóm của chúng tôi về một số cách chúng ta có thể giải quyết vấn đề này.
Chúng tôi dự định triển khai bản đồ con này một cách tăng dần cho tất cả người dùng Reth. Sứ mệnh của chúng tôi là cung cấp cho mọi người quyền truy cập vào 1 gigagas/s và hơn nữa. Chúng tôi sẽ thử nghiệm việc tối ưu hóa trên Reth AlphaNet, và chúng tôi hy vọng mọi người sẽ xây dựng các nút hiệu suất cao được sửa đổi bằng cách sử dụng Reth như một SDK.
Còn một số câu hỏi mà chúng tôi vẫn chưa tìm ra câu trả lời.
Chúng tôi không có câu trả lời cho nhiều câu hỏi này, nhưng chúng tôi có đủ dẫn đầu hứa hẹn ban đầu để giữ cho chúng tôi bận rộn trong một thời gian và hy vọng thấy những nỗ lực này mang lại kết quả trong những tháng tới.
Chúng tôi bắt đầu xây dựng Reth vào năm 2022 để cung cấp sự chống chịu cho Ethereum L1, và giải quyết việc mở rộng lớp thực thi trên Layer 2.
Hôm nay, chúng tôi rất háo hức chia sẻ con đường của Reth để đạt 1 gigagas mỗi giây trong L2 vào năm 2024, và lộ trình dài hạn của chúng tôi để vượt qua điều đó.
Chúng tôi mời cộng đồng hệ sinh thái hợp tác với chúng tôi khi chúng tôi đẩy ranh giới về hiệu suất và đánh giá mạnh mẽ trong lĩnh vực tiền điện tử.
Có một con đường rất đơn giản để tiền điện tử đạt tỷ lệ quy mô toàn cầu và thoát khỏi việc đầu cơ như trường hợp sử dụng chủ yếu: Giao dịch cần phải rẻ và nhanh chóng.
Hiệu suất thường được đo bằng chỉ số “Giao dịch trên Giây” (TPS). Đối với Ethereum và các blockchain EVM khác, một chỉ số có thể chính xác hơn là “gas trên giây.” Chỉ số này phản ánh lượng công việc tính toán mà mạng có thể xử lý mỗi giây, trong đó “gas” là đơn vị đo lường nỗ lực tính toán cần thiết để thực hiện các giao dịch hoặc hợp đồng thông minh.
Tiêu chuẩn hóa xung quanh khí mỗi giây như một chỉ số hiệu suất cho phép hiểu rõ hơn về khả năng và hiệu suất của một chuỗi khối. Nó cũng giúp đánh giá các hậu quả về chi phí trên hệ thống, bảo vệ chống lại các cuộc tấn công từ chối dịch vụ tiềm ẩn có thể lợi dụng các đo lường ít tinh vi hơn. Chỉ số này giúp so sánh hiệu suất trên các chuỗi tương thích với Máy ảo Ethereum (EVM) khác nhau.
Chúng tôi đề xuất cộng đồng EVM áp dụng gas mỗi giây như một chỉ số tiêu chuẩn, kèm theo việc tích hợp các chiều khác của giá gasđể tạo ra một tiêu chuẩn hiệu suất toàn diện.
Gas mỗi giây được xác định bằng cách chia sử dụng gas mục tiêu mỗi khối cho thời gian khối. Ở đây, chúng tôi giới thiệu khả năng thông lượng và độ trễ hiện tại của gas mỗi giây trên các chuỗi EVM L1 và L2 khác nhau (không đầy đủ):
Chúng tôi nhấn mạnh về gas mỗi giây để đánh giá kỹ lưỡng hiệu suất mạng EVM, bao gồm cả chi phí tính toán và lưu trữ. Các mạng như Solana, Sui hoặc Aptos không được bao gồm do mô hình chi phí riêng biệt của họ. Chúng tôi khuyến khích nỗ lực hòa hợp các mô hình chi phí trên tất cả các mạng blockchain để cho phép so sánh toàn diện và công bằng.
Chúng tôi đang làm việc trên một bộ công cụ đánh giá liên tục cho Reth sao chép công việc thực sự, nếu bạn muốn hợp tác vào điều này, vui lòng liên hệ. Chúng tôi cần một TPC Benchmarkcho các nút.
Chúng tôi đã được một phần động viên để xây dựng Reth vào năm 2022 bởi nhu cầu cấp bách phải có một ứng dụng được xây dựng một cách có mục đích cho web-scale rollups. Chúng tôi nghĩ rằng chúng tôi có một con đường tiến lên hứa hẹn.
Reth đã đạt 100-200mgas/s trong quá trình đồng bộ trực tiếp (bao gồm phục hồi của người gửi, thực hiện giao dịch và tính toán trie trên mỗi khối); 10 lần từ đây sẽ đưa chúng ta đến mục tiêu ngắn hạn của chúng ta là 1 gigagas/s.
Khi chúng tôi tiến triển phát triển Reth, kế hoạch mở rộng của chúng tôi phải cân bằng khả năng mở rộng với hiệu quả:
Các tối ưu hóa mà chúng tôi đang khám phá ở đây không liên quan đến việc giải quyết tăng trưởng của bang, mà chúng tôi đang nghiên cứu riêng.
Dưới đây là tóm tắt cách chúng tôi dự định đạt được mục tiêu đó:
Trên toàn bộ ngăn xếp, chúng tôi cũng đang tối ưu hóa cho IO và CPU bằng cách sử dụng mô hình actor, để cho phép mỗi phần của ngăn xếp được triển khai như một dịch vụ với kiểm soát tốt đẹp về sử dụng. Cuối cùng, chúng tôi đang tích cực đánh giá các cơ sở dữ liệu thay thế, nhưng chưa quyết định về ứng cử viên nào.
Mục tiêu của chúng tôi ở đây là tối đa hóa hiệu suất và hiệu quả của một máy chủ hoặc laptop chạy Reth.
Trong các môi trường blockchain như Máy ảo Ethereum (EVM), việc thực thi bytecode xảy ra thông qua một trình thông dịch, xử lý tuần tự các lệnh. Phương pháp này giới thiệu chi phí vì nó không thực hiện các hướng dẫn lắp ráp gốc trực tiếp, thay vào đó hoạt động thông qua lớp VM.
Biên dịch Just-In-Time (JIT) giải quyết vấn đề này bằng cách chuyển đổi bytecode thành mã máy native ngay trước khi thực thi, từ đó cải thiện hiệu suất bằng cách tránh qua quá trình phiên dịch của VM. Kỹ thuật này, biên dịch hợp đồng thành mã máy tối ưu từ trước, đã được cố định trong các VM khác như Java và WebAssembly.
Tuy nhiên, JIT có thể dễ bị tổn thương bởi mã độc được thiết kế để lợi dụng quá trình JIT, hoặc có thể quá chậm để chạy trực tiếp trong quá trình thực thi. Reth sẽ Ahead-of-Time (AOT) biên dịch các hợp đồng có nhu cầu cao nhất và lưu trữ chúng trên đĩa, để tránh bytecode không đáng tin cậy cố gắng lạm dụng bước biên dịch mã nguồn của chúng ta trong quá trình thực thi trực tiếp.
Chúng tôi đã đang làm việc trên một trình biên dịch JIT/AOT cho Revm, hiện đang được tích hợp với Reth. Chúng tôi sẽ công khai mã nguồn cho điều này trong những tuần sắp tới sau khi hoàn thành việc đo lường hiệu suất của chúng tôi. Khoảng 50% thời gian thực thi trung bình được dành cho trình thông dịch EVM, vì vậy điều này sẽ cung cấp cải tiến thực thi EVM khoảng ~2 lần, mặc dù trong một số trường hợp tải nặng hơn về tính toán thì có thể sẽ có tác động lớn hơn. Chúng tôi sẽ chia sẻ các bảng đo và tích hợp của trình biên dịch JIT EVM của chúng tôi trong Reth trong những tuần sắp tới.
Khái niệm về Máy Ảo Ethereum Song Song (Parallel EVM) cho phép xử lý giao dịch đồng thời, khác biệt so với mô hình thực thi tuần tự truyền thống của EVM. Chúng tôi có 2 hướng tiếp cận ở đây:
Dựa vào phân tích lịch sử của chúng tôi, kho lưu trữ Ethereum khoảng ~80% được truy cập một cách độc lập, có nghĩa là song song có thể mang lại cải tiến lên đến 5 lần trong việc thực thi EVM.
Chúng tôi vừa viết vềtác động của state root đối với hiệu suất và sự khác biệt giữa mô hình cơ sở dữ liệu Reth từ các khách hàng khác, cũng như lý do tại sao nó quan trọng.
Trong mô hình Reth, việc tính toán gốc trạng thái là một quy trình riêng biệt so với việc thực thi giao dịchxem chúng tôi mã), cho phép sử dụng các cửa hàng KV tiêu chuẩn không cần biết gì về trie. Điều này hiện mất >75% thời gian từ đầu đến cuối để niêm phong một khối và là một khu vực rất thú vị để tối ưu hóa.
Chúng tôi xác định 2 "chiến thắng dễ dàng" sau đây có thể mang lại cho chúng tôi hiệu suất gốc trạng thái gấp 2-3 lần mà không cần bất kỳ thay đổi giao thức nào:
Vượt xa điều đó, chúng ta thấy một số con đường phía trước bằng cách phân nhánh khỏi hành vi gốc trạng thái Ethereum L1.
Có một vài câu hỏi ở đây:
Chúng tôi sẽ thực hiện trên nhiều điểm trên trong suốt năm 2024 và đạt được mục tiêu 1gigagas/giây.
Tuy nhiên, việc tăng cường theo chiều dọc cuối cùng sẽ đối mặt với các giới hạn vật lý và thực tế. Không có một máy duy nhất nào có thể xử lý nhu cầu tính toán của thế giới. Chúng tôi nghĩ rằng có 2 con đường phía trước ở đây, cho phép chúng tôi mở rộng bằng cách giới thiệu thêm hộp khi tải thêm tăng lên:
Các ngăn xếp L2 ngày nay đòi hỏi chạy nhiều dịch vụ để theo dõi chuỗi: L1 CL, L1 EL, chức năng phái sinh L1 -> L2 (có thể được đóng gói với L2 EL), và L2 EL. Mặc dù tuyệt vời cho tính linh hoạt, điều này trở nên phức tạp khi chạy nhiều ngăn xếp nút. Hãy tưởng tượng phải chạy 100 rollups!
Chúng tôi muốn cho phép triển khai rollups trong cùng quy trình như Reth và giảm chi phí vận hành của việc chạy hàng nghìn rollups gần như về 0.
Chúng tôi đã bắt đầu với điều này với chúng tôi Các dự án mở rộng thực hiện ([1], [2]) , nhiều hơn trong những tuần tới đây.
Các bộ xử lý hiệu suất cao có thể có đủ cầu cần trên một chuỗi duy nhất đến mức cần mở rộng ra ngoài một máy duy nhất. Điều này không thể thực hiện trong các triển khai nút khối ngày nay.
Chúng tôi muốn cho phép chạy các nút Reth nguyên sinh trên đám mây, triển khai như một ngăn xếp dịch vụ có thể tự động mở rộng theo yêu cầu tính toán và sử dụng lưu trữ đối tượng trên đám mây hình như vô hạn. Đây là một kiến trúc phổ biến trong các dự án cơ sở dữ liệu không máy chủ như NeonDB, CockroachDB hoặc Amazon Aurora.
Xem sớm suy nghĩtừ nhóm của chúng tôi về một số cách chúng ta có thể giải quyết vấn đề này.
Chúng tôi dự định triển khai bản đồ con này một cách tăng dần cho tất cả người dùng Reth. Sứ mệnh của chúng tôi là cung cấp cho mọi người quyền truy cập vào 1 gigagas/s và hơn nữa. Chúng tôi sẽ thử nghiệm việc tối ưu hóa trên Reth AlphaNet, và chúng tôi hy vọng mọi người sẽ xây dựng các nút hiệu suất cao được sửa đổi bằng cách sử dụng Reth như một SDK.
Còn một số câu hỏi mà chúng tôi vẫn chưa tìm ra câu trả lời.
Chúng tôi không có câu trả lời cho nhiều câu hỏi này, nhưng chúng tôi có đủ dẫn đầu hứa hẹn ban đầu để giữ cho chúng tôi bận rộn trong một thời gian và hy vọng thấy những nỗ lực này mang lại kết quả trong những tháng tới.