BTC
ETH
HTX
SOL
BNB
Xem thị trường
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

Tìm hiểu cách cải thiện mạng Ethereum với ReGenesis

以太坊爱好者
特邀专栏作者
Bài viết này có khoảng 3817 từ, đọc toàn bộ bài viết mất khoảng 6 phút
Một "con đường trung gian" giữa Ethereum trạng thái phong phú và Ethereum không trạng thái.
Tóm tắt AI
Một "con đường trung gian" giữa Ethereum trạng thái phong phú và Ethereum không trạng thái.

Lưu ý của biên tập viên: Bài viết này đến từNhững người đam mê Ethereum (ID: ethfans)Lưu ý của biên tập viên: Bài viết này đến từ

Những người đam mê Ethereum (ID: ethfans)

Những người đam mê Ethereum (ID: ethfans)

Số tiền bị khóa trong các ứng dụng DeFi đã vượt quá 1,5 tỷ USD; các dApp mới được công bố gần như mỗi ngày. Với tốc độ này, Ethereum có thể chết vì quá thành công. Đối với lớp cơ sở hạ tầng, sự tăng trưởng trạng thái vô hạn là một vấn đề lớn.

Vài ngày trước, Alexey đã đăng một bài viết trên diễn đàn EthResearch, đề xuất một ý tưởng thú vị mà anh đặt tên là ReGenesis.

Ý tưởng tương đối đơn giản và thoạt nhìn có vẻ cấp tiến: định kỳ (ví dụ: cứ sau 1 triệu khối) xóa tất cả trạng thái được lưu trữ cục bộ, giữ gốc hàm băm của khối mới nhất và bắt đầu xây dựng lại trạng thái, sau 1 triệu khối khác , thiết lập lại trạng thái tiếp theo sẽ được thực hiện.

Mô tả hình ảnh

-ReGenesis: Đặt lại trạng thái sau mỗi N khối. Khi trạng thái phát triển, cần ít bằng chứng hơn cho đến khi ReGenesis tiếp theo bắt đầu -

Để hiểu tại sao ý tưởng này khả thi và đáng để nghiên cứu, bạn cần có một số thông tin cơ bản và lời giải thích.

Đó là những gì bài viết này là về.

tình hình hiện tại

1. Lưu trữ tập trung nhà nước

Gửi giao dịch trên Ethereum rất dễ dàng, bạn không cần bất kỳ dữ liệu trạng thái nào. Người gửi giao dịch không có động cơ để tiết kiệm bất kỳ trạng thái nào.

Nếu bạn (thợ mỏ hoặc sàn giao dịch) đang chạy một nút cơ sở hạ tầng, bạn cần đảm bảo rằng bạn có tất cả trạng thái cần thiết để xác thực và phát các giao dịch. Nếu bạn là một người khai thác, bạn cần nhiều trạng thái hơn.

Do đó, lưu trữ trạng thái hiện tại được tập trung trong các nút cơ sở hạ tầng do các thực thể lớn điều hành (Infura, công cụ khai thác lớn, sàn giao dịch, v.v.).

2. Nhà nước tiếp tục phát triển vô hạn

Tại thời điểm viết bài (ngày 29 tháng 6), "trạng thái hiện tại" trong ứng dụng khách Turbo-Geth là khoảng 40 GB và đang tăng lên.

Vấn đề ở đây không phải là quy mô nhà nước, mà là sự phát triển không giới hạn của nhà nước. Tất nhiên, chúng ta cũng có thể cầu nguyện rằng dung lượng SSD tăng nhanh hơn trạng thái blockchain.

Chúng ta đã may mắn cho đến nay, nhưng may mắn thôi không phải là một giải pháp lâu dài.

3. Ethereum phi trạng thái khó định giá lại Gas

Việc định giá nhân chứng khối là rất khó khăn đối với các dự án ethereum phi trạng thái. Những nhân chứng này được tạo bởi những người khai thác và rất khó để người gửi giao dịch dự đoán kích thước của nhân chứng khối khi gửi giao dịch.

