Tin nóng ⇢

Kinh nghiệm đánh giá hiệu suất của một Chain

Multichain giờ đã trở thành hiện thực. Việc thiếu khả năng mở rộng của Ethereum đã gây ra sự dịch chuyển hàng loạt sang thế hệ các layer 1 mới. Hầu hết các layer 1 này đều sử dụng máy ảo Ethereum EVM, giúp chúng tương thích với các ví Ethereum và công cụ dành cho lập trình viên. Tuy nhiên, Solana đã tự xây dựng lại hoàn toàn “stack” của riêng mình từ đầu đến cuối. Solana tuyên bố mình là blockchain nhanh nhất hiện hành. Vì vậy, chúng ta đặt ra câu hỏi: Liệu Solana nhanh hơn bao nhiêu so với các chain EVM?


Tăng trưởng TVL của các blockchain L1 (Nguồn: The Block)

Trước tiên, chúng ta cần thống nhất về cách mà chúng ta đo lường tính hiệu quả. Kể từ rất lâu, các blockchain mới thay nhau khẳng định về việc chúng hoạt động hiệu quả hơn Ethereum như thế nào. Đó là một trò khá cũ. Bạn sẽ thấy rất nhiều các con số ràng buộc với nhau và các biểu đồ so sánh TPS (transaction per second – số lượng giao dịch mỗi giây) được tập hợp một cách rất vội vàng. Thật không may, những con số TPS này thường đến từ các tài liệu marketing của chính họ, gần như luôn luôn là trong các BS.

Hầu hết các mức tiêu chuẩn (benchmark), mà do chính các L1 phát hành, đều đo lường TPS của các lần chuyển giao giá trị rất đơn giản – tức là chuyển coin từ tài khoản này sang tài khoản khác. Giao dịch đơn giản cực kỳ rẻ và do đó lại dễ dàng để tạo ra những con số lớn, và mọi người thì lại yêu thích những con số lớn. Nhưng không có blockchain nào thực sự bị tắc nghẽn khi chuyển tiền như thế này, và kiểu hoạt động như thế này cũng không phản ánh được các mô hình xu hướng sử dụng trong thế giới thực. Hơn nữa, nhiều con số này được tạo ra trên devnet hoặc testnet hơn là trên mainnet. Chúng ta vốn không cần quan tâm đến những gì mà phần mềm của ai có thể làm được chỉ là về mặt lý thuyết. Cái chúng ta thực sự muốn biết là những gì có thể làm được trên các mainnet ngay thời điểm hiện tại.

Trên thực tế, chưa có phương thức nào thống nhất để xác định mức tiêu chuẩn cho TPS. Điều này không quá mới lạ, bởi nó thường xảy ra trong quá trình đo lường điểm chuẩn (benchmarking); đó là một phạm trù khá lộn xộn và rộng lớn, đầy rẫy yếu tố marketing lừa gạt, overfitting / “teaching to the test” và những trò bịp.

Bằng cách nào chúng ta có thể thực sự đo lường được hiệu suất của L1?

Đó là một câu hỏi khó vì hiệu suất có nhiều phương diện.

Đầu tiên, hiệu suất luôn là sự đánh đổi chống lại tính phi tập trung. Testnet và devnet mà có tính tập trung cao có thể tạo ra những con số đáng kinh ngạc so với những gì có thể đạt được so với trong mainnet. Và cũng có nhiều mainnet đã cắt giảm tính phi tập trung, điều này dẫn đến giảm thiểu mức hiệu suất bổ sung.

Nhưng giả sử chúng ta muốn bỏ qua tính phi tập trung và hoàn toàn chú ý vào tính hiệu suất. Việc đánh giá hiệu suất blockchain nổi tiếng là khó vì hầu hết các chain mới rất kém trong khả năng hiển thị dữ liệu.

