Keamanan smart contract Rust: Praktik visibilitas fungsi dan kontrol akses

robot
Pembuatan abstrak sedang berlangsung

Rust smart contract pengembangan jurnal (7) Keamanan kontrak dalam presisi perhitungan

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

  1. Akses/Panggilan Visibilitas Metode Kontrak
  2. Kontrol akses fungsi khusus/pembagian tanggung jawab

1. Visibilitas Fungsi Kontrak

Pengaturan visibilitas fungsi kontrak yang wajar sangat penting untuk melindungi keamanan kontrak. Sebagai contoh, pada insiden keamanan yang terjadi di bursa Bancor Network pada 18 Juni 2020, karena kesalahan dalam mengatur fungsi transfer penting menjadi public, menyebabkan risiko serius bagi aset pengguna.

Dalam smart contract Rust, visibilitas fungsi terutama terdiri dari beberapa jenis berikut:

  • pub fn: fungsi publik, dapat dipanggil oleh siapa saja dari luar kontrak
  • fn: default private, hanya bisa dipanggil di dalam kontrak
  • pub(crate) fn: membatasi pemanggilan di dalam crate

Selain itu, dapat mengimplementasikan metode internal dengan mendefinisikan blok impl yang tidak memiliki #[near_bindgen].

Untuk fungsi callback, harus diatur sebagai publik tetapi memerlukan pengendalian akses tambahan:

karat #[private] pub fn resolve_transfer(&mut self) { env::log_str("Ini adalah callback"); }

2. Kontrol Akses Fungsi Privilege

Selain visibilitas fungsi, perlu juga untuk membangun mekanisme daftar putih kontrol akses yang lengkap. Anda dapat menyesuaikan Trait untuk mencapai efek yang mirip dengan modifier onlyOwner dalam Solidity:

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 tertentu yang istimewa. Berdasarkan ini, dapat disetel daftar putih multi-pengguna yang lebih kompleks atau beberapa daftar putih, untuk mewujudkan kontrol akses grup yang lebih rinci.

Dalam kontrak pintar Rust, ada metode kontrol akses lain, seperti kontrol waktu pemanggilan, mekanisme multi-tanda tangan, dll, yang akan diperkenalkan dalam artikel berikutnya.

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
  • 2
  • Bagikan
Komentar
0/400
DAOdreamervip
· 7jam yang lalu
Proses verifikasi Allowlist harus ketat.
Lihat AsliBalas0
SchroedingerMinervip
· 8jam yang lalu
Allowlist adalah pedang bermata dua
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)