Artikel ini akan membahas masalah kontrol akses dalam kontrak pintar Rust dari dua aspek:
Visibilitas metode kontrak
Kontrol akses fungsi privilese
Visibilitas Fungsi Kontrak
Dalam kontrak pintar Rust, pengendalian visibilitas fungsi sangat penting. Sebagai contoh, peristiwa keamanan yang terjadi di bursa Bancor Network pada tahun 2020, di mana fungsi transfer kunci secara keliru diatur sebagai public, menyebabkan risiko bagi aset pengguna.
Dalam kontrak pintar Rust di NEAR, ada beberapa jenis visibilitas fungsi:
pub fn: fungsi publik, dapat dipanggil dari luar kontrak
fn: Hanya dapat dipanggil di dalam kontrak
pub(crate) fn: membatasi pemanggilan di dalam crate
Selain itu, mendefinisikan fungsi dalam blok impl yang tidak diberi tanda #[near_bindgen] juga dapat menjadikannya sebagai fungsi internal.
Untuk fungsi callback, perlu diatur sebagai public tetapi sekaligus harus dibatasi hanya dapat dipanggil oleh kontrak itu sendiri. Anda dapat menggunakan makro #[private] untuk mencapai ini.
Perlu dicatat bahwa di Rust, secara default semua konten bersifat privat, kecuali item dalam pub Trait dan pub Enum.
Kontrol Akses Fungsi Privilege
Selain visibilitas fungsi, perlu juga membangun mekanisme kontrol akses yang lengkap dari perspektif semantik. Mirip dengan modifier onlyOwner di Solidity, kita dapat mendefinisikan trait serupa di Rust:
Dengan menggunakan trait seperti ini, akses kontrol terhadap fungsi-fungsi khusus dapat diterapkan, memastikan bahwa hanya pemilik kontrak yang dapat memanggil fungsi-fungsi tersebut.
Berdasarkan prinsip ini, kita dapat menggunakan trait yang lebih kompleks yang disesuaikan untuk menerapkan kontrol akses yang rinci untuk daftar putih multi-pengguna atau beberapa grup daftar putih.
Selain itu, dapat juga diimplementasikan kontrol waktu pemanggilan, mekanisme tanda tangan ganda, dan metode kontrol akses lainnya untuk memenuhi kebutuhan keamanan dalam berbagai skenario.
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
19 Suka
Hadiah
19
6
Bagikan
Komentar
0/400
WalletManager
· 08-01 21:48
Kontrol akses harus lebih ketat.
Lihat AsliBalas0
HashBrownies
· 08-01 05:29
Kontrol akses benar-benar luar biasa
Lihat AsliBalas0
GasFeeCrier
· 07-30 19:25
Konfigurasi izin akses harus dilakukan dengan hati-hati.
Kontrol Akses dan Visibilitas Fungsi pada Kontrak Pintar Rust
Kontrol Akses dalam Smart Contract Rust
Artikel ini akan membahas masalah kontrol akses dalam kontrak pintar Rust dari dua aspek:
Visibilitas Fungsi Kontrak
Dalam kontrak pintar Rust, pengendalian visibilitas fungsi sangat penting. Sebagai contoh, peristiwa keamanan yang terjadi di bursa Bancor Network pada tahun 2020, di mana fungsi transfer kunci secara keliru diatur sebagai public, menyebabkan risiko bagi aset pengguna.
Dalam kontrak pintar Rust di NEAR, ada beberapa jenis visibilitas fungsi:
Selain itu, mendefinisikan fungsi dalam blok impl yang tidak diberi tanda #[near_bindgen] juga dapat menjadikannya sebagai fungsi internal.
Untuk fungsi callback, perlu diatur sebagai public tetapi sekaligus harus dibatasi hanya dapat dipanggil oleh kontrak itu sendiri. Anda dapat menggunakan makro #[private] untuk mencapai ini.
Perlu dicatat bahwa di Rust, secara default semua konten bersifat privat, kecuali item dalam pub Trait dan pub Enum.
Kontrol Akses Fungsi Privilege
Selain visibilitas fungsi, perlu juga membangun mekanisme kontrol akses yang lengkap dari perspektif semantik. Mirip dengan modifier onlyOwner di Solidity, kita dapat mendefinisikan trait serupa di Rust:
karat pub trait Ownable { fn assert_owner(&self) { assert_eq!(env::predecessor_account_id(), self.get_owner()); } AccountId; fn set_owner(&mut self, owner: AccountId); }
Dengan menggunakan trait seperti ini, akses kontrol terhadap fungsi-fungsi khusus dapat diterapkan, memastikan bahwa hanya pemilik kontrak yang dapat memanggil fungsi-fungsi tersebut.
Berdasarkan prinsip ini, kita dapat menggunakan trait yang lebih kompleks yang disesuaikan untuk menerapkan kontrol akses yang rinci untuk daftar putih multi-pengguna atau beberapa grup daftar putih.
Selain itu, dapat juga diimplementasikan kontrol waktu pemanggilan, mekanisme tanda tangan ganda, dan metode kontrol akses lainnya untuk memenuhi kebutuhan keamanan dalam berbagai skenario.