Kiến trúc Ethereum

*Đây là bài viết chuyên sâu của tác giả Hugo Nguyen, được Boonja dịch và đăng tải trên chuyên trang tin tức BitcoinVN News.

Trải qua hơn 3 năm tồn tại, Ethereum chưa bao giờ thiếu các chủ đề gây tranh cãi. Từ vụ hack DAO đến sự chuyển đổi sang giao thức Bằng-chứng-cổ-phần (Proof-of-Stake), cả lần nâng cấp Constantinople khiến phần thưởng đào bị suy giảm hay sự thay đổi bất thình lình của lịch lạm phát (thực ra Ethereum cũng chẳng có lịch lạm phát rõ ràng ngay từ đầu) đều thu hút sự quan tâm của dư luận. Và dường như, văn hoá Ethereum hoàn toàn trái ngược với văn hoá Bitcoin. Bởi tất cả những gì Bitcoin cố tình tránh né, Ethereum lại muốn theo đuổi. 

Nếu bạn có thể bỏ qua tất cả những ồn ào và chịu khó đào sâu tìm hiểu, bạn sẽ thấy rằng vấn đề số 1 của Ethereum không phải là vấn đề về sản phẩm có phù hợp với thị trường hay không, mà vấn đề nằm ở tính đúng đắn trong kỹ thuật. Kiến trúc Ethereum dựa trên một ý niệm khiếm khuyết và không có khả năng mở rộng: nó mặc định rằng “hợp đồng thông minh” cần những tính toán được tái tạo trên hàng ngàn máy tính.

Bài viết này sẽ giải thích vì sao cấu trúc Ethereum dễ rạn nứt. Và cơn bão tweet về vấn đề này nay đã được tổng hợp và chuyển thành blog. 

Bitcoin không phải là phép màu

Để có thể trao cho chúng ta thứ gì đó đặc biệt, bitcoin phải chọn hy sinh tất thảy những phương thức hiệu quả, dù điều này đi ngược lại với trực giác của chúng ta và “những cách làm tốt nhất”.

http://bit.ly/32LbCLR

Cụ thể, Bitcoin kém hiệu quả theo 2 chiều:

  • Bitcoin buộc tốc độ sản xuất khối phải diễn ra chậm
  • Nó sử dụng cách thức giao tiếp phát rộng (broadcast – tin được gửi từ một điểm đến tất cả các điểm khác trong cùng một mạng)

Để hiểu rõ hơn về sự phản trực giác của Bitcoin, hãy nghĩ xem bạn có thường:

  • Làm chậm công việc một cách cố ý, ngay cả khi bạn có cách để hoàn thành nó nhanh hơn?
  • Nói cho mọi người biết tất tần tật mọi thứ bạn đã làm, từng phút mỗi ngày?

Và khi Bitcoin áp dụng điều này ở ngay phần cài đặt mạng lưới thì điều điên rồ đã xảy ra. Không chỉ bạn chậm mà người khác cũng phải chậm theo. Không chỉ bạn hét vào người ta mà ai nấy cũng đều có thể hét vào mặt nhau. 

Đặc biệt hơn, mạng lưới này có đến cả trăm ngàn thành viên. Hãy tưởng tượng khi cả trăm ngàn thành viên ấy đang hét vào mặt nhau, chắc chắn bạn đang nghĩ đến một bệnh viện tâm thần khổng lồ và điên loạn phải không? Bạn đã hình dung đúng rồi đấy!

Xét theo hầu hết mọi ngữ cảnh, cách Bitcoin vận hành thực sự là quá điên rồ.

Nhưng tính kém hiệu quả một cách tột độ hoá ra lại có những ưu điểm của nó. Bằng việc ép mọi thứ diễn ra chậm một cách có chủ đích, Bitcoin khiến việc gian lận trở nên tốn kém hơn. Khi sử dụng cách thức truyền tin phát rộng, các thành viên trong mạng đều có thể nắm bắt thông tin một cách nhất quán, rõ ràng. Nhờ đó, Bitcoin giúp giảm thiểu nhu cầu tin tưởng lẫn nhau giữa các thành viên (hoặc tối đa hoá khả-năng-chịu-lỗi, theo thuật ngữ khoa học máy tính).

Bằng việc trì hoãn tốc độ sản xuất khối kèm truyền tin phát rộng, Bitcoin giải quyết thành công Bài toán các vị tướng Byzantine – một cú đột phá lớn trong khoa học máy tính. 

Nhưng làm mọi thứ theo cách Bitcoin sẽ đi kèm với một cái giá đắt. Bitcoin bước đi trên một lằn ranh mỏng manh giữa tinh tế và vô dụng. Các hệ thống blockchain sẽ vận hành tốt, miễn là dữ liệu chảy qua chúng tăng trưởng ở một tốc độ có thể kiểm soát. 

