1 of 39

OpenGuild và Polkadot Đông Nam Á

OpenGuild là cộng đồng dành cho các nhà phát triển trên Web 3.0 có niềm đam mê với công nghệ của Polkadot

2 of 39

3 of 39

4 of 39

Building Rust

Production-ready system

5 of 39

Lịch sử của Rust và vấn đề C/C++ trong công nghệ hiện đại

6 of 39

7 of 39

8 of 39

9 of 39

10 of 39

Until late 2018

From that point onward

Rust là ngôn ngữ lập trình hệ thống chạy cực kỳ nhanh, ngăn ngừa lỗi segmentation fault, và đảm bảo an toàn cho luồng thực thi.

Giúp đỡ cho lập trình viên xây dựng phần mềm đáng tin cậy và hiệu quả.

11 of 39

12 of 39

Ứng dụng thực tế của

RUST

trong hệ thống lớn

13 of 39

Discord

14 of 39

Thông số tài nguyên của Discord

với ngôn ngữ Go

15 of 39

Tại sao Go không đáp ứng được

nhu cầu về hiệu năng của Discord?

Đội ngũ Discord đã chuyển sang sử dụng Rust cho Read State Service của họ. Rust không có garbage collector, vì vậy họ cho rằng nó sẽ không gặp các vấn đề về độ trễ như Go.

Rust sử dụng một phương pháp quản lý bộ nhớ tương đối độc đáo mà tích hợp ý tưởng về "sở hữu bộ nhớ (ownership)".

Đơn giản là, Rust theo dõi ai có thể đọc và ghi vào bộ nhớ. Nó biết khi chương trình đang sử dụng bộ nhớ và ngay lập tức giải phóng bộ nhớ khi nó không còn cần thiết nữa. Rust thực thi các quy tắc về bộ nhớ tại thời điểm biên dịch, làm cho việc xảy ra lỗi bộ nhớ trong thời gian chạy gần như là không thể. Bạn không cần phải theo dõi bộ nhớ thủ công. Trình biên dịch sẽ lo việc đó.

16 of 39

Firecracker

Bài viết từ Amazon

17 of 39

Firecracker có gì hay ho và tại sao Firecracker lại sử dụng Rust?

Firecracker là một công nghệ ảo hóa mã nguồn mở được thiết kế đặc biệt để tạo và quản lý các dịch vụ đa người dùng và dựa trên container và chức năng một cách an toàn.

Firecracker cho phép bạn triển khai công việc trong các máy ảo nhẹ, gọi là microVMs, cung cấp tính bảo mật nâng cao và cô lập công việc hơn các VM truyền thống, đồng thời cho phép tốc độ và hiệu quả tài nguyên của các container. Firecracker được phát triển tại Amazon Web Services để cải thiện trải nghiệm của khách hàng với các dịch vụ như AWS LambdaAWS Fargate.

Firecracker được sử dụng hoặc tích hợp với (theo thứ tự chữ cái): appfleet, containerd qua firecracker-containerd, Fly.io, Kata Containers, Koyeb, Northflank, OpenNebula, Qovery, UniK, Weave FireKube (qua Weave Ignite), webapp.io và microvm.nix. Firecracker có thể chạy các máy khách Linux và OSv. Đường lối phát triển mới nhất của chúng tôi có thể được tìm thấy tại đây.

18 of 39

Zed Editor

19 of 39

RETH

20 of 39

Rust Ethereum (RETH)

Reth (viết tắt của Rust Ethereum, cách phát âm) là một phiên bản mới của Ethereum full node được tập trung vào việc thân thiện với người dùng, cực kỳ linh hoạt, cũng như nhanh chóng và hiệu quả.

Reth là một Execution Layer (EL) và tương thích với tất cả các phiên bản Ethereum Consensus Layer (CL) hỗ trợ Engine API. Nó được xây dựng và đẩy mạnh ban đầu bởi Paradigm, và được cấp phép theo các giấy phép Apache và MIT.

21 of 39

Ứng dụng thực tế của

RUST