Sau 7 năm, hiệu suất của Ethereum đã được nghiên cứu rất kỹ lưỡng và được hiểu rất rõ. Nhưng khi bạn bắt đầu khám phá các chain mới hơn, hầu hết trong số chúng có ít công cụ hơn, khả năng quan sát kém và không ngừng phát triển mình. Vào thời điểm bạn đọc nó, những tiêu chuẩn được xem xét này có thể đã lỗi thời.

Hơn nữa, mức tiêu chuẩn luôn mang tính tùy tiện và đầy rẫy những cạm bẫy. Điều tốt nhất bạn có thể làm là chọn một mức điểm chuẩn mà dùng làm đo lường thứ gì đó có giá trị, sau đó xác định kết quả của bạn một cách cẩn thận nhất có thể. Đó là những gì bài viết này sẽ cố gắng làm ở đây.

Nhưng định nghĩa như thế nào về hiệu suất? Xem xét hai khía cạnh đối với hiệu suất: Xuất lượng (Throughput)Độ trễ (Latency).

Định nghĩa về hiệu suất

Bạn có thể hình dung hiệu suất của blockchain giống như nước chảy qua một đường ống. Các giao dịch là nước – bạn muốn nhiều giao dịch chảy qua đường ống cùng một lúc. Nhưng độ dài của đường ống là yếu tố quyết định độ trễ của nó – nếu phải mất nhiều thời gian để một giao dịch được xác nhận, ngay cả khi nhiều giao dịch có thể được xác nhận cùng một lúc, thì điều đó cũng không hề lý tưởng.

Độ trễ có thể được chia nhỏ thành các phần như sau: Thời gian để thực hiện một khối (block time – khoảng thời gian giữa các khối) và Độ trễ khi giao dịch thật sự hoàn tất (time-to-finality – bao lâu cho đến khi khối chắc chắn sẽ không bị trả về). Dễ dàng để đo lường hai giá trị này.

Nhưng để thực sự đo lường được Xuất lượng (throughput), bạn cần một đơn vị đo lường tiêu chuẩn. Vậy Xuất lượng của cái gì?

Thay vì các giao dịch token, xem xét một trong những đối tượng tiêu tốn gas hàng đầu trên Ethereum: Uniswap V2, và biến nó thành một điểm chuẩn đơn giản. Nếu bạn lấp đầy toàn bộ một khối bằng các giao dịch theo mô hình kiểu Uniswap V2, bao nhiêu giao dịch mỗi giây sẽ hoàn thành?

Nguyên nhân cho việc lựa chọn mức benchmark này, là vì:

1) Đơn giản và dễ đo lường;

2) Mọi blockchain đều đưa mô hình AMM Uniswap V2 vào trong quá trình sản xuất;

3) Là kiểu điển hình của các mô hình sử dụng hợp đồng thông minh.

Đối với hầu hết các chuỗi theo gas model, việc thi hành các BotE (back-of-the-envelope – xử lý vội các phép đơn giản để phỏng đoán ước chừng) nên đơn giản và thẳng vào vấn đề. Đầu tiên, xác định gas limit của khối và block time để tính xuất lượng gas/giây của chain; tiếp theo, tìm AMM theo kiểu Uniswap v2 và chọn một giao dịch tương đương SwapETHforTokens; cuối cùng, chia con số đầu tiên cho số thứ hai để tìm ra kết quả cho câu hỏi "sẽ có bao nhiêu tx/giây nếu các khối của nó được nhồi đầy bởi các giao dịch AMM giống nhau".

Lưu ý: Đây không phải là một cách để xác định được benchmark hoàn hảo! Nó chỉ xem xét các giao dịch riêng biệt mà không tính đến các giao dịch có thể song song hóa (vì các giao dịch Uniswap trên cùng một pool phải được tuyến tính hóa) và nó không đại diện cho mọi mô hình sử dụng. Nhưng việc sử dụng hợp đồng thông minh luôn được phân phối theo luật lũy thừa (power-law distribution) và Dapp được sử dụng nhiều nhất có xu hướng là AMM, vì vậy trong một bộ các benchmark, đây là minh họa để có được cái nhìn tổng thể về cách bài viết xem xét tính hiệu suất.