Do đó, chúng ta cần tìm cách đầu cơ vào giá nhân chứng thông qua hành vi hợp đồng thông minh mà không ảnh hưởng đến hợp đồng thông minh hiện có.

Đã có một số đề xuất, chẳng hạn như Dầu mỏ, nhưng đây thực sự là một vấn đề hóc búa.

Cách chạy các giao dịch sau ReGenesis

Ok, bây giờ tất cả chúng ta đều biết rằng để loại bỏ tất cả trạng thái hiện tại, chỉ hàm băm gốc được giữ lại. Lượng dữ liệu giảm từ 40 GB xuống còn 32 byte.

Tại thời điểm này, Ethereum không trạng thái có ích. Để có thể thực hiện giao dịch, bạn cần cung cấp nhân chứng. Nhân chứng chứa tài khoản được sử dụng, mã và nội dung lưu trữ hợp đồng cũng như bằng chứng Merkle có thể được sử dụng để xác minh hàm băm gốc (bấm vào đây để tìm hiểu thêm về nhân chứng và Ethereum phi trạng thái).

Tuy nhiên, có một điểm khác biệt giữa ReGenesis và Ethereum không trạng thái. Trước khi giải thích sự khác biệt, tôi muốn giới thiệu hai thuật ngữ: trạng thái rõ ràng và trạng thái tiềm ẩn.

Giả sử bạn đang chạy một nút geth. Bất cứ khi nào nút ngang hàng của bạn gửi cho bạn một khối N mới, nút đó sẽ giả định rằng bạn đã có dữ liệu trạng thái cần thiết để xác minh tất cả các giao dịch trong khối đó và rằng bạn đã đồng bộ hóa khối N-1.

- Ethereum hiện tại: Giả sử cả hai nút đều có tất cả các trạng thái bắt buộc -

Đây là trạng thái ẩn 100%. Các đồng nghiệp cho rằng bạn đã có trạng thái và do đó không thêm bất kỳ trạng thái nào vào khối.

Trong ethereum không trạng thái, khi bạn chạy một nút, nút ngang hàng sẽ gửi cho bạn một khối N mới và nghĩ rằng bạn không có trạng thái ẩn trong bất kỳ trường hợp nào. Họ đóng gói mọi thứ bạn cần để chạy khối N vào khối N. Đây là nhân chứng khối.

Mô tả hình ảnh

Đồng nghiệp của bạn gửi cho bạn trạng thái rõ ràng.

Giả sử ReGenesis bắt đầu ở khối 10.000.000. Hiện tại, đứng đầu blockchain là khối 10.001.000. Chúng ta có thể nghĩ về bất kỳ nút ReGenesis nào có trạng thái ẩn của tất cả dữ liệu giữa khối 10.000.000 và khối 10.001.000. Mọi tài khoản, mọi mục nhập lưu trữ và mọi hợp đồng được sử dụng trong các khối này đã được lưu trữ trên mọi nút, do đó không cần nhân chứng khối. Điều này cho phép giảm đáng kể kích thước của nhân chứng, như chúng ta đã thấy trong các thử nghiệm của mình với đồng bộ hóa gần như không trạng thái.

Mô tả hình ảnh

- ReGenesis: Khối 1 cung cấp thông tin mà Nút 1 thiếu -

  • Mô tả hình ảnh

  • - ReGenesis: gộp trạng thái từ khối 1 vào trạng thái ẩn của nút 1 -

  • Nếu bạn (với tư cách là người gửi giao dịch) cần gửi một giao dịch mới tới mạng có chiều cao khối hiện tại là 10.001.000, bạn cần thực hiện các bước sau:

  • Tạo giao dịch bạn muốn;

Tạo trạng thái rõ ràng cho các mục không được bao gồm trong trạng thái ẩn, được đóng gói dưới dạng nhân chứng giao dịch (được thảo luận chi tiết bên dưới);

Đúng rồi.

