Rust smart contract keamanan lanjutan: praktik kontrol akses dan manajemen akses

robot
Pembuatan abstrak sedang berlangsung

Rust smart contract diary (7) Keamanan kontrak dan kontrol akses

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

  1. Visibilitas metode kontrak
  2. Kontrol akses fungsi istimewa

1. Visibilitas Fungsi Kontrak

Pengendalian visibilitas fungsi kontrak sangat penting untuk melindungi fungsi-fungsi kunci. Sebagai contoh, insiden keamanan di bursa Bancor Network pada Juni 2020, karena salah mengatur fungsi transfer kunci menjadi public, yang mengakibatkan risiko terhadap aset pengguna.

Dalam smart contract Rust, ada beberapa jenis visibilitas fungsi:

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

Selain itu, mendefinisikan fungsi di dalam blok impl yang tidak dihiasi dengan #[near_bindgen] juga dapat menjadikannya sebagai fungsi internal.

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

Perlu dicatat bahwa visibilitas default di Rust adalah private, berbeda dengan public default di beberapa versi Solidity. Pengecualian adalah item dalam pub trait dan pub enum yang secara default adalah public.

2. Kontrol Akses Fungsi Hak Istimewa

Selain visibilitas fungsi, perlu untuk membangun mekanisme daftar putih untuk mengontrol akses ke fungsi istimewa. Mirip dengan modifier onlyOwner di Solidity, kita bisa mengimplementasikan trait Ownable:

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); }

Menggunakan trait ini dapat membatasi hanya pemilik yang dapat memanggil fungsi privilese tertentu. Berdasarkan prinsip ini, whitelist yang lebih kompleks dapat diatur untuk mencapai kontrol akses yang lebih rinci.

3. Metode Kontrol Akses Lainnya

Anda juga dapat mempertimbangkan kontrol waktu pemanggilan kontrak, mekanisme pemanggilan multi-tanda tangan, tata kelola DAO, dan lebih banyak metode kontrol akses, yang akan dijelaskan secara rinci dalam artikel berikutnya.

Lihat Asli
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Hadiah
  • 7
  • Bagikan
Komentar
0/400
LootboxPhobiavip
· 20jam yang lalu
Kartu, kartu, saya tidak bisa belajar smart contract.
Lihat AsliBalas0
GasOptimizervip
· 20jam yang lalu
Visualisasi konsumsi gas multi-tanda tangan adalah topik besar lainnya.
Lihat AsliBalas0
BridgeJumpervip
· 20jam yang lalu
Kode sudah aman, kan? Tetap saja disuntik.
Lihat AsliBalas0
UncleLiquidationvip
· 20jam yang lalu
Keamanan multi-tanda tangan masih baik.
Lihat AsliBalas0
UncleWhalevip
· 20jam yang lalu
Keamanan tetap harus dikelola dengan serius.
Lihat AsliBalas0
BankruptcyArtistvip
· 20jam yang lalu
Apa kegunaan multisignature jika tetap bisa dieksploitasi?
Lihat AsliBalas0
MEVSandwichvip
· 21jam yang lalu
Bagus! Multi-tanda terlihat aman~
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)