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

Tiến thoái lưỡng nan bùng nổ trạng thái của chuỗi khối

链捕手
特邀专栏作者
Bài viết này có khoảng 5879 từ, đọc toàn bộ bài viết mất khoảng 9 phút
Lớp 1 nên tập trung vào trạng thái.
Tóm tắt AI
Lớp 1 nên tập trung vào trạng thái.

tiêu đề phụ

Lớp 1 nên tập trung vào trạng thái

Nếu chúng ta tin rằng phân lớp chuỗi khối là hướng phát triển trong tương lai, thì chúng ta nên xem xét nhu cầu của các giao thức lớp trên và mạng phân lớp ngay từ đầu, đồng thời thiết kế các giao thức chuỗi khối trong một khung phân lớp.

Nói cách khác, từ góc độ phân lớp, các thiết kế chuỗi khối hiện tại đã lỗi thời. Các chuỗi khối hiện tại được thiết kế với các chức năng cụ thể (chẳng hạn như thanh toán hoặc chạy DApps) và hy vọng rằng giao thức lớp trên sẽ tự thích ứng sau một thời gian hoạt động. Tuy nhiên, nếu đọc lịch sử của Internet, chúng ta sẽ biết rằng lớp giao thức của Internet ngày nay không được vá theo cách này mà là sau khi tiếp thu kinh nghiệm trong quá khứ. Đây là lý do tại sao chuỗi khối không phải là Lớp 1 một cách tự nhiên và Lớp 1 cần được thiết kế.

Để biết Lớp 1 nên tập trung vào cái gì, trước tiên chúng ta phải tìm ra sự khác biệt giữa nó và giao thức lớp trên. Nguồn gốc của Lớp 2 liên quan đến phát hiện của chúng tôi rằng hiệu suất của chuỗi công khai (ở đây đề cập đến chuỗi khối không được phép) là không đủ và rất khó để mở rộng để đáp ứng nhu cầu của toàn bộ nền kinh tế mã hóa. 2 có thể được bảo mật bằng blockchain, chẳng hạn như kênh thanh toán, plasma, v.v.

Đặc điểm chung của các giao thức này là hy sinh phạm vi đồng thuận để đổi lấy hiệu suất. Điều tuyệt vời nhất về chuỗi công khai là nó cung cấp các dịch vụ không bị gián đoạn trên toàn thế giới thông qua một mạng mở, có nghĩa là sự đồng thuận toàn cầu và hiệu suất thấp.

Cách tốt nhất để giải quyết vấn đề này là chuyển hầu hết các giao dịch sang giao thức lớp trên với phạm vi đồng thuận nhỏ hơn nhưng hiệu suất tốt hơn và để đảm bảo rằng những người tham gia giao thức lớp trên luôn có thể quay lại chuỗi khối để giải quyết vấn đề khi họ không hài lòng, chi phí chỉ là một số chi phí thời gian.

tiêu đề phụ

tình trạng thế nào

Mỗi nút đầy đủ trong mạng chuỗi khối sẽ để lại một số dữ liệu trên bộ lưu trữ cục bộ sau khi chạy trong mạng trong một khoảng thời gian. Chúng ta có thể chia chúng thành hai loại theo lịch sử và hiện tại:

Mỗi nút đầy đủ trong mạng chuỗi khối sẽ để lại một số dữ liệu trên bộ lưu trữ cục bộ sau khi chạy trong mạng trong một khoảng thời gian. Chúng ta có thể chia chúng thành hai loại theo lịch sử và hiện tại:

Lịch sử: Cả dữ liệu khối và dữ liệu giao dịch đều là lịch sử và lịch sử là đường dẫn từ Genesis đến trạng thái hiện tại.

Trạng thái (tức là bây giờ): Kết quả cuối cùng được hình thành bởi nút sau khi xử lý tất cả các khối và giao dịch từ Genesis đến độ cao hiện tại. Trạng thái luôn thay đổi với việc bổ sung các khối và giao dịch là nguyên nhân của sự thay đổi.