Ethereum

TPS của Uniswap v2: trung bình 9.19, tối đa 18.38 (do EIP-1559).

Block time trung bình: 13.2 giây (PoW, các khối được khai thác ngẫu nhiên trong quy trình Poisson).

Time-to-finality: 66 giây (ước tính xấp xỉ, các block ETH không hoàn toàn được thực hiện đến cuối cùng).

Các giả định và phương pháp luận: 

Tại mục tiêu 15 triệu gas xảy ra khi Ethereum đạt được ở trạng thái cân bằng với EIP-1559, Ethereum có thể thực hiện 9.19 giao dịch mỗi giây; ở mức 30 triệu gas limit, nó có thể đạt được 18.38 giao dịch mỗi giây (nhưng phí sẽ tăng theo cấp số nhân nếu nó vẫn giữ nguyên mức này). Bài viết sử dụng giao dịch swapExactETHForTokens này làm giao dịch 1-hop on-chain đại diện tiêu biểu. Giả sử các nhà sản xuất khối có thể hoàn toàn nhồi được một khối 15 triệu gas limit gồm các giao dịch Uniswap mà tốn 123.658 gas cho mỗi giao dịch, điều đó có nghĩa là chúng ta có thể nhận được 15M/123.658 = ~ 121.3 lần swap vào thành một khối duy nhất. Nếu giả sử các khối hoàn thành cứ sau 13.2 giây, điều đó có nghĩa là Ethereum xử lý được 121.3/13,2 giây = ~9.19 lần swap Uniswap v2 mỗi một giây.

Sử dụng một phép tính này áp dụng tương tự cho các chuỗi EVM khác.

(Lưu ý: bài viết này loại bỏ các rollup ra đối với phương pháp tính toán này vì tất cả các L1 của hợp đồng thông minh đều có khả năng tích hợp rollup vào).

Celo

TPS của Ubeswap: trung bình 24.93, tối đa 49.86 (do EIP-1559).

Block time trung bình: 5 giây.

Time-to-finality: 5 giây (Celo sử dụng giao thức kiểu PBFT để hoàn tất khối ngay lập tức).

Giả định: giao dịch swap này là giao dịch đại diện tiêu biểu, 10 triệu gas mục tiêu và 20 triệu gas limit.

Polygon

TPS của Quickswap: trung bình 47.67, tối đa 95.33 (do EIP-1559).

Block time trung bình: 2.5 giây.

Time-to-finality: Có hai khái niệm về tính hoàn tất trên Polygon.

1. Probabilistic – Theo xác suất: Điều này tương tự như hầu hết các blockchain theo kiểu Ethereum, trong đó chuỗi chính tắc (canonical chain – chuỗi chuẩn chỉnh nhất) phụ thuộc vào hầu hết các tác vụ đã được hoàn thành (khó nhất). Trong trường hợp của Polygon, tính hoàn tất của layer Bor (là lớp sản xuất khối BD) phụ thuộc vào fork với độ khó cao hơn.

2. Provable – Có thể cung cấp được: Điều này tương tự như Tendermint/IBFT, trong đó đa số việc ký (sign) nằm trên chuỗi chính tắc. Điều này xảy ra trên layer Heimdall (là lớp quản lý trình xác thực và đồng bộ hóa trạng thái của Polygon), thông qua việc tạm dừng để kiểm tra (checkpointing). Các điểm kiểm soát (checkpoint) này được gửi về Ethereum.

Các re-org (tái tổ chức) và fork có thể xảy ra trên layer Bor nhưng không xảy ra trên Heimdall. Những checkpoint này là các snapshot của trạng thái chuỗi Bor. Khi một khối được bao gồm trong một checkpoint đã gửi đi, nó không thể được re-org lại (trừ khi trên 1/3 số validator không trung thực). Các checkpoint được gửi đi khoảng 25 phút một lần.

