Rust smart contract pengembangan jurnal (7) Keamanan kontrak dalam akurasi perhitungan
Artikel ini akan memperkenalkan kontrol akses dalam smart contract Rust dari dua aspek:
Visibilitas metode kontrak
Kontrol akses fungsi istimewa
1. Visibilitas Fungsi Kontrak
Visibilitas fungsi kontrak menentukan siapa yang dapat memanggil fungsi-fungsi tersebut. Mengatur visibilitas dengan benar sangat penting untuk melindungi bagian-bagian penting dari kontrak.
Dalam kontrak pintar Rust, visibilitas fungsi terutama terdiri dari beberapa jenis berikut:
pub fn: fungsi publik, dapat dipanggil dari luar kontrak
fn: Fungsi internal, hanya dapat dipanggil di dalam kontrak
pub(crate) fn: membatasi panggilan di dalam crate
Selain itu, Anda dapat menetapkannya sebagai metode internal dengan mendefinisikan metode dalam blok kode impl Contract yang terpisah:
Ini dapat mewujudkan kontrol hak akses dasar pemilik. Dapat diperluas lebih lanjut menjadi daftar putih multi-pengguna atau beberapa grup daftar putih untuk mencapai kontrol akses yang lebih rinci.
Selain itu, Anda juga dapat mempertimbangkan kontrol waktu panggilan, mekanisme multi-tanda tangan, dan skema kontrol akses lainnya yang lebih kompleks. Penetapan yang tepat terhadap visibilitas fungsi kontrak dan kontrol akses sangat penting untuk memastikan keamanan kontrak.
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.
23 Suka
Hadiah
23
5
Posting ulang
Bagikan
Komentar
0/400
CryingOldWallet
· 07-28 07:37
Akhirnya melihat yang terkait dengan rust, catat baik-baik
Lihat AsliBalas0
PumpingCroissant
· 07-28 03:49
Sekali lagi tidak bisa belajar rust
Lihat AsliBalas0
CryptoGoldmine
· 07-25 08:04
Teknik Kedalaman bagus, tetapi ROI yang sebenarnya harus dilihat dari optimasi penjadwalan Pool Penambangan.
Lihat AsliBalas0
SchrodingerAirdrop
· 07-25 08:01
Tutorial pemula ini membuat saya pusing, rust selalu melakukan hal-hal yang dalam.
Lihat AsliBalas0
GateUser-2fce706c
· 07-25 08:01
Evolusi adalah kebenaran yang tak terbantahkan, rantai Rust kali ini muncul seperti ombak! Segera siapkan strategi!
Praktik Keamanan Kontrak Pintar Rust: Kontrol Akses dan Manajemen Izin
Rust smart contract pengembangan jurnal (7) Keamanan kontrak dalam akurasi perhitungan
Artikel ini akan memperkenalkan kontrol akses dalam smart contract Rust dari dua aspek:
1. Visibilitas Fungsi Kontrak
Visibilitas fungsi kontrak menentukan siapa yang dapat memanggil fungsi-fungsi tersebut. Mengatur visibilitas dengan benar sangat penting untuk melindungi bagian-bagian penting dari kontrak.
Dalam kontrak pintar Rust, visibilitas fungsi terutama terdiri dari beberapa jenis berikut:
Selain itu, Anda dapat menetapkannya sebagai metode internal dengan mendefinisikan metode dalam blok kode impl Contract yang terpisah:
karat #[near_bindgen] impl Kontrak { pub fn increment(&mut self) { self.internal_increment(); } }
impl Kontrak { pub fn internal_increment(&mut self) { self.counter += 1; } }
Untuk fungsi callback, perlu diatur sebagai pub dan menggunakan makro #[private] untuk membatasi hanya dapat dipanggil oleh kontrak itu sendiri:
karat #[near_bindgen] impl Kontrak { #[private] pub fn resolve_transfer(&mut self) { // Logika callback } }
2. Kontrol Akses Fungsi Privilege
Selain mengatur visibilitas fungsi, perlu juga membangun mekanisme daftar putih kontrol akses untuk membatasi pemanggilan fungsi istimewa.
Dapat mewujudkan trait Ownable yang serupa dengan berikut:
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); }
Kemudian, dalam fungsi hak istimewa, panggil assert_owner() untuk memverifikasi identitas pemanggil:
karat impl Kontrak { pub fn privileged_function(&mut self) { self.assert_owner(); // Logika fungsi istimewa } }
Ini dapat mewujudkan kontrol hak akses dasar pemilik. Dapat diperluas lebih lanjut menjadi daftar putih multi-pengguna atau beberapa grup daftar putih untuk mencapai kontrol akses yang lebih rinci.
Selain itu, Anda juga dapat mempertimbangkan kontrol waktu panggilan, mekanisme multi-tanda tangan, dan skema kontrol akses lainnya yang lebih kompleks. Penetapan yang tepat terhadap visibilitas fungsi kontrak dan kontrol akses sangat penting untuk memastikan keamanan kontrak.