"Blockchain không thể mở rộng" – có thể điều này đã được nhắc đến rất nhiều cách đây vài năm, nó giống như một mối đe dọa thực sự đối với ngành công nghiệp tiền điện tử. Nếu blockchain thậm chí không thể xử lý 15 giao dịch mỗi giây, làm thế nào để đấp ứng nhu cầu giao dịch toàn cầu?
Cái khó ló cái khôn, khả năng mở rộng của blockchain đã nhanh chóng thu hút sự chú ý của các kỹ sư và nhà phát triển, Đến nay, có bằng chứng để tin tưởng rằng blockchain có thể mở rộng quy mô. Trên thực tế, hầu hết các cuộc tranh luận hiện nay đều tập trung vào việc giải pháp mở rộng nào sẽ giành chiến thắng.
Đối diện với bộ ba bất khả thi – scalability trilemma
Trước khi bàn về khả năng mở rộng, cần biết sơ về "bộ ba khó khăn về khả năng mở rộng" nổi tiếng (Scalability trilemma). Thuật ngữ này do Vitalik đặt ra để giải thích ba vấn đề mà các blockchain phải đối mặt: khả năng mở rộng (scalability), tính phi tập trung (decentralization) và bảo mật (security). Các blockchain hiện nay có thể triển khai hai trong số ba yếu tố này nhưng rất khó để có được cả ba cùng một lúc.
Trước khi tìm hiểu lí do, hãy làm rõ các thuật ngữ này:
1. Khả năng mở rộng: khả năng xử lý một số lượng lớn các giao dịch, được đo bằng giao dịch mỗi giây (TPS).
2. Phi tập trung: Các blockchain được điều hành bởi nhiều node "đáng tin cậy" trên khắp thế giới – chứ không phải bởi các nút "đáng tin cậy" trong một cụm nhỏ.
3. Bảo mật: ngay cả khi một tỷ lệ phần trăm nhất định của các node trong mạng là độc hại, thì blockchain vẫn có khả năng chống lại sự tấn công. 1 blockchain mang tính bảo mật là khi nó có thể xử lý tới 50% các node độc hại.
Vitalik đã tạo ra một tam giác đơn giản, với mỗi cạnh đại diện cho một trong ba yếu tố. Mỗi cạnh của hình tam giác đại diện cho một loại giải pháp blockchain khác nhau có khả năng triển khai 2 trong 3 yếu tố trên.
Phi tập trung và bảo mật
Ở dưới cùng của tam giác là các blockchain truyền thống như Bitcoin và Ethereum 1.0 (Layer 1).
Các blockchain này có:
Phi tập trung: có. Bởi vì bất kỳ ai trên thế giới đều có thể chọn làm node khai thác. Hàng nghìn thợ đào trên khắp thế giới đang tham gia vào việc bảo mật mạng Bitcoin và Ethereum. cũng không cần phải ủy quyền để trở thành một người khai thác, hoàn toàn đáng tin cậy.
Bảo mật: có. Bởi mọi node trong mạng đều giữ một bản sao của blockchain và xác minh mọi giao dịch. Ngoài ra, bằng chứng công việc (PoW) được thiết kế để xử lý tới 50% các node độc hại.
Khả năng mở rộng: không. Với tính bảo mật của mình, mỗi node trong mạng giữ một bản sao của blockchain và xác minh mọi giao dịch. Tuy an toàn nhưng nó không hiệu quả, dẫn đến độ trễ (latency) và thông lượng rất thấp. Đối với bitcoin, có thể xử lí khoảng 7 giao dịch mỗi giây và 15 giao dịch đối với Ethereum.
Bảo mật và khả năng mở rộng
Cạnh phải của tam giác là các chain có TPS cao điển hình: Binance, mạng sử dụng cơ chế đồng thuận được gọi là Proof-of-stake-Authority, trong đó 21 node được "bầu chọn" để tạo ra các khối mới. Ngày 15 tháng 2, BSC được đổi tên thành BNBChain, mở rộng từ 21 node lên 41 node. 41 node mới sẽ được bầu chọn để tạo khối mới mỗi 24 giờ.
Bảo mật: có. Mỗi nút "bầu chọn" được ủy quyền, vì vậy có thể kiểm soát được hệ thống.
Khả năng mở rộng: có. Vì chỉ có một số lượng nhỏ các node để tạo khối mới, thông lượng giao dịch sẽ cao hơn và độ trễ thấp hơn, có nghĩa là chi phí giao dịch sẽ thấp hơn so với việc phải xác thực từng giao dịch trên mỗi node.
Phi tập trung: Chưa đủ. Chỉ với 41 validator được bầu chọn, nó ít phi tập trung hơn nhiều so với các blockchain truyền thống. Ngoài ra, mỗi node "được bầu chọn" đều được ủy quyền, vì vậy người dùng chủ yếu tham gia vì sự tin tưởng vào hệ thống, làm cho nó ít phi tập trung hơn.
Khả năng mở rộng và tính phi tập trung
Cạnh trái của tam giác là các hệ sinh thái đa chuỗi như Cosmos, Polkadot và Avalanche. Các hệ thống này có nhiều mạng blockchain độc lập và tất cả chúng đều giao tiếp, là một phần của blockchain lớn hơn.
Khả năng mở rộng: có. Vì không còn cần phải lưu trữ tất cả trạng thái trên một blockchain duy nhất, dữ liệu có thể được chia về nhiều blockchain riêng biệt, cho phép khả năng mở rộng lớn hơn so với các blockchain truyền thống.
Phi tập trung: Tùy blockchain. Mỗi blockchain trong hệ sinh thái có một tập hợp các node xác nhận blockchain. Một số chuỗi trong hệ sinh thái sẽ có nhiều validator (ví dụ: các chain stablecoin cần được phi tập trung hóa), trong khi những chuỗi khác có thể có ít hoặc chỉ một (ví dụ: entreprise chain không cần phi tập trung nhiều). Do đó, mức độ phi tập trung sẽ phụ thuộc vào kiểu chuỗi trong hệ sinh thái.
Bảo mật: Không an toàn. Nếu một mạng trong hệ sinh thái bị tấn công, nó có thể gây ảnh hưởng đến phần còn lại của hệ thống. Ví dụ, nếu mạng B bị tấn công và các mạng A, C và D đều phụ thuộc vào nó thì A,C,D đều bị ảnh hưởng.
Tóm lại có nhiều nỗ lực trong việc mở rộng blockchain, nhưng hầu như luôn phải đánh đổi bằng một trong ba yếu tố này. Vitalik và cộng đồng Ethereum đã miễn cưỡng thực hiện hình thức này tuy nhiên, mục tiêu của họ là đạt được cả ba.
Trước khi đi sâu hơn, chúng ta cần hiểu rõ về mở rộng (extension) Layer 1 và mở rộng Layer 2.
Các mở rộng tier 1 và tier 2
Mở rộng Layer 1 đề cập đến việc mở rộng chính blockchain gốc. Ngược lại, giải pháp mở rộng Layer 2 đề cập đến việc di chuyển các giao dịch từ blockchain chính sang một layer riêng biệt có thể giao tiếp với blockchain chính.
Ethereum muốn sử dụng cả giải pháp lớp 1 và lớp 2 để giải quyết trilemma scalability. Sharding là giải pháp lớp 1 và các giải pháp bên dưới thuộc về lớp 2 của Ethereum.
Giải pháp lớp 2 sớm nhất của Ethereum
Trước khi tìm hiểu rollup và zk, hãy cùng điểm qua 2 giải pháp mở rộng lớp 2 ban đầu của Ethereum: Status channel và Sidechain.
Status channel
Status channel đã có từ lâu và đây là giải thích nhanh về cơ chế hoạt động: Giả sử chúng ta có hai người, Alice và Bob muốn giao dịch với nhau. Alice trả cho Bob 1 USD cho mỗi Tweet. Nhưng vì Bob tweet rất nhiều mỗi ngày, giao dịch qua mạng Ethereum sẽ rất chậm và tốn kém.
Thay vào đó, họ sử dụng "kênh trạng thái" (Status channel):
Alice sẽ gửi 500 USD vào hợp đồng thông minh của Ethereum. bất cứ khi nào alice muốn cho Bob 1 USD, cô ấy sẽ ký một thông báo cho biết cô ấy muốn đưa cho Bob bao nhiêu tiền. Alice sẽ tiếp tục ký vào các tin nhắn cho đến khi Bob sẵn sàng "rút tiền" của anh ta. Khi Bob gửi một thông báo mới cho biết rằng anh ấy đã sẵn sàng đóng kênh, hợp đồng thông minh sẽ xác minh chữ ký của Alice và Bob, thanh toán cho Bob số tiền đến hạn và trả lại tiền thừa cho Alice.
Lưu ý rằng chỉ có giao dịch đầu và cuối được thực hiện trên blockchain, giữa các bước này Alice và Bob có thể gửi cho nhau không giới hạn số lượng các tin nhắn đã ký.
Trong trường hợp này, Ethereum chỉ được sử dụng để xử lý giao dịch cuối cùng, giúp giảm bớt gánh nặng cho mạng lưới.
Bằng cách mở một kênh giao dịch bên ngoài blockchain, khả năng và tốc độ giao dịch đã tăng đáng kể trong khi chi phí lại thấp. Điều này có thể thực hiện được vì:
Đầu tiên, hầu hết các giao dịch xảy ra ngoài chuỗi, có nghĩa là các khoản thanh toán có thể được xử lý ngay lập tức, vì các giao dịch off chain giữa hai bên không yêu cầu thời gian để xử lý và xác minh.
Thứ hai, phí giao dịch rẻ hơn, vì các giao dịch on-chain chỉ thực hiện khi mở và đóng các status channel, hầu hết các giao dịch được thực hiện off-chain và có phí thấp hơn nhiều.
Tuy nhiên đây không phải là giải pháp cuối cùng vì có những giới hạn đối với status channel. Ví dụ: không thể giao dịch với cá nhân không tham gia status channel và các kiểu cập nhập trạng thái bị giới hạn ở trong status channel. Các ứng dụng phức tạp như Uniswap không thể được sử dụng trong kênh vì khi trao đổi hai token trên Uniswap, hợp đồng thông minh sẽ tự động thực hiện một loạt các bước trung gian mà người dùng không được phép ký trên mỗi bước.
Một nhược điểm khác của các status channel là chúng yêu cầu khóa thanh khoản để khởi tạo kênh cũng ngăn chặn trường hợp người dùng không thực sự thanh toán các khoản tiền như điều khoản. Điều này có thể ổn đối với một kênh đơn lẻ, nhưng khi chúng ta cố gắng thực hiện thanh toán thông qua một mạng lưới các status channel, thanh khoản bị khóa ở kênh trung gian khiến nó “kém hiệu quả về vốn”.
Cuối cùng, status channel cần một người thường xuyên giám sát mạng (hoặc ủy thác trách nhiệm này cho người khác) nhằm đảm bảo sự an toàn tuy nhiên lại làm tăng độ phức tạp và kém hiệu quả.
Tóm lại, status channel phù hợp với các trường hợp mà hai bên cần giao dịch nhanh chóng và giá rẻ trong một khoảng thời gian (chẳng hạn như thương gia và khách hàng). Nhưng với việc sử dụng hạn chế và không hiệu quả về vốn, cstatus channel không phải là giải pháp mở tối ưu cho Ethereum.
Sidechain
Sidechains rất dễ hiểu: là một blockchain riêng biệt được neo vào blockchain chính, tài sản có thể được di chuyển giữa các chain này. Neo "một chiều" là khi tài sản chỉ có thể di chuyển từ blockchain chính sang sidechain. Điều này đạt được bằng cách "đốt" token: bằng cách gửi token trên blockchain chính đến các địa chỉ không sử dụng được, và sau đó "mint" các token tương đương trên sidechain.
“Kết nối hai chiều” (Two way hooking) là khi có thể di chuyển tài sản vào và ra khỏi blockchain chính và sidechain. Điều này yêu cầu" khóa "token trên chuỗi chính và sau đó" mint "một lượng tokne tương đương trên sidechain. Khi chúng ta muốn chuyển đổi trở lại các token ban đầu: "burn" token trên sidechain và sau đó mở khóa token trên chuỗi chính.
Công dụng của sidechain: khi muốn giao dịch nhanh hơn, có thể chuyển tiền của từ chuỗi chính sang sidechain và giao dịch ở đó và chuyển ngược lại khi hoàn tất.
Một ví dụ về sidechain Bitcoin là Liquid Network: cho phép thanh toán bằng Bitcoin nhanh và rẻ hơn. Một ví dụ phổ biến khác là Polygon, là một sidechain được liên kết với Ethereum. Khi người dùng muốn giao dịch nhanh hơn, họ có thể khóa một số ETH và tạo một lượng token Matic bằng nhau trên sidechain Polygon. Trên Polygon các giao dịch nhanh hơn, rẻ hơn. Khi hoàn tất giao dịch, họ có thể chuyển đổi Matic của mình trở lại ETH.
Lưu ý: Về mặt kỹ thuật, Matic không phải là một sidechain vì nó định kỳ cam kết trạng thái của sidechain với Ethereum. "commit chain" là cái tên hợp lí hơn.
Nhìn chung, các sidechains có thể mở rộng được bởi sự đánh đổi về mặt phi tập trung và / hoặc bảo mật bằng cách sử dụng các cơ chế đồng thuận khác cho phép khả năng mở rộng. Sidechains là một biện pháp khá tốt nhằm giải quyết vấn đề tắc nghẽn của Ethereum, Tuy nhiên Ethereum lại không coi đây là giải pháp tối ưu.
Plasma
Plasma là một giải pháp "Lớp 2" khác cho phép di chuyển các giao dịch ra khỏi lớp dưới. Trước khi chúng đi sâu vào Plasma, điều quan trọng cần lưu ý là theo thời gian, Plasma đã lặp đi lặp lại nhiều lần, mỗi lần có sự đánh đổi của riêng nó. Bạn có thể xem Plasma Wolrd Mao, trong đó liệt kê nhiều kiểu thiết kế khác nhau mà mọi người đã cố gắng tạo ra để giải quyết những thách thức do Plasma đặt ra và nó rất nhiều!
Plasma về cơ bản là một loạt các hợp đồng thông minh (hoặc "chuỗi Plasma") chạy bên ngoài blockchain chính.
Blockchain gốc sử dụng một thứ gọi là "bằng chứng gian lận" (Proof of Fraud) để xác nhận tính hợp lệ của trạng thái trong chuỗi Plasma. Bằng chứng gian lận là một cơ chế cung cấp một số dữ liệu nhất định và bất kỳ ai cũng có thể sử dụng một bằng chứng toán học để xác định xem dữ liệu có không hợp lệ hay không.
Mỗi blockchain Plasma không cần truyền dữ liệu giao dịch lên chuỗi gốc. Thay vào đó, mỗi chuỗi Plasma có một "operator": có thể là người tham gia tập trung, multi-sig đại diện cho nhiều người hoặc thậm chí là một ủy ban tham gia vào việc trở thành operator Người điều hành chuỗi Plasma sẽ nộp một “gốc merkle” xảy ra trên chuỗi Plasma. (Ở cấp độ cao, cây Merkle cho phép chúng ta lấy một tập dữ liệu lớn, ví dụ: một giao dịch trong một khối, và tạo ra một hàm băm gốc duy nhất đại diện cho toàn bộ tập dữ liệu.
Sau đó, chúng ta có thể dễ dàng chứng minh rằng một phần dữ liệu từ một tập dữ liệu lớn (nghĩa là, một giao dịch đơn lẻ từ một khối giao dịch) tồn tại trong tập dữ liệu đó bằng cách cung cấp một phần nhỏ dữ liệu đó).
Nếu ai đó cố gắng xác nhận một giao dịch giả mạo, giá trị hash sẽ không khớp và mọi người sẽ biết ngay lập tức.
Plasma cam kết một gốc Merkle của giao dịch xảy ra trên nó. Khi người dùng sau đó cố gắng di chuyển tài sản của họ từ chuỗi Plasma trở lại chuỗi gốc, người dùng có thể gửi nhánh Merkle của giao dịch gần đây nhất đã gửi tài sản cho họ (giao dịch gần đây nhất đủ để chứng minh số dư hiện tại là trên plasma). Điều này đã bắt đầu một giai đoạn đầy thử thách mà ai cũng cố gắng chứng minh rằng nhánh Merkle của người dùng là gian lận. Nếu nhánh Merkle gian lận, bạn có thể gửi bằng chứng gian lận.
Vì blockchain gốc chỉ theo dõi gốc Merkle nên nó phải xử lý ít dữ liệu hơn so với những giao dịch xảy ra trên chuỗi chính. Điều này làm giảm đáng kể lượng dữ liệu được lưu trữ trên blockchain gốc và cho phép mở rộng.
Ngoài ra, nếu một chuỗi Plasma cụ thể bị tấn công, mọi người có thể "thoát ra hàng loạt" khỏi chuỗi đó.
Plasma có lợi thế hơn status channel vì bạn có thể gửi tài sản cho bất kỳ ai, trong khi với status channel, bạn chỉ có thể giao dịch với những người trong kênh. Ngoài ra, lợi thế của plasma so với sidechains là chuỗi plasma được bảo vệ bởi Ethereum.
Sự khác biệt cơ bản giữa Plasma và sidechains là các sidechains có mô hình bảo mật riêng của chúng: cơ chế đồng thuận riêng và một tập hợp các node riêng biệt để xác minh trạng thái. Ngay cả khi sidechain bị tấn công, không có gì xảy ra với chuỗi chính và ngược lại. Nếu một cuộc tấn công xảy ra trên sidechain, chuỗi chính không thể bảo vệ người dùng.
Mặt khác, Plasma có một mô hình bảo mật phụ thuộc và mỗi Plasma sử dụng cơ chế riêng để xác minh các giao dịch, nhưng vẫn sử dụng Ethereum làm công cụ phân xử cuối cùng. Trong trường hợp bị tấn công Byzantine, người dùng chuỗi plasma có thể thoát sang Ethereum.
Nhưng Plasma có một số nhược điểm nhất định:
Đầu tiên, khi người dùng muốn chuyển tài sản của họ từ Plasma sang Ethereum, họ cần đợi 7 ngày. Điều này đủ để cho phép mọi người xác minh rằng giao dịch rút tiền không phải là gian lận. Nếu vậy, họ có thể xây dựng bằng chứng gian lận bằng cách sử dụng cây Merkle trên chuỗi Plasma.
Thứ hai, mỗi chuỗi Plasma yêu cầu một operator công bố cam kết gốc Merkle cho chuỗi chính. Điều này đòi hỏi một bên thứ ba để đăng chính xác bằng chứng gốc Merkle lên chuỗi. Thật không may, các nhà khai thác có thể thực hiện "các cuộc tấn công về tính khả dụng của dữ liệu" trong đó họ từ chối công bố các giao dịch nhất định lên chuỗi chính vì các lý do không tốt.
Trong trường hợp này, operator có thể thuyết phục mạng chấp nhận khối không hợp lệ mà không bị phát hiện. Điều này ngăn người dùng khác biết trạng thái chính xác của blockchain đồng thời cũng ngăn mọi người tạo khối hoặc giao dịch vì họ thiếu thông tin để xây dựng bằng chứng. Không giống như gian lận, các cuộc tấn công về tính khả dụng của dữ liệu không phải là những cuộc tấn công không thể dự đoán được.
Các operator cũng có thể gây hại theo cách khác, chẳng hạn như bằng cách gửi các giao dịch gian lận. Trong trường hợp này, người ta có thể "thoát ra ồ ạt", như đã đề cập ở trên. nhưng những điều này đã được chứng minh là khó thực hiện hơn nhiều trong thực tế. Việc nhiều người dùng thoát trên diện rộng có thể dẫn đến nghẽn chuỗi chính, những người thoát không kịp dẫn đến tổn thất.
Thứ ba, Plasma yêu cầu sự hiện diện của chủ sở hữu tài sản. Điều này đảm bảo tính bảo mật của Plasma, vì nó làm cho việc giao dịch không thể thực hiện mà không có sự đồng ý của chủ sở hữu (ví dụ: gửi token ERC 20 đến một địa chỉ được phê duyệt). Plasma hoạt động tốt nhất đối với các giao dịch đơn giản, nhưng khi các giao dịch trở nên phức tạp hơn, không gian thiết kế trở nên bất thường.
Vì những lý do này, Polygon và OMG Networks ban đầu theo đuổi kiến trúc Plasma để mở rộng quy mô, nhưng sau đó đã từ bỏ nó.
Summary
Summary là một giải pháp Layer2. Trên thực tế, rollup rất giống với Plasma ở chỗ đều xử lý hàng loạt các giao dịch off chain và xuất thông tin lên blockchain chính. Tuy nhiên, điểm khác biệt chính là bằng cách tổng hợp, rollup cũng xuất dữ liệu giao dịch cho từng lô giao dịch lên chuỗi trong khi Plasma chỉ xuất gốc Merkle.
Lượng dữ liệu đăng trên chuỗi là tối thiểu cần thiết để xác thực các giao dịch tổng hợp ở chuỗi đó. Bằng cách đưa dữ liệu lên chuỗi, bất kỳ ai cũng có thể phát hiện gian lận, từ đó rút tiền hoặc tự tạo các lô giao dịch. Do đó, việc tổng hợp dữ liệu cung cấp độ bảo mật cao hơn so với chuỗi Plasma hoặc sidechain.
Một điểm khác biệt chính giữa rollup và Plasma là rollup không phải lo lắng về tính khả dụng của dữ liệu: Tấc cả các dữ liệu giao dịch sau cùng đều được đưa lên chuỗi chính.
Rollups có thể chạy một cách hiệu quả phiên bản EVM trong lớp rollups. điều này có nghĩa là bất kỳ giao dịch nào thực hiện được trên Ethereum có thể được thực hiện bằng aggregate
Điều này đặt ra câu hỏi: nếu vẫn xuất dữ liệu on-hain, thì điều này sẽ mở rộng lớp 1 như thế nào khi khả năng mở rộng vẫn bị giới hạn bởi băng thông dữ liệu của chuỗi chính?
Chìa khóa ở đây là khả năng mở rộng gấp 5 đến 100 lần thông qua việc tổng hợp dữ liệu, nhưng không phải vô hạn. Rollups cũng sử dụng rất nhiều thủ thuật để giảm thiểu dữ liệu giao dịch đưa lên on-chain, do đó, có ít dữ liệu được lưu trữ on-chain hơn nhiều so với các cách khác.
Đồng thời, việc out source để thực hiện giao dịch off-chain được giao cho lớp aggregate.
Nhắc lại: Trong quá trình thực hiện giao dịch, các giao dịch phải được EVM xử lý và tương tác với trạng thái (ví dụ: bộ nhớ, số dư tài khoản, v.v.) và nó rất tốn kém.
Với Summary, việc thực thi được chuyển sang lớp rollup bằng cách chạy một phiên bản EVM trong lớp rollup – vì vậy việc thực thi vẫn cùng thời điểm nhưng phí gas rẻ hơn so với Ethereum.
Tìm hiểu kĩ hơn về Summary
Cách Aggregate vận hành:
Có một "rollup contract" trên chuỗi chính duy trì trạng thái hiện tại của lớp rollup bao gồm số dư tài khoản của người dùng mà giao dịch được thực hiện và mã hợp đồng thông minh tồn tại trong đó. Tóm lại, hợp đồng aggregate theo dõi "gốc trạng thái" của các giao dịch trong lớp aggregate.
Gốc trạng thái bao gồm một ánh xạ key-value trong đó key là địa chỉ và value là tài khoản. Mỗi tài khoản có tối đa 4 thuộc tính: số dư, số ngẫu nhiên, code (chỉ hợp đồng thông minh) và lưu trữ (chỉ hợp đồng thông minh).
Khi một giao dịch xảy ra ở lớp rollup, trạng thái thay đổi sẽ xảy ra dẫn đến gốc trạng thái cũng cần được cập nhật. Thay vì cập nhật trạng thái gốc cho mỗi giao dịch, giao dịch được gửi "hàng loạt" đến hợp đồng tóm tắt trên chuỗi chính. Lô thông tin đó sẽ bao gồm dữ liệu nén của giao dịch hàng loạt và trạng thái gốc đã cập nhật, đại diện cho dữ liệu sau các giao dịch đó.
Hợp đồng rollup trên chuỗi chính kiểm tra xem gốc trạng thái trước đó có khớp với gốc trạng thái hiện tại của nó hay không – nếu có, nó sẽ chuyển gốc trạng thái sang gốc trạng thái mới.
Vì dữ liệu giao dịch đã xuất bản không thực sự được vận hành bởi EVM, người dùng không có quyền truy cập hoặc ghi trạng thái – điều này quá đắt. Thay vào đó, dữ liệu giao dịch đã sẽ được chuyển vào hợp đồng tổng hợp dưới dạng tham số "calldata".
Trong Solidity, calldata (một cách lưu trữ cấu trúc dữ liệu) là hình thức lưu trữ nhẹ nhất. Thực tế là các tham số được truyền dưới dạng calldata hoàn toàn không được lưu trữ trong Ethereum giúp tiết kiệm phí gas. Tuy nhiên, các node Ethereum vẫn có thể lưu trữ dữ liệu giao dịch (trong nhật ký lịch sử) khi tạo khối.
Vậy sự khác biệt giữa Plasma và Aggregation (tổng hợp) là gì? Đây là điểm khác biệt chính: bằng cách tổng hợp, dữ liệu giao dịch được đưa lên chuỗi cùng với gốc trạng thái trong khi Plasma chỉ cần xuất bản gốc trạng thái của giao dịch.
Không giống như Plasma, Aggregation có một operator để đưa gốc Merkle lên chuỗi gốc và rollup cho phép bất kỳ ai xuất bản một loạt giao dịch mới qua hợp đồng rollup trên chuỗi. Một lần nữa, điều này đặt ra câu hỏi: vì Aggregation chỉ xuất bản dữ liệu giao dịch lên chuỗi chính thay vì thực hiện các giao dịch trên chuỗi, làm thế nào để biết rằng dữ liệu giao dịch và gốc trạng thái được công bố trên chuỗi chính là đúng? Câu trả lời nằm ở Optimistic và Zero Knowledge (zk) rollup với các cách xử lí và xác thực thông tin khác nhau.
Optimistic summary
Khi một loạt giao dịch mới "tổng hợp" vào chuỗi chính, trạng thái gốc và hash của mỗi lô sẽ được đưa lên. Tuy nhiên, không thể thực sự xác minh liệu các giao dịch được thực hiện một cách chính xác hay chưa, ít nhất là tại thời điểm phát hành.
Với Optimistic rollup, hệ thông "lạc quan" công bố các trạng thái gốc mới và dữ liệu giao dịch để tổng hợp các hợp đồng trên chuỗi chính. Khi ai đó đăng một trạng thái gốc mới lên chuỗi chính, hợp đồng thông minh tổng hợp chỉ đơn giản chấp nhận điều đó.
Nếu có người nhận thấy rằng trạng thái đó không hợp lệ, họ có thể tạo ra "bằng chứng gian lận (Proof of Fraud)".
Bằng chứng gian lận bao gồm:
Bằng chứng về "trạng thái trước": trạng thái của hệ thống trước giao dịch mới
Bằng chứng về "trạng thái sau": trạng thái nên xử lý như thế nào sau khi áp dụng giao dịch
Bằng chứng giao dịch: được áp dụng trong quá trình chuyển đổi trạng thái
Quy trình làm việc rất đơn giản: bằng chứng gian lận này được đăng lên một hợp đồng tóm tắt trên chuỗi chính. Hợp đồng bằng chứng xác thực sau đó được tóm tắt và áp dụng logic giao dịch cho trạng thái trước, sau đó so sánh kết quả với trạng thái sau. Nếu có sai lệch chứng tỏ người đăng lô đã không áp dụng đúng giao dịch: Hợp đồng sẽ khôi phục các giao dịch của lô đó và tất cả các lô tiếp theo.
Vì lý do này, bất kỳ ai đăng thông tin lên chuỗi chính đều phải ký quỹ, nếu họ có biểu hiện sai lệch và bị phát hiện thì sẽ bị phạt.
Zero knowledge summary
NếU Optimistic sử dụng phương châm "vô tội cho đến khi được chứng minh làm sai", thì ZK ngược lại: không đáng tin và cần xác minh.
Với ZK rollup, mỗi lô chứa một bằng chứng mật mã được gọi là ZK-SNARK để chứng minh rằng trạng thái gốc là kết quả chính xác của việc thực hiện giao dịch. Bằng chứng ZK-SNARK là một giá trị băm đại diện cho sự thay đổi trạng thái của blockchain sau khi giao dịch được thực hiện trong lớp zk-rollup. Bằng chứng về tính hợp lệ này được truyền vào hợp đồng tổng hợp, vì vậy bất kỳ ai cũng có thể sử dụng nó để xác thực các giao dịch trong một lô cụ thể trên lớp tổng hợp.
Điều tuyệt vời ở đây là cách ZK-SNARK vận hành. Nó cho phép người dùng tạo bằng chứng của các dữ liệu bên dưới mà mà không phải tiết lộ ra. Bất cứ ai cũng có thể xác nhận sau đó là dữ liệu này có tồn tại, ngay cả khi không cso quyền truy cập vào dữ liệu đó.
Phương pháp nào tối ưu hơn?
Chi phí
GIữa Optimistic và ZK-Rollup có sự khác nhau rõ rệt:
Chi phí cho các lô mới được công bố trên chuỗi: Optimistic thấp hơn bởi tính đơn giản của giao dịch khi phát hành dữ liệu và gốc trạng thái mới. ZK sẽ cao hơn bởi việc xác minh tính hợp lệ của ZK-SNARK.
Chi phí gas cho mỗi giao dịch đưa lên chuỗi: Optimistic cao hơn: phải công bố đủ dữ liệu trên chuỗi để xác minh bằng chứng gian lận sau này. ZK thấp hơn vì có thể bỏ qua hầu hết dữ liệu giao dịch (bằng chứng hợp lệ là đủ để bất kỳ ai cũng có thể xác minh tính đúng đắn của thông tin).
Chi phí tính toán off chain: Optimistic thấp hơn bởi chỉ xuất bản trạng thái gốc mới mà không cần thực thi/ xác thực các giao dịch. ZK có chi phí cao hơn bởi chi phí tính toán ZK-SNARK khá cao (20 đến 1000 lần, đang giảm dần nhờ vào các cải tiến công nghệ).
Lưu ý: Mặc dù ZK-rollups đắt hơn về tính toán off-chain, nhưng cũng cần lưu ý rằng giá gas off-chain thấp hơn nhiều.
Tốc độ
Summary của Optimistic rất chậm: cần khoảng một tuần để rút tài sản. Nếu người dùng cố gắng rút tken trên lớp tổng hợp mà họ không thực sự sở hữu, điều này tạo điều kiện cho người khác đưa ra bằng chứng gian lận.
ZK summary lại nhanh hơn: người dùng chỉ cần hơn 10 phút để nhận lại tài sản của họ, bằng thời gian xử lí giữa 2 lô bởi vì các thông tin giao dịch đều đã được kiểm chứng.
Lưu ý: có nhiều cách để rút ngắn thời gian chờ đợi một tuần này bằng cách sử dụng rút tiền nhanh: thực hiện thông qua các nhà cung cấp thanh khoản, những người duy trì một lượng lớn tài sản trên chuỗi chính. Khi người dùng thực hiện rút tiền nhanh, họ cung cấp cho nhà cung cấp thanh khoản một IOU (I Own U- tương tự như phiếu ghi nợ) để nhanh chóng nhận tiền đi kèm một khoản phí từ các nhà cung cấp thanh khoản trên chuỗi chính.
Sau khi khoảng thời gian một tuần kết thúc và người dùng truy xuất tài sản từ lớp summarization, người dùng có thể gửi số tiền còn nợ của họ đến nhà cung cấp thanh khoản. Các nhà cung cấp thanh khoản thậm chí có thể chọn chạy một node xác thực để xác thực các giao dịch của người dùng trên lớp tổng hợp trước khi nhả tiền cho họ trên chuỗi chính nhằm giảm rủi ro.
Tuy nhiên phương pháp này không thể thực hiện với nfts vì chỉ có một NFT tồn tại và không thể mint NFT y hệt trên chuỗi chính.
Độ phức tạp
Optimistic tỏ ra đơn giản hơn khi bằng chứng lừa đảo đã có mặt từ rât lâu trong khi đó ZK-SNARK lại mới và rất phức tạp về mặt toán học
Độ phổ biến
Summarization của Optimistic dễ sử dụng hơn: Các kỹ sư đã xây dựng một máy ảo tương thích EVM được gọi là OVM (Optimistic Virtual Machine), cho phép lớp summarization tối thiểu có thể xử lý bất kì giao dịch nào chạy trên Ethereum.
ZK Summarization lại gặp khó trong vấn đề này. Việc sử dụng ZK-SNARK để chứng minh một EVM chung khó thực hiện hơn nhiều so với việc chứng minh các phép tính đơn giản như chuyển giá trị. Điều đó nói rằng, rất nhiều đổi mới đã xảy ra trong lĩnh vực này. Trên thực tế, StarkNet alpha đã giới thiệu một ngôn ngữ lập trình mới có tên là Cairo, là một validator ZK Turing hoàn chỉnh trên Ethereum cho phép xác thực các hợp đồng thông minh máy tính chung.
Khả năng mở rộng
Summarization của Optimistic kém khả năng mở rộng hơn, điều này bắt nguồn từ việc các dữ liệu được đẩy lên chuỗi thường bao gồm các trạng thái, bằng chứng và khi sử dụng tổng hợp Optimistic, ta cần phải đưa ra các chứng thực cho mỗi giao dịch, điều đó dẫn đến tiêu tốn nhiều không gian lưu trữ, từ 3-10 lần so với dữ liệu từ các giao dịch.
ZK rollup có khả năng mở rộng tốt hơn bởi việc không cần đưa chứng thực lên chuỗi, bời các chữ kí đều đã được xác thực khi tính toán ZK-SNARK. Việc chỉ cần 1 chứng thực cho mỗi lô thông tin cũng làm giảm nhẹ dung lượng lưu trữ cần thiết.
Độ an toàn
Optimistic kém an toàn hơn bởi việc cần trả thưởng để có người giám sát cac lô thông tin và xác nhận giao dịch. Trong khi đó, ZK dự hoàn toàn vào toán học và không cần trả thưởng nên sẽ an toàn hơn.
Cả hai giải pháp đều ở giai đoạn sơ khai. Nhưng Optimistic thành công hơn vì ít phức tạp và có thể được sử dụng trong máy tính đa năng ngày nay. Mặt khác, ZK sẽ mất một khoảng thời gian để bắt kịp, nhưng nhiều kỹ sư lại coi ZK là một công nghệ vượt trội. Xét cho cùng, ZK dựa vào toán học hơn là kinh tế học tiền điện tử, và chúng có khả năng mở rộng hơn Optimistic.
Đô tinh tế của các summary
Điểm qua độ hiệu quả của các công nghệ mà Aggregation sử dụng:
Random Number: Trong một giao dịch Ethereum điển hình, chúng bao gồm các số ngẫu nhiên để ngăn chặn các cuộc tấn công chi tiêu gấp đôi (double spending). Aggregation bỏ qua chúng hoàn toàn vì chúng có thể được tính toán lại bằng cách sử dụng trạng thái trước đó của blockchain. Bằng cách này, Summary sẽ thay thế dữ liệu bằng các phép tính bất cứ khi nào có thể.
Gas price: Thay vì được tính bằng gwei (trong đó 1 gwei bằng 10 ^ -9 ETH), tốt hơn nên giới hạn giá Gas ở một phạm vi giá cố định, giảm đáng kể dung lượng lưu trữ cần thiết để ghi lại giá gas trong dữ liệu giao dịch!
Cost: IBID.
To: Một địa chỉ dài 20 byte, cộng thêm 1 byte cho việc mã hóa RLP. Summaries có thể lưu trữ ánh xạ index-to-address thay vì bao gồm địa chỉ và chỉ bao gồm chỉ mục trong class "To" (ví dụ: 1234). Nó giống như việc định vị tọa độ đến đích thay vì hiển thị toàn bộ vị trí.
Value: Trường giá trị là 9 byt vì ETH và ERC-20 tokens có tối đa 9 vị trí. Summaries có thể cài đặt giới hạn giá trị đến tối đa 3 số, tiết kiệm được 6 byt.
Signature: Như đã đề cập ở trên, "nhân chứng" của một chữ ký điện tử chiếm rất nhiều không gian lưu trữ. Bản tổng hợp có thể sử dụng chữ ký BLS (một thuật toán để tổng hợp chữ ký và tổng hợp khóa), cho phép tổng hợp nhiều chữ ký thành một, giúp tiết kiệm không gian lưu trữ!
Tom lại, với tất cả các biện pháp nén này, một giao dịch ETH tiêu biểu cần 112 bytes, nhưng với các dịch vụ nén này chỉ cần 12 byt, hiệu quả hơn 10 lần!
ZK rollup có thể được tối ưu hóa hơn so với Optimistic vì chúng xác thực các giao dịch off-chain trước khi đưa lên on-chain. ZK cũng không cần bao gồm phần "xác thực" của dữ liệu giao dịch; bằng chứng về giá trị (Proof of Authority) là đủ. Tất cả ZK rollup cần lưu trữ dữ liệu cần thiết để tính toán các chuyển đổi trạng thái. Vì vậy, tầm quan trọng của Summaries là vì chúng hiệu quả trong việc chuyển các phép tính ra khỏi chuỗi, mà còn vì các kỹ thuật nén dữ liệu rất thông minh của chúng.
Rollup không phải là chén thánh
Rollup vẫn đang tồn tại các vấn đề cần phải giải quyết
Giới hạn của khả năng mở rộng
Cho đến nay ta đã thấy sự khác biệt chính giữa rollup và các giải pháp Lớp 2 khác, chẳng hạn như Plasma và SideChain.
Summary di chuyển tính toán ra khỏi chuỗi, nhưng lưu trữ dữ liệu trên chuỗi. Điều này rất hữu ích để khắc phục sự cố về tính khả dụng của dữ liệu. Nhưng vì lưu trữ dữ liệu giao dịch on-chain(mặc dù ở dạng nén), vẫn sẽ bị giới hạn bởi khả năng lưu trữ của Ethereum.
Hãy cùng làm một số phép toán đơn giản để xem TPS về lí thuyết sẽ đạt được bao nhiêu:
Giới hạn gas mỗi khối Ethereum: 12,5 triệu gas
Chi phí cho mỗi byte dữ liệu lưu trữ on-chain: 16 gas byte
Byte tối đa mỗi khối: ~ 781.000 byte (12,5 triệu gas / 16 gas mỗi byte)
Số byte dữ liệu cần thiết để chuyển ETH bằng cách sử dụng Summary: 12 byte (trong phần trước)
Số giao dịch mỗi khối: ~ 65.000 (THÍCH HỢP 781.000 BYTES MỖI KHỐI / 12 BYTES MỖI CHUYỂN ĐỔI ETH)
Thời gian khối trung bình cho ethereum: 13 giây
Số giao dịch mỗi giây: ~ 5000 TPS (THÍCH HỢP 65.000 GIAO DỊCH MỖI KHỐI / 13 GIÂY MỖI KHỐI)
Tất nhiên, phép toán này giả định rằng tất cả các giao dịch trong một khối là chuyển ETH và không có gì trong một khối ngoài các giao dịch tổng hợp lô, điều này rất khó xảy ra. Hầu hết các khối sẽ chứa nhiều loại giao dịch, bao gồm một số giao dịch Tier 1 sẽ tốn hơn 16 phí gas. Ngoài ra, nếu đây là các lô ZK-rollup, chi phí xác thực bằng chứng SNARK trên chuỗi sẽ không được tính, khoảng 500.000 gas. Tuy nhiên, điều này cho biết TPS khi sử dụng rollup thấp hơn nhiều so với 65.000 TPS của Visa nhưng tốt hơn nhiều so với TPS ngày nay của Ethereum.
Tính lưu động bị phá vỡ
Các dự án về rollup đều là tự phát chứ không phải được hỗ trợ bởi chính Ethereum. Vì thế trong tương lai sẽ tồn tại các dự án tương tự. Điều này sẽ dẫn đến sự phá vỡ về tính lưu động: Khi thanh khoản chuyển từ Ethereum về các chain tổng hợp sẽ làm ảnh hưởng đến mạng lưới của các chain tổng hợp khác. Tuy nhiên hiện nay các kĩ sư đang nghiên cứu và phát triển các biện phap cho phép thanh khoản các kênh tổng hợp có thể giao tiếp với nhau.
Suy giảm khả năng tổng hợp
Một trong những lợi ích chính của việc xây dựng dự án trên Ethereum là khả năng kết hợp. Mỗi giao thức mới được xây dựng trên Ethereum giống như một viên gạch Lego và các giao thức khác có thể dễ dàng được xây dựng trên đó. Đây là điều làm cho DeFi trở nên mạnh mẽ: Nó cho phép chúng ta tạo ra những viên gạch Lego để kiếm tiền.
Khi các ứng dụng và thanh khoản chuyển sang chaim tổng hợp, Ethereum sẽ mất đi một số khả năng tổng hợp nhất định. Rõ ràng việc chuyển các thông điệp và giao dịch giữa lớp rollup và chuỗi chính không dễ dàng như giữa các giao thức trong cùng chuỗi chính.
Tính phi tập trung
Hầu hết các summary đều dựa vào “sequencer” để xuất thông tin lên chuỗi chính. Sequencer là các node có nhiệm vụ tóm gọn các lô thông tin và đưa nó lên hợp đồng tóm tắt trên chuỗi chính. Với Arbitrum, Optimism hay StarkNet, các sequencer là các node tự điều hành.
Vậy nếu sequencer thất bại và quyền sở hữu được chuyển giao sẽ như thế nào?
Lý do mà các dự án đang thực hiện theo lộ trình này là vì việc làm với cách tiếp cận này dễ dàng và nhanh chóng hơn. Để giảm nguy cơ tập trung hóa, hầu hết các summary đều muốn một mức độ phi tập trung nhất điịnh ở các sequencer.
Có một số cách để làm việc đó: tạo một hệ thống giống như Proof-of-Stake, nơi các sequencer phải cam kết các token để có cơ hội đề xuất đợt tiếp theo. Hoặc thực hiện Ủy quyền-Bằng chứng cổ phần (delegated Proof of Stake), trong đó một sequencer được bầu và nếu hoạt động tốtsẽ bị loại. Nhìn chung, việc phi tập trung hóa các sequencer vẫn còn nhiều điều phải bàn.
So sánh tuần tự
Nhìn chung, Ethereum vẫn đang đặt niềm tin vào Aggregation cùng với Sharding. Rollup cùng với các giải pháp mở rộng khác như sidechain, status channel, plasma vẫn còn đang khá tiềm năng.
Chúng ta cũng có thể sử dụng trilemma scalability để so sánh giữa aggregation với các giải pháp lớp 2 khác. Khả năng linh động (Versatility) của các giải phaspmowr rộng lớp 2 cũng là một yếu tố rất quan trọng, giúp chúng có thể làm mọi việc mà chain gốc có thể làm.
Bảng trên cho chúng ta thấy rollup có thể cung cấp khả năng mở rộng một cách tương đối mà không cần phải đánh đổi tính phi tập trung hay bảo mật.
Sự đánh đổi nằm ở khả năng mở rộng. Việc lưu trữ data on-chain khiến cho rollup vẫn bị hạn chế so với các giải phap lớp 2 lưu trữ data off-chain. Ngoài ra, hiện tại các sequence vẫn có một mức độ tập trung nhất định, yếu tố làm giảm đi tính bảo mật. Tuy nhiên về dài hạn khi các sequencer đã được phi tập trung hóa, rollup có thể trở nên ưu việt hơn so với sidechain, plasma hay status channel.