Rust VM SDK: Xây dựng các máy ảo tùy chỉnh trên Avalanche bằng cách sử dụng Rust

Avalanche - Việt Nam
4 min readNov 23, 2022

--

Chúng tôi vui mừng thông báo về việc phát hành SDK thứ hai để xây dựng Máy ảo Avalanche, Rust SDK. Là một giải pháp thay thế cho việc sử dụng Golang, thay vào đó, bạn có thể sử dụng Rust để khởi chạy blockchain của riêng mình trên SubnetAvalanche. Hãy xem ví dụ về TimestampVM của chúng tôi để bắt đầu (cảnh báo spoiler: ngôn ngữ DUY NHẤT bạn cần sử dụng khi viết Rust VM của mình là Rust)!

Tại Ava Labs, chúng tôi tiếp tục đầu tư vào việc trao quyền cho người sáng tạo bằng cách cung cấp SDK và công cụ để giúp khởi chạy blockchain của riêng bạn trên Avalanche dễ dàng nhất có thể. Chúng tôi mong muốn được xem những gì nhà phát triển Rust xây dựng bằng SDK mới này và rất vui được cung cấp hỗ trợ trong Discord .

Sơ lược: Xây dựng blockchain của riêng bạn trên Avalanche

Để tạo blockchain của riêng bạn trên Avalanche, trước tiên bạn cần viết Máy ảo (VM) của riêng mình. Máy ảo xác định logic mà blockchain của bạn sẽ chạy và có khả năng thực hiện bất kỳ thứ gì miễn là nó triển khai giao diện Bộ đệm giao thức (protobuf) do AvalancheGo đưa ra, sẽ giao tiếp bằng giao diện này qua gRPC.

Việc sử dụng gRPC và protobuf cho phép các mô hình đối tượng nhất quán, do đó cải thiện tính dễ hiểu của hệ thống. Lược đồ được xác định trước và có thể dễ dàng mở rộng với thông tin mới mà không làm mất hiệu lực dữ liệu hiện có. Mô hình giao tiếp này cũng cho phép các nhà phát triển triển khai VM bằng bất kỳ ngôn ngữ nào họ muốn miễn là nó hỗ trợ gRPC và protobuf. Như đã đề cập trước đây, chúng tôi hiện có SDK cho Golang và Rust nhưng có kế hoạch thêm các SDK khác trong tương lai.

Cụ thể hơn, AvalancheGo là ứng dụng khách của máy chủ plugin và máy ảo là máy chủ triển khai giao diện gRPC. Hãy xem một ví dụ trong dịch vụ `VM` , khởi tạo VM:

message InitializeRequest {
uint32 network_id = 1;
bytes subnet_id = 2;
bytes chain_id = 3;
bytes node_id = 4;
bytes x_chain_id = 5;
bytes avax_asset_id = 6;
bytes genesis_bytes = 7;
bytes upgrade_bytes = 8;
bytes config_bytes = 9;
repeated VersionedDBServer db_servers = 10;
// server_addr is the address of the gRPC server which serves
// the messenger, keystore, shared memory, blockchain alias,
// subnet alias, and appSender services
string server_addr = 11;
}

Yêu cầu khởi tạo được thực hiện khi AvalancheGo khởi tạo VM. Khi nhận được yêu cầu này, VM có thể thiết lập kênh giữa VM và Snowman Consensus Engine, đồng thời định cấu hình phiên bản cơ sở dữ liệu do AvalancheGo quản lý, nơi có thể lưu trữ các byte gốc đã nhận.

Sử dụng SDK Rust

Các máy ảo trong Golang sử dụng `hashicorp/go-plugin` làm phần mềm trung gian để trừu tượng hóa các khía cạnh đơn giản hơn của việc điều phối plugin (ghi nhật ký, kiểm tra tính tương thích, v.v.). Rust SDK mới không chỉ triển khai logic điều phối soạn sẵn này mà còn cung cấp một bộ thư viện giúp đơn giản hóa việc phát triển máy ảo và công cụ trong Rust. Ví dụ: `avalanche-ops` sử dụng Rust SDK để tự động cài đặt Subnet trên đám mây và thực hiện kiểm tra tải bằng AWS KMS để ký giao dịch. SDK Rust được xuất bản trên crates.io.

Các triển khai VM tối thiểu, chẳng hạn như `timestampvm-rs`, chỉ yêu cầu vài trăm dòng mã và không yêu cầu ghép trong bất kỳ ngôn ngữ lập trình nào khác để xây dựng một VM có đầy đủ tính năng (mặc dù node Avalanche được viết hoàn toàn bằng Golang). Đây là một ví dụ về cách bắt đầu sử dụng `timestampvm-rs` :

[dependencies]
avalanche-types = { version = "0.0.x", features = ["subnet", "codec_base64"] }
use avalanche_types::subnet;
use timestampvm::vm;
use tokio::sync::broadcast::{self, Receiver, Sender};
#[tokio::main]
async fn main() -> std::io::Result<()> {
let (stop_ch_tx, stop_ch_rx): (Sender<()>, Receiver<()>) = broadcast::channel(1);
let vm_server = subnet::rpc::vm::server::Server::new(vm::Vm::new(), stop_ch_tx);
subnet::rpc::plugin::serve(vm_server, stop_ch_rx).await
}

Hãy xem “Cách xây dựng một máy ảo Rust đơn giản” để biết hướng dẫn đầy đủ về cách xây dựng Máy ảo tùy chỉnh bằng SDK mới.

Kết luận

Chúng tôi rất vui mừng về tiềm năng mà Rust có được để xây dựng các blockchain hiệu quả và có thể mở rộng. Chúng tôi mong muốn tiếp tục cải thiện SDK và làm việc với cộng đồng trên tất cả các loại thiết kế blockchain mới. Bạn có thể theo dõi bằng cách đăng ký kho lưu trữ Rust SDK. Nếu bạn có đề xuất về cách cải thiện SDK, vui lòng mở PR!

Giới thiệu về Avalanche

Avalanche là nền tảng hợp đồng thông minh nhanh nhất trong ngành công nghiệp blockchain, được đo bằng thời gian hoàn thành và có nhiều trình xác thực nhất đảm bảo hoạt động của nó đối với bất kỳ giao thức bằng chứng cổ phần nào. Avalanche cực kỳ nhanh, chi phí thấp và màu xanh lá cây. Bất kỳ ứng dụng hỗ trợ hợp đồng thông minh nào cũng có thể vượt trội so với đối thủ cạnh tranh bằng cách triển khai trên Avalanche. Không tin ư? Hãy thử Avalanche ngay hôm nay.

Website | Whitepapers | Twitter | Discord | GitHub | Documentation | Telegram | Facebook | LinkedIn | Reddit | YouTube

--

--

Avalanche - Việt Nam
Avalanche - Việt Nam

Written by Avalanche - Việt Nam

Chào mừng bạn đến với Avalanche - Việt Nam: https://t.me/avalanche_vn

No responses yet