Giả định: giao dịch swap này là giao dịch đại diện tiêu biểu, 15 triệu gas mục tiêu và 30 triệu gas limit.

Avalanche

TPS của Trader Joe: trung bình 31.65, nhưng do block time có tính đàn hồi, ở mức throughput tối đa, Avalanche C-Chain có thể xử lý đủ gas để đạt 175.68 giao dịch mỗi giây. Tuy nhiên, duy trì thông lượng ở mức đó sẽ khiến phí tăng theo cấp số nhân.

Block time trung bình: trung bình 2 giây (Avalanche là một leaderless protocol – giao thức không có người dẫn đầu – với block time có tính co giãn: các block có thể được sản xuất ra bất kỳ lúc nào, miễn là phải trả đủ phí tối thiểu. Avalanche C-Chain đã có những khoảng thời điểm mà có hơn 10 khối được sản xuất trong vòng 1 giây).

Time-to-finality: ~1.75 giây sau khi khối được sản xuất.

Giả định: giao dịch swap này là giao dịch tượng trưng, với 8 triệu gas limit ở hiện tại.

Tương đối khó để so sánh Avalanche bởi do cơ chế sản xuất khối của nó rất khác với Ethereum và chuỗi PoS. Đối với Avalanche, có sự chênh lệch lớn giữa những gì nó có thể thực hiện ở mức throughput tối đa và ở mức trung bình. (Các chuỗi tương tự với Ethereum, mà đã triển khai EIP-1559, bị giới hạn bởi 2 lần mức throughput trung bình của chúng).

Binance

TPS của PancakeSwap: 194.60 (Binance Smart Chain không sử dụng EIP-1559, vì vậy đây là một con số cố định).

Block time trung bình: 3 giây.

Time-to-finality: 75 giây.

Giả định: giao dịch swap này là giao dịch tượng trưng, 80 triệu gas limit.

Điều này kết luận về việc thiết tập mức tiêu chuẩn của các blockchain. Vì tất cả các chuỗi EVM sử dụng cùng một gas model, chúng ta có thể xem xét tỷ lệ gas/giây làm tiêu chuẩn cho xuất lượng (throughput). Có thể thấy qua đồ thị bên dưới, các thanh đặc màu biểu thị xuất lượng mục tiêu và các thanh rỗng biểu thị giới hạn.


Tỷ lệ gas/giây cho các chuỗi EVM

Solana

TPS của Orca: 273.34

Block time: 590 ms

Time-to-finality: 13 giây (Solana cũng cho ra các "Optimistic confirmation" nhanh hơn nhiều nhưng chúng chỉ có khả năng chống lại ~4.7% tham nhũng. Thay vào đó, hầu hết các Dapp đều chấp nhận ngưỡng này).

Dưới đây là cách tính toán ra giá trị này, và nó được tính theo một cách khác với thông thường:

Trước hết, cần tìm một "gas limit" tương đương cho Solana. Không thể tìm thấy bất kỳ số nào như vậy trên trình khám phá khối (block explorer). Dường như không ai, kể cả một số nhà phát triển của Solana, biết chắc chắn liệu có loại giới hạn như vậy hay không. Chúng ta cùng tự tìm hiểu thông qua nội dung phân tích sau đây.

Đầu tiên, chúng ta biết rằng Solana có một thứ giống tương tự như khái niệm gas, được gọi là compute units – CU (Có thể tìm hiểu sâu hơn tại đây). Từ báo cáo của Dragonfly Capita, họ đã có cuộc trò chuyện với các validator, hầu hết họ đều nghĩ rằng Xác thực (validation) của Solana đang “trong cuộc chạy đua với thời gian để “wrap” được càng nhiều giao dịch càng tốt trong một block time”, nhưng tồn tại một hạn chế thực tế là mỗi khối chỉ có thể chứa 48 triệu CU.