Vai trò của giao thức đồng thuận là đảm bảo rằng trạng thái hiện tại mà mỗi nút nhìn thấy là giống nhau thông qua một loạt trao đổi thông báo và cách để đạt được mục tiêu này là đảm bảo rằng lịch sử mà mỗi nút nhìn thấy là giống nhau. Miễn là lịch sử giống nhau (nghĩa là thứ tự của tất cả các giao dịch giống nhau), cách xử lý giao dịch giống nhau (thực hiện các giao dịch trong cùng một máy ảo xác định) và trạng thái hiện tại được nhìn thấy ở cuối là giống nhau. Khi chúng ta nói "blockchain là bất biến", điều đó có nghĩa là lịch sử của blockchain không thể bị can thiệp, ngược lại, trạng thái luôn thay đổi.

tiêu đề phụ

Ví dụ: Lịch sử và trạng thái của Bitcoin

Trạng thái của Bitcoin đề cập đến trạng thái hiện tại của sổ cái Bitcoin. Trạng thái của Bitcoin bao gồm các UTXO (đầu ra giao dịch chưa được chi tiêu), mỗi UTXO đại diện cho một lượng Bitcoin nhất định và một tên (scriptPubkey) được viết trên mỗi UTXO để ghi lại ai là chủ sở hữu của UTXO này. Nếu một sự tương tự được thực hiện, trạng thái hiện tại của Bitcoin là một túi đầy tiền vàng, mỗi đồng tiền được khắc tên của chủ sở hữu.

Lịch sử của Bitcoin bao gồm một loạt các giao dịch và cấu trúc chính trong giao dịch là đầu vào và đầu ra. Một giao dịch thay đổi trạng thái bằng cách đánh dấu một số UTXO có trong trạng thái hiện tại (những UTXO được tham chiếu bởi đầu vào giao dịch) là đã sử dụng, loại bỏ chúng khỏi bộ UTXO và sau đó thêm một số UTXO mới (đầu ra của giao dịch này) vào bộ UTXO.

Có thể thấy đầu ra (TXO, Transaction Output) của giao dịch Bitcoin chính xác là UTXO đã đề cập ở trên và UTXO chỉ là một TXO trong giai đoạn đặc biệt (chưa được chi tiêu). Bởi vì các thành phần tạo nên trạng thái của Bitcoin (UTXO) cũng là các thành phần tạo nên giao dịch (TXO).

Do đó, Bitcoin có một thuộc tính tuyệt vời: trạng thái tại bất kỳ thời điểm nào là một tập hợp con của lịch sử và các loại dữ liệu chứa trong lịch sử và trạng thái có cùng chiều. Lịch sử giao dịch (tập hợp tất cả các giao dịch được đóng gói, nghĩa là tập hợp tất cả các TXO được tạo) là lịch sử của trạng thái (tập hợp các UTXO tương ứng với mỗi khối, cũng là tập hợp tất cả các TXO được tạo), lịch sử của Bitcoin Chỉ chứa các giao dịch.

tiêu đề phụ

Một ví dụ khác: lịch sử và trạng thái của Ethereum

Trạng thái của Ethereum, còn được gọi là "trạng thái của thế giới", đề cập đến trạng thái hiện tại của sổ cái Ethereum. Trạng thái của Ethereum là một cây Merkle bao gồm các tài khoản (tài khoản là những chiếc lá). Tài khoản không chỉ ghi lại số dư (đại diện cho một lượng ether nhất định) mà còn cả dữ liệu hợp đồng (chẳng hạn như dữ liệu của mỗi con mèo được mã hóa). Trạng thái của Ethereum có thể được coi là một cuốn sổ cái lớn, cột đầu tiên của sổ cái là tên, cột thứ hai là số dư và cột thứ ba là dữ liệu hợp đồng.

Lịch sử của Ethereum cũng bao gồm các giao dịch, cấu trúc chính bên trong giao dịch là:

to: một tài khoản khác, đại diện cho người gửi giao dịch

giá trị: lượng ether được thực hiện bởi giao dịch

dữ liệu: bất kỳ thông tin nào được thực hiện bởi giao dịch

Cách giao dịch thay đổi trạng thái là EVM tìm tài khoản đích mà giao dịch được gửi đến,

1. Tính số dư mới của tài khoản mục tiêu theo giá trị của giao dịch;

2. Truyền dữ liệu do giao dịch mang theo dưới dạng tham số cho hợp đồng thông minh của tài khoản đích, chạy logic của hợp đồng thông minh và có thể sửa đổi trạng thái bên trong của bất kỳ tài khoản nào trong quá trình hoạt động để tạo trạng thái mới;

