Kontrol akses dalam smart contract Rust: visibilitas fungsi kontrak dan akses istimewa

robot
Pembuatan abstrak sedang berlangsung

Kontrol Akses dalam Smart Contract Rust

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

  1. Visibilitas metode kontrak
  2. Kontrol akses fungsi hak istimewa

1. Visibilitas Fungsi Kontrak

Dalam kontrak cerdas Rust, kontrol visibilitas fungsi sangat penting. Sebagai contoh, peristiwa keamanan di bursa Bancor Network pada Juni 2020, karena secara keliru menetapkan fungsi transfer kunci sebagai public, yang mengakibatkan risiko bagi aset pengguna.

Dalam kontrak pintar Rust, ada beberapa jenis visibilitas fungsi:

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

Anda juga dapat mengimplementasikan fungsi internal dengan mendefinisikan metode di dalam blok impl yang tidak diberi tanda #[near_bindgen].

Untuk fungsi callback, harus diatur sebagai public tetapi juga harus dipastikan hanya dapat dipanggil oleh kontrak itu sendiri. Anda dapat menggunakan makro #[private] untuk mencapai hal ini.

Perlu dicatat bahwa di Rust, semua konten secara default bersifat private, ini berbeda dengan public default pada beberapa versi lama Solidity.

2. Kontrol Akses Fungsi Privilege

Selain visibilitas fungsi, juga perlu membangun mekanisme daftar putih kontrol akses yang lengkap dari perspektif semantik.

Mirip dengan modifier onlyOwner dalam Solidity, kita dapat mengimplementasikan Trait kustom 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 cara ini, hanya pemilik yang dapat memanggil fungsi-fungsi istimewa tertentu.

Berdasarkan prinsip ini, whitelist yang lebih kompleks dapat diatur untuk mencapai kontrol akses grup yang lebih rinci.

Metode kontrol akses lainnya seperti kontrol waktu pemanggilan, mekanisme multi-tanda tangan, dll, akan diperkenalkan dalam artikel berikutnya.

GET7.03%
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
  • 5
  • Posting ulang
  • Bagikan
Komentar
0/400
Rugman_Walkingvip
· 12jam yang lalu
Ini adalah lagi-lagi jebakan lama Bancor, hampir kehilangan semua uang.
Lihat AsliBalas0
TokenToastervip
· 08-07 12:36
bancor benar-benar contoh yang bodoh
Lihat AsliBalas0
MevTearsvip
· 08-06 06:28
bancor itu saya pernah lihat, benar-benar jelek
Lihat AsliBalas0
OnlyOnMainnetvip
· 08-06 06:26
Tsk tsk, kejadian bancor masih membuatku ketakutan hingga sekarang.
Lihat AsliBalas0
0xLuckboxvip
· 08-06 06:18
Mengapa selalu ada orang yang salah mengatur izin?
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)