Jalan Keamanan Kontrak Pintar Rust: Penjelasan Kontrol Akses dan Visibilitas Fungsi

robot
Pembuatan abstrak sedang berlangsung

Rust smart contract pengembangan jurnal (7) Keamanan kontrak dan kontrol akses

Artikel ini akan memperkenalkan pengendalian akses dalam smart contract Rust dari dua sudut pandang:

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

1. Visibilitas fungsi kontrak

Pengaturan visibilitas fungsi kontrak sangat penting untuk melindungi bagian-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 memiliki beberapa jenis 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

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

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

Perlu diperhatikan bahwa secara default semua konten di Rust adalah private, kecuali item dalam pub Trait dan pub Enum.

2. Kontrol Akses Fungsi Istimewa

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

Dalam kontrak Rust, dapat diimplementasikan Trait kustom yang serupa:

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, akses kontrol terhadap fungsi-fungsi istimewa dapat dicapai, memastikan hanya pemilik kontrak yang dapat memanggil. Berdasarkan prinsip ini, juga dapat diatur daftar putih multi-pengguna yang lebih kompleks atau beberapa daftar putih, untuk mencapai kontrol akses yang lebih rinci.

3. Metode kontrol akses lainnya

Ada beberapa metode kontrol akses lainnya, seperti:

  • Kontrol waktu pemanggilan kontrak
  • Mekanisme panggilan multi-tanda tangan untuk fungsi kontrak
  • Tata Kelola ( DAO ) yang diimplementasikan

Konten ini akan diperkenalkan dalam jurnal pengembangan smart contract di masa mendatang.

PUBLIC-2.81%
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
TheMemefathervip
· 08-18 14:36
Ah, peristiwa Bancor ini terlalu konyol.
Lihat AsliBalas0
PancakeFlippavip
· 08-18 11:42
Sudah bermain Bancor? Rekt...
Lihat AsliBalas0
ReverseFOMOguyvip
· 08-16 02:20
bug bancor benar-benar tidak bisa ditahan
Lihat AsliBalas0
BoredApeResistancevip
· 08-16 02:05
Ah, ini kan bug yang pernah membuat bancor gagal.
Lihat AsliBalas0
rekt_but_not_brokevip
· 08-16 02:01
Kasus serangan ini cukup baru, membuat saya berkeringat dingin.
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)