Tiêu đề gốc: "Rust hôm nay đã được 4 tuổi. Tại sao ngày càng có nhiều dự án nổi tiếng được phát triển ở Rust? 》
Nguồn gốc: Blockchain Base Tác giả: Mike Tang
Hôm nay 4 năm trước (15 tháng 5 năm 2015 ), chương trình Rust Nhóm nòng cốt ngôn ngữ chính thức công bố phát hành phiên bản Rust 1.0.
Trong 4 năm qua, khả năng giải quyết các vấn đề về hệ thống có tính tương tranh cao và độ bảo mật cao của nó ngày càng được ưa chuộng nhà phát triển. Và trong 4 năm liên tiếp, nó đã giành vị trí đầu tiên trong cuộc bình chọn “Ngôn ngữ lập trình được yêu thích nhất” trong số các nhà phát triển Stack Overflow.
Gần đây ngày càng có nhiều dự án blockchain nổi tiếng chọn sử dụng Rust làm ngôn ngữ phát triển, bao gồm: Parity, Polkadot, Substrate , Grin, Ethereum Classic, Holochain, Cardano-Rust, Exonum, Lighthouse, Nimiq, Nervos, Conflux-Rust, Codechain, Witnet và nhiều dự án nổi tiếng khác.
Bài viết này cố gắng khám phá những lý do đằng sau sự xuất hiện của xu hướng này. Và giải thích một cách có hệ thống về tác động của ngôn ngữ Rust đối với sự phát triển blockchain và những lợi thế của nó.
Rust: Một hệ thống phần mềm an toàn và đồng thời
Rust là ngôn ngữ lập trình cấp hệ thống được thiết kế để đảm bảo an toàn cho bộ nhớ và luồng cũng như ngăn ngừa lỗi phân tách.
Là ngôn ngữ lập trình cấp hệ thống, khái niệm cơ bản của nó là "sự trừu tượng hóa không chi phí". Về mặt lý thuyết, nó nhanh như C/C++. Rust có thể được phân loại là ngôn ngữ lập trình được biên dịch, đa mô hình, có mục đích chung, tương tự như C/C++.
Không giống như hai ngôn ngữ lập trình này, Rust an toàn theo luồng! Mục tiêu của nó là tạo ra một hệ thống phần mềm an toàn và đồng thời. Rust nhấn mạnh đến tính an toàn, đồng thời và kiểm soát bộ nhớ. Mặc dù Rust mượn cú pháp từ C/C++, nhưng nó loại bỏ các con trỏ null và con trỏ lơ lửng, vốn là nguyên nhân gây ra sự cố hệ thống, rò rỉ bộ nhớ và mã không an toàn trong C/C++.
Mặc dù Rust là ngôn ngữ lập trình cấp hệ thống nhưng điều đó không có nghĩa là nó chỉ có thể viết các chương trình cấp thấp (hệ điều hành, driver, Công cụ, cơ sở dữ liệu, công cụ tìm kiếm, v.v.), mức độ trừu tượng cao của nó là hoàn toàn đáng kinh ngạc. Thực tiễn đã chứng minh rằng khả năng và sự thuận tiện trong mô hình hóa vấn đề của nó không thua kém gì C++/Java/Python/Ruby.
Nhưng những ngôn ngữ có tính trừu tượng cực cao như Haskell không phải là hướng phát triển của Rust. Rust cố gắng tìm sự cân bằng giữa sự trừu tượng và thế giới thực.
Hiện tại, Rust đã giành vị trí đầu tiên là "Ngôn ngữ yêu thích của lập trình viên" trong 4 năm liên tiếp trong cuộc bình chọn ngôn ngữ hàng năm của StackOverflow.
Lịch sử ngôn ngữ Rust
Rust ban đầu là một dự án cá nhân của nhân viên Mozilla Graydon Hoare. Nó bắt đầu vào năm 2009 và nhận được sự hỗ trợ từ Viện Nghiên cứu Mozilla. Dự án được công bố ra công chúng vào năm 2010.
Bootstrapping được triển khai từ năm 2010 đến năm 2011. Kể từ đó, Rust đã trải qua những thay đổi và lặp lại rất lớn về thiết kế (một hành trình vô cùng gian khổ), và cuối cùng phiên bản 1.0 đã được phát hành vào ngày 15 tháng 5 năm 2015.
Trong quá trình nghiên cứu và phát triển này, Rust đã thiết lập một cộng đồng mạnh mẽ và năng động, đồng thời hình thành một cơ chế đóng góp dự án hoàn chỉnh và ổn định (đây là thực sự đáng sợ). Rust hiện được duy trì bởi cộng đồng nhà phát triển Rust Project.
Hình sau mô tả bản đồ di truyền của Rust:
Rust vẫn là một ngôn ngữ thích hợp
Rust đã đi được một chặng đường dài kể từ phiên bản 1.0 đến nay (tháng 5 năm 2019). Nhưng nhìn chung, so với Python, C, C++, v.v., Rust không được sử dụng rộng rãi (rốt cuộc thì nó còn quá non trẻ).
Cuộc khảo sát cho thấy phần lớn lý do khiến tỷ lệ sử dụng Rust thấp là do một số ít công ty chọn Rust.
Tuy nhiên, Rust chiếm tỷ trọng ngày càng tăng trong công việc. Rust đã chứng kiến sự tăng trưởng đáng kinh ngạc trong các ứng dụng thương mại trong năm qua. Bao gồm một số công ty quen thuộc:
Amazon: Xây dựng công cụ bằng Rust;
Facebook: công cụ kiểm soát mã nguồn;
Google: là một phần của dự án Fuchsia;
Google: là một phần của dự án Fuchsia; span>
Microsoft: Sử dụng một phần Rust trong khuôn khổ Azure IoT mới;
Twitter: Sử dụng Rust như một phần của hoạt động hỗ trợ xây dựng nhóm.
Baidu trong nước và Alibaba cũng đã sử dụng Rust ở quy mô nhỏ trong nội bộ. Tôi tin rằng khi càng nhiều công ty chọn Rust, Rust thậm chí sẽ còn phát triển nhanh hơn nữa.
Gavin Wood đưa Rust vào blockchain
Người đầu tiên áp dụng Rust vào một dự án blockchain nổi tiếng phải là Gavin Wood nổi tiếng. Tiến sĩ Gavin Wood rời cộng đồng Ethereum vào nửa cuối năm 2015, thành lập Parity Technologies, ra mắt ứng dụng khách Ethereum Parity và chiếm thành công một nửa cộng đồng Ethereum. Ứng dụng khách Parity này được viết bằng Rust.
Thật ra dự án MaidSafe đã xuất hiện trước khi Parity xuất hiện. MaidSafe thử rất nhiều thứ với ngôn ngữ Rust. Tính bảo mật được nhấn mạnh bởi chính ngôn ngữ Rust và các dự án tiên tiến như MaidSafe có thể đã cho Gavin đủ lý do để chọn Rust làm ngôn ngữ phát triển chẵn lẻ.
Các tính năng ngôn ngữ riêng của Rust (bảo mật, hiệu suất cao, lập trình đồng thời) và các tính năng blockchain (phân phối, mã hóa, bảo mật nhạy cảm) vốn có có sự chồng chéo đáng kể.
Không chỉ vậy, Rust khác biệt về mặt ngôn ngữ lập trình, không phải vì cú pháp của nó đẹp như thế nào (trên thực tế, một số người thậm chí còn nghĩ nó hơi xấu) Hoặc cộng đồng nổi tiếng đến mức nào, nhưng vì sự tự tin mà bạn có được khi viết mã trong đó.
Có vẻ như Rust sẽ ảnh hưởng đến hiệu quả và tính biểu cảm trong quá trình viết mã của bạn, nhưng đáng ngạc nhiên là kết luận lại hoàn toàn ngược lại: Còn rất nhiều dễ dàng viết một chương trình Rust hiệu quả, thành ngữ hơn là một chương trình nguy hiểm tiềm tàng.
Sau đây là các lỗi được phát hiện trong nhân Linux từ tháng 1 đến tháng 4 năm 2018:
Đối với Rust, phần 51% ở phía bên phải của hình trên có thể tránh được ở cấp độ ngôn ngữ. Nói cách khác, đối với Rust, những vấn đề ở phía bên phải của bức tranh trên hoàn toàn không tồn tại.
Hiện đang có 2 quan điểm: "Chỉ cần biết viết C" và "Chỉ cần để ở mức thấp nhất những điều dành cho Chuyên gia", cả hai quan điểm đều không đủ. Nhân Linux được viết bởi những lập trình viên giỏi nhất, có thể là 5% lập trình viên hàng đầu trong ngành, nhưng CVE vẫn xuất hiện hàng năm.
Bạn có thể nghĩ rằng 50 lỗi trong hàng triệu dòng mã chẳng là gì cả. Nhưng trong một số lĩnh vực quan trọng, lỗi có nghĩa là rủi ro mang tính hệ thống (ví dụ, lỗi trong máy điều hòa nhịp tim có thể dẫn đến hậu quả đe dọa tính mạng). Hơn nữa, 50 lỗi này là những gì chúng tôi đã tìm thấy, ai biết chúng tôi còn chưa tìm ra được bao nhiêu lỗi? Với Rust, chúng tôi biết trước câu trả lời.
Điều tuyệt vời là Rust đạt được sự an toàn về bộ nhớ và an toàn chạy đồng thời mà không làm giảm hiệu suất. Điều tuyệt vời hơn nữa là nó thậm chí còn sử dụng cùng một bộ trừu tượng để giải quyết các vấn đề trong hai lĩnh vực khác nhau: an toàn bộ nhớ và cạnh tranh dữ liệu.
Tính trừu tượng không tốn chi phí của Rust cho phép bạn tận hưởng tính bảo mật mà không phải hy sinh hiệu suất. Đây là điều mà các lập trình viên truyền thống mơ ước.
Lấy Parity làm ví dụ. Parity sử dụng Rust một cách chính xác vì bạn không cần phải lo lắng khi viết mã phức tạp và hiệu suất cao trong Rust . Viết chương trình bằng Rust và tránh các hành vi không xác định, chạy đua dữ liệu và các vấn đề về an toàn bộ nhớ. Chưa kể, Rust rất nhanh, viết thú vị, dễ đọc và hầu như không có thời gian chạy.
Các vấn đề về an toàn bộ nhớ rất khó khăn vì bạn không thể dễ dàng viết các bài kiểm tra để nắm bắt chúng. Nếu bạn không phát hiện ra lỗi trước giai đoạn beta, lỗi đó có thể tồn tại trong mã trong nhiều năm, giống như một quả bom hẹn giờ đang đếm ngược từng giây. Tất nhiên, cũng có những công cụ như Valgrind để giúp bạn bắt những lỗi này. Nhưng nếu vấn đề về bộ nhớ không được kích hoạt trong quá trình thực thi hoặc mã do các công cụ đó tạo ra không được thực thi trong thời gian chạy thì chúng không thể bắt được.
Vì vậy, bằng cách sử dụng Rust, chúng tôi loại bỏ một lượng lớn các lỗi phức tạp và khó đoán nhất.
Rust có lý thuyết chứng minh chính thức được nhúng trong đó, nhưng nó bị giới hạn ở vấn đề an toàn bộ nhớ và tính đồng thời. Rust sử dụng logic nội bộ để chứng minh rằng chương trình của bạn là chính xác. Đây là lý do tại sao bạn cảm thấy rất tự tin khi viết mã Rust. Mỗi khi bạn biên soạn, sẽ có một bộ lý thuyết toán học cung cấp dịch vụ chứng minh cho bạn.
Trong một thời gian dài, một trong những đặc điểm nổi bật của các ngôn ngữ lập trình hàm như Haskell là nó tương đối dễ thực hiện. bằng chứng, điều này là không thể với các ngôn ngữ lập trình mệnh lệnh truyền thống (vì khả năng biến đổi chung, số học con trỏ không an toàn và các tác dụng phụ không thể kiểm soát).
Nhưng sự xuất hiện của Rust đã thay đổi tình hình này. Là một ngôn ngữ mệnh lệnh, nó đang trên đường được chứng minh. Cho đến nay, một số phần của thư viện chuẩn đã được chứng minh là đúng.
Những dự án blockchain nổi tiếng được phát triển cùng với Rust
parity
Nói về các dự án blockchain nổi tiếng được viết bằng Rust, Parity Chịu gánh nặng . Parity là một ứng dụng khách nút Ethereum chẵn lẻ-ethereum.
Parity Technologies là tên công ty của họ. Parity hiện bao gồm một nhóm ứng dụng khách và nhiều thư viện khác nhau, bao gồm:
parity-ethereum;
chẵn lẻ-zcash;
chẵn lẻ-bitcoin; span>
shasper.
Nói cách khác, Parity Technologies cung cấp "nhóm gia đình" để phát triển chuỗi khối bằng Rust.
polkadot/chất nền
Polkadot là một sáng kiến do Web3 Foundation khởi xướng và được Parity Technologies phát triển, với mục đích nhưng không giới hạn ở việc kết nối các chuỗi khối.
Polkadot cho phép các nhà phát triển và doanh nghiệp sử dụng giao thức của mình để xây dựng các chuỗi khối, được gọi là parachains. Miễn là các parachain này được xây dựng trên Polkadot, chúng sẽ có chung sự đồng thuận Bằng chứng về quyền lực (PoA).
Vì loại đồng thuận này được nhúng trong Polkadot nên các nhà phát triển parachain có thể tập trung vào các đặc điểm cụ thể của chuỗi khối tương ứng của họ. Tất cả các parachain được kết nối liền mạch với một blockchain chung gọi là chuỗi chuyển tiếp, chuỗi này đóng vai trò kết nối tất cả các parachain.
Dự án Polkadot do Gavin Wood lãnh đạo. Trên thực tế, dự án này thuộc cùng một công ty với nhóm parity family ở trên, nhưng nó được làm việc bởi một nhóm khác. .
Nếu theo dõi tiến trình của Polkadot trong thời gian thực, bạn có thể thường thấy từ "Substrate". Đây là một phần quan trọng của dự án Polkadot. Chất nền chẵn lẻ là một dự án riêng biệt với Polkadot. Polkadot dựa trên Substrate và các dự án khác dựa trên Substrate cũng có thể chạy trên mạng Polkadot (tạo thành một hệ sinh thái).
Vậy Chất nền là gì? Bạn có thể coi nó như một khung tương tự như Express hoặc các ứng dụng web khác, nhưng đó là một khung để xây dựng các hệ thống phân tán hoặc phi tập trung, chẳng hạn như các dự án tiền điện tử hoặc hệ thống bus tin nhắn.
Giống như hầu hết các ứng dụng web không cần triển khai lại giao thức HTTP của riêng mình và mỗi nhóm cũng không cần phải triển khai giao thức này để tạo một chuỗi mới. Mã cho mạng và sự đồng thuận cần phải được triển khai từ đầu, điều này gây lãng phí công sức.
Chưa kể rằng để triển khai logic nghiệp vụ, các nhà mật mã học, nhà nghiên cứu bảo mật, kỹ sư mạng, nhà phát triển phải được thuê (để phối hợp cập nhật) Đợi đã. Nếu sử dụng Substrate để xây dựng một dự án mới, bạn chỉ cần triển khai một số lệnh gọi lại hàm trong mã của mình để tạo chuỗi một cách nhanh chóng và dễ dàng.
*Liên kết tham khảo:
https://github.com/paritytech/polkadot
https:/ /github.com/paritytech/substrate
nụ cười
grin là một người nổi tiếng nhỏ trên Internet trong ngành công nghiệp blockchain ngày nay. Một trong số ít dự án hướng tới mục tiêu trở thành tiền tệ thực sự.
Grin cam kết cung cấp một loại tiền điện tử riêng tư, có thể mở rộng với kế hoạch phát hành vào đầu năm 2019. Nó có một số thuộc tính độc đáo: nó sử dụng định dạng chuỗi khối bảo vệ quyền riêng tư được gọi là MimbleWimble; chỉ lưu trữ một lượng nhỏ dữ liệu trong chuỗi khối và việc chạy một nút đầy đủ rất rẻ và dễ dàng.
Mimblewimble được phát triển bởi những người ẩn danh, với các nhóm phân bổ trên khắp thế giới; nó không có bất kỳ cơ chế PoW được khai thác trước nào, khiến nó trở thành bình đẳng và phi tập trung hơn.
p>
Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:
Nhóm Telegram đăng ký: https://t.me/theblockbeats
Nhóm Telegram thảo luận: https://t.me/BlockBeats_App
Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia