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
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
  • 10
  • Bagikan
Komentar
0/400
Anon32942vip
· 07-14 23:24
Kode ini agak sulit untuk dicerna.
Lihat AsliBalas0
GasFeeCriervip
· 07-14 20:16
Seberapa aman sebenarnya keamanan ini?
Lihat AsliBalas0
MeaninglessApevip
· 07-14 14:35
Ini juga harus dilakukannya? Sudah menulis Rust.
Lihat AsliBalas0
LootboxPhobiavip
· 07-12 09:38
Kartu, kartu, saya tidak bisa belajar smart contract.
Lihat AsliBalas0
GasOptimizervip
· 07-12 09:38
Visualisasi konsumsi gas multi-tanda tangan adalah topik besar lainnya.
Lihat AsliBalas0
BridgeJumpervip
· 07-12 09:37
Kode sudah aman, kan? Tetap saja disuntik.
Lihat AsliBalas0
UncleLiquidationvip
· 07-12 09:37
Keamanan multi-tanda tangan masih baik.
Lihat AsliBalas0
UncleWhalevip
· 07-12 09:30
Keamanan tetap harus dikelola dengan serius.
Lihat AsliBalas0
BankruptcyArtistvip
· 07-12 09:22
Apa kegunaan multisignature jika tetap bisa dieksploitasi?
Lihat AsliBalas0
MEVSandwichvip
· 07-12 09:14
Bagus! Multi-tanda terlihat aman~
Lihat AsliBalas0
Lihat Lebih Banyak
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)