Rust smart contract pengembangan jurnal (7) Keamanan kontrak dalam presisi perhitungan
Artikel ini akan membahas kontrol akses dalam smart contract Rust dari dua aspek:
Akses/Panggilan Visibilitas Metode Kontrak
Kontrol akses fungsi khusus/pembagian tanggung jawab
1. Visibilitas Fungsi Kontrak
Pengaturan visibilitas fungsi kontrak yang wajar sangat penting untuk melindungi keamanan kontrak. Sebagai contoh, pada insiden keamanan yang terjadi di bursa Bancor Network pada 18 Juni 2020, karena kesalahan dalam mengatur fungsi transfer penting menjadi public, menyebabkan risiko serius bagi aset pengguna.
Dalam smart contract Rust, visibilitas fungsi terutama terdiri dari beberapa jenis berikut:
pub fn: fungsi publik, dapat dipanggil oleh siapa saja dari luar kontrak
fn: default private, hanya bisa dipanggil di dalam kontrak
pub(crate) fn: membatasi pemanggilan di dalam crate
Selain itu, dapat mengimplementasikan metode internal dengan mendefinisikan blok impl yang tidak memiliki #[near_bindgen].
Untuk fungsi callback, harus diatur sebagai publik tetapi memerlukan pengendalian akses tambahan:
Selain visibilitas fungsi, perlu juga untuk membangun mekanisme daftar putih kontrol akses yang lengkap. Anda dapat menyesuaikan Trait untuk mencapai efek yang mirip dengan modifier onlyOwner dalam Solidity:
Dengan cara ini, hanya pemilik yang dapat memanggil fungsi-fungsi tertentu yang istimewa. Berdasarkan ini, dapat disetel daftar putih multi-pengguna yang lebih kompleks atau beberapa daftar putih, untuk mewujudkan kontrol akses grup yang lebih rinci.
Dalam kontrak pintar Rust, ada metode kontrol akses lain, seperti kontrol waktu pemanggilan, mekanisme multi-tanda tangan, dll, yang akan diperkenalkan 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.
Keamanan smart contract Rust: Praktik visibilitas fungsi dan kontrol akses
Rust smart contract pengembangan jurnal (7) Keamanan kontrak dalam presisi perhitungan
Artikel ini akan membahas kontrol akses dalam smart contract Rust dari dua aspek:
1. Visibilitas Fungsi Kontrak
Pengaturan visibilitas fungsi kontrak yang wajar sangat penting untuk melindungi keamanan kontrak. Sebagai contoh, pada insiden keamanan yang terjadi di bursa Bancor Network pada 18 Juni 2020, karena kesalahan dalam mengatur fungsi transfer penting menjadi public, menyebabkan risiko serius bagi aset pengguna.
Dalam smart contract Rust, visibilitas fungsi terutama terdiri dari beberapa jenis berikut:
Selain itu, dapat mengimplementasikan metode internal dengan mendefinisikan blok impl yang tidak memiliki #[near_bindgen].
Untuk fungsi callback, harus diatur sebagai publik tetapi memerlukan pengendalian akses tambahan:
karat #[private] pub fn resolve_transfer(&mut self) { env::log_str("Ini adalah callback"); }
2. Kontrol Akses Fungsi Privilege
Selain visibilitas fungsi, perlu juga untuk membangun mekanisme daftar putih kontrol akses yang lengkap. Anda dapat menyesuaikan Trait untuk mencapai efek yang mirip dengan modifier onlyOwner dalam Solidity:
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, hanya pemilik yang dapat memanggil fungsi-fungsi tertentu yang istimewa. Berdasarkan ini, dapat disetel daftar putih multi-pengguna yang lebih kompleks atau beberapa daftar putih, untuk mewujudkan kontrol akses grup yang lebih rinci.
Dalam kontrak pintar Rust, ada metode kontrol akses lain, seperti kontrol waktu pemanggilan, mekanisme multi-tanda tangan, dll, yang akan diperkenalkan dalam artikel berikutnya.