Lịch sử trong Ethereum bao gồm tất cả các khối và giao dịch thực thi trong suốt quãng đời của nó. Dữ liệu này cần thiết để đồng bộ chuỗi từ khối khởi tạo đến trạng thái hiện tại của nó. Sự phát triển lịch sử đề cập đến việc tích lũy các khối và giao dịch mới theo thời gian.
Hình 1 cho thấy mối quan hệ giữa sự phát triển lịch sử, các chỉ số giao thức khác nhau và giới hạn phần cứng của nút Ethereum. Không giống như sự phát triển của trạng thái, sự phát triển lịch sử bị ràng buộc bởi một tập hợp các giới hạn phần cứng khác nhau. Sự phát triển này tạo áp lực cho I/O mạng vì các khối mới và giao dịch phải được truyền qua mạng. Nó cũng làm căng thẳng không gian lưu trữ của nút, vì mỗi nút Ethereum lưu trữ một bản sao hoàn chỉnh của hồ sơ lịch sử. Nếu sự phát triển lịch sử vượt qua các giới hạn phần cứng này, các nút sẽ không còn có khả năng đạt được sự nhất quán ổn định với đồng nghiệp của họ. Để biết tổng quan về sự phát triển của trạng thái và các rào cản mở rộng khác, xemPhần 1của loạt này.
Hình 1: Chướng ngại vật mở rộng Ethereum
Cho đến gần đây, hầu hết băng thông mạng của mỗi nút được sử dụng để truyền tải các bản ghi lịch sử (ví dụ, các khối mới và giao dịch). Điều này đã thay đổi với sự giới thiệu của blobs trong Dencunhard fork. Blobs hiện nay chiếm một phần đáng kể của hoạt động mạng node. Tuy nhiên, blobs không được xem là một phần của hồ sơ lịch sử vì 1) các node lưu trữ chúng chỉ trong 2 tuần trước khi loại bỏ chúng, và 2) chúng không cần thiết để phát lại chuỗi từ Genesis. Do (1), blobs không làm tăng đáng kể gánh nặng lưu trữ trên mỗi node Ethereum. Chúng tôi sẽ thảo luận về blobs chi tiết hơn trong bài viết này sau.
Trong bài viết này, chúng tôi sẽ tập trung vào sự phát triển của dữ liệu lịch sử và mối quan hệ của nó với sự phát triển của trạng thái. Vì sự phát triển của trạng thái và lịch sử chia sẻ một số hạn chế phần cứng trùng lắp, chúng là những vấn đề có mối liên hệ; giải quyết một vấn đề có thể giúp hạn chế vấn đề khác.
Hình 2 cho thấy tỷ lệ tăng trưởng lịch sử theo thời gian kể từ khi Ethereum ra đời. Mỗi thanh dọc đại diện cho sự tăng trưởng trong một tháng. Trục Y đại diện cho số GB được thêm vào lịch sử trong tháng đó. Các giao dịch được phân loại theo “địa chỉ đích” của họ và kích thước được xác định bằng cách sử dụng của họRLPbiểu diễn byte. Các hợp đồng không thể được xác định dễ dàng được phân loại là “không rõ.” Danh mục “khác” bao gồm một loạt các danh mục nhỏ như cơ sở hạ tầng và game.
Có thể rút ra một số kết luận quan trọng từ biểu đồ này:
Số lượng dữ liệu lịch sử được tạo ra bởi mỗi danh mục hợp đồng cho thấy cách mà mẫu sử dụng Ethereum đã phát triển theo thời gian. Hình 3 cho thấy sự đóng góp tương đối của các danh mục hợp đồng khác nhau. Điều này sử dụng cùng dữ liệu như Hình 2, được chuẩn hóa thành 100%.
Dữ liệu cho thấy bốn giai đoạn riêng biệt trong các mẫu hình sử dụng Ethereum:
Thời kỳ đầu (Màu tím): Trong những năm đầu của Ethereum, hoạt động trên chuỗi khối là rất ít. Hầu hết các hợp đồng ban đầu này hiện tại rất khó nhận biết và được ghi nhãn là “không xác định” trên biểu đồ.
Kỷ nguyên ERC-20 (Màu xanh): tiêu chuẩn ERC-20đã hoàn thành vào cuối năm 2015 nhưng không đạt được sự chú ý đáng kể cho đến năm 2017 và 2018. Đến năm 2019, hợp đồng ERC-20 trở thành danh mục lớn nhất trong sự phát triển lịch sử.
Thời kỳ DEX/DeFi (Màu nâu): Các hợp đồng DEX và DeFi xuất hiện trên chuỗi từ sớm nhất là năm 2016 và bắt đầu thu hút sự chú ý vào năm 2017. Tuy nhiên, chúng không trở thành danh mục lớn nhất trong lịch sửđến mùa hè DeFi năm 2020. Các hợp đồng DeFi và DEX đã đạt đỉnh ở hơn 50% so với sự tăng trưởng lịch sử tại các thời điểm khác nhau trong năm 2021 và 2022.
Thời đại Rollup (Màu Xám): Đầu năm 2023, L2 Rollups bắt đầu thực thi một cách liên tụcnhiều giao dịch hơn mạng lưới chính.Điều này trùng khớp với việc hợp đồng của họ tạo ra một phần lớn dữ liệu lịch sử, chiếm khoảng hai phần ba của sự phát triển lịch sử của Ethereum trong những tháng trước khi Dencun.
Mỗi kỷ nguyên đều đại diện cho các mẫu hình sử dụng phức tạp hơn trên Ethereum. Theo thời gian, sự phức tạp này có thể được coi là một hình thức mở rộng Ethereum, không được thể hiện bởi các chỉ số đơn giản như giao dịch mỗi giây.
Trong dữ liệu mới nhất (tháng 4 năm 2024), rollups không còn tạo ra hầu hết các bản ghi lịch sử nữa. Chưa rõ liệu sự phát triển lịch sử trong tương lai sẽ được chi phối bởi DEX và DeFi hay nếu mô hình sử dụng mới sẽ nổi lên.
Sự giới thiệu của các blobs trong hard fork Dencun đã thay đổi đáng kể động lực của sự phát triển lịch sử, cho phép Rollups sử dụng các blobs rẻ tiền thay vì các bản ghi lịch sử để đăng dữ liệu. Hình 4 phóng to lên tỷ lệ tăng trưởng lịch sử xung quanh ngày nâng cấp Dencun. Biểu đồ này tương tự như Hình 2, nhưng mỗi thanh dọc đại diện cho một ngày thay vì một tháng.
Có thể rút ra một số kết luận quan trọng từ biểu đồ này:
Sự phát triển lịch sử từ Rollups đã giảm khoảng hai phần ba kể từ Dencun: Hầu hết các Rollups đã chuyển từ việc sử dụng dữ liệu gọi thành blobs, giảm đáng kể lượng dữ liệu lịch sử mà chúng tạo ra. Tuy nhiên, tính đến tháng 4 năm 2024, một sốrollupsvẫn chưa chuyển từ dữ liệu cuộc gọi sang các mảnh.
Tổng lịch sử tăng trưởng đã giảm khoảng một phần ba kể từ Dencun: Dencun chủ yếu đã giảm tăng trưởng lịch sử từ rollups. Tăng trưởng lịch sử từ các danh mục hợp đồng khác đã tăng nhẹ. Ngay cả sau Dencun, tăng trưởng lịch sử vẫn khoảng tám lần so với tăng trưởng trạng thái (chi tiết trong phần tiếp theo).
Mặc dù có sự giảm sút về tăng trưởng lịch sử, nhưng các khối vẫn là một thêm mới đối với Ethereum. Hiện tại vẫn chưa rõ tăng trưởng lịch sử sẽ ổn định ở mức nào trong sự hiện diện của các khối.
Tăng giới hạn gas sẽ nâng tỷ lệ tăng trưởng lịch sử. Do đó, các đề xuất để tăng giới hạn gas ( chẳng hạn như Bơm khíCần xem xét mối quan hệ giữa sự phát triển lịch sử và các rào cản phần cứng trên mỗi nút.
Để xác định một tỷ lệ tăng trưởng lịch sử chấp nhận được, việc kiểm tra xem mạng nút hiện đại và phần cứng lưu trữ nút có thể duy trì trạng thái hiện tại trong bao lâu là hữu ích. Phần cứng mạng có thể duy trì trạng thái hiện tại vô thời hạn vì tỷ lệ tăng trưởng lịch sử có thể không trở lại mức trước khi giới hạn gas tăng lên. Tuy nhiên, gánh nặng lưu trữ của hồ sơ lịch sử tăng theo thời gian. Theo chính sách lưu trữ hiện tại, ổ đĩa lưu trữ của mỗi nút sẽ cuối cùng được lấp đầy với lịch sử.
Hình 5 minh họa gánh nặng lưu trữ của các nút Ethereum theo thời gian và cũng dự đoán làm thế nào gánh nặng này có thể tăng trong vòng 3 năm tới. Dự đoán được thực hiện bằng tỷ lệ tăng trưởng từ tháng 4 năm 2024. Tỷ lệ này có thể tăng hoặc giảm trong tương lai do sự thay đổi trong mẫu sử dụng hoặc giới hạn gas.
Có thể rút ra một số kết luận quan trọng từ biểu đồ này:
Không gian lưu trữ được sử dụng bởi lịch sử khoảng ba lần so với trạng thái: Sự chênh lệch này sẽ tăng theo thời gian vì tốc độ tăng trưởng của lịch sử khoảng tám lần so với trạng thái.
Ngưỡng quan trọng khoảng 1,8 TiB: Nhiều nút sẽ buộc phải nâng cấp ổ lưu trữ của chúng tại thời điểm này. Một ổ đĩa 2TB, một kích thước phổ biến, chỉ cung cấp 1,8 TiB không gian sử dụng. Lưu ý rằng TB (terabyte) và TiB (tebibyte, = 1024^4 byte) là các đơn vị khác nhau. Đối với nhiều nhà khai thác nút, ngưỡng tới hạn "thực" thậm chí còn thấp hơn vì trình xác thực phải chạy máy khách đồng thuận cùng với máy khách thực thi sau khi hợp nhất.
Ngưỡng Đã Đạt Trong 2-3 Năm: Bất kỳ tăng về giới hạn gas nào cũng sẽ tăng tốc độ thời gian này. Đạt đến ngưỡng này sẽ đặt gánh nặng bảo trì đáng kể lên người vận hành node, buộc phải mua thêm phần cứng, chẳng hạn như một Ổ NVME $300.
Lưu trữ riêng cho Dữ liệu Lịch sử: Không giống như dữ liệu trạng thái, dữ liệu lịch sử chỉ được ghi thêm và truy cập ít hơn nhiều. Do đó, lý thuyết có thể lưu trữ dữ liệu lịch sử riêng biệt khỏi dữ liệu trạng thái trên phương tiện lưu trữ rẻ tiền hơn. Một số khách hàng, như Geth, đã hỗ trợ việc phân tách này.
Mạng IO như một hạn chế vật lý: Ngoài khả năng lưu trữ, mạng IO còn là một rào cản vật lý chính cho sự phát triển lịch sử. Khác với khả năng lưu trữ, hạn chế mạng IO sẽ không gây ra vấn đề ngay lập tức cho các nút nhưng sẽ trở nên quan trọng đối với việc tăng giới hạn gas trong tương lai.
Để hiểu được mức tăng trưởng lịch sử mà khả năng mạng của một nút Ethereum điển hình có thể hỗ trợ, việc mô tả mối quan hệ giữa sự tăng trưởng lịch sử và các chỉ số sức khỏe mạng khác nhau, như tỷ lệ tái tổ chức, thiếu khe, thiếu tính chất cuối cùng, thiếu chứng nhận, thiếu ủy ban đồng bộ, và trễ đề xuất khối. Phân tích các chỉ số này vượt ra ngoài phạm vi của bài viết này nhưng có thể được tìm thấy trong các cuộc điều tra trước đó về sức khỏe tầng lớp đồng thuận.4]. Ngoài ra, Ethereum Foundation’s @ethpandaops/xatu-overview">Dự án Xatu đã xây dựng các bộ dữ liệu công cộng để hỗ trợ các phân tích như vậy.
Sự phát triển lịch sử là một vấn đề dễ giải quyết hơn là tăng trưởng của quốc gia. Đề xuất EIP-4444giải quyết gần như hoàn toàn vấn đề này. EIP này thay đổi yêu cầu cho mỗi nút từ việc giữ toàn bộ lịch sử Ethereum thành việc chỉ giữ một năm lịch sử. Khi EIP-4444 được triển khai, thậm chí với sự tăng giới hạn gas đáng kể trong dài hạn, việc lưu trữ dữ liệu sẽ không còn là rào cản cho việc mở rộng Ethereum. EIP-4444 là cần thiết cho sự bền vững dài hạn của mạng, nếu không, dữ liệu lịch sử sẽ phát triển nhanh đủ để đòi hỏi việc nâng cấp phần cứng định kỳ cho các nút mạng.
Hình 6 cho thấy cách EIP-4444 sẽ ảnh hưởng đến gánh nặng lưu trữ của mỗi nút trong 3 năm tới. Đây giống như Hình 4, với sự bổ sung của các đường nét tinh tế đại diện cho gánh nặng lưu trữ sau khi triển khai EIP-4444.
Có thể rút ra một số kết luận quan trọng từ biểu đồ này:
EIP-4444 Sẽ Giảm Một Nửa Gánh Nặng Lưu Trữ Hiện Tại: Gánh nặng lưu trữ sẽ giảm từ 1.2 TiB xuống còn 633 GiB.
EIP-4444 Sẽ Ổn Định Gánh Nặng Lưu Trữ Lịch Sử: Giả sử tốc độ tăng trưởng lịch sử không đổi, dữ liệu lịch sử sẽ bị loại bỏ cùng tốc độ mà nó được tạo ra.
Sau EIP-4444, sẽ mất nhiều năm để gánh nặng lưu trữ đạt đến mức hiện tại: Điều này bởi vì sự phát triển của trạng thái, mà chậm hơn so với sự tăng trưởng lịch sử, sẽ là yếu tố duy nhất làm tăng gánh nặng lưu trữ.
EIP-4444 Vẫn Sẽ Gây Ra Một Số Gánh Nặng Lưu Trữ Do Dữ Liệu Lịch Sử Một Năm: Tuy nhiên, gánh nặng này sẽ có thể quản lý được ngay cả khi Ethereum mở rộng quy mô toàn cầu. Khi phương pháp xử lý dữ liệu lịch sử chứng minh là đáng tin cậy, thời gian giữ lại một năm trong EIP-4444 có thể được rút ngắn xuống chỉ vài tháng, vài tuần, hoặc thậm chí là ít hơn.
EIP-4444 đặt ra câu hỏi: nếu các nút Ethereum không lưu giữ lịch sử, làm thế nào để lịch sử được bảo tồn? Lịch sử rất quan trọng đối với việc xác minh, kế toán và phân tích của Ethereum, vì vậy nó phải được bảo tồn. May mắn thay, việc bảo tồn lịch sử là đơn giản, chỉ cần 1/n nhà cung cấp dữ liệu trung thực, so với vấn đề đồng thuận trạng thái, cần 1/3 đến 2/3 người tham gia trung thực. Người vận hành nút có thể xác minh tính xác thực của bất kỳ tập dữ liệu lịch sử nào bằng cách: 1) phát lại tất cả giao dịch từ Genesis; và 2) kiểm tra xem những giao dịch này có tái tạo ra cùng một state root như đầu mối chuỗi hiện tại hay không.
Có nhiều phương pháp để bảo tồn lịch sử, mỗi phương pháp nên được triển khai song song để tối đa hóa cơ hội bảo tồn:
Torrents / P2P: Torrentslà phương pháp đơn giản nhất và mạnh mẽ nhất. Các nút Ethereum có thể định kỳ đóng gói các phần của lịch sử và chia sẻ chúng dưới dạng tệp torrent công cộng. Ví dụ, một nút có thể tạo một tệp torrent lịch sử mới sau mỗi 100.000 khối. Một số khách hàng nút, như Erigon, đã thực hiện quy trình này theo cách không chuẩn. Để tiêu chuẩn hóa quy trình này, tất cả khách hàng nút phải sử dụng cùng định dạng dữ liệu, tham số và mạng P2P. Các nút có thể chọn tham gia vào mạng này dựa trên khả năng lưu trữ và băng thông của họ. Ưu điểm của torrents là việc sử dụng các tiêu chuẩn mở trưởng thành được hỗ trợ bởi một hệ sinh thái công cụ dữ liệu lớn.
Mạng Cổng: Mạng CổngLà một mạng lưới mới được thiết kế đặc biệt để lưu trữ dữ liệu Ethereum. Phương pháp này tương tự như torrents nhưng cung cấp thêm các tính năng để việc xác minh dữ liệu trở nên dễ dàng hơn. Ưu điểm của Mạng Cổng là những lớp xác minh bổ sung này cung cấp cho các máy khách nhẹ cách xác minh và truy vấn hiệu quả cho các bộ dữ liệu chia sẻ.
Cloud Hosting: Dịch vụ lưu trữ đám mây như AWS S3hoặc CloudflareR2cung cấp các lựa chọn giá rẻ và hiệu suất cao để bảo tồn lịch sử. Tuy nhiên, phương pháp này đi kèm với nhiều rủi ro về pháp lý và hoạt động kinh doanh, vì các dịch vụ đám mây này có thể không luôn sẵn lòng hoặc có khả năng lưu trữ dữ liệu tiền điện tử.
Những thách thức về triển khai còn lại đều nằm trong mảng xã hội hơn là kỹ thuật. Cộng đồng Ethereum cần phối hợp về các chi tiết triển khai cụ thể để chúng có thể được tích hợp trực tiếp vào mọi client node. Đáng chú ý, việc đồng bộ hoàn toàn từ Genesis (thay vì đồng bộ từ snapshot) sẽ yêu cầu lấy lại lịch sử từ các nhà cung cấp dữ liệu lịch sử thay vì từ các node Ethereum. Những thay đổi này không đòi hỏi một hard fork và có thể được triển khai trước hard fork tiếp theo của Ethereum, Pectra.
L2 cũng có thể sử dụng tất cả các phương pháp này để bảo tồn dữ liệu blob mà họ công bố lên mainnet. Việc bảo tồn blob khó khăn hơn do tổng dung lượng dữ liệu lớn hơn; ít quan trọng hơn vì blob không cần thiết để phát lại lịch sử mainnet. Tuy nhiên, việc bảo tồn blob là cần thiết cho mỗi L2 phát lại lịch sử của riêng mình. Do đó, một hình thức bảo tồn blob là rất quan trọng cho toàn bộ hệ sinh thái Ethereum. Hơn nữa, nếu các L2 phát triển cơ sở hạ tầng lưu trữ blob mạnh mẽ, họ cũng có thể dễ dàng lưu trữ dữ liệu lịch sử L1.
Việc so sánh trực tiếp các bộ dữ liệu được lưu trữ bởi các cấu hình node khác nhau trước và sau EIP-4444 rất hữu ích. Hình 7 cho thấy gánh nặng lưu trữ của các loại node Ethereum. Dữ liệu trạng thái bao gồm tài khoản và hợp đồng, dữ liệu lịch sử bao gồm các khối và giao dịch, và dữ liệu lưu trữ là một tập hợp các chỉ mục dữ liệu tùy chọn. Số byte trong bảng dựa trên bản snapshot reth gần đây, nhưng con số này có thể tương đối so sánh qua các client node khác.
Hình 7: Gánh nặng lưu trữ của các loại nút Ethereum
Trong ngôn ngữ,
Cuối cùng, còn có các đề xuất hệ sinh thái bổ sung nhằm mục tiêu hạn chế tốc độ tăng trưởng lịch sử thay vì chỉ đơn giản là thích nghi với tốc độ hiện tại. Những đề xuất này hữu ích để duy trì giới hạn IO mạng trong thời gian ngắn và giới hạn lưu trữ trong thời gian dài. Trong khi EIP-4444 là quan trọng cho tính bền vững dài hạn của mạng, những EIP khác này sẽ giúp Ethereum mở rộng một cách hiệu quả hơn trong tương lai:
EIP-7623: Đề xuất này gợi ý điều chỉnh giá cước cuộc gọi dữ liệu để giao dịch với dữ liệu cuộc gọi quá mức trở nên đắt đỏ hơn. Làm cho mẫu hình sử dụng này đắt đỏ hơn sẽ khuyến khích một số người chuyển từ dữ liệu cuộc gọi sang blobs, từ đó giảm tỷ lệ tăng trưởng lịch sử.
EIP-4488: Đề xuất này áp đặt giới hạn về tổng lượng dữ liệu gọi có thể được bao gồm trong mỗi khối, áp dụng kiểm soát nghiêm ngặt hơn về tốc độ tăng trưởng lịch sử.
Các EIP này dễ triển khai hơn EIP-4444 và có thể được sử dụng như các biện pháp tạm thời trước khi EIP-4444 sẵn sàng cho sản xuất.
Mục tiêu của bài viết này là cung cấp một hiểu biết dựa trên dữ liệu về cách mà sự phát triển lịch sử hoạt động và cách giải quyết vấn đề này. Rất nhiều dữ liệu được trình bày trong bài viết này thường khó truy cập, vì vậy chúng tôi nhắm đến việc cung cấp cái nhìn mới mẻ vào vấn đề sự phát triển lịch sử.
Sự phát triển lịch sử như một rào cản đối với tính mở rộng của Ethereum chưa nhận đủ sự chú ý. Ngay cả khi không tăng giới hạn gas, việc lưu giữ lịch sử trên Ethereum hiện tại sẽ yêu cầu nhiều node nâng cấp phần cứng của họ trong vài năm tới. May mắn thay, đây không phải là một vấn đề đặc biệt khó giải quyết. Các giải pháp rõ ràng đã được đề xuất trong EIP-4444. Chúng tôi tin rằng nên có sự tăng tốc trong việc triển khai EIP này để mở đường cho việc tăng giới hạn gas trong tương lai.
Nếu bạn quan tâm đến nghiên cứu về khả năng mở rộng của Ethereum, vui lòng liên hệ storm@paradigm.xyzvàgeorgios@paradigm.xyz.Chúng tôi rất mong được nghe ý kiến của bạn về vấn đề này và khám phá cơ hội hợp tác tiềm năng. Dữ liệu và mã nguồn được sử dụng trong bài viết này có thể được tìm thấy trênGithub.
Lời cảm ơn lớn tới Thomas Thiery、Nhóm Beiko、Toni Wahrstaetter、Oliver NordbjergvàRoman Krasiukđể họ xem xét và phản hồi. Cảm ơn bạn lAchal Srinivasancho các con số được cung cấp trong Hình 1 và Hình 7.
Пригласить больше голосов
Lịch sử trong Ethereum bao gồm tất cả các khối và giao dịch thực thi trong suốt quãng đời của nó. Dữ liệu này cần thiết để đồng bộ chuỗi từ khối khởi tạo đến trạng thái hiện tại của nó. Sự phát triển lịch sử đề cập đến việc tích lũy các khối và giao dịch mới theo thời gian.
Hình 1 cho thấy mối quan hệ giữa sự phát triển lịch sử, các chỉ số giao thức khác nhau và giới hạn phần cứng của nút Ethereum. Không giống như sự phát triển của trạng thái, sự phát triển lịch sử bị ràng buộc bởi một tập hợp các giới hạn phần cứng khác nhau. Sự phát triển này tạo áp lực cho I/O mạng vì các khối mới và giao dịch phải được truyền qua mạng. Nó cũng làm căng thẳng không gian lưu trữ của nút, vì mỗi nút Ethereum lưu trữ một bản sao hoàn chỉnh của hồ sơ lịch sử. Nếu sự phát triển lịch sử vượt qua các giới hạn phần cứng này, các nút sẽ không còn có khả năng đạt được sự nhất quán ổn định với đồng nghiệp của họ. Để biết tổng quan về sự phát triển của trạng thái và các rào cản mở rộng khác, xemPhần 1của loạt này.
Hình 1: Chướng ngại vật mở rộng Ethereum
Cho đến gần đây, hầu hết băng thông mạng của mỗi nút được sử dụng để truyền tải các bản ghi lịch sử (ví dụ, các khối mới và giao dịch). Điều này đã thay đổi với sự giới thiệu của blobs trong Dencunhard fork. Blobs hiện nay chiếm một phần đáng kể của hoạt động mạng node. Tuy nhiên, blobs không được xem là một phần của hồ sơ lịch sử vì 1) các node lưu trữ chúng chỉ trong 2 tuần trước khi loại bỏ chúng, và 2) chúng không cần thiết để phát lại chuỗi từ Genesis. Do (1), blobs không làm tăng đáng kể gánh nặng lưu trữ trên mỗi node Ethereum. Chúng tôi sẽ thảo luận về blobs chi tiết hơn trong bài viết này sau.
Trong bài viết này, chúng tôi sẽ tập trung vào sự phát triển của dữ liệu lịch sử và mối quan hệ của nó với sự phát triển của trạng thái. Vì sự phát triển của trạng thái và lịch sử chia sẻ một số hạn chế phần cứng trùng lắp, chúng là những vấn đề có mối liên hệ; giải quyết một vấn đề có thể giúp hạn chế vấn đề khác.
Hình 2 cho thấy tỷ lệ tăng trưởng lịch sử theo thời gian kể từ khi Ethereum ra đời. Mỗi thanh dọc đại diện cho sự tăng trưởng trong một tháng. Trục Y đại diện cho số GB được thêm vào lịch sử trong tháng đó. Các giao dịch được phân loại theo “địa chỉ đích” của họ và kích thước được xác định bằng cách sử dụng của họRLPbiểu diễn byte. Các hợp đồng không thể được xác định dễ dàng được phân loại là “không rõ.” Danh mục “khác” bao gồm một loạt các danh mục nhỏ như cơ sở hạ tầng và game.
Có thể rút ra một số kết luận quan trọng từ biểu đồ này:
Số lượng dữ liệu lịch sử được tạo ra bởi mỗi danh mục hợp đồng cho thấy cách mà mẫu sử dụng Ethereum đã phát triển theo thời gian. Hình 3 cho thấy sự đóng góp tương đối của các danh mục hợp đồng khác nhau. Điều này sử dụng cùng dữ liệu như Hình 2, được chuẩn hóa thành 100%.
Dữ liệu cho thấy bốn giai đoạn riêng biệt trong các mẫu hình sử dụng Ethereum:
Thời kỳ đầu (Màu tím): Trong những năm đầu của Ethereum, hoạt động trên chuỗi khối là rất ít. Hầu hết các hợp đồng ban đầu này hiện tại rất khó nhận biết và được ghi nhãn là “không xác định” trên biểu đồ.
Kỷ nguyên ERC-20 (Màu xanh): tiêu chuẩn ERC-20đã hoàn thành vào cuối năm 2015 nhưng không đạt được sự chú ý đáng kể cho đến năm 2017 và 2018. Đến năm 2019, hợp đồng ERC-20 trở thành danh mục lớn nhất trong sự phát triển lịch sử.
Thời kỳ DEX/DeFi (Màu nâu): Các hợp đồng DEX và DeFi xuất hiện trên chuỗi từ sớm nhất là năm 2016 và bắt đầu thu hút sự chú ý vào năm 2017. Tuy nhiên, chúng không trở thành danh mục lớn nhất trong lịch sửđến mùa hè DeFi năm 2020. Các hợp đồng DeFi và DEX đã đạt đỉnh ở hơn 50% so với sự tăng trưởng lịch sử tại các thời điểm khác nhau trong năm 2021 và 2022.
Thời đại Rollup (Màu Xám): Đầu năm 2023, L2 Rollups bắt đầu thực thi một cách liên tụcnhiều giao dịch hơn mạng lưới chính.Điều này trùng khớp với việc hợp đồng của họ tạo ra một phần lớn dữ liệu lịch sử, chiếm khoảng hai phần ba của sự phát triển lịch sử của Ethereum trong những tháng trước khi Dencun.
Mỗi kỷ nguyên đều đại diện cho các mẫu hình sử dụng phức tạp hơn trên Ethereum. Theo thời gian, sự phức tạp này có thể được coi là một hình thức mở rộng Ethereum, không được thể hiện bởi các chỉ số đơn giản như giao dịch mỗi giây.
Trong dữ liệu mới nhất (tháng 4 năm 2024), rollups không còn tạo ra hầu hết các bản ghi lịch sử nữa. Chưa rõ liệu sự phát triển lịch sử trong tương lai sẽ được chi phối bởi DEX và DeFi hay nếu mô hình sử dụng mới sẽ nổi lên.
Sự giới thiệu của các blobs trong hard fork Dencun đã thay đổi đáng kể động lực của sự phát triển lịch sử, cho phép Rollups sử dụng các blobs rẻ tiền thay vì các bản ghi lịch sử để đăng dữ liệu. Hình 4 phóng to lên tỷ lệ tăng trưởng lịch sử xung quanh ngày nâng cấp Dencun. Biểu đồ này tương tự như Hình 2, nhưng mỗi thanh dọc đại diện cho một ngày thay vì một tháng.
Có thể rút ra một số kết luận quan trọng từ biểu đồ này:
Sự phát triển lịch sử từ Rollups đã giảm khoảng hai phần ba kể từ Dencun: Hầu hết các Rollups đã chuyển từ việc sử dụng dữ liệu gọi thành blobs, giảm đáng kể lượng dữ liệu lịch sử mà chúng tạo ra. Tuy nhiên, tính đến tháng 4 năm 2024, một sốrollupsvẫn chưa chuyển từ dữ liệu cuộc gọi sang các mảnh.
Tổng lịch sử tăng trưởng đã giảm khoảng một phần ba kể từ Dencun: Dencun chủ yếu đã giảm tăng trưởng lịch sử từ rollups. Tăng trưởng lịch sử từ các danh mục hợp đồng khác đã tăng nhẹ. Ngay cả sau Dencun, tăng trưởng lịch sử vẫn khoảng tám lần so với tăng trưởng trạng thái (chi tiết trong phần tiếp theo).
Mặc dù có sự giảm sút về tăng trưởng lịch sử, nhưng các khối vẫn là một thêm mới đối với Ethereum. Hiện tại vẫn chưa rõ tăng trưởng lịch sử sẽ ổn định ở mức nào trong sự hiện diện của các khối.
Tăng giới hạn gas sẽ nâng tỷ lệ tăng trưởng lịch sử. Do đó, các đề xuất để tăng giới hạn gas ( chẳng hạn như Bơm khíCần xem xét mối quan hệ giữa sự phát triển lịch sử và các rào cản phần cứng trên mỗi nút.
Để xác định một tỷ lệ tăng trưởng lịch sử chấp nhận được, việc kiểm tra xem mạng nút hiện đại và phần cứng lưu trữ nút có thể duy trì trạng thái hiện tại trong bao lâu là hữu ích. Phần cứng mạng có thể duy trì trạng thái hiện tại vô thời hạn vì tỷ lệ tăng trưởng lịch sử có thể không trở lại mức trước khi giới hạn gas tăng lên. Tuy nhiên, gánh nặng lưu trữ của hồ sơ lịch sử tăng theo thời gian. Theo chính sách lưu trữ hiện tại, ổ đĩa lưu trữ của mỗi nút sẽ cuối cùng được lấp đầy với lịch sử.
Hình 5 minh họa gánh nặng lưu trữ của các nút Ethereum theo thời gian và cũng dự đoán làm thế nào gánh nặng này có thể tăng trong vòng 3 năm tới. Dự đoán được thực hiện bằng tỷ lệ tăng trưởng từ tháng 4 năm 2024. Tỷ lệ này có thể tăng hoặc giảm trong tương lai do sự thay đổi trong mẫu sử dụng hoặc giới hạn gas.
Có thể rút ra một số kết luận quan trọng từ biểu đồ này:
Không gian lưu trữ được sử dụng bởi lịch sử khoảng ba lần so với trạng thái: Sự chênh lệch này sẽ tăng theo thời gian vì tốc độ tăng trưởng của lịch sử khoảng tám lần so với trạng thái.
Ngưỡng quan trọng khoảng 1,8 TiB: Nhiều nút sẽ buộc phải nâng cấp ổ lưu trữ của chúng tại thời điểm này. Một ổ đĩa 2TB, một kích thước phổ biến, chỉ cung cấp 1,8 TiB không gian sử dụng. Lưu ý rằng TB (terabyte) và TiB (tebibyte, = 1024^4 byte) là các đơn vị khác nhau. Đối với nhiều nhà khai thác nút, ngưỡng tới hạn "thực" thậm chí còn thấp hơn vì trình xác thực phải chạy máy khách đồng thuận cùng với máy khách thực thi sau khi hợp nhất.
Ngưỡng Đã Đạt Trong 2-3 Năm: Bất kỳ tăng về giới hạn gas nào cũng sẽ tăng tốc độ thời gian này. Đạt đến ngưỡng này sẽ đặt gánh nặng bảo trì đáng kể lên người vận hành node, buộc phải mua thêm phần cứng, chẳng hạn như một Ổ NVME $300.
Lưu trữ riêng cho Dữ liệu Lịch sử: Không giống như dữ liệu trạng thái, dữ liệu lịch sử chỉ được ghi thêm và truy cập ít hơn nhiều. Do đó, lý thuyết có thể lưu trữ dữ liệu lịch sử riêng biệt khỏi dữ liệu trạng thái trên phương tiện lưu trữ rẻ tiền hơn. Một số khách hàng, như Geth, đã hỗ trợ việc phân tách này.
Mạng IO như một hạn chế vật lý: Ngoài khả năng lưu trữ, mạng IO còn là một rào cản vật lý chính cho sự phát triển lịch sử. Khác với khả năng lưu trữ, hạn chế mạng IO sẽ không gây ra vấn đề ngay lập tức cho các nút nhưng sẽ trở nên quan trọng đối với việc tăng giới hạn gas trong tương lai.
Để hiểu được mức tăng trưởng lịch sử mà khả năng mạng của một nút Ethereum điển hình có thể hỗ trợ, việc mô tả mối quan hệ giữa sự tăng trưởng lịch sử và các chỉ số sức khỏe mạng khác nhau, như tỷ lệ tái tổ chức, thiếu khe, thiếu tính chất cuối cùng, thiếu chứng nhận, thiếu ủy ban đồng bộ, và trễ đề xuất khối. Phân tích các chỉ số này vượt ra ngoài phạm vi của bài viết này nhưng có thể được tìm thấy trong các cuộc điều tra trước đó về sức khỏe tầng lớp đồng thuận.4]. Ngoài ra, Ethereum Foundation’s @ethpandaops/xatu-overview">Dự án Xatu đã xây dựng các bộ dữ liệu công cộng để hỗ trợ các phân tích như vậy.
Sự phát triển lịch sử là một vấn đề dễ giải quyết hơn là tăng trưởng của quốc gia. Đề xuất EIP-4444giải quyết gần như hoàn toàn vấn đề này. EIP này thay đổi yêu cầu cho mỗi nút từ việc giữ toàn bộ lịch sử Ethereum thành việc chỉ giữ một năm lịch sử. Khi EIP-4444 được triển khai, thậm chí với sự tăng giới hạn gas đáng kể trong dài hạn, việc lưu trữ dữ liệu sẽ không còn là rào cản cho việc mở rộng Ethereum. EIP-4444 là cần thiết cho sự bền vững dài hạn của mạng, nếu không, dữ liệu lịch sử sẽ phát triển nhanh đủ để đòi hỏi việc nâng cấp phần cứng định kỳ cho các nút mạng.
Hình 6 cho thấy cách EIP-4444 sẽ ảnh hưởng đến gánh nặng lưu trữ của mỗi nút trong 3 năm tới. Đây giống như Hình 4, với sự bổ sung của các đường nét tinh tế đại diện cho gánh nặng lưu trữ sau khi triển khai EIP-4444.
Có thể rút ra một số kết luận quan trọng từ biểu đồ này:
EIP-4444 Sẽ Giảm Một Nửa Gánh Nặng Lưu Trữ Hiện Tại: Gánh nặng lưu trữ sẽ giảm từ 1.2 TiB xuống còn 633 GiB.
EIP-4444 Sẽ Ổn Định Gánh Nặng Lưu Trữ Lịch Sử: Giả sử tốc độ tăng trưởng lịch sử không đổi, dữ liệu lịch sử sẽ bị loại bỏ cùng tốc độ mà nó được tạo ra.
Sau EIP-4444, sẽ mất nhiều năm để gánh nặng lưu trữ đạt đến mức hiện tại: Điều này bởi vì sự phát triển của trạng thái, mà chậm hơn so với sự tăng trưởng lịch sử, sẽ là yếu tố duy nhất làm tăng gánh nặng lưu trữ.
EIP-4444 Vẫn Sẽ Gây Ra Một Số Gánh Nặng Lưu Trữ Do Dữ Liệu Lịch Sử Một Năm: Tuy nhiên, gánh nặng này sẽ có thể quản lý được ngay cả khi Ethereum mở rộng quy mô toàn cầu. Khi phương pháp xử lý dữ liệu lịch sử chứng minh là đáng tin cậy, thời gian giữ lại một năm trong EIP-4444 có thể được rút ngắn xuống chỉ vài tháng, vài tuần, hoặc thậm chí là ít hơn.
EIP-4444 đặt ra câu hỏi: nếu các nút Ethereum không lưu giữ lịch sử, làm thế nào để lịch sử được bảo tồn? Lịch sử rất quan trọng đối với việc xác minh, kế toán và phân tích của Ethereum, vì vậy nó phải được bảo tồn. May mắn thay, việc bảo tồn lịch sử là đơn giản, chỉ cần 1/n nhà cung cấp dữ liệu trung thực, so với vấn đề đồng thuận trạng thái, cần 1/3 đến 2/3 người tham gia trung thực. Người vận hành nút có thể xác minh tính xác thực của bất kỳ tập dữ liệu lịch sử nào bằng cách: 1) phát lại tất cả giao dịch từ Genesis; và 2) kiểm tra xem những giao dịch này có tái tạo ra cùng một state root như đầu mối chuỗi hiện tại hay không.
Có nhiều phương pháp để bảo tồn lịch sử, mỗi phương pháp nên được triển khai song song để tối đa hóa cơ hội bảo tồn:
Torrents / P2P: Torrentslà phương pháp đơn giản nhất và mạnh mẽ nhất. Các nút Ethereum có thể định kỳ đóng gói các phần của lịch sử và chia sẻ chúng dưới dạng tệp torrent công cộng. Ví dụ, một nút có thể tạo một tệp torrent lịch sử mới sau mỗi 100.000 khối. Một số khách hàng nút, như Erigon, đã thực hiện quy trình này theo cách không chuẩn. Để tiêu chuẩn hóa quy trình này, tất cả khách hàng nút phải sử dụng cùng định dạng dữ liệu, tham số và mạng P2P. Các nút có thể chọn tham gia vào mạng này dựa trên khả năng lưu trữ và băng thông của họ. Ưu điểm của torrents là việc sử dụng các tiêu chuẩn mở trưởng thành được hỗ trợ bởi một hệ sinh thái công cụ dữ liệu lớn.
Mạng Cổng: Mạng CổngLà một mạng lưới mới được thiết kế đặc biệt để lưu trữ dữ liệu Ethereum. Phương pháp này tương tự như torrents nhưng cung cấp thêm các tính năng để việc xác minh dữ liệu trở nên dễ dàng hơn. Ưu điểm của Mạng Cổng là những lớp xác minh bổ sung này cung cấp cho các máy khách nhẹ cách xác minh và truy vấn hiệu quả cho các bộ dữ liệu chia sẻ.
Cloud Hosting: Dịch vụ lưu trữ đám mây như AWS S3hoặc CloudflareR2cung cấp các lựa chọn giá rẻ và hiệu suất cao để bảo tồn lịch sử. Tuy nhiên, phương pháp này đi kèm với nhiều rủi ro về pháp lý và hoạt động kinh doanh, vì các dịch vụ đám mây này có thể không luôn sẵn lòng hoặc có khả năng lưu trữ dữ liệu tiền điện tử.
Những thách thức về triển khai còn lại đều nằm trong mảng xã hội hơn là kỹ thuật. Cộng đồng Ethereum cần phối hợp về các chi tiết triển khai cụ thể để chúng có thể được tích hợp trực tiếp vào mọi client node. Đáng chú ý, việc đồng bộ hoàn toàn từ Genesis (thay vì đồng bộ từ snapshot) sẽ yêu cầu lấy lại lịch sử từ các nhà cung cấp dữ liệu lịch sử thay vì từ các node Ethereum. Những thay đổi này không đòi hỏi một hard fork và có thể được triển khai trước hard fork tiếp theo của Ethereum, Pectra.
L2 cũng có thể sử dụng tất cả các phương pháp này để bảo tồn dữ liệu blob mà họ công bố lên mainnet. Việc bảo tồn blob khó khăn hơn do tổng dung lượng dữ liệu lớn hơn; ít quan trọng hơn vì blob không cần thiết để phát lại lịch sử mainnet. Tuy nhiên, việc bảo tồn blob là cần thiết cho mỗi L2 phát lại lịch sử của riêng mình. Do đó, một hình thức bảo tồn blob là rất quan trọng cho toàn bộ hệ sinh thái Ethereum. Hơn nữa, nếu các L2 phát triển cơ sở hạ tầng lưu trữ blob mạnh mẽ, họ cũng có thể dễ dàng lưu trữ dữ liệu lịch sử L1.
Việc so sánh trực tiếp các bộ dữ liệu được lưu trữ bởi các cấu hình node khác nhau trước và sau EIP-4444 rất hữu ích. Hình 7 cho thấy gánh nặng lưu trữ của các loại node Ethereum. Dữ liệu trạng thái bao gồm tài khoản và hợp đồng, dữ liệu lịch sử bao gồm các khối và giao dịch, và dữ liệu lưu trữ là một tập hợp các chỉ mục dữ liệu tùy chọn. Số byte trong bảng dựa trên bản snapshot reth gần đây, nhưng con số này có thể tương đối so sánh qua các client node khác.
Hình 7: Gánh nặng lưu trữ của các loại nút Ethereum
Trong ngôn ngữ,
Cuối cùng, còn có các đề xuất hệ sinh thái bổ sung nhằm mục tiêu hạn chế tốc độ tăng trưởng lịch sử thay vì chỉ đơn giản là thích nghi với tốc độ hiện tại. Những đề xuất này hữu ích để duy trì giới hạn IO mạng trong thời gian ngắn và giới hạn lưu trữ trong thời gian dài. Trong khi EIP-4444 là quan trọng cho tính bền vững dài hạn của mạng, những EIP khác này sẽ giúp Ethereum mở rộng một cách hiệu quả hơn trong tương lai:
EIP-7623: Đề xuất này gợi ý điều chỉnh giá cước cuộc gọi dữ liệu để giao dịch với dữ liệu cuộc gọi quá mức trở nên đắt đỏ hơn. Làm cho mẫu hình sử dụng này đắt đỏ hơn sẽ khuyến khích một số người chuyển từ dữ liệu cuộc gọi sang blobs, từ đó giảm tỷ lệ tăng trưởng lịch sử.
EIP-4488: Đề xuất này áp đặt giới hạn về tổng lượng dữ liệu gọi có thể được bao gồm trong mỗi khối, áp dụng kiểm soát nghiêm ngặt hơn về tốc độ tăng trưởng lịch sử.
Các EIP này dễ triển khai hơn EIP-4444 và có thể được sử dụng như các biện pháp tạm thời trước khi EIP-4444 sẵn sàng cho sản xuất.
Mục tiêu của bài viết này là cung cấp một hiểu biết dựa trên dữ liệu về cách mà sự phát triển lịch sử hoạt động và cách giải quyết vấn đề này. Rất nhiều dữ liệu được trình bày trong bài viết này thường khó truy cập, vì vậy chúng tôi nhắm đến việc cung cấp cái nhìn mới mẻ vào vấn đề sự phát triển lịch sử.
Sự phát triển lịch sử như một rào cản đối với tính mở rộng của Ethereum chưa nhận đủ sự chú ý. Ngay cả khi không tăng giới hạn gas, việc lưu giữ lịch sử trên Ethereum hiện tại sẽ yêu cầu nhiều node nâng cấp phần cứng của họ trong vài năm tới. May mắn thay, đây không phải là một vấn đề đặc biệt khó giải quyết. Các giải pháp rõ ràng đã được đề xuất trong EIP-4444. Chúng tôi tin rằng nên có sự tăng tốc trong việc triển khai EIP này để mở đường cho việc tăng giới hạn gas trong tương lai.
Nếu bạn quan tâm đến nghiên cứu về khả năng mở rộng của Ethereum, vui lòng liên hệ storm@paradigm.xyzvàgeorgios@paradigm.xyz.Chúng tôi rất mong được nghe ý kiến của bạn về vấn đề này và khám phá cơ hội hợp tác tiềm năng. Dữ liệu và mã nguồn được sử dụng trong bài viết này có thể được tìm thấy trênGithub.
Lời cảm ơn lớn tới Thomas Thiery、Nhóm Beiko、Toni Wahrstaetter、Oliver NordbjergvàRoman Krasiukđể họ xem xét và phản hồi. Cảm ơn bạn lAchal Srinivasancho các con số được cung cấp trong Hình 1 và Hình 7.