3. Tạo một lá mới để lưu trữ trạng thái mới và cập nhật cây Merkle trạng thái.


Có thể thấy rằng lịch sử và cấu trúc giao dịch của Ethereum rất khác so với Bitcoin. Trạng thái của Ethereum bao gồm các tài khoản, trong khi các giao dịch bao gồm thông tin kích hoạt thay đổi tài khoản. Trạng thái và giao dịch ghi lại các loại dữ liệu hoàn toàn khác nhau. Không có mối quan hệ siêu tập hợp và tập hợp con giữa hai trạng thái. Lịch sử và trạng thái chứa Loại dữ liệu của là hai chiều và không có mối liên hệ cần thiết nào giữa kích thước của lịch sử giao dịch và kích thước của trạng thái.

Sau khi giao dịch sửa đổi trạng thái, nó sẽ không chỉ tạo ra một trạng thái mới (các phần còn lại trong hộp đường liền nét trong hình), mà còn để lại trạng thái cũ (các phần còn lại trong hộp nét chấm trong hình) như một trạng thái lịch sử, vì vậy lịch sử của Ethereum không chỉ bao gồm các giao dịch mà còn chứa trạng thái lịch sử.

Vì lịch sử và trạng thái thuộc về các chiều khác nhau, tiêu đề khối Ethereum không chỉ chứa gốc merkle của giao dịch mà còn cần chứa gốc merkle của trạng thái một cách rõ ràng.

Mọi khối và mọi tài khoản trong Ethereum sẽ tiếp tục chiếm không gian lưu trữ của nút. Các nút Ethereum có nhiều chế độ khi đồng bộ hóa. Ở chế độ Lưu trữ, tất cả lịch sử và trạng thái sẽ được lưu giữ, bao gồm lịch sử giao dịch và trạng thái lịch sử. Kích thước tổng hợp của tất cả dữ liệu vượt quá 2TB; ở chế độ Mặc định, trạng thái lịch sử sẽ bị cắt. và chỉ giao dịch lịch sử và trạng thái hiện tại được lưu cục bộ. Tổng dữ liệu khoảng 170G, trong đó kích thước lịch sử giao dịch là 150G và kích thước trạng thái hiện tại là 10G.

Tất cả quản lý chi phí chung trong Ethereum được thống nhất theo mô hình thanh toán gas.Kích thước của giao dịch cần tiêu thụ lượng gas tương ứng và lượng gas được tiêu thụ bởi mỗi lệnh EVM không chỉ tính đến chi phí tính toán mà còn tính đến chi phí lưu trữ. Thông qua gaslimit của mỗi khối, tốc độ tăng trưởng của lịch sử và trạng thái bị hạn chế một cách gián tiếp.

ps.Một hiểu lầm phổ biến là "kích thước chuỗi khối" của Ethereum đã vượt quá 1T. Từ phân tích trên, chúng ta có thể thấy rằng "kích thước chuỗi khối" là một định nghĩa rất mơ hồ, nếu tính trạng thái lịch sử thì nó thực sự vượt quá, nhưng đối với tất cả các nút, không có vấn đề gì trong việc xóa trạng thái lịch sử, bởi vì miễn là có Genesis và lịch sử giao dịch, trạng thái lịch sử tại bất kỳ thời điểm nào có thể được tính toán lại (bất kể thời gian cần thiết để tính toán).

Dữ liệu thực sự có ý nghĩa là kích thước của dữ liệu cần thiết cho một nút đầy đủ. Bitcoin là 200G và Ethereum là 170G. Cả hai về cơ bản giống nhau và có thể được cài đặt trên một máy chủ đám mây có cấu hình trung bình. Mức giảm không phải do dung lượng lưu trữ tăng (nguyên nhân gốc rễ là chi phí tính toán khi đồng bộ hóa).

tiêu đề phụ

Bi kịch của (Lưu trữ) Commons: Phiên bản Chuỗi khối của Bi kịch của Commons

Bi kịch của tài sản chung đề cập đến một tình huống trong đó một nguồn tài nguyên được chia sẻ hạn chế bị tiêu thụ quá mức bởi những người có quyền sử dụng không hạn chế. Bộ nhớ được trả bởi các nút blockchain để lưu giữ lịch sử và trạng thái chỉ là một tài nguyên được chia sẻ như vậy.

