Rust VM SDK: Bangun Mesin Virtual secara Kustom di Avalanche menggunakan Rust
Mari luncurkan blockchain Anda sendiri di Subnet Avalanche menggunakan Rust sepenuhnya
Kami sangat senang mengumumkan rilis SDK kedua kami untuk membuat Mesin Virtual Avalanche, yaitu Rust SDK. Sebagai alternatif untuk menggunakan Golang, Anda dapat menggunakan Rust untuk meluncurkan blockchain Anda sendiri di Subnet Avalanche. Lihat contoh VMnya kami di TimestampVM untuk memulai membangun (peringatan spoiler: HANYA bahasa pemograman Rust yang perlu Anda gunakan saat menulis Rust VM Anda)!
Di Ava Labs, kami terus berinvestasi dalam memberdayakan para kreator dengan menghadirkan SDK dan alat untuk mempermudah peluncuran blockchain Anda sendiri di Avalanche. Kami menantikan untuk melihat apa yang dibuat oleh developer Rust menggunakan SDK baru ini dan dengan senang hati memberikan dukungan di Discord.
Primer: Membangun Blockchain Anda sendiri di Avalanche
Untuk membuat blockchain Anda sendiri di Avalanche, Anda harus terlebih dahulu menulis Mesin Virtual (VM) Anda sendiri. VM menentukan logika bahwa blockchain Anda akan berjalan dan mampu melakukan apa saja selama itu mengimplementasikan antarmuka Protocol Buffer (protobuf) yang diekspos oleh AvalancheGo, yang akan berkomunikasi menggunakan antarmuka ini melalui gRPC.
Penggunaan gRPC dan protobuf memungkinkan model objek yang konsisten, sehingga meningkatkan pemahaman sistem. Skema didefinisikan terlebih dahulu dan dapat dengan mudah diperluas dengan informasi baru tanpa membatalkan data yang ada. Model komunikasi ini juga memungkinkan developer untuk mengimplementasikan VM dalam bahasa apa pun yang mereka inginkan selama mendukung gRPC dan protobuf. Seperti disebutkan sebelumnya, saat ini kami memiliki SDK untuk Golang dan Rust, tetapi berencana untuk menambahkan yang lain di masa mendatang.
Lebih khusus lagi, AvalancheGo adalah klien ke server plugin, dan mesin virtual adalah server yang mengimplementasikan antarmuka gRPC. Mari kita lihat contoh di layanan `VM`, menginisialisasi 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;
}
Permintaan inisialisasi dibuat saat AvalancheGo menginisialisasi VM. Setelah menerima permintaan ini, VM dapat menyiapkan saluran antara VM dan Mesin Konsensus Snowman, dan mengonfigurasi instans database yang dikelola oleh AvalancheGo, tempat byte asal yang diterima dapat disimpan.
Menggunakan Rust SDK
Mesin virtual di Golang menggunakan `hashicorp/go-plugin` sebagai middleware untuk mengabstraksi aspek yang lebih kasar dari orkestrasi plugin (logging, pemeriksaan kompatibilitas, dll.). Rust SDK baru tidak hanya mengimplementasikan logika orkestrasi boilerplate ini, tetapi juga menyediakan sekumpulan library yang menyederhanakan VM dan pengembangan alat di Rust. Misalnya, `avalanche-ops` menggunakan Rust SDK untuk mengotomatiskan penginstalan subnet di cloud, dan melakukan uji beban menggunakan AWS KMS untuk menandatangani transaksi. Rust SDK diterbitkan di crates.io.
Implementasi VM minimal, seperti `timestampvm-rs`, hanya memerlukan beberapa ratus baris kode dan tidak memerlukan penambahan dalam bahasa pemrograman lain untuk membuat VM berfitur lengkap (meskipun node Avalanche seluruhnya ditulis dalam Golang) . Berikut adalah contoh cara memulai menggunakan `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
}
Lihatlah “Cara Membuat Rust VM yang Sederhana” untuk panduan lengkap tentang cara membuat Mesin Virtual khusus menggunakan SDK baru.
Kesimpulan
Kami sangat senang dengan potensi yang dimiliki Rust untuk membangun blockchain yang efisien dan dapat diskalakan. Kami berharap dapat terus meningkatkan SDK dan bekerja sama dengan komunitas dalam semua jenis desain blockchain baru. Anda dapat mengikuti dengan berlangganan Rust SDK repository. Jika Anda memiliki saran tentang cara meningkatkan SDK, silahkan buka PR!
Terjemahan dalam Bahasa Inggris
Penulis: Gyuho Lee
Tentang Avalanche
Avalanche adalah platform kontrak pintar tercepat di industri blockchain saat ini, yang diukur dengan waktu hingga finalisasi per transaksi, dan memiliki validator yang paling banyak dalam mengamankan aktivitasnya dari protokol Proof of Stake apa pun yang ada. Avalanche sangat cepat, dengan biaya yang murah, dan ramah lingkungan. Setiap aplikasi kontrak pintar dapat mengungguli pesaingnya dengan menggunakan Avalanche. Tidak percaya? Coba Avalanche sekarang.
Website | Whitepapers | Twitter | Discord | GitHub | Documentation | Explorer | Avalanche-X | Telegram | Facebook | LinkedIn | Reddit | YouTube