Kontrol Akses pada Smart Contract Rust: Visibilitas Fungsi dan Manajemen Akses Istimewa

robot
Pembuatan abstrak sedang berlangsung

Rust smart contract养成日记(7)合约安全之权限控制

Artikel ini akan memperkenalkan kontrol akses dalam smart contract Rust dari dua aspek:

  1. Visibilitas akses/panggilan metode kontrak
  2. Kontrol akses fungsi hak istimewa/pemisahan wewenang dan tanggung jawab

1. Visibilitas Fungsi Kontrak

Pengaturan visibilitas fungsi kontrak yang masuk akal sangat penting untuk melindungi bagian-bagian kunci. Sebagai contoh, insiden keamanan di bursa Bancor Network pada Juni 2020, karena salah mengatur fungsi transfer kunci sebagai public, menyebabkan risiko terhadap aset pengguna.

Dalam kontrak pintar Rust, visibilitas fungsi juga penting. Makro #[near_bindgen] dalam NEAR SDK mendefinisikan atribut visibilitas berikut:

  • pub fn: fungsi publik, dapat dipanggil dari luar kontrak
  • fn: hanya dapat dipanggil di dalam kontrak
  • pub(crate) fn: batasi panggilan di dalam crate

Anda juga dapat mendefinisikan metode internal melalui blok impl Contract yang tidak dihiasi dengan #[near_bindgen].

Untuk fungsi callback, harus diatur sebagai publik tetapi hanya diizinkan untuk dipanggil oleh kontrak itu sendiri. Fungsi ini dapat diimplementasikan menggunakan macro #[private].

Perlu dicatat bahwa visibilitas default di Rust adalah private, tetapi item dalam trait dan enum adalah pengecualian.

2. Kontrol Akses Fungsi Privilege

Selain visibilitas fungsi, perlu juga untuk membangun mekanisme daftar putih kontrol akses yang lengkap. Mirip dengan kontrak Ownable di Solidity, beberapa fungsi istimewa hanya dapat dipanggil oleh pemilik.

Dalam kontrak Rust, dapat diimplementasikan trait Ownable sebagai berikut:

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); }

Berdasarkan ini, whitelist untuk owner dapat diimplementasikan. Juga dapat mengatur whitelist multi-user atau kontrol akses grup yang lebih kompleks melalui pengaturan trait yang disesuaikan.

Lihat Asli
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Hadiah
  • 4
  • Bagikan
Komentar
0/400
WhaleWatchervip
· 07-13 07:29
Pertama kita bicarakan tentang Ownable
Lihat AsliBalas0
GateUser-e51e87c7vip
· 07-13 07:23
Cukup punya tangan, sesederhana itu.
Lihat AsliBalas0
DecentralizeMevip
· 07-13 07:22
Woo woo logika dasar
Lihat AsliBalas0
ChainSpyvip
· 07-13 07:21
Kontrol akses begitu rumit, lebih baik semuanya terbuka.
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)