Tỷ lệ tăng trưởng dữ liệu của bất cứ thứ gì nếu không theo tuyến tính cũng đều không bền vững, và cầm chắc một bản án tử hình. Sự tăng trưởng dữ liệu phi tuyến tính sẽ nhanh chóng “giết chết” lần lượt từng nút cá nhân. Và sớm muộn cũng sẽ đưa hệ thống trở lại một mô hình đòi hỏi nhiều lòng tin hơn. 

Vì bản thân các hệ thống blockchain đã vô cùng kém hiệu quả, chúng gần như không thể  trông cậy trong trường hợp dữ liệu tăng trưởng quá nhanh. Các hệ thống blockchain vốn dĩ đã đi trên lớp băng rất mỏng. 

Thế nên khi nói đến dữ liệu blockchain, bạn phải trở nên hiệu quả hết mức có thể, một cách triệt để. Điều này sẽ bù đắp cho sự kém hiệu quả quá mức ở những khía cạnh đã được đề cập ở trên. 

Đây chính xác là lý do vì sao kiến trúc “nhiều trạng thái – rich statefulness” của Ethereum là một ý tưởng tồi. Các trạng thái của Ethereum chỉ cần thiết cho mục đích tính toán, nhưng chúng tăng trưởng ở tốc độ vượt ngoài tầm kiểm soát. 

Ethereum đang kéo dãn cấu trúc lớp lõi “một cách không cần thiết”

Các quyết định về thiết kế của Ethereum thậm chí còn đáng ngờ hơn khi các mục đích để đi theo kiến trúc nhiều trạng thái tại lớp lõi đều mơ hồ và thiếu minh bạch. Để mô phỏng ngôn ngữ Turing hoàn chỉnh (Turing-completeness) chăng? Sẽ chẳng có một ngôn ngữ Turing hoàn chỉnh nào thật sự tồn tại trên các chuỗi khối, vì tất cả các chương trình theo cách nào đó đều bị buộc tạm ngừng. Thế nên “Turing hoàn chỉnh” hoàn toàn là một mánh lới thu hút sự chú ý. Chính Vitalik cũng đã thừa nhận điều này. 

Hay để giúp việc viết các hợp đồng thông minh đươc lập trình dễ dàng hơn? Khi nói đến kỹ thuật blockchain, tính khả dụng chính là thứ cuối cùng bạn phải bận tâm. Thứ tự ưu tiên nay đã bị xếp ngược. Hãy nhớ rằng, dùng blockchain tức là bạn vốn dĩ bước đi trên một lớp băng mỏng mà không thêm vào nhiều trạng thái. 

Vậy thì mục đích là gì? Để hỗ trợ việc tính toán mà một mình ngôn ngữ kịch bản như Bitcoin sẽ không làm được chăng? Không hẳn vậy. Bất kỳ tính toán nào thực hiện được với hợp đồng thông minh Ethereum cũng sẽ thực hiện được trên Bitcoin, chỉ là ở một lớp cao hơn. 

Đây chính là mấu chốt của vấn đề. Ethereum đang giải quyết các vấn đề ở sai lớp. Và vì thế làm phồng cấu trúc cốt lõi của nó một cách không cần thiết. 

Trì hoãn việc xử lý vấn đề và hi vọng rằng vấn đề sẽ tự nó giải quyết cũng không phải là giải pháp. Phân vùng ngang (sharding) không phải là giải pháp, bởi phân vùng ngang sẽ giảm mức độ giao tiếp phát rộng – thứ mà trong ngữ cảnh của blockchain chính là một tính năng chứ không phải lỗi cần sửa. 

Việc đặt tất cả hy vọng vào các phân vùng ngang và xem chúng như liều thuốc Hopium thần kỳ.(một loại thuốc hư cấu giúp nuôi hy vọng) chính là ví dụ điển hình.cho thái độ của Ethereum dành cho kỹ thuật. 

Các vấn đề của Ethereum thậm chí còn nghiêm trọng hơn nếu bạn cân nhắc.việc Bitcoin vẫn có thể tồn tại khả năng thất bại khi.cực kỳ bảo thủ về dạng dữ liệu cũng như sự tăng trưởng dữ liệu được xử lý. Theo thiển ý của tôi, Bitcoin gần như vẫn còn là một thử nghiệm.

Nếu bạn đã đọc bài viết gần đây của tôi về Kế hoạch khích lệ của Bitcoin, bạn sẽ thấy rằng tôi có để ngỏ một vài câu hỏi mở mà chính bản thân vẫn chưa rõ câu trả lời. Tôi lạc quan về tương lai của Bitcoin, nhưng là lạc quan một cách thận trọng. 

