Dưới đây là một giải thích chi tiết về Polkadot1, Polkadot2 và cách họ phát triển thành JAM. (Để biết thêm chi tiết, xem tại:https://www.navalmanack.com/almanack-of-naval-ravikant/how-to-think-clearlyBài viết này nhằm vào độc giả kỹ thuật, đặc biệt là những người có thể không quá quen thuộc với Polkadot nhưng có một số hiểu biết về hệ thống blockchain và có thể đã quen thuộc với các công nghệ từ các hệ sinh thái khác.
Tôi tin rằng bài viết này là một bước đệm tốt cho việc đọc JAM Gray Paper. (Để biết thêm chi tiết, xem:https://graypaper.com/)
Bài viết này cho rằng người đọc đã quen thuộc với các khái niệm sau:
Hãy trở lại xem xét các tính năng sáng tạo nhất của Polkadot1 trước.
Hiện tại, chúng tôi đang thảo luận về một mạng Layer 1 mà lưu trữ các mạng “blockchain” Layer 2 khác, tương tự như Polkadot và Ethereum. Do đó, các thuật ngữ Layer 2 và Parachain có thể được sử dụng thay thế cho nhau.
Vấn đề cốt lõi của khả năng mở rộng blockchain có thể được đặt ra như sau: Có một nhóm các bên xác nhận, sử dụng cơ cấu kinh tế mã hóa của chứng minh cổ phần, đảm bảo rằng việc thực thi mã nguồn nhất định là đáng tin cậy. Mặc định, những bên xác nhận này cần phải thực thi lại tất cả công việc của nhau. Miễn là chúng ta áp đặt rằng tất cả các bên xác nhận luôn phải thực thi lại tất cả mọi thứ, toàn bộ hệ thống vẫn không thể mở rộng được.
Vui lòng lưu ý rằng, miễn là nguyên tắc tái thực hiện tuyệt đối không thay đổi, việc tăng số lượng người xác minh trong mô hình này thực sự không cải thiện hiệu suất hệ thống.
Điều này chứng tỏ một chuỗi khối tuyến tính (so với chuỗi khối được chia nhỏ). Tất cả các máy chủ xác thực mạng xử lý đầu vào (tức là, các khối) một cách tuần tự. Trong một hệ thống như vậy, nếu Layer 1 muốn địa chỉ nhiều Layer 2 hơn, thì tất cả các máy chủ xác thực phải thực thi lại tất cả công việc của Layer 2. Rõ ràng, phương pháp này không mở rộng được.
Optimistic rollups giải quyết vấn đề này bằng cách chỉ thực hiện lại (bằng chứng gian lận) khi gian lận được tuyên bố. Bản tổng hợp dựa trên SNARK giải quyết vấn đề này bằng cách tận dụng thực tế là chi phí xác thực bằng chứng SNARK thấp hơn đáng kể so với chi phí tạo chúng, do đó cho phép tất cả các trình xác thực xác minh hiệu quả bằng chứng SNARK. Để biết thêm chi tiết, hãy tham khảo "Phụ lục: Sơ đồ không gian khả năng mở rộng".
Một giải pháp trực tiếp cho việc tách là chia tập hợp các validator thành các tập con nhỏ hơn và có các tập con nhỏ này thực thi lại các khối Layer2. Vấn đề của phương pháp này là gì? Cơ bản, chúng ta đang tách cả việc thực thi và an ninh kinh tế của mạng. Một giải pháp Layer2 như vậy có độ bảo mật thấp hơn so với Layer1, và độ bảo mật của nó giảm đi khi chúng ta chia tập hợp các validator thành nhiều phần hơn.
Không giống như optimistic rollups, nơi chi phí thực thi lại không phải lúc nào cũng có thể tránh được, Polkadot được thiết kế với việc thực thi phân mảnh trong tâm trí. Nó cho phép một phần của người xác thực thực thi lại các khối Layer 2 trong khi cung cấp đủ bằng chứng cryptoeconomic cho toàn bộ mạng lưới để chứng minh rằng khối Layer 2 là an toàn như khi toàn bộ bộ xác thực đã thực thi lại nó. Điều này được đạt được thông qua một cơ chế mới lạ (và gần đây được hình thành) được biết đến là ELVES. (Để biết thêm chi tiết, xem: https://eprint.iacr.org/2024/961)
Để ý, ELVES có thể được coi là cơ chế “suspicious rollups”. Thông qua một số vòng lặp của các nhà xác minh truy vấn một cách tích cực các nhà xác minh khác về việc xem xét xem một khối Layer 2 cụ thể có hợp lệ hay không, chúng ta có thể xác nhận với xác suất cao về tính hợp lệ của khối đó. Trong trường hợp có bất kỳ tranh cãi nào, toàn bộ bộ xác minh sẽ nhanh chóng tham gia. Rob Habermeier, người sáng lập Polkadot, đã giải thích điều này một cách chi tiết trong một bài viết. (Để biết thêm chi tiết, xem: https://polkadot.com/blog/polkadot-v1-0-sharding-and-economic-security#approval-checking-and-finality)
ELVES cho phép Polkadot sở hữu cả thực thi phân mảnh và an ninh chia sẻ, hai thuộc tính trước đây được cho là không thể tồn tại cùng nhau. Điều này là thành tựu kỹ thuật chính của Polkadot1 về khả năng mở rộng.
Bây giờ, hãy tiến xa hơn với phân tích "Core". Một blockchain thực thi phân mảnh rất giống với một CPU: giống như một CPU có thể có nhiều lõi thực thi các hướng dẫn song song, Polkadot có thể xử lý các khối Layer 2 song song. Đó là lý do tại sao Layer 2 trên Polkadot được gọi là một parachain, và môi trường nơi các tập hợp validator nhỏ hơn thực thi lại một khối Layer 2 đơn được gọi là một "core". Mỗi lõi có thể được trừu tượng hóa như "một nhóm validator hợp tác."
Bạn có thể nghĩ về một chuỗi khối đồng nhất như đang xử lý một khối duy nhất vào một thời điểm, trong khi Polkadot xử lý cả khối chuỗi relay và khối parachain cho mỗi nhân lõi trong cùng một khoảng thời gian.
Cho đến nay, chúng tôi chỉ đã thảo luận về khả năng mở rộng và thực thi theo từng phần được cung cấp bởi Polkadot. Quan trọng phải lưu ý rằng mỗi phần của Polkadot, thực tế, là một ứng dụng hoàn toàn khác biệt. Điều này được đạt được thông qua metaprotocol được lưu trữ dưới dạng bytecode: một giao thức lưu trữ định nghĩa của chính blockchain dưới dạng bytecode trong trạng thái của nó. Trong Polkadot 1.0, WASM được sử dụng làm bytecode ưu tiên, trong khi trong JAM, PVM/RISC-V được áp dụng.
Đây là lý do tại sao Polkadot được gọi là một chuỗi khối phân mảnh không đồng nhất. (Để biết thêm chi tiết, xem:https://x.com/kianenigma/status/1790763921600606259) Mỗi Layer 2 là một ứng dụng hoàn toàn khác biệt.
Một khía cạnh quan trọng của Polkadot2 là làm cho việc sử dụng lõi linh hoạt hơn. Trong mô hình Polkadot ban đầu, thời gian cho thuê cốt lõi dao động từ 6 tháng đến 2 năm, phù hợp với các doanh nghiệp giàu tài nguyên nhưng ít khả thi hơn đối với các nhóm nhỏ hơn. Tính năng cho phép các lõi Polkadot được sử dụng linh hoạt hơn được gọi là "Agile Coretime". (Để biết thêm chi tiết, xem:https://polkadot.com/agile-coretime) Trong chế độ này, các điều khoản cho thuê cơ bản có thể ngắn chỉ là một khối hoặc lâu đến một tháng, với mức giá tối đa đối với những người muốn thuê trong thời gian dài hơn.
Các tính năng khác của Polkadot 2 sẽ dần dần được tiết lộ khi cuộc thảo luận của chúng ta tiến triển, vì vậy không cần phải giải thích thêm ở đây.
Để hiểu JAM, việc quan trọng đầu tiên là phải nắm bắt điều gì xảy ra khi một khối Layer 2 nhập vào hạt nhân Polkadot. Dưới đây là một giải thích đơn giản.
Hãy nhớ rằng một nhân hạt chủ yếu bao gồm một tập hợp các người xác minh. Vì vậy, khi chúng ta nói "dữ liệu được gửi đến nhân hạt", điều đó có nghĩa là dữ liệu được chuyển đến tập hợp này của các người xác minh.
Một khối Layer 2, cùng với một phần của trạng thái của Layer 2 đó, được gửi đến nhân trung tâm. Dữ liệu này chứa tất cả thông tin cần thiết để thực thi khối Layer 2.
Một phần của các trình xác minh nhân lõi sẽ thực hiện lại khối Layer 2 và tiếp tục với các nhiệm vụ liên quan đến sự đồng thuận.
Các validator nhân lõi này cung cấp dữ liệu đã thực thi cho các validator khác bên ngoài nhóm nhân lõi. Theo quy tắc ELVES, các validator này có thể quyết định liệu có thực thi lại khối Layer 2 hay không, cần dữ liệu này để làm điều đó.
Quan trọng nhấn mạnh rằng, cho đến nay, tất cả những hoạt động này đều diễn ra bên ngoài khối chính của Polkadot và chức năng chuyển trạng thái. Mọi thứ diễn ra trong lõi và lớp tính sẵn sàng dữ liệu.
Từ đó, chúng ta có thể khám phá một số hoạt động chính mà Polkadot đang thực hiện:
Hiểu điều này là nền tảng để hiểu JAM. Dưới đây là một bản tóm tắt:
Với sự hiểu biết này, chúng tôi có thể giới thiệu JAM ngay bây giờ.
JAM là một giao thức mới được truyền cảm hứng từ thiết kế của Polkadot và hoàn toàn tương thích với nó, nhằm mục tiêu thay thế chuỗi relay của Polkadot và làm cho việc sử dụng hạt nhân trở nên hoàn toàn phi tập trung và không bị hạn chế.
Xây dựng trên Polkadot 2, JAM cố gắng làm cho việc triển khai Layer 2 trên lõi dễ tiếp cận hơn, cung cấp thậm chí linh hoạt hơn so với mô hình agile-coretime.
Điều này được đạt được chủ yếu bằng cách tiết lộ ba khái niệm cốt lõi đã được thảo luận trước đó cho các nhà phát triển: thực thi trên chuỗi, thực thi trong lõi, và lớp DA.
Nói cách khác, trong JAM, các nhà phát triển có thể:
Đây là cái nhìn tổng quan cơ bản về mục tiêu của JAM. Không cần phải nói, nhiều phần của điều này đã được đơn giản hóa, và giao thức có khả năng tiếp tục phát triển.
Với sự hiểu biết cơ bản này, chúng ta có thể đi sâu vào một số điều cụ thể về JAM trong các chương tiếp theo.
Trong JAM, những gì trước đây được gọi là Layer 2 hoặc parachains bây giờ được gọi là Dịch vụvà những gì trước đây được gọi là khối hoặc giao dịch bây giờ được gọi làCông việchoặcGói công việc. Cụ thể, một mục công việc thuộc về một dịch vụ, và một gói công việc là một bộ sưu tập các mục công việc. Những thuật ngữ này được mô tả rộng rãi để bao gồm các trường hợp sử dụng vượt ra ngoài các kịch bản blockchain/Layer 2.
Một dịch vụ được mô tả bởi ba điểm nhập, trong đó hai điểm là fn refine() và fn accumulate(). Điểm đầu tiên mô tả dịch vụ làm gì trong quá trình thực thi trên core, và điểm thứ hai mô tả dịch vụ làm gì trong quá trình thực thi trên chuỗi.
Cuối cùng, tên của những điểm nhập này chính là lý do khiến giao thức được gọi là JAM (Join Accumulate Machine).Tham giađề cập đếnfn refine()
, đó là giai đoạn mà tất cả các lõi Polkadot xử lý một lượng công việc lớn song song trên các dịch vụ khác nhau. Sau khi dữ liệu được xử lý, nó sẽ chuyển sang giai đoạn tiếp theo.Tích luỹđề cập đến quá trình tích lũy tất cả các kết quả này vào trạng thái JAM chính, điều này xảy ra trong giai đoạn thực thi trên chuỗi.
Các mục công việc có thể chỉ định một cách chính xác mã họ thực thi trên core và on-chain, cũng như cách, nếu có, và từ đâu họ đọc hoặc ghi nội dung trong Hồ dữ liệu phân tán.
Đánh giá tài liệu hiện có về XCM (ngôn ngữ được chọn của Polkadot cho việc giao tiếp với parachain), tất cả giao tiếp đều là bất đồng bộ (để biết thêm chi tiết, xemở đây). Điều này có nghĩa là một khi một tin nhắn được gửi đi, bạn không thể đợi phản hồi của nó. Giao tiếp không đồng bộ là một triệu chứng của sự không nhất quán trong hệ thống và là một trong những nhược điểm chính của các hệ thống được chia nhỏ một cách cố định như Polkadot 1, Polkadot 2 và các hệ sinh thái Layer 2 hiện tại của Ethereum.
Tuy nhiên, như mô tả trong Phần 2.4 củaGraypaper, một hệ thống hoàn toàn nhất quán mà vẫn đồng bộ cho tất cả các người thuê chỉ có thể mở rộng đến một mức độ nhất định mà không phải hy sinh tính phổ biến, tính truy cập hoặc tính linh hoạt.
Điều đặc biệt ở JAM là việc giới thiệu một số tính năng, JAM đạt được một trạng thái trung gian mới được biết đến là hệ thống bán kính bán kính. Trong hệ thống này, các hệ thống con giao tiếp thường xuyên có thể tạo ra môi trường nhất quán với nhau, mà không buộc cả hệ thống phải duy trì tính nhất quán. Điều này được mô tả tốt nhất bởi Tiến sĩ Gavin Wood, tác giả của Graypaper, trong một cuộc phỏng vấn: https://www.youtube.com/watch?t=1378&v=O3kRAVBTkfs&embeds_referring_euri=https%3A%2F%2Fblog.kianenigma.nl%2F&source_ve_path=OTY3MTQ
Một cách khác để hiểu điều này là bằng cách xem Polkadot/JAM như một hệ thống được chia nhỏ, nơi ranh giới giữa những mảnh này là linh hoạt và được xác định một cách động.
Polkadot luôn được chia nhỏ và hoàn toàn không đồng nhất.
Bây giờ, nó không chỉ phân mảnh và không đồng nhất, mà những ranh giới phân mảnh này cũng có thể được định nghĩa linh hoạt - điều mà Gavin Wood gọi là một hệ thống "bán nhất quán" trong những bài viết trên Twitter của mình và trong Graypaper. (xin xem: https://x.com/gavofyork?ref_src=twsrc%5Etfw、https://graypaper.com/)
Một số tính năng làm cho trạng thái bán ổn định này có thể xảy ra:
Lưu ý rằng trong JAM, các khả năng này có thể được thực hiện, nhưng không bắt buộc ở cấp độ giao thức. Do đó, một số giao diện lý thuyết là không đồng bộ nhưng trong thực tế có thể hoạt động đồng bộ do sự trừu tượng phức tạp và động cơ khuyến khích. CorePlay, sẽ được thảo luận trong phần tiếp theo, là một ví dụ cho hiện tượng này.
Phần này giới thiệu CorePlay, một khái niệm thí nghiệm trong môi trường JAM có thể được mô tả là một mô hình lập trình hợp đồng thông minh mới. Đến thời điểm viết bài này, CorePlay chưa được xác định đầy đủ và vẫn là một ý tưởng đầu cơ.
Để hiểu về CorePlay, chúng ta cần trước tiên giới thiệu máy ảo (VM) được JAM lựa chọn: PVM.
PVM là một chi tiết quan trọng trong cả JAM và CorePlay. Những chi tiết cấp thấp của PVM nằm ngoài phạm vi của tài liệu này và được giải thích tốt nhất bởi các chuyên gia lĩnh vực trong Graypaper. Tuy nhiên, cho giải thích này, chúng tôi sẽ nêu bật một số đặc điểm chính của PVM:
Điều cuối cùng, đặc biệt quan trọng đối với CorePlay.
CorePlay là một ví dụ về cách các nguyên tắc linh hoạt của JAM có thể được sử dụng để tạo ra môi trường hợp đồng thông minh đồng bộ và có khả năng mở rộng với giao diện lập trình cực kỳ linh hoạt. CorePlay đề xuất rằng các hợp đồng thông minh dựa trên người tham gia được triển khai trực tiếp trên nhân JAM, cho phép họ hưởng lợi từ các giao diện lập trình đồng bộ. Các nhà phát triển có thể viết hợp đồng thông minh như là các hàm fn main() đơn giản, sử dụng các biểu thức như let kết quả = nhân vật coreplay khác(data).await?để giao tiếp. Nếudiễn viên khác của Coreplayđược trên cùng một lõi JAM trong cùng một khối, cuộc gọi này là đồng bộ. Nếu nó trên một lõi khác, diễn viên sẽ bị tạm dừng và tiếp tục trong một khối JAM sau. Điều này được thực hiện nhờ các dịch vụ JAM, lập lịch linh hoạt của họ và khả năng của PVM.
Cuối cùng, hãy tổng kết lý do chính JAM hoàn toàn tương thích với Polkadot. Sản phẩm mũi nhọn của Polkadot là các chuỗi phản ứng agile-coretime, tiếp tục trong JAM. Các dịch vụ triển khai sớm nhất trong JAM có thể sẽ được gọi là CoreChains hoặc Parachains, cho phép các chuỗi phản ứng kiểu Polkadot-2 hiện có chạy trên JAM.
Các dịch vụ khác có thể được triển khai trên JAM, và dịch vụ CoreChains hiện tại có thể giao tiếp với chúng. Tuy nhiên, các sản phẩm hiện tại của Polkadot sẽ vẫn mạnh mẽ, đơn giản chỉ mở ra cơ hội mới cho các nhóm parachain hiện tại.
Hầu hết tài liệu này nói về khả năng mở rộng từ góc nhìn của việc phân chia thực hiện. Tuy nhiên, chúng ta cũng có thể xem xét vấn đề này từ quan điểm phân chia dữ liệu. Thú vị là, chúng ta thấy rằng điều này tương tự như mô hình bán nhất quán được đề cập trước đó. Về nguyên tắc, một hệ thống hoàn toàn nhất quán là ưu việt nhưng không thể mở rộng, trong khi một hệ thống hoàn toàn không nhất quán mở rộng tốt nhưng không tối ưu. JAM, với mô hình bán nhất quán của nó, đưa ra một khả năng mới.
JAM cung cấp điều gì đó vượt ra ngoài hai tùy chọn này: nó cho phép các nhà phát triển công bố dữ liệu tùy ý lên lớp DA JAM, là một điểm trung gian giữa dữ liệu trên chuỗi và ngoài chuỗi. Các ứng dụng mới có thể được xây dựng để tận dụng lớp DA cho hầu hết dữ liệu của họ, trong khi chỉ lưu trữ dữ liệu cực kỳ quan trọng vào trạng thái JAM.
Phần này sẽ xem xét lại quan điểm của chúng tôi về khả năng mở rộng của blockchain, được thảo luận trong Bản mô tả dự án, mặc dù ở đây được trình bày một cách ngắn gọn hơn.
Khả năng mở rộng của blockchain chủ yếu tuân theo các phương pháp truyền thống từ hệ thống phân tán: mở rộng theo chiều dọc và mở rộng theo chiều ngang.
Tăng cường theo chiều dọc là điều mà các nền tảng như Solana tập trung vào, tối đa hóa thông lượng bằng cách tối ưu cả mã và phần cứng đến giới hạn của họ.
Việc mở rộng theo chiều ngang là chiến lược được Ethereum và Polkadot áp dụng: giảm công việc mà mỗi người tham gia cần xử lý. Trong các hệ thống phân tán truyền thống, điều này được đạt được bằng cách thêm nhiều máy sao chép hơn. Trong blockchain, “máy tính” là toàn bộ mạng lưới của các nhà xác minh. Bằng cách phân phối các nhiệm vụ giữa họ (như ELVES làm) hoặc giảm trách nhiệm của họ một cách lạc quan (như trong Optimistic Rollups), chúng ta giảm công việc cho toàn bộ bộ xác minh, từ đó đạt được việc mở rộng theo chiều ngang.
Trong blockchain, việc mở rộng theo chiều ngang có thể được ví như “giảm số lượng máy cần thực hiện tất cả các hoạt động.”
Tóm lại:
Phần này dựa trên phân tích của Rob Habermeier từ Sub0 2023: Polkadot: Nhân/Userland | Sub0 2023 - YouTube (see:https://www.youtube.com/watch?v=15aXYvVMxlw) giới thiệu JAM như một bản nâng cấp cho Polkadot: một bản cập nhật kernel trên cùng phần cứng.
Trong một máy tính điển hình, chúng ta có thể chia toàn bộ ngăn xếp thành ba phần:
Trong Polkadot, phần cứng - cơ sở hạ tầng cung cấp tính toán và khả năng sẵn có dữ liệu - luôn là những lõi, như đã được đề cập trước đó.
Trong Polkadot, kernel cho đến nay đã bao gồm hai phần chính:
Cả hai đều tồn tại trong Chuỗi chuyển tiếp của Polkadot.
Các ứng dụng không gian người dùng, ngược lại, là các parachains chính họ, token bản địa của họ, và bất cứ điều gì được xây dựng trên cơ sở của chúng.
Chúng ta có thể hình dung quy trình này như sau:
Polkadot đã lâu đã mơ ước chuyển các chức năng cốt lõi hơn cho người dùng chính của mình - các parachain. Đây chính xác là mục tiêu của RFC Minimal Relay. (Để biết thêm chi tiết, xem:Bộ chỉ đường tối thiểu RFC)
Điều này có nghĩa là Chuỗi Truyền Relai Polkadot chỉ xử lý việc cung cấp giao thức parachain, từ đó giảm không gian kernel một phần nào đó.
Khi kiến trúc này được triển khai, việc hình dung ra một bản vẽ về việc di trú JAM sẽ trở nên dễ dàng hơn. JAM sẽ giảm đáng kể không gian nhân của Polkadot, khiến nó trở nên linh hoạt hơn. Ngoài ra, giao thức Parachains sẽ chuyển sang không gian người dùng, vì đó là một trong số ít cách để xây dựng ứng dụng trên cùng một hạt nhân (phần cứng) và nhân (JAM)
Điều này cũng củng cố lý do tại sao JAM là sự thay thế cho Chuỗi chuyển tiếp Polkadot, không phải cho parachain.
Nói cách khác, chúng ta có thể xem quá trình di cư JAM như một việc nâng cấp kernel. Phần cứng cơ bản vẫn không thay đổi, và nhiều nội dung của kernel cũ được di chuyển đến không gian người dùng để đơn giản hóa hệ thống.
Dưới đây là một giải thích chi tiết về Polkadot1, Polkadot2 và cách họ phát triển thành JAM. (Để biết thêm chi tiết, xem tại:https://www.navalmanack.com/almanack-of-naval-ravikant/how-to-think-clearlyBài viết này nhằm vào độc giả kỹ thuật, đặc biệt là những người có thể không quá quen thuộc với Polkadot nhưng có một số hiểu biết về hệ thống blockchain và có thể đã quen thuộc với các công nghệ từ các hệ sinh thái khác.
Tôi tin rằng bài viết này là một bước đệm tốt cho việc đọc JAM Gray Paper. (Để biết thêm chi tiết, xem:https://graypaper.com/)
Bài viết này cho rằng người đọc đã quen thuộc với các khái niệm sau:
Hãy trở lại xem xét các tính năng sáng tạo nhất của Polkadot1 trước.
Hiện tại, chúng tôi đang thảo luận về một mạng Layer 1 mà lưu trữ các mạng “blockchain” Layer 2 khác, tương tự như Polkadot và Ethereum. Do đó, các thuật ngữ Layer 2 và Parachain có thể được sử dụng thay thế cho nhau.
Vấn đề cốt lõi của khả năng mở rộng blockchain có thể được đặt ra như sau: Có một nhóm các bên xác nhận, sử dụng cơ cấu kinh tế mã hóa của chứng minh cổ phần, đảm bảo rằng việc thực thi mã nguồn nhất định là đáng tin cậy. Mặc định, những bên xác nhận này cần phải thực thi lại tất cả công việc của nhau. Miễn là chúng ta áp đặt rằng tất cả các bên xác nhận luôn phải thực thi lại tất cả mọi thứ, toàn bộ hệ thống vẫn không thể mở rộng được.
Vui lòng lưu ý rằng, miễn là nguyên tắc tái thực hiện tuyệt đối không thay đổi, việc tăng số lượng người xác minh trong mô hình này thực sự không cải thiện hiệu suất hệ thống.
Điều này chứng tỏ một chuỗi khối tuyến tính (so với chuỗi khối được chia nhỏ). Tất cả các máy chủ xác thực mạng xử lý đầu vào (tức là, các khối) một cách tuần tự. Trong một hệ thống như vậy, nếu Layer 1 muốn địa chỉ nhiều Layer 2 hơn, thì tất cả các máy chủ xác thực phải thực thi lại tất cả công việc của Layer 2. Rõ ràng, phương pháp này không mở rộng được.
Optimistic rollups giải quyết vấn đề này bằng cách chỉ thực hiện lại (bằng chứng gian lận) khi gian lận được tuyên bố. Bản tổng hợp dựa trên SNARK giải quyết vấn đề này bằng cách tận dụng thực tế là chi phí xác thực bằng chứng SNARK thấp hơn đáng kể so với chi phí tạo chúng, do đó cho phép tất cả các trình xác thực xác minh hiệu quả bằng chứng SNARK. Để biết thêm chi tiết, hãy tham khảo "Phụ lục: Sơ đồ không gian khả năng mở rộng".
Một giải pháp trực tiếp cho việc tách là chia tập hợp các validator thành các tập con nhỏ hơn và có các tập con nhỏ này thực thi lại các khối Layer2. Vấn đề của phương pháp này là gì? Cơ bản, chúng ta đang tách cả việc thực thi và an ninh kinh tế của mạng. Một giải pháp Layer2 như vậy có độ bảo mật thấp hơn so với Layer1, và độ bảo mật của nó giảm đi khi chúng ta chia tập hợp các validator thành nhiều phần hơn.
Không giống như optimistic rollups, nơi chi phí thực thi lại không phải lúc nào cũng có thể tránh được, Polkadot được thiết kế với việc thực thi phân mảnh trong tâm trí. Nó cho phép một phần của người xác thực thực thi lại các khối Layer 2 trong khi cung cấp đủ bằng chứng cryptoeconomic cho toàn bộ mạng lưới để chứng minh rằng khối Layer 2 là an toàn như khi toàn bộ bộ xác thực đã thực thi lại nó. Điều này được đạt được thông qua một cơ chế mới lạ (và gần đây được hình thành) được biết đến là ELVES. (Để biết thêm chi tiết, xem: https://eprint.iacr.org/2024/961)
Để ý, ELVES có thể được coi là cơ chế “suspicious rollups”. Thông qua một số vòng lặp của các nhà xác minh truy vấn một cách tích cực các nhà xác minh khác về việc xem xét xem một khối Layer 2 cụ thể có hợp lệ hay không, chúng ta có thể xác nhận với xác suất cao về tính hợp lệ của khối đó. Trong trường hợp có bất kỳ tranh cãi nào, toàn bộ bộ xác minh sẽ nhanh chóng tham gia. Rob Habermeier, người sáng lập Polkadot, đã giải thích điều này một cách chi tiết trong một bài viết. (Để biết thêm chi tiết, xem: https://polkadot.com/blog/polkadot-v1-0-sharding-and-economic-security#approval-checking-and-finality)
ELVES cho phép Polkadot sở hữu cả thực thi phân mảnh và an ninh chia sẻ, hai thuộc tính trước đây được cho là không thể tồn tại cùng nhau. Điều này là thành tựu kỹ thuật chính của Polkadot1 về khả năng mở rộng.
Bây giờ, hãy tiến xa hơn với phân tích "Core". Một blockchain thực thi phân mảnh rất giống với một CPU: giống như một CPU có thể có nhiều lõi thực thi các hướng dẫn song song, Polkadot có thể xử lý các khối Layer 2 song song. Đó là lý do tại sao Layer 2 trên Polkadot được gọi là một parachain, và môi trường nơi các tập hợp validator nhỏ hơn thực thi lại một khối Layer 2 đơn được gọi là một "core". Mỗi lõi có thể được trừu tượng hóa như "một nhóm validator hợp tác."
Bạn có thể nghĩ về một chuỗi khối đồng nhất như đang xử lý một khối duy nhất vào một thời điểm, trong khi Polkadot xử lý cả khối chuỗi relay và khối parachain cho mỗi nhân lõi trong cùng một khoảng thời gian.
Cho đến nay, chúng tôi chỉ đã thảo luận về khả năng mở rộng và thực thi theo từng phần được cung cấp bởi Polkadot. Quan trọng phải lưu ý rằng mỗi phần của Polkadot, thực tế, là một ứng dụng hoàn toàn khác biệt. Điều này được đạt được thông qua metaprotocol được lưu trữ dưới dạng bytecode: một giao thức lưu trữ định nghĩa của chính blockchain dưới dạng bytecode trong trạng thái của nó. Trong Polkadot 1.0, WASM được sử dụng làm bytecode ưu tiên, trong khi trong JAM, PVM/RISC-V được áp dụng.
Đây là lý do tại sao Polkadot được gọi là một chuỗi khối phân mảnh không đồng nhất. (Để biết thêm chi tiết, xem:https://x.com/kianenigma/status/1790763921600606259) Mỗi Layer 2 là một ứng dụng hoàn toàn khác biệt.
Một khía cạnh quan trọng của Polkadot2 là làm cho việc sử dụng lõi linh hoạt hơn. Trong mô hình Polkadot ban đầu, thời gian cho thuê cốt lõi dao động từ 6 tháng đến 2 năm, phù hợp với các doanh nghiệp giàu tài nguyên nhưng ít khả thi hơn đối với các nhóm nhỏ hơn. Tính năng cho phép các lõi Polkadot được sử dụng linh hoạt hơn được gọi là "Agile Coretime". (Để biết thêm chi tiết, xem:https://polkadot.com/agile-coretime) Trong chế độ này, các điều khoản cho thuê cơ bản có thể ngắn chỉ là một khối hoặc lâu đến một tháng, với mức giá tối đa đối với những người muốn thuê trong thời gian dài hơn.
Các tính năng khác của Polkadot 2 sẽ dần dần được tiết lộ khi cuộc thảo luận của chúng ta tiến triển, vì vậy không cần phải giải thích thêm ở đây.
Để hiểu JAM, việc quan trọng đầu tiên là phải nắm bắt điều gì xảy ra khi một khối Layer 2 nhập vào hạt nhân Polkadot. Dưới đây là một giải thích đơn giản.
Hãy nhớ rằng một nhân hạt chủ yếu bao gồm một tập hợp các người xác minh. Vì vậy, khi chúng ta nói "dữ liệu được gửi đến nhân hạt", điều đó có nghĩa là dữ liệu được chuyển đến tập hợp này của các người xác minh.
Một khối Layer 2, cùng với một phần của trạng thái của Layer 2 đó, được gửi đến nhân trung tâm. Dữ liệu này chứa tất cả thông tin cần thiết để thực thi khối Layer 2.
Một phần của các trình xác minh nhân lõi sẽ thực hiện lại khối Layer 2 và tiếp tục với các nhiệm vụ liên quan đến sự đồng thuận.
Các validator nhân lõi này cung cấp dữ liệu đã thực thi cho các validator khác bên ngoài nhóm nhân lõi. Theo quy tắc ELVES, các validator này có thể quyết định liệu có thực thi lại khối Layer 2 hay không, cần dữ liệu này để làm điều đó.
Quan trọng nhấn mạnh rằng, cho đến nay, tất cả những hoạt động này đều diễn ra bên ngoài khối chính của Polkadot và chức năng chuyển trạng thái. Mọi thứ diễn ra trong lõi và lớp tính sẵn sàng dữ liệu.
Từ đó, chúng ta có thể khám phá một số hoạt động chính mà Polkadot đang thực hiện:
Hiểu điều này là nền tảng để hiểu JAM. Dưới đây là một bản tóm tắt:
Với sự hiểu biết này, chúng tôi có thể giới thiệu JAM ngay bây giờ.
JAM là một giao thức mới được truyền cảm hứng từ thiết kế của Polkadot và hoàn toàn tương thích với nó, nhằm mục tiêu thay thế chuỗi relay của Polkadot và làm cho việc sử dụng hạt nhân trở nên hoàn toàn phi tập trung và không bị hạn chế.
Xây dựng trên Polkadot 2, JAM cố gắng làm cho việc triển khai Layer 2 trên lõi dễ tiếp cận hơn, cung cấp thậm chí linh hoạt hơn so với mô hình agile-coretime.
Điều này được đạt được chủ yếu bằng cách tiết lộ ba khái niệm cốt lõi đã được thảo luận trước đó cho các nhà phát triển: thực thi trên chuỗi, thực thi trong lõi, và lớp DA.
Nói cách khác, trong JAM, các nhà phát triển có thể:
Đây là cái nhìn tổng quan cơ bản về mục tiêu của JAM. Không cần phải nói, nhiều phần của điều này đã được đơn giản hóa, và giao thức có khả năng tiếp tục phát triển.
Với sự hiểu biết cơ bản này, chúng ta có thể đi sâu vào một số điều cụ thể về JAM trong các chương tiếp theo.
Trong JAM, những gì trước đây được gọi là Layer 2 hoặc parachains bây giờ được gọi là Dịch vụvà những gì trước đây được gọi là khối hoặc giao dịch bây giờ được gọi làCông việchoặcGói công việc. Cụ thể, một mục công việc thuộc về một dịch vụ, và một gói công việc là một bộ sưu tập các mục công việc. Những thuật ngữ này được mô tả rộng rãi để bao gồm các trường hợp sử dụng vượt ra ngoài các kịch bản blockchain/Layer 2.
Một dịch vụ được mô tả bởi ba điểm nhập, trong đó hai điểm là fn refine() và fn accumulate(). Điểm đầu tiên mô tả dịch vụ làm gì trong quá trình thực thi trên core, và điểm thứ hai mô tả dịch vụ làm gì trong quá trình thực thi trên chuỗi.
Cuối cùng, tên của những điểm nhập này chính là lý do khiến giao thức được gọi là JAM (Join Accumulate Machine).Tham giađề cập đếnfn refine()
, đó là giai đoạn mà tất cả các lõi Polkadot xử lý một lượng công việc lớn song song trên các dịch vụ khác nhau. Sau khi dữ liệu được xử lý, nó sẽ chuyển sang giai đoạn tiếp theo.Tích luỹđề cập đến quá trình tích lũy tất cả các kết quả này vào trạng thái JAM chính, điều này xảy ra trong giai đoạn thực thi trên chuỗi.
Các mục công việc có thể chỉ định một cách chính xác mã họ thực thi trên core và on-chain, cũng như cách, nếu có, và từ đâu họ đọc hoặc ghi nội dung trong Hồ dữ liệu phân tán.
Đánh giá tài liệu hiện có về XCM (ngôn ngữ được chọn của Polkadot cho việc giao tiếp với parachain), tất cả giao tiếp đều là bất đồng bộ (để biết thêm chi tiết, xemở đây). Điều này có nghĩa là một khi một tin nhắn được gửi đi, bạn không thể đợi phản hồi của nó. Giao tiếp không đồng bộ là một triệu chứng của sự không nhất quán trong hệ thống và là một trong những nhược điểm chính của các hệ thống được chia nhỏ một cách cố định như Polkadot 1, Polkadot 2 và các hệ sinh thái Layer 2 hiện tại của Ethereum.
Tuy nhiên, như mô tả trong Phần 2.4 củaGraypaper, một hệ thống hoàn toàn nhất quán mà vẫn đồng bộ cho tất cả các người thuê chỉ có thể mở rộng đến một mức độ nhất định mà không phải hy sinh tính phổ biến, tính truy cập hoặc tính linh hoạt.
Điều đặc biệt ở JAM là việc giới thiệu một số tính năng, JAM đạt được một trạng thái trung gian mới được biết đến là hệ thống bán kính bán kính. Trong hệ thống này, các hệ thống con giao tiếp thường xuyên có thể tạo ra môi trường nhất quán với nhau, mà không buộc cả hệ thống phải duy trì tính nhất quán. Điều này được mô tả tốt nhất bởi Tiến sĩ Gavin Wood, tác giả của Graypaper, trong một cuộc phỏng vấn: https://www.youtube.com/watch?t=1378&v=O3kRAVBTkfs&embeds_referring_euri=https%3A%2F%2Fblog.kianenigma.nl%2F&source_ve_path=OTY3MTQ
Một cách khác để hiểu điều này là bằng cách xem Polkadot/JAM như một hệ thống được chia nhỏ, nơi ranh giới giữa những mảnh này là linh hoạt và được xác định một cách động.
Polkadot luôn được chia nhỏ và hoàn toàn không đồng nhất.
Bây giờ, nó không chỉ phân mảnh và không đồng nhất, mà những ranh giới phân mảnh này cũng có thể được định nghĩa linh hoạt - điều mà Gavin Wood gọi là một hệ thống "bán nhất quán" trong những bài viết trên Twitter của mình và trong Graypaper. (xin xem: https://x.com/gavofyork?ref_src=twsrc%5Etfw、https://graypaper.com/)
Một số tính năng làm cho trạng thái bán ổn định này có thể xảy ra:
Lưu ý rằng trong JAM, các khả năng này có thể được thực hiện, nhưng không bắt buộc ở cấp độ giao thức. Do đó, một số giao diện lý thuyết là không đồng bộ nhưng trong thực tế có thể hoạt động đồng bộ do sự trừu tượng phức tạp và động cơ khuyến khích. CorePlay, sẽ được thảo luận trong phần tiếp theo, là một ví dụ cho hiện tượng này.
Phần này giới thiệu CorePlay, một khái niệm thí nghiệm trong môi trường JAM có thể được mô tả là một mô hình lập trình hợp đồng thông minh mới. Đến thời điểm viết bài này, CorePlay chưa được xác định đầy đủ và vẫn là một ý tưởng đầu cơ.
Để hiểu về CorePlay, chúng ta cần trước tiên giới thiệu máy ảo (VM) được JAM lựa chọn: PVM.
PVM là một chi tiết quan trọng trong cả JAM và CorePlay. Những chi tiết cấp thấp của PVM nằm ngoài phạm vi của tài liệu này và được giải thích tốt nhất bởi các chuyên gia lĩnh vực trong Graypaper. Tuy nhiên, cho giải thích này, chúng tôi sẽ nêu bật một số đặc điểm chính của PVM:
Điều cuối cùng, đặc biệt quan trọng đối với CorePlay.
CorePlay là một ví dụ về cách các nguyên tắc linh hoạt của JAM có thể được sử dụng để tạo ra môi trường hợp đồng thông minh đồng bộ và có khả năng mở rộng với giao diện lập trình cực kỳ linh hoạt. CorePlay đề xuất rằng các hợp đồng thông minh dựa trên người tham gia được triển khai trực tiếp trên nhân JAM, cho phép họ hưởng lợi từ các giao diện lập trình đồng bộ. Các nhà phát triển có thể viết hợp đồng thông minh như là các hàm fn main() đơn giản, sử dụng các biểu thức như let kết quả = nhân vật coreplay khác(data).await?để giao tiếp. Nếudiễn viên khác của Coreplayđược trên cùng một lõi JAM trong cùng một khối, cuộc gọi này là đồng bộ. Nếu nó trên một lõi khác, diễn viên sẽ bị tạm dừng và tiếp tục trong một khối JAM sau. Điều này được thực hiện nhờ các dịch vụ JAM, lập lịch linh hoạt của họ và khả năng của PVM.
Cuối cùng, hãy tổng kết lý do chính JAM hoàn toàn tương thích với Polkadot. Sản phẩm mũi nhọn của Polkadot là các chuỗi phản ứng agile-coretime, tiếp tục trong JAM. Các dịch vụ triển khai sớm nhất trong JAM có thể sẽ được gọi là CoreChains hoặc Parachains, cho phép các chuỗi phản ứng kiểu Polkadot-2 hiện có chạy trên JAM.
Các dịch vụ khác có thể được triển khai trên JAM, và dịch vụ CoreChains hiện tại có thể giao tiếp với chúng. Tuy nhiên, các sản phẩm hiện tại của Polkadot sẽ vẫn mạnh mẽ, đơn giản chỉ mở ra cơ hội mới cho các nhóm parachain hiện tại.
Hầu hết tài liệu này nói về khả năng mở rộng từ góc nhìn của việc phân chia thực hiện. Tuy nhiên, chúng ta cũng có thể xem xét vấn đề này từ quan điểm phân chia dữ liệu. Thú vị là, chúng ta thấy rằng điều này tương tự như mô hình bán nhất quán được đề cập trước đó. Về nguyên tắc, một hệ thống hoàn toàn nhất quán là ưu việt nhưng không thể mở rộng, trong khi một hệ thống hoàn toàn không nhất quán mở rộng tốt nhưng không tối ưu. JAM, với mô hình bán nhất quán của nó, đưa ra một khả năng mới.
JAM cung cấp điều gì đó vượt ra ngoài hai tùy chọn này: nó cho phép các nhà phát triển công bố dữ liệu tùy ý lên lớp DA JAM, là một điểm trung gian giữa dữ liệu trên chuỗi và ngoài chuỗi. Các ứng dụng mới có thể được xây dựng để tận dụng lớp DA cho hầu hết dữ liệu của họ, trong khi chỉ lưu trữ dữ liệu cực kỳ quan trọng vào trạng thái JAM.
Phần này sẽ xem xét lại quan điểm của chúng tôi về khả năng mở rộng của blockchain, được thảo luận trong Bản mô tả dự án, mặc dù ở đây được trình bày một cách ngắn gọn hơn.
Khả năng mở rộng của blockchain chủ yếu tuân theo các phương pháp truyền thống từ hệ thống phân tán: mở rộng theo chiều dọc và mở rộng theo chiều ngang.
Tăng cường theo chiều dọc là điều mà các nền tảng như Solana tập trung vào, tối đa hóa thông lượng bằng cách tối ưu cả mã và phần cứng đến giới hạn của họ.
Việc mở rộng theo chiều ngang là chiến lược được Ethereum và Polkadot áp dụng: giảm công việc mà mỗi người tham gia cần xử lý. Trong các hệ thống phân tán truyền thống, điều này được đạt được bằng cách thêm nhiều máy sao chép hơn. Trong blockchain, “máy tính” là toàn bộ mạng lưới của các nhà xác minh. Bằng cách phân phối các nhiệm vụ giữa họ (như ELVES làm) hoặc giảm trách nhiệm của họ một cách lạc quan (như trong Optimistic Rollups), chúng ta giảm công việc cho toàn bộ bộ xác minh, từ đó đạt được việc mở rộng theo chiều ngang.
Trong blockchain, việc mở rộng theo chiều ngang có thể được ví như “giảm số lượng máy cần thực hiện tất cả các hoạt động.”
Tóm lại:
Phần này dựa trên phân tích của Rob Habermeier từ Sub0 2023: Polkadot: Nhân/Userland | Sub0 2023 - YouTube (see:https://www.youtube.com/watch?v=15aXYvVMxlw) giới thiệu JAM như một bản nâng cấp cho Polkadot: một bản cập nhật kernel trên cùng phần cứng.
Trong một máy tính điển hình, chúng ta có thể chia toàn bộ ngăn xếp thành ba phần:
Trong Polkadot, phần cứng - cơ sở hạ tầng cung cấp tính toán và khả năng sẵn có dữ liệu - luôn là những lõi, như đã được đề cập trước đó.
Trong Polkadot, kernel cho đến nay đã bao gồm hai phần chính:
Cả hai đều tồn tại trong Chuỗi chuyển tiếp của Polkadot.
Các ứng dụng không gian người dùng, ngược lại, là các parachains chính họ, token bản địa của họ, và bất cứ điều gì được xây dựng trên cơ sở của chúng.
Chúng ta có thể hình dung quy trình này như sau:
Polkadot đã lâu đã mơ ước chuyển các chức năng cốt lõi hơn cho người dùng chính của mình - các parachain. Đây chính xác là mục tiêu của RFC Minimal Relay. (Để biết thêm chi tiết, xem:Bộ chỉ đường tối thiểu RFC)
Điều này có nghĩa là Chuỗi Truyền Relai Polkadot chỉ xử lý việc cung cấp giao thức parachain, từ đó giảm không gian kernel một phần nào đó.
Khi kiến trúc này được triển khai, việc hình dung ra một bản vẽ về việc di trú JAM sẽ trở nên dễ dàng hơn. JAM sẽ giảm đáng kể không gian nhân của Polkadot, khiến nó trở nên linh hoạt hơn. Ngoài ra, giao thức Parachains sẽ chuyển sang không gian người dùng, vì đó là một trong số ít cách để xây dựng ứng dụng trên cùng một hạt nhân (phần cứng) và nhân (JAM)
Điều này cũng củng cố lý do tại sao JAM là sự thay thế cho Chuỗi chuyển tiếp Polkadot, không phải cho parachain.
Nói cách khác, chúng ta có thể xem quá trình di cư JAM như một việc nâng cấp kernel. Phần cứng cơ bản vẫn không thay đổi, và nhiều nội dung của kernel cũ được di chuyển đến không gian người dùng để đơn giản hóa hệ thống.