Gửi giao dịch với nhân chứng đến mạng;

Đợi đã, điều này có nghĩa là người gửi giao dịch phải có một số trạng thái trước ReGensis? !

Đúng rồi.

Nếu bạn muốn gửi giao dịch sau khi ReGenesis bắt đầu, bạn có thể cần phải có một số thông tin trạng thái trước ReGenesis để tạo nhân chứng.

Tuy nhiên, đối với hầu hết các dApp, chúng cần lưu trữ trạng thái của một tập hợp nhỏ các hợp đồng và tài khoản được sử dụng thực sự (tất nhiên là có bằng chứng Merkle).

nhân chứng giao dịch

Bạn có thể nhận thấy rằng tôi đã đề cập đến thuật ngữ nhân chứng giao dịch ở trên.

Mô tả hình ảnh

- Tổ hợp nhân chứng khối -

Mô tả hình ảnh

- Người làm chứng giao dịch -

Mô tả hình ảnh

- Nhân chứng khối được tạo bởi thợ mỏ. Chúng ta cần đền bù cho họ thông qua một cơ chế định giá Gas phức tạp -

Nhân chứng giao dịch có một lợi thế quan trọng. Chúng được tạo bởi người gửi giao dịch và được gửi cùng với giao dịch. Do đó, chúng ta có thể biết ngay quy mô của nhân chứng giao dịch và cách định giá nó. Chúng tôi không cần định giá lại thông qua EVM.

Mô tả hình ảnh

- Nhân chứng giao dịch được tạo ra bởi người gửi giao dịch và dễ bồi thường hơn nhiều -

Một cạm bẫy tiềm ẩn của việc sử dụng nhân chứng giao dịch là sao chép dữ liệu. Giả sử rằng tất cả các giao dịch trong một khối được thực hiện bởi cùng hai tài khoản, nhân chứng giao dịch sẽ chứa dữ liệu trùng lặp.

Nhân chứng khối được tạo bởi những người khai thác. Những người khai thác biết thứ tự chính xác của các giao dịch trong một khối, vì vậy nhân chứng khối luôn chứa dữ liệu mới nhất.

Nhân chứng giao dịch đến từ người gửi giao dịch. Do đó, cần có một cơ chế hợp nhất thông minh hợp nhất nhân chứng giao dịch với trạng thái ẩn được tạo bởi các giao dịch trước đó trong khối.

Tuy nhiên, toàn bộ khái niệm ReGenesis yêu cầu sử dụng nhân chứng giao dịch, vì vậy đây không phải là vấn đề lớn.

tiêu đề cấp đầu tiên

Vì sao chưa thể sử dụng nhân chứng giao dịch?

Nói một cách đơn giản, đó là do Quyền truy cập trạng thái động (DSA) và rủi ro tiềm ẩn của các giao dịch chạy trước bởi các tác nhân độc hại.

Cụ thể, trong Ethereum không trạng thái, bạn cần cung cấp trạng thái hoàn chỉnh của giao dịch này và chúng tôi giả định rằng người nhận không có bất kỳ trạng thái nào. Nếu giao dịch của bạn sử dụng DSA, thì phần lưu trữ mà mã của bạn đọc sẽ phụ thuộc vào các giá trị trong các phần khác của mã.

Về lý thuyết, điều này có thể dẫn đến một cuộc tấn công DoS.

Nếu Alice cung cấp bằng chứng bao gồm A, Bob có thể thay đổi K trước khi giao dịch của Alice được đóng gói, khiến giao dịch của Alice không thành công. Nếu Alice cung cấp bằng chứng bao gồm B, Bob có thể lặp lại thủ thuật.

Tất nhiên, Alice có thể cung cấp bằng chứng bao gồm A và B, nhưng nếu địa chỉ lưu trữ được xác định bởi uint64, thì Alice phải đưa trạng thái hoàn chỉnh vào bằng chứng để ngăn chặn các cuộc tấn công, nhưng việc đưa vào trạng thái hoàn chỉnh đơn giản là không khả thi.