Thứ hai, chỉ một số giới hạn các CU là có thể ghi được vào một tài khoản riêng lẻ trong một khối duy nhất. Giới hạn này nhằm để ngăn nhiều quá mức các giao dịch ghi vào cùng một tài khoản, do đó giảm tính song song của một khối – mặc dù đây chính xác là những gì xảy ra trong quá trình tắc nghẽn hàng loạt, chẳng hạn như trong những sự kiện IDO thông thường, khi tất cả các giao dịch cùng cạnh tranh để cùng sử dụng một hợp đồng duy nhất.

Giới hạn cho mỗi tài khoản là 12 triệu. Nếu bạn tuân theo giới hạn CU này, cùng với block time 590ms trên mainnet và chi phí 74.408 CU cho mỗi lần swap trên Orca, ta sẽ đạt đến mức giới hạn về mặt lý thuyết là 273,34 lần swap/giây.

Con số này có vẻ như là thấp hơn mong đợi. Gia tăng mức độ tin tưởng đối với kết quả này bằng phương pháp bằng chứng thực nghiệm (empirical approach).

Để xác minh tính chính xác trong đo lường hiệu suất, đưa Solana trực tiếp vào thử nghiệm về một cuộc tấn công spam. Rõ ràng răng sẽ không thực nghiệm spam trên mainnet, vì vậy nó đã được nhắm mục tiêu đến devnet của Solana. Lưu ý rằng mạng devnet của Solana chạy trên một cụm nhỏ hơn và do đó có thời gian khối nhanh hơn mainnet (chỉ 380ms so với 590ms của mainnet), điều này sẽ làm gia tăng hiệu suất của nó so với mainnet. Với thời gian khối 380ms, chúng ta nên mong đợi rằng devnet sẽ có khả năng hoàn thành được 424.40 swap mỗi giây.

Báo cáo rằng cặp giao dịch trên Orca là SOL-ORCA được chọn để thực nghiệm scam trên mạng devnet để có bao nhiêu giao dịch swap trên Orca có thể hoàn thành trong một khối đơn và sau đó ngoại suy ra giá trị xuất lượng (throughput) tối đa.


Trong block Devnet 106784857, hoàn thành được 184 swap trên Orca

Con số cao nhất mà thực nghiệm đã có thể đạt được là 184 giao dịch swap trong một khối đơn. Giả sử block time là 380 ms, cho ra 484.21 swap/giây trên devnet. (Lưu ý rằng block time không chính xác, do đó, tồn tại biến động về giá trị trong những con số này. Nếu bạn tính trung bình trên 3 khối mà trong đó hoàn thành được nhiều giao dịch nhất, có vẻ như sẽ cho ra 381 hoán đổi/giây, điều này có vẻ hợp lý hơn). Điều này dường như xác nhận rằng phương pháp phân tích trên là đúng (~10-15% delta), do đó ngụ ý rằng mainnet của Solana có thể thực hiện khoảng 273 swaps/giây trên một AMM.

Phải thừa nhận rằng đây chỉ là một mẫu chạy thử nghiệm, vì vậy khuyến khích các bạn sử dụng mã code tại đây để tự thực hiện.

Sau khi xem xét tất cả những điều này và người đọc có thể tự hỏi rằng: Solana duy trì đều đặn 3000 TPS?

Cách mà các trình khám phá khối đo lường TPS của Solana có thể gây ra cách hiểu lầm  – nó tính luôn cả các thông điệp đồng thuận nội bộ (internal consensus message) như là các giao dịch, điều mà không có blockchain nào khác làm cả. Khoảng 80% throughput của Solana là consensus message. Nếu tính toán trừ đi những message này, còn lại ~ 600 TPS, trong đó hầu hết là giao dịch serum (serum trade) chi phí rất rẻ. Miễn là vẫn còn đủ các loại hợp đồng khác, Solana cũng có thể đạt được hiệu suất cao hơn trong việc sản xuất.


