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
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
CryptoTarotReadervip
· 07-16 04:56
Dapatkah itu ditahan?~
Lihat AsliBalas0
FloorSweepervip
· 07-15 01:10
Tidak mungkin, harus belajar sebanyak ini?
Lihat AsliBalas0
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
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)