Tất nhiên, cuộc tấn công này là lý thuyết. Tuy nhiên, nhiều cuộc tấn công tương tự có khả năng xuất hiện. Với số tiền lớn do dApps nắm giữ, chúng tôi cần phải hết sức cẩn thận để không làm hỏng bất cứ thứ gì.

tiêu đề cấp đầu tiên

ReGenesis làm giảm bớt vấn đề này như thế nào?

Tính tất định của ReGenesis có thể giúp chúng ta xác định một nút có bao nhiêu trạng thái. Đối với những trạng thái mà chúng tôi chắc chắn rằng một nút có, chúng tôi không cần bằng chứng.

Để giảm bớt vấn đề này, cho dù giao dịch thành công hay thất bại do không đủ trạng thái, chúng tôi đảm bảo rằng bằng chứng mà chúng tôi cung cấp được đưa vào trạng thái.

Mặc dù giao dịch của Alice không thành công, nhưng giao dịch đã thêm tất cả các bằng chứng cần thiết cho đường dẫn A vào trạng thái ẩn của nút.

Tóm lại là

Bây giờ, Alice có thể gửi lại giao dịch này, cung cấp bằng chứng cần thiết cho đường dẫn B. Bob không còn có thể chặn giao dịch của Alice bằng cách thay đổi K. Ngay cả khi anh ta thay đổi K để thực hiện giao dịch chọn đường dẫn A, thì sẽ quá muộn. Bằng chứng được yêu cầu bởi đường dẫn A đã được bao gồm trong trạng thái ẩn của nút, vì vậy giao dịch không cần phải Bất kỳ bằng chứng nào cũng có thể được gửi đến các nút. Nếu một giao dịch được chuyển hướng đến đường dẫn B, thì nó có chính xác bằng chứng mà B cần.

  • tiêu đề cấp đầu tiên

  • Tóm lại là

  • Cuối cùng, hãy nhanh chóng tóm tắt lại tầm nhìn và ý chính của ReGenesis:

  • Mỗi khi N khối được tạo, chúng tôi sẽ xóa tất cả các trạng thái và chỉ giữ lại hàm băm gốc;

  • Tần suất khởi động ReGenesis không được quá cao, có thể đặt thành 1 triệu khối, 10 triệu khối, v.v.;

  • Người gửi giao dịch cần cung cấp trạng thái rõ ràng (với tư cách là người chứng kiến ​​giao dịch);

  • Người gửi giao dịch trả phí gas dựa trên quy mô của nhân chứng giao dịch;

Để làm điều này, người gửi giao dịch phải duy trì trạng thái trước khi Tái tạo của hợp đồng/tài khoản mà họ quan tâm;

  • Nếu giao dịch không thành công do không đủ trạng thái rõ ràng, chúng tôi sẽ thêm bằng chứng do giao dịch cung cấp vào trạng thái ngầm định, để chúng tôi không cần cung cấp bằng chứng tương tự khi gửi giao dịch lần sau;

  • Trạng thái rõ ràng từ bằng chứng giao dịch được hợp nhất với trạng thái ẩn được tạo bởi các giao dịch chạy trước đó trong khối thông qua cơ chế hợp nhất thông minh.

  • Từ góc độ vĩ mô, giải pháp ReGenesis có những ưu điểm sau:

Thay đổi sự cân bằng khuyến khích giữa người gửi giao dịch và các nút cơ sở hạ tầng, từ đó cải thiện việc phân cấp lưu trữ trạng thái;

开发者
ETH
Chào mừng tham gia cộng đồng chính thức của Odaily
Nhóm đăng ký:
https://t.me/Odaily_News
Nhóm trò chuyện:
https://t.me/Odaily_GoldenApe
Tài khoản chính thức:
https://twitter.com/OdailyChina
Mục lục bài viết
Thư viện tác giả
Tải ứng dụng Odaily Nhật Báo Hành Tinh
Hãy để một số người hiểu Web3.0 trước
IOS
Android