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:

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

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.

GET-0.11%
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
  • 6
  • Bagikan
Komentar
0/400
WalletManagervip
· 08-01 21:48
Kontrol akses harus lebih ketat.
Lihat AsliBalas0
HashBrowniesvip
· 08-01 05:29
Kontrol akses benar-benar luar biasa
Lihat AsliBalas0
GasFeeCriervip
· 07-30 19:25
Konfigurasi izin akses harus dilakukan dengan hati-hati.
Lihat AsliBalas0
TeaTimeTradervip
· 07-30 19:21
Kontrol akses memang sulit diatur
Lihat AsliBalas0
CoinBasedThinkingvip
· 07-30 19:07
Terlalu banyak celah keamanan ya
Lihat AsliBalas0
NotFinancialAdvicevip
· 07-30 18:57
Konten yang benar-benar berguna
Lihat AsliBalas0
  • 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)