Rust smart contract diary (7) Keamanan kontrak dalam presisi perhitungan
Artikel ini akan memperkenalkan kontrol akses dalam smart contract Rust dari dua sudut pandang:
Visibilitas akses/panggilan metode kontrak
Kontrol akses fungsi istimewa/pembagian tanggung jawab
1. Visibilitas Fungsi Kontrak
Kontrol visibilitas fungsi kontrak sangat penting untuk melindungi bagian-bagian kunci agar tidak salah dioperasikan. Sebagai contoh, pada insiden keamanan di bursa Bancor Network pada 18 Juni 2020, karena secara keliru mengatur fungsi transfer kunci menjadi public, menyebabkan risiko terhadap aset pengguna senilai 590.000 dolar.
Dalam kontrak pintar Rust, visibilitas fungsi terutama ada:
pub fn: fungsi publik, dapat dipanggil dari luar kontrak
fn: default private, hanya dapat dipanggil di dalam kontrak
pub(crate) fn: batasi panggilan di dalam crate
Cara lain untuk mengatur metode internal adalah dengan mendefinisikan blok kode impl Contract yang terpisah tanpa menambahkan modifikasi #[near_bindgen].
Untuk fungsi callback, harus diatur sebagai publik tetapi harus dibatasi agar hanya dapat dipanggil oleh kontrak itu sendiri. Dapat menggunakan makro #[private] untuk menerapkannya.
Rust secara default membuat semua konten bersifat private, kecuali item dalam pub trait dan pub enum.
2. Kontrol Akses Fungsi Istimewa
Selain visibilitas fungsi, perlu membangun mekanisme daftar putih kontrol akses yang lengkap dari sisi semantik. Mirip dengan kontrak Ownable di Solidity, beberapa fungsi istimewa hanya dapat dipanggil oleh pemilik.
Dalam kontrak Rust, Anda dapat mengimplementasikan Trait kustom:
Dengan cara ini, kontrol akses terhadap fungsi khusus dapat direalisasikan. Berdasarkan ini, juga dapat diatur daftar putih multi-pengguna atau beberapa grup daftar putih.
3. Metode kontrol akses lebih lanjut
Metode kontrol akses lainnya termasuk:
Kontrol waktu pemanggilan kontrak
Mekanisme pemanggilan multi-tanda tangan fungsi kontrak
Implementasi tata kelola DAO
Konten ini akan dijelaskan secara rinci dalam artikel selanjutnya.
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.
Penjelasan Detail tentang Visibilitas Fungsi dan Kontrol Akses dalam Keamanan Smart Contract Rust
Rust smart contract diary (7) Keamanan kontrak dalam presisi perhitungan
Artikel ini akan memperkenalkan kontrol akses dalam smart contract Rust dari dua sudut pandang:
1. Visibilitas Fungsi Kontrak
Kontrol visibilitas fungsi kontrak sangat penting untuk melindungi bagian-bagian kunci agar tidak salah dioperasikan. Sebagai contoh, pada insiden keamanan di bursa Bancor Network pada 18 Juni 2020, karena secara keliru mengatur fungsi transfer kunci menjadi public, menyebabkan risiko terhadap aset pengguna senilai 590.000 dolar.
Dalam kontrak pintar Rust, visibilitas fungsi terutama ada:
Cara lain untuk mengatur metode internal adalah dengan mendefinisikan blok kode impl Contract yang terpisah tanpa menambahkan modifikasi #[near_bindgen].
Untuk fungsi callback, harus diatur sebagai publik tetapi harus dibatasi agar hanya dapat dipanggil oleh kontrak itu sendiri. Dapat menggunakan makro #[private] untuk menerapkannya.
Rust secara default membuat semua konten bersifat private, kecuali item dalam pub trait dan pub enum.
2. Kontrol Akses Fungsi Istimewa
Selain visibilitas fungsi, perlu membangun mekanisme daftar putih kontrol akses yang lengkap dari sisi semantik. Mirip dengan kontrak Ownable di Solidity, beberapa fungsi istimewa hanya dapat dipanggil oleh pemilik.
Dalam kontrak Rust, Anda dapat mengimplementasikan Trait kustom:
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, kontrol akses terhadap fungsi khusus dapat direalisasikan. Berdasarkan ini, juga dapat diatur daftar putih multi-pengguna atau beberapa grup daftar putih.
3. Metode kontrol akses lebih lanjut
Metode kontrol akses lainnya termasuk:
Konten ini akan dijelaskan secara rinci dalam artikel selanjutnya.