trong BLOCKCHAIN

22 of 39

Các Blockchain sử dụng Rust

Solana

Ethereum

Casper Network

Polkadot

23 of 39

Nếu cơ thể có 70 % là nước

Nước bao phủ 71% bề mặt Trái Đất

Polkadot có 98.9% được viết bằng Rust

24 of 39

25 of 39

Ví dụ cụ thể:

Parity Technologies - Polkadot SDK

26 of 39

Ví dụ cụ thể: RETH

Ethereum Execution Layer viết bằng Rust

  1. Tốc độ cao
  2. Phản hồi RPC ổn định
  3. Tối ưu memory

27 of 39

Vì sao Rust phù hợp cho Blockchain?

28 of 39

Less Error-prone

Backward-compatibility

High Performance

Fearless Concurrency

Tính năng nổi bật

29 of 39

Vì sao Rust có hiệu năng và tốc độ cao?

30 of 39

Direct Compilation to Machine Code with LLVM

31 of 39

Efficient Stack Allocation

without Runtime

32 of 39

Khái niệm an toàn luồng trong Rust để giải quyết các vấn đề của C/C++

33 of 39

34 of 39

Quản lý bộ nhớ

Các chương trình cần phải theo dõi bộ nhớ.

    • Nếu không làm vậy, rò rỉ bộ nhớ có thể xảy ra.

Rust sử dụng mô hình “sở hữu” để quản lý bộ nhớ.

    • "Chủ sở hữu" của bộ nhớ có trách nhiệm làm sạch (tức là giải phóng) bộ nhớ.

Bộ nhớ có thể được "chuyển nhượng" hoặc "mượn".

35 of 39

Ownership

Dữ liệu trong Rust luôn có một chủ sở hữu.

    • Chủ sở hữu có trách nhiệm làm sạch (giải phóng) dữ liệu, điều này bao gồm quản lý bộ nhớ.
    • Theo mặc định, mỗi dữ liệu chỉ có một chủ sở hữu.
    • Các hàm (functions), closures (đoạn mã có thể được gán cho biến và truyền đi), structs (cấu trúc dữ liệu), enums (kiểu liệt kê), và các phạm vi (scopes) là những chủ sở hữu của dữ liệu.

Dữ liệu có thể được chuyển nhượng (di chuyển) từ một chủ sở hữu này sang một chủ sở hữu khác.

    • Điều này có thể xảy ra thông qua các lời gọi hàm, gán lại biến, và closures.

Có khả năng "mượn" dữ liệu từ một chủ sở hữu.

    • Mặc dù dữ liệu được mượn, chủ sở hữu ban đầu vẫn chịu trách nhiệm làm sạch bộ nhớ.

36 of 39

Lifetimes

Đây là cách thông báo cho trình biên dịch rằng dữ liệu mượn sẽ còn hợp lệ tại một thời điểm cụ thể trong chương trình.

Cần thiết khi:

    • Lưu trữ dữ liệu mượn trong các structs hoặc enums
    • Trả về dữ liệu mượn từ các hàm

Mọi dữ liệu đều có lifetime:

  • Mặc dù Rust tự động xác định lifetime cho nhiều trường hợp thông qua một quá trình gọi là "elision" (lược bỏ), nhưng có những trường hợp phức tạp hơn mà lập trình viên cần phải chỉ rõ lifetime.

37 of 39

Lifetimes

    • Lifetime annotations chỉ ra rằng có một số dữ liệu sở hữu tồn tại mà:
      • Có thời gian sống ít nhất bằng với dữ liệu được mượn.
      • Tồn tại lâu hơn hoặc vượt quá phạm vi mượn.
      • Tồn tại lâu hơn phạm vi mượn
    • Cấu trúc sử dụng dữ liệu mượn:
      • Luôn được tạo ra sau khi chủ sở hữu được tạo ra.
      • Luôn được hủy bỏ trước khi chủ sở hữu bị hủy bỏ.

38 of 39

Open-Rust Course

Register Here

39 of 39

Learn more about OpenGuild

Join Here