Keamanan smart contract Rust: Penjelasan detail tentang kontrol akses dan manajemen izin

robot
Pembuatan abstrak sedang berlangsung

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 metode kontrak
  2. 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:

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.

GET10.8%
Lihat Asli
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.
  • Hadiah
  • 9
  • Bagikan
Komentar
0/400
GasWastervip
· 07-24 14:55
Sekali lagi mempelajari hal-hal yang mendalam ya
Lihat AsliBalas0
rugdoc.ethvip
· 07-24 12:22
Ini terlalu klise, kan?
Lihat AsliBalas0
GateUser-9ad11037vip
· 07-24 03:37
Apakah perlu menambah mekanisme daftar hitam~
Lihat AsliBalas0
DefiPlaybookvip
· 07-23 10:17
Data yang komprehensif menunjukkan bahwa kontrol kunjungan masih merupakan top 3 celah kontrak.
Lihat AsliBalas0
SeeYouInFourYearsvip
· 07-21 20:27
rust seperti ini ya
Lihat AsliBalas0
OnchainDetectivevip
· 07-21 20:27
Pengendalian akses tidak ada artinya, seharusnya sudah memeriksa pintu belakang.
Lihat AsliBalas0
rekt_but_resilientvip
· 07-21 20:21
Mekanisme keamanan kontrak ini tidak jelas.
Lihat AsliBalas0
DarkPoolWatchervip
· 07-21 20:13
Tulisannya cukup bagus, tapi saya tertidur.
Lihat AsliBalas0
MEVSandwichVictimvip
· 07-21 20:11
Tandai poin pentingnya, ya.
Lihat AsliBalas0
Lihat Lebih Banyak
  • Sematkan
Perdagangkan Kripto Di Mana Saja Kapan Saja
qrCode
Pindai untuk mengunduh aplikasi Gate
Komunitas
Bahasa Indonesia
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)