Praktik Keamanan Smart Contract Rust: Visibilitas Fungsi dan Kontrol Akses Privilese

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

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

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

1. Visibilitas Fungsi Kontrak

Pengaturan visibilitas fungsi kontrak yang wajar sangat penting untuk melindungi bagian kunci dari akses atau manipulasi yang tidak disengaja. Sebagai contoh, pada insiden keamanan di bursa Bancor Network pada Juni 2020, karena secara keliru mengatur fungsi transfer kunci sebagai public, aset pengguna menghadapi risiko.

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

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

Cara lain untuk mengatur metode internal adalah dengan mendefinisikan blok kode impl Contract yang terpisah, tanpa menggunakan modifikasi #[near_bindgen].

Fungsi callback harus diatur sebagai publik, tetapi harus memastikan hanya dapat dipanggil oleh kontrak itu sendiri. Anda dapat menggunakan makro #[private] untuk mencapai fungsi ini.

Perlu dicatat bahwa Rust secara default menganggap semua konten sebagai private, tetapi item dalam trait dan enum adalah pengecualian.

2. Kontrol Akses Fungsi Privilege

Selain visibilitas fungsi, perlu juga membangun mekanisme daftar putih kontrol akses yang lengkap dari sudut pandang semantik. Mirip dengan onlyOwner dalam Solidity, beberapa fungsi istimewa hanya dapat dipanggil oleh pemilik kontrak.

Di kontrak pintar Rust, Anda dapat mengimplementasikan Trait kustom untuk mengontrol akses fungsi berhak.

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 hal ini, mekanisme daftar putih yang lebih kompleks dapat diimplementasikan untuk mencapai kontrol akses grup yang lebih rinci.

3. Metode kontrol akses lainnya

Ada beberapa metode kontrol akses lainnya, seperti:

  • Pengendalian waktu pemanggilan kontrak
  • Mekanisme panggilan multi-tanda tangan untuk fungsi kontrak
  • Pemerintahan (DAO) yang diimplementasikan

Konten ini akan dijelaskan secara rinci dalam artikel selanjutnya.

PUBLIC-4.16%
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
  • Komentar
  • Posting ulang
  • Bagikan
Komentar
0/400
Tidak ada komentar
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)