Solana outage events
Trước khi đi sâu vào việc tại sao “outage is not a problem” đối với Solana thì chúng ta nên có một quick review về những lần Solana gặp sự cố đáng chú ý nhất.
Lần 1 (14/09/2021): Outage trong vòng 17 tiếng
Lần outage này có nguyên nhân chủ yếu là do sự kiện mở bán token của Grape protocol. Khi token được mở bán, vô số con bot liên tục spam giao dịch vào mainnet của Solana làm cho mạng lưới chậm dần và ngừng hẳn.
Một vài node còn phải nhận đến hơn 300k giao dịch mỗi giây làm cho chúng bị quá tải.
Tuy nhiên, chúng ta cũng phải hỏi câu hỏi ngược lại rằng tại sao lượng giao dịch quá lớn lại có thể làm một blockchain bị dừng đột ngột, đặc biệt là khi blockchain đó là Solana - một chain nổi tiếng với khả năng và tốc độ xử lí giao dịch. Đáng lý ra điều nay không được xảy ra mới đúng.
Câu trả lời là lần outage này không phải là lỗi của Solana. Một số con bot đã tạo ra những giao dịch không tương thích với thiết kế của Solana làm cho các giao dịch này không thể được xử lí song song (tính năng riêng biệt của Solana) khiến cho mạng lưới bị chậm và quá tải.
Lần 2 (30/04/2022): Outage trong vòng 7 tiếng.
Lần outage nay cũng có nguyên nhân là do mạng lưới bị spam quá nhiều giao dịch. Kể từ đầu tháng 1 năm 2022, Solana đã gặp phải sự cố congestion do hoạt động của các bot nhắm tranh nhau mint NFT. Sự cố outage vào ngày 30/4 có cùng đặc điểm với sự cố outage vào tháng 9, nhưng mạng lưới lần này vẫn tiếp tục hoạt động ngay cả khi khối lượng giao dịch đạt 10.000% so với mức từ tháng 9 năm trước. Điều này phản ánh Solana đã được cải thiện và nâng cấp rất nhiều bởi cộng đồng.
Lần 3 (01/06/2022): Outage trong vòng 4.5 tiếng.
Khác với 2 lần outage trước, lần này Solana bị dừng không phải do quá tải nữa mà là do lỗi xử lí một giao dịch hai lần. Điều này dẫn đến lỗi nondeterminism của mạng lưới (xử lí cùng một giao dịch hai lần nhưng lại cho ra hai kết quả khác nhau). Điểm cần lưu ý là loại giao dịch bị lỗi là loại giao dịch nonce chiếm số lượng rất ít trên mạng lưới Solana (chỉ chiếm 0.01% tổng số giao dịch). Sau khi mạng lưới gặp sự cố, các kĩ sư của Solana đã nhanh chóng loại bỏ tính năng xử lí giao dịch nonce của Solana và thêm vào một bản vá để loại bỏ lỗi đã gặp phải không lâu sau đó.
Lần 4 (30/09/2022): Outage trong vòng 7.25 tiếng.
Solana gặp sự cố liên quan đến consensus (cơ chế đồng thuận), một lỗi đã xảy ra ở block 153139221 đã khiến cho Solana không thể thêm những block tiếp theo vào chain. Lỗi này đã nhanh chóng được loại bỏ khi các validator cập nhật lên phiên bản v1.13.2.
Reflection
Vậy chúng ta rút ra được điều gì qua các lần outage của Solana?
- Việc Solana bị dừng không liên quan gì đến độ phi tập trung hay bảo mật của Solana như nhiều người vẫn nghĩ mà đơn giản chỉ là những lỗi phần mềm và việc mất kiểm soát congestion của mạng lưới. Với một blockchain tiên phong trong những cải tiến công nghệ và vẫn đang trong giai đoạn mainnet beta như Solana thì những lỗi phát sinh như vậy là điều dễ hiểu.
- Những lần outage không để lại hậu quả gì đáng kể cho mạng lưới hay người dùng. Tới nay vẫn chưa có trường hợp nào báo bị mất tài sản do outage.
- Sau khi vá xong lỗi và triển khai mạng lưới hoạt động lại bình thường thì số giao dịch thành công vẫn giữ được ở mức trước outage. Điều này chứng minh rằng mạng lưới sau outage vẫn hoạt động bình thường và người dùng không vì outage mà dừng sử dụng Solana. Ảnh phía dưới là minh họa cho vụ outage ngày 30/09/2022.
The solutions to Solana outages
Bằng nỗ lực của của các kĩ sư cùng với cộng đồng, Solana đã cho ra mắt những bản nâng cấp giúp ngăn ngừa tình trạng outage của mạng lưới. Dưới đây là 3 nâng cấp quan trọng nhất.
QUIC
Khi các app thực hiện trao đổi thông tin với nhau, chúng thường dùng 2 phương pháp chính là TCP và UDP. Cơ bản mà nói, việc lựa chọn sử dụng TCP hay UDP là một sự tradeoff giữa tốc độ và độ tin cậy. TCP có độ chính xác và tin cậy cao nhưng khá chậm trong khi UDP nhanh hơn nhưng không đáng tin cậy, không thể kiểm soát tắc nghẽn mạng và không thể khôi phục dữ liệu nếu xảy ra lỗi.
Solana trước đây sử dụng một bản mod của UDP do đó nó cũng thiếu đi khả năng kiểm soát tắc nghẽn mạng. Nhận thấy được vấn đề này, Solana đã đề xuất sử dụng QUIC.
QUIC ban đầu là một giao thức đến từ Google, nó được thiết kế để trở thành một giao thức trung chuyển dữ liệu thừa hưởng những đặc tính tốt của TCP và UDP. QUIC có tốc độ gần với UDP trong khi vẫn có khả năng kiểm soát và độ tin cậy của TCP.
TCP, UDP & QUIC
Việc chuyển sang sử dụng QUIC sẽ giúp Solana cải thiện ở những điểm sau:
- Hỗ trợ những giao dịch lớn hơn.
- Tăng độ tin cậy của giao dịch.
- Giúp cho Solana tránh được tình trạng bị spam quá nhiều giao dịch bởi một chủ thể bằng cơ chế “IP Spoofing” (nếu 1 ip gửi quá nhiều giao dịch thì mạng sẽ không tiếp nhận giao dịch từ ip đó )
- Tiêu chuẩn hóa việc kiểm soát flow của các giao dịch.
QoS
Quality of Service (QoS) là phương pháp ưu tiên một số loại giao dịch nhất định khi mạng có số lượng giao dịch vượt ngoài khả năng của nó.
Tháng 1 đầu năm nay, sau sự kiện Solana bị spam bởi các liquidator bot, Anatoly Yakovenko - đồng sáng lập của Solana - quyết định cải tiến blockchain này với QoS.
Phương thức Staked Weighted QoS cho phép các giao dịch được xếp vào các hàng chờ khác nhau dựa vào người gửi yêu cầu giao dịch (các hàng chờ này sẽ được phân biệt bởi lượng Solana được stake). Những node không stake Solana nhờ đó sẽ được khuyến khích gửi giao dịch tới cho những node có stake Solana. Điều này giúp các giao dịch có khả năng cao được thực hiện hơn thay vì gửi thẳng luôn cho leader vì những giao dịch được gửi từ các node không stake thường sẽ bị bỏ qua bởi leader.
Thêm vào đó, các validator sẽ có nhiệm vụ tự đưa ra những luật lệ cho riêng mình để tránh được các rủi ro cho bản thân. Ví dụ, nếu 1 node gửi quá nhiều giao dịch cho validator (dù node này là node có stake Solana), validator đó có thể cắt liên kết với node đó và ngừng nhận giao dịch để bảo vệ mạng lưới.
Firedancer
Firedancer là một vailidator client có mã nguồn mở phát triển bởi Jump R&D team.
Firedancer được xây dựng lên với sứ mệnh tăng độ tin cậy, tốc độ xử lí giao dịch và khả năng mở rộng của Solana. Để các bạn có thể mường tượng ra khả năng của Firedancer thì đây là một chút thông số: Firedancer có khả năng xử lí 100GB/s trên mạng lưới Solana. Cần phải lưu ý rằng, hiện tại các node của Solana đang chỉ xử lý khoảng 0.2GB giao dịch trong một giây và trong thời gian đỉnh điểm thì mạng Solana chỉ phải xử lý 40GB/s.
Sự nâng cấp này chắc chắn sẽ cải thiện đáng kể khả năng xử lí giao dịch của Solana và rõ ràng sẽ loại bỏ rủi ro Solana bị outage một lần nữa.
Nhưng câu hỏi được đặt ra là: liệu Solana có thể tương thích với sức mạnh khủng khiếp Firedancer hay không? Câu trả là có.
Solana ngay từ đầu được thiết kể để có thể scale theo định luật của Moore. Định luật Moore nói rằng công nghệ sẽ phát triển nhanh đến nỗi mà tốc độ và khả năng xử lí của máy tính sẽ nhân đôi mỗi năm. Sự kết hợp Firedancer của Jump vào Solana sẽ củng cố thêm điều này với mạng lưới Solana.
Đến đây sẽ có nhiều người nghĩ rằng việc Solana tập trung vào khả năng mở rộng sẽ làm cho Solana ít bảo mật và phi tập trung hơn vì vẫn chưa có blockchain nào giải quyết được trilemma: scalability (khả năng mở rộng), security (độ bảo mật) và decentralization (tính phi tập trung).
Nhưng thực hư chuyện này ra sao? Chúng ta sẽ bàn luận ở phần cuối của bài viết nhé.
Adoption level
Một luận điểm bọn mình đưa ra để chứng minh “Outage is not a problem” là mức độ tiếp nhận (adoption) của Solana bất chấp những lần outage đó.
Có lẽ, Solana là blockchain duy nhất không sử dụng EVM mà đạt được sự tiếp nhận đáng ngưỡng mộ. Số lượng giao dịch mỗi ngày của Solana đã tăng một cách vững chắc từ đầu năm 2022. Dưới đây là biểu đồ só lượng giao dịch mỗi ngày của Solana (không tính các giao dịch bỏ phiếu)
Solana Daily Transactions
Tất nhiên các bạn có thể nghĩ số lượng giao dịch của Solana cao là dĩ nhiên vì phí giao dịch của nó quá rẻ nhưng rõ ràng Ethereum cũng có lợi thế về lượng người dùng sẵn có từ lâu. Nếu đem so Solana với Ethereum thì Ethereum đang không thể hoạt động tốt như vậy:
Ethereum Daily Transactions
Từ đầu năm 2022 đến khoảng quý 3, nếu không tính khoảng thời gian kề The Merge thì số lượng giao dịch hàng ngày của Ethereum đang có xu hướng đi xuống dần đều.
Để gia tăng thêm việc được tiếp nhận của số đông, Solana đã có một nước đi khá hợp lý. Bản cập nhật v1.10 của Solana còn chào đón một tính năng mới gọi là Fee Market. Với tính năng này, người dùng có thể thêm một phần phí so với mức phí tiêu chuẩn để giao dịch của mình được ưu tiên. Một nửa phần phí thêm này sẽ tới tay các validator và nửa còn lại sẽ được đốt.
Khác với Ethereum có fee market dùng chung cho tất cả hạng mục giao dịch thì các Fee Market của Solana được chia nhỏ theo nhiều hạng mục. Ví dụ như nếu có nhiều con bot đang thi nhau tăng phí để giao dịch swap của mình được ưu tiên hoàn thành thì phí giao dịch sẽ chỉ tăng ở mục swap còn các giao dịch về NFT vẫn sẽ không bị ảnh hưởng.
Việc áp dụng Fee Market sẽ cải thiện đáng kể trải nghiệm người dùng và giúp Solana tiến gần hơn với mass adoption.
Decentralization
Đây là khía cạnh mà hầu hết mọi người đều nghĩ Solana đã thất bại. Vậy chúng ta thử xem xét vấn đề này theo nhiều góc nhìn khác nhau.
Việc trở thành validator của Solana yêu cầu một số tiền khá lớn để mua các thiết bị đắt tiền cùng với lượng SOL yêu cầu nhất định đã trở thành một rào cản khá lớn cho bất kì ai. Tuy thế, số lượng validator của Solana vẫn tăng đều đều.
Solana Validators
Thực tế, Solana là blockchain có nhiều validator nhất trong số các blockchain sủ dụng cơ chế đồng thuận Proof of Stake (tính đến ngày 19/9/2022 là khoảng hơn 1,911 validator theo số liệu từ solanabeach.io) và tất nhiên là không tính Ethereum mới chuyển sang Proof of Stake vào ngày 15/9 vừa qua. Ethereum có khá nhiều node nhưng mỗi node lại có thể chạy nhiều validator nên chúng ta khó có thể chắc được thực tế có bao nhiêu người đang chạy node của Ethereum. Vậy đây là một điểm cộng cho Solana trong việc phi tập trung khi nó đang dẫn đầu các blockchain PoS về khoản số lượng validator.
Hơn phân nửa các validator của Solana được phân bổ ở Mỹ và Đức. Điều này xét về mặt phi tập trung thì là một điểm trừ nhưng hầu hết các chain khác cũng gặp vấn đề về việc các validator phân bổ không đồng đều về mặt địa lý. Thêm một thông tin thú vị khác chính là việc có đến 51.1% số node của Ethereum chạy trên AWS (Amazon Web Services) trong khi chỉ có 71 trong tổng số 1,911 node của Solana là chạy trên dịch vụ này. Vậy chain nào mới đang bị phụ thuộc quá nhiều vào một thực thể? Có lẽ các bạn đã có câu trả lời cho riêng mình.
Một yếu tố khác mà chúng ta cần xem xét là việc tạo ra lợi nhuận khi chạy node hoặc trở thành validator. Yếu tố này sẽ quyết định việc liệu Solana có ngày càng lớn mạnh và đạt được sự ổn định hay không.
Hiện tại, nếu một validator muốn hòa vốn ở mức hoa hồng 10% thì validator đó sẽ cần khoảng 45,000 SOL được stake bởi bên thứ 3 hoặc phải tự stake khoảng 5,000 SOL - một con số khá cao. Để khắc phục việc này, Solana Foundation đã mở ra các chương trình ủy thác, mang đến cơ hội cho việc 80% SOL của quỹ (100m SOL) sẽ được ủy thác cho các validator để stake.
Tính đến nay, Solana đang có chỉ số Nakamoto Coefficient cao nhất trong số các blockchain. Chỉ số Nakamoto Coefficient đo lường mức độ phi tập trung của các blockchain và thể hiện số lượng tối thiểu các node kết hợp lại để có thể halt hoặc censor mạng blockchain đó. Chỉ số này càng cao thì blockchain càng phi tập trung.
Bây giờ chúng ta sẽ kiểm chứng lại một chút.
Để chiếm quyền kiểm soát của một blockchain (halt hoặc censor) thì các validator phải thông đồng với nhau để nắm được 33% lượng stake hoặc hơn. Theo Solanabeach.io, để chiếm quyền kiểm soát của Solana thì cần ít nhất 30 validator thông đồng với nhau. Nếu các validator này không nằm trong số validator top đầu về lượng stake thì con số này còn sẽ phải cao hơn nữa.
Nhìn sang người hàng xóm Ethereum, thoạt nhìn thì có vẻ như Ethereum đang rất tập trung khi mà nền tảng Lido DAO đang chiếm đến 29.2% lượng ETH stake do đó con số Nakamoto Coefficient của Ethereum đang chỉ là 2 vì chỉ cần Lido thông đồng cùng 1 thực thể có lượng stake lớn hơn 3.8% là đã có thể chiếm quyền kiểm soát Ethereum. Nhưng theo lập luận của những người ủng hộ Ethereum (Ethereum maxis) thì Lido là một thực thể được tạo ra bởi nhiều staker nhỏ nên việc chiếm quyền của Lido hoàn toàn là rất khó xảy ra. Được rồi, vậy chúng ta sẽ xem xét các thực thể khác.
Nếu 6 thực thể sau của Ethereum thông đồng với nhau: Binance, Coinbase, Kraken, Staked.us, Bitcoin Suisse, Rocket pool thì số lượng ETH stake sẽ là 33.4%. Điều này có nghĩa kể cả khi ta bỏ Lido DAO ra thì Ethereum vẫn khá tập trung và dễ bị nắm quyền kiểm soát.
Vậy hóa ra Solana cũng không đến mức quá tập trung như mọi người đồn đại mà thực ra nó đang làm khá tốt trong mảng phi tập trung hóa.