Tổng kết lại: Bitcoin đã kéo giãn mọi thứ tới các giới hạn.để đạt được thứ gì đó hữu ích. Kể cả như vậy, sự thành công của nó cũng không được đảm bảo. Ethereum kéo giãn mọi thứ xa hơn nhiều mà không có lý do nào hợp lý. Đây là lý do vì sao kiến trúc của Ethereum bị rạn nứt ngay từ bước khởi đầu. 

Thay vì đơn giản hóa, cấu trúc của Ethereum lại làm phức tạp mọi thứ

Thêm một vài lời nữa về khía cạnh kỹ thuật. Câu chuyện của Ethereum thật ra không hiếm gặp. Đây là bộ phim chúng ta đã từng được xem:

  • RISC với CISC những năm 70
  • Linux với Windows những năm 90 

Trong những tập phim này chúng ta đã học được rằng phần cứng và phần mềm.hoạt động tốt nhất khi chúng được xây dựng như là các lớp đơn giản theo dạng mô-đun. Điều này đã được chứng minh bằng ví dụ của RISC và Linux (một ví dụ khác là TCP/IP). Lý do đó là vì những hệ thống này có khuynh hướng linh hoạt hơn,.tinh tế hơn và có thể thích nghi dễ dàng hơn.với những thay đổi về môi trường hoặc trường hợp sử dụng. 

Có một sự thật sống mãi theo thời gian đã được đề cập trong triết lý thiết kế Unix: Sự linh hoạt, đơn giản và tự do chính là những yếu tố tiên quyết.

Triết lý thiết kế Unix cũng nhận được một phiếu bầu tín nhiệm từ tự nhiên. Các đàn kiến thể hiện trí tuệ bầy đàn vượt trội,.dù rằng khi xét riêng lẻ thì từng cá thể kiến đều kém thông minh.và bị chuyên môn hoá cao. Tương tự, não của chúng ta được tạo thành từ những nơ-ron thần kinh đơn giản. Và mỗi nơ-ron chỉ có thể thực hiện những nhiệm vụ đơn giản. 

Cách tiếp cận mọi thứ có thể của Ethereum tại lớp lõi mang nét tương đồng.với ý tưởng về một bộ lệnh điều khiển phức tạp. Hoặc ý tưởng về việc xây dựng phần mềm từ những bộ phận lớn và phức tạp,.thay vì những bộ phận nhỏ hơn và chuyên dụng hơn. Làm phức tạp mọi thứ chỉ để phục vụ lợi ích của sự phức tạp,.chứ không phải vì quá trình hợp trội. 

Tóm lại, Ethereum đưa ra các quyết định thiết kế đáng ngờ mà không có lý do vững chắc. Chúng ta cũng đã thấy những lỗi kỹ thuật tương tự như Ethereum trước đây. Tôi đoán rằng Ethereum rồi cũng sẽ trở thành một bài học khác về những-gì-không-nên-làm.đã được nêu trong sách lịch sử. 

Ghi chú

  • Tôi dùng cụm từ “hệ thống blockchain” để đề cập đến hệ thống blockchain.tương tự Bitcoin, tức được dựa trên giao thức Bằng-chứng-công-việc. 
  • Đọc thêm: Gregory Maxwell đã giải thích việc xác-thực-không-tính-toán ở đây. Dưới đây là đoạn trích. 

“Tất cả những cải thiện căn bản về mức độ mở rộng, sự riêng tư và độ linh hoạt xuất hiện. khi bạn nhận ra rằng “Turing hoàn chỉnh” là một công cụ sai,.rằng những gì mà các hệ thống của chúng ta làm là xác thực, không phải tính toán. Lỗi nhận thức này không mang đến lợi ích nào, ngoài việc cung cấp cho người ta ý niệm mù mờ.về việc các hợp đồng thông minh có thể giúp ích như thế nào vào ban đầu.

Chắc chắn sẽ có nhiều hợp đồng thông minh hơn trong thế giới của Bitcoin. Nhưng hoạt động quảng cáo ba hoa xung quanh Ethereum không phải là sức mạnh. Nó là mỏ neo tàu – vector cho sự thiếu nhất quán về đồng thuận,.sự kiệt quệ nguồn lực khiến phá huỷ tính phi tập trung, cùng những lệch lạc của động cơ. May mắn thay, cộng đồng các chuyên gia Bitcoin sẽ hiểu rõ khung nhận thức mà tôi vừa mô tả.”

Boc McElrath cũng đã giải thích vấn đề ở đây