AMM test: Hiệu suất swap Uniswap v2 theo giây

Kết luận

Đầu tiên, đừng xem đây là một bài thuyết giáo. Hãy nên tự mình thực hiện việc tính toán.

Thứ hai, hãy nhớ rằng tất cả các blockchain này đều đưa ra những mục tiêu không ngừng thay đổi. Chúng liên tục được tối ưu hóa và công nghệ thì đang phát triển nhanh chóng, khi mà bất kỳ benchmark nào được đưa ra đều chỉ là snapshot theo thời gian. Cần nhiều các bên tổ chức độc lập hơn tạo ra các benchmark được tiêu chuẩn hóa, còn cá nhân bài viết này, đây là nỗ lực tốt nhất mà các nhà phân tích từ Dragonfly Capital đã có thể thực hiện được.

Thứ ba, lưu ý rằng sự chênh lệch về hiệu suất giữa các blockchain này không lớn như được quảng cáo. Sự khác biệt về hiệu suất giữa Ethereum và chuỗi tốt nhất hiện nay là khoảng 10-25 lần, không phải 100x hoặc 1000x. Không ai nhận được hiệu suất tuyệt vời đó từ các giao dịch VM được tuyến tính hóa; điều đó sẽ đòi hỏi nhiều công việc và tối ưu hóa hơn.

Thứ tư, nếu bạn muốn có hiệu suất thực sự cao thì bây giờ bạn phải nhìn ra bên ngoài không gian EVM. Bài viết này chỉ đánh giá Solana ở đây, nhưng có những L1 không phải EVM khác như NEAR và Terra cũng đạt được hiệu suất cao hơn. Nhưng giống với Solana, họ không được hưởng lợi từ công cụ và hệ sinh thái xung quanh EVM. (Mặc dù NEAR có shard Aurora, có thể tương thích với EVM, và các L1 khác đang cố gắng phát triển các phiên bản EVM ảo hóa tương tự).

Thứ năm, người dùng hiện không thật sự nhạy cảm với các cân nhắc về hiệu suất trên các L1 mà không phải Ethereum. Họ quan tâm nhiều hơn đến sức mạnh tổng thể của một hệ sinh thái, trải nghiệm người dùng tốt và phí thấp. Các blockchain này hiện không cạnh tranh về hiệu suất bởi vì không có blockchain nào trong số chúng thực sự đang được sử dụng hết công suất ngoại trừ những thời điểm đặc biệt tạo ra đột biến rất hiếm hoi, chẳng hạn như trong thời gian IDO hoặc vào lúc suy thoái của thị trường.

Hy vọng rằng tất cả các L1 chủ chốt sẽ cải thiện hiệu suất của chúng theo thời gian, vì các nhóm phát triển ngày càng dành nhiều thời gian hơn để điều chỉnh hiệu suất trên các mô hình sử dụng (usage pattern) điển hình. Không có gì ngạc nhiên khi trong những giai đoạn đầu tiên, mỗi blockchain này đều tối ưu hóa kém!

Nhưng nhìn chung, có một điều đáng ấn tượng rằng: Ethereum là MS-DOS của các phần mềm hệ thống quản lý hợp đồng thông minh. Tuy nhiên kỷ nguyên hiện tại của blockchain như thể đưa chúng ta vào kỷ nguyên của Windows những năm 95.


MS-DOS (bên trái) đến Windows 95 (bên phải)

Các blockchain thế hệ tiếp theo đại diện cho một sự cải tiến rõ rệt, nhưng còn nhiều điều cần phải thực hiện để có thể đạt được tự tiếp nhận chính thống của thị trường. 

Theo Dragonfly Capital
Biên dịch bởi TheCoinDesk

Có thể bạn quan tâm

Mục lục