Có ba loại tài nguyên được sử dụng bởi các nút blockchain để xử lý giao dịch, CPU, lưu trữ và băng thông mạng. Cả CPU và băng thông đều là tài nguyên sẽ được làm mới trong mỗi khối. Chúng ta có thể nghĩ rằng cùng một lượng CPU và băng thông có sẵn để sử dụng trong mỗi khoảng thời gian của khối. CPU và băng thông được tiêu thụ bởi khối trước sẽ không cho phép khối tiếp theo Ít hơn CPU và băng thông có sẵn cho các khối. Đối với các tài nguyên có thể làm mới, chúng tôi có thể bù đắp cho các nút thông qua khoản thanh toán phí giao dịch một lần (tham khảo Phụ lục RFC0015 để biết mối tương quan giữa phí và độ phức tạp tính toán cũng như quy mô giao dịch).

Không giống như CPU ​​và băng thông, bộ nhớ là một tài nguyên bị chiếm dụng. Bộ nhớ bị chiếm giữ trong một khối không thể được người dùng khác sử dụng trong các khối tiếp theo trừ khi người dùng chủ động giải phóng nó. Các nút cần trả phí lưu trữ liên tục, nhưng người dùng không cần trả phí lưu trữ liên tục (hãy nhớ rằng phí giao dịch chỉ cần thanh toán một lần).

Người dùng chỉ cần trả một khoản phí nhỏ khi ghi dữ liệu vào chuỗi khối và sau đó họ có thể sử dụng vĩnh viễn kho lưu trữ có tính khả dụng vượt xa Amazon S3 và chi phí lưu trữ vĩnh viễn vô hạn của nó cần phải do tất cả các nút đầy đủ trong mạng chuỗi khối chịu.

Do sự tồn tại của nhiều DApp khác nhau trên Ethereum, Bi kịch của (Lưu trữ) Commons tương đối nghiêm trọng hơn. Ví dụ tại thời điểm block 5700001 (30/05/2018) thì 5 hợp đồng được sử dụng nhiều nhất là:


  • EtherDelta,     5.09%

  • IDEX,     4.17%

  • CryptoKitties,     3.05%

  • ENS,     1.92%

  • EOS Sale, 1.73%

Thú vị hơn là cái cuối cùng, EOS Sale. Mặc dù quá trình huy động vốn từ cộng đồng của EOS đã hoàn tất và các mã thông báo của EOS đã được lưu hành trên chuỗi EOS, các bản ghi về hoạt động huy động vốn từ cộng đồng của EOS vẫn tồn tại mãi mãi trên các nút Ethereum, tiêu tốn tài nguyên lưu trữ của toàn bộ nút Ethereum.

vụ nổ trạng thái

vụ nổ trạng thái

Bạn có thể nói, chẳng lẽ sự cải thiện của mức độ trung bình của phần cứng sẽ vượt quá tốc độ tích lũy của lịch sử và địa vị? Câu trả lời của tôi rất khó xảy ra:

Bạn có thể nói, chẳng lẽ sự cải thiện của mức độ trung bình của phần cứng sẽ vượt quá tốc độ tích lũy của lịch sử và địa vị? Câu trả lời của tôi rất khó xảy ra:

Từ biểu đồ này, chúng ta có thể thấy rằng khi mạng Ethereum phát triển, lượng dữ liệu trạng thái được tích lũy sẽ tăng theo cấp số nhân. Mất 10 năm để dữ liệu trạng thái của Bitcoin tích lũy từ 0 đến 3G; mất 4 năm để dữ liệu trạng thái của Ethereum tích lũy từ 0 đến 10G; và đây là trước khi chúng tôi giải quyết vấn đề về khả năng mở rộng và chuỗi khối vẫn còn một tỷ lệ tăng trưởng trường hợp công nghệ thích hợp.

Khi chúng tôi giải quyết vấn đề về khả năng mở rộng, chuỗi khối thực sự được áp dụng rộng rãi và số lượng DApp và người dùng bùng nổ, lịch sử chuỗi khối và dữ liệu trạng thái sẽ tích lũy với tốc độ nào?

Đây là vấn đề bùng nổ trạng thái, mà chúng tôi phân loại là vấn đề hậu khả năng mở rộng, bởi vì nó sẽ rất rõ ràng sau khi giải quyết vấn đề khả năng mở rộng. Lần đầu tiên chúng tôi nhận thấy vấn đề này khi chúng tôi đang làm việc trên kịch bản chuỗi được cấp phép, bởi vì hiệu suất của chuỗi được cấp phép cao hơn nhiều so với chuỗi công khai và nó chỉ ở giai đoạn sau khả năng mở rộng.

Việc tích lũy dữ liệu lịch sử tương đối dễ xử lý. Trong tương lai, nó có thể được nén bằng các công nghệ như Điểm kiểm tra phi tập trung hoặc bằng chứng không kiến ​​thức. Trước đó, nút đầy đủ thậm chí có thể loại bỏ lịch sử trực tiếp mà vẫn hoạt động bình thường. Việc tích lũy dữ liệu trạng thái rất rắc rối, bởi vì đó là dữ liệu cần thiết cho hoạt động của nút đầy đủ.

Nhiều dự án blockchain đã nhìn thấy vấn đề này và đề xuất một số giải pháp. EOS RAM là một nỗ lực hữu ích để giải quyết vấn đề bùng nổ trạng thái: RAM đại diện cho tài nguyên bộ nhớ có sẵn cho máy chủ siêu nút, cho dù đó là tài khoản, trạng thái hợp đồng hay mã, nó cần chiếm một lượng RAM nhất định để chạy.

Thiết kế của RAM cũng có nhiều vấn đề, nó cần được mua thông qua thị trường giao dịch tích hợp, không thể chuyển nhượng và không thể cho thuê, nó kết hợp các yêu cầu bộ nhớ ngắn hạn trong quá trình thực hiện hợp đồng và các yêu cầu lưu trữ dài hạn của trạng thái hợp đồng và tổng dung lượng RAM được đặt. Không có quy tắc nhất định và nó phụ thuộc nhiều vào cấu hình phần cứng mà các siêu nút có thể chi trả hơn là chi phí của không gian đồng thuận.

Cộng đồng Ethereum cũng đã nhìn ra vấn đề này và đưa ra giải pháp cho thuê kho lưu trữ: người dùng phải trả tiền thuê trước cho việc sử dụng tài nguyên lưu trữ, việc chiếm dụng tài nguyên lưu trữ sẽ tiếp tục tiêu tốn khoản tiền thuê này. người dùng cần phải trả nhiều tiền hơn. Có hai vấn đề với giải pháp Thuê kho lưu trữ:

1. Tiền nhà trả trước một ngày sẽ dùng hết, xử lý thế nào với tình trạng kín phòng lúc này? Để giải quyết vấn đề này, Storage Rent cần các cơ chế như phục hồi, làm tăng độ phức tạp của thiết kế, giảm đáng kể tính bất biến của hợp đồng thông minh và gây rắc rối cho trải nghiệm người dùng;

2. Mô hình trạng thái của Ethereum là mô hình trạng thái chia sẻ, không phải Trạng thái hạng nhất. Lấy ERC20Token làm ví dụ, tất cả hồ sơ tài sản của người dùng được lưu trữ trong bộ lưu trữ của một hợp đồng ERC20 duy nhất.Trong trường hợp này, ai sẽ trả tiền thuê?

Giải quyết vấn đề bùng nổ trạng thái cũng là một trong những mục tiêu thiết kế của Nervos CKB, vì vậy chúng tôi đã thực hiện một con đường thay đổi hoàn toàn khác và triệt để hơn. Nói tóm lại, trong Nervos CKB, mã thông báo đại diện cho một đơn vị không gian lưu trữ. Thông qua thiết kế mô hình kinh tế, chúng tôi giới hạn quy mô của trạng thái thế giới, sử dụng phương tiện thị trường để điều chỉnh cung và cầu của kho lưu trữ trạng thái và tiếp tục cung cấp người dùng chiếm giữ nhà nước thông qua thiết kế phát hành bổ sung. Phí được sử dụng để điều phối lợi ích của tất cả các bên trong hệ sinh thái nhằm đạt được an ninh lâu dài và ổn định lâu dài.

EOS
ETH
BTC
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
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