Keamanan smart contract Rust: Penjelasan mendetail tentang kontrol akses dan visibilitas fungsi

robot
Pembuatan abstrak sedang berlangsung

Rust Smart Contract Diary (7) Kontrol Akses untuk Keamanan Kontrak

Artikel ini akan memperkenalkan kontrol izin dalam kontrak pintar Rust dari dua aspek:

  1. Visibilitas metode kontrak
  2. Kontrol akses fungsi istimewa

1. Visibilitas Fungsi Kontrak

Mengatur visibilitas fungsi kontrak dengan benar sangat penting untuk melindungi keamanan kontrak. Sebagai contoh, peristiwa di bursa Bancor Network pada Juni 2020, di mana fungsi transfer kunci secara keliru diatur sebagai public, yang menyebabkan risiko bagi aset pengguna.

Dalam kontrak pintar Rust, ada beberapa jenis utama visibilitas fungsi:

  • Pub FN: fungsi publik, yang dapat dipanggil dari luar kontrak
  • fn: fungsi internal default, hanya dapat dipanggil di dalam kontrak
  • pub(crate) fn: batasi pemanggilan di dalam crate

Selain itu, metode yang didefinisikan dalam blok impl yang tidak dihiasi dengan #[near_bindgen] bersifat internal.

Untuk fungsi callback, Anda perlu mengaturnya ke publik tetapi pada saat yang sama melakukan pemeriksaan pemanggil, yang dapat diimplementasikan menggunakan makro #[private].

Perlu dicatat bahwa Rust secara default menganggap semua konten sebagai private, kecuali item dalam pub trait dan pub enum.

2. Kontrol Akses Fungsi Privilege

Selain mengatur visibilitas fungsi, perlu juga membangun mekanisme daftar putih kontrol akses. Mirip dengan modifier onlyOwner di Solidity, dapat didefinisikan fungsi-fungsi istimewa yang hanya dapat dipanggil oleh pemilik.

Dalam Rust, dapat diimplementasikan melalui trait khusus:

karat pub trait Ownable { fn assert_owner(&self) { assert_eq!(env::p redecessor_account_id(), self.get_ owner()); } AccountId; fn set_owner(&mut self, owner: AccountId); }

Hal ini memungkinkan kontrol izin pemilik dasar. Ini dapat diperluas lebih lanjut ke daftar putih multi-pengguna atau daftar putih multi-grup untuk kontrol akses yang lebih terperinci.

!

!

!

!

!

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
ser_we_are_ngmivip
· 6jam yang lalu
Sangat sulit dimengerti, pergi pergi!
Lihat AsliBalas0
NFT_Therapyvip
· 07-17 01:06
Kontrol akses itu penting! Jika tidak, kontrak bisa saja diretas dan berakhir buruk.
Lihat AsliBalas0
PonziDetectorvip
· 07-17 01:05
Rust yyds paling hardcore
Lihat AsliBalas0
MetaMuskRatvip
· 07-17 01:02
Lihat lagi satu yang mengelola izin, pergi pergi
Lihat AsliBalas0
ser_we_are_earlyvip
· 07-17 00:46
Sederhana dan langsung, yaitu menambahkan kontrol hak akses.
Lihat AsliBalas0
MemeEchoervip
· 07-17 00:40
Melihatnya membuat mengantuk, apakah ada yang benar-benar belajar?
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)