Rust smart contract pengembangan jurnal (7) Keamanan kontrak: kontrol akses
Artikel ini akan memperkenalkan kontrol akses dalam smart contract Rust dari dua sudut pandang:
Visibilitas metode kontrak
Kontrol akses fungsi istimewa
1. Visibilitas Fungsi Kontrak
Dalam kontrak pintar Rust, kontrol visibilitas fungsi sangat penting. SDK NEAR menggunakan makro #[near_bindgen] untuk mendefinisikan beberapa atribut visibilitas berikut:
pub fn: fungsi publik, dapat dipanggil dari luar kontrak
fn: fungsi internal, hanya dapat dipanggil di dalam kontrak
pub(crate) fn: batasi panggilan di dalam crate
Selain itu, metode internal dapat didefinisikan melalui blok impl Contract yang terpisah:
Dengan cara ini, mekanisme whitelist dasar dapat direalisasikan, dan dapat lebih lanjut diperluas untuk mewujudkan kontrol akses yang lebih kompleks seperti multi-pengguna dan multi-whitelist.
Keamanan kontrak perlu dipertimbangkan dari berbagai aspek, termasuk kontrol waktu pemanggilan, mekanisme multi-tanda tangan, dll, yang akan dijelaskan secara rinci dalam artikel selanjutnya.
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.
16 Suka
Hadiah
16
9
Bagikan
Komentar
0/400
GasWaster
· 07-24 14:55
Sekali lagi mempelajari hal-hal yang mendalam ya
Lihat AsliBalas0
rugdoc.eth
· 07-24 12:22
Ini terlalu klise, kan?
Lihat AsliBalas0
GateUser-9ad11037
· 07-24 03:37
Apakah perlu menambah mekanisme daftar hitam~
Lihat AsliBalas0
DefiPlaybook
· 07-23 10:17
Data yang komprehensif menunjukkan bahwa kontrol kunjungan masih merupakan top 3 celah kontrak.
Lihat AsliBalas0
SeeYouInFourYears
· 07-21 20:27
rust seperti ini ya
Lihat AsliBalas0
OnchainDetective
· 07-21 20:27
Pengendalian akses tidak ada artinya, seharusnya sudah memeriksa pintu belakang.
Keamanan smart contract Rust: Penjelasan detail tentang kontrol akses dan manajemen izin
Rust smart contract pengembangan jurnal (7) Keamanan kontrak: kontrol akses
Artikel ini akan memperkenalkan kontrol akses dalam smart contract Rust dari dua sudut pandang:
1. Visibilitas Fungsi Kontrak
Dalam kontrak pintar Rust, kontrol visibilitas fungsi sangat penting. SDK NEAR menggunakan makro #[near_bindgen] untuk mendefinisikan beberapa atribut visibilitas berikut:
Selain itu, metode internal dapat didefinisikan melalui blok impl Contract yang terpisah:
karat #[near_bindgen] impl Kontrak { pub fn increment(&mut self) { self.internal_increment(); } }
impl Kontrak { pub fn internal_increment(&mut self) { self.counter += 1; } }
Untuk fungsi callback, perlu diatur sebagai pub dan menggunakan makro #[private] untuk memastikan hanya dapat dipanggil oleh kontrak itu sendiri:
karat #[near_bindgen] impl Kontrak { #[private] pub fn resolve_transfer(&mut self) { // Logika callback } }
2. Kontrol Akses Fungsi Privilege
Selain visibilitas fungsi, perlu juga membangun mekanisme daftar putih kontrol akses. Dapat mengimplementasikan Trait yang dapat disesuaikan:
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); }
Dalam fungsi privilese, memanggil assert_owner() dapat membatasi hanya pemilik yang dapat mengeksekusi:
karat impl Kontrak { pub fn privileged_function(&mut self) { self.assert_owner(); // Operasi istimewa } }
Dengan cara ini, mekanisme whitelist dasar dapat direalisasikan, dan dapat lebih lanjut diperluas untuk mewujudkan kontrol akses yang lebih kompleks seperti multi-pengguna dan multi-whitelist.
Keamanan kontrak perlu dipertimbangkan dari berbagai aspek, termasuk kontrol waktu pemanggilan, mekanisme multi-tanda tangan, dll, yang akan dijelaskan secara rinci dalam artikel selanjutnya.