Kontrak pintar sebagai salah satu jenis program, tidak mungkin tidak memiliki cacat. Bahkan setelah melalui banyak pengujian dan audit, masih mungkin ada celah. Begitu dimanfaatkan oleh penyerang, dapat menyebabkan kerugian aset pengguna, dengan konsekuensi yang serius. Oleh karena itu, kemampuan untuk meng-upgrade kontrak sangat diperlukan, terutama untuk memperbaiki celah dan menambahkan fitur baru. Artikel ini akan memperkenalkan cara upgrade kontrak Rust.
Metode Upgrade Kontrak NEAR
Mengambil proyek StatusMessage sebagai contoh, memperkenalkan metode umum untuk meningkatkan kontrak NEAR.
1. Struktur data kontrak tidak diubah
Jika hanya mengubah logika kontrak tanpa melibatkan perubahan struktur data, Anda dapat langsung menggunakan near deploy untuk menerapkan kode baru:
bash
dekat deploy \
--accountId status_message.example.testnet
--wasmFile target/wasm32-unknown-unknown/release/status_message.wasm
Data kontrak yang ada dapat dibaca dengan normal.
2. Modifikasi Struktur Data Kontrak
Jika struktur data kontrak dimodifikasi, penyebaran ulang secara langsung akan menyebabkan kegagalan deserialisasi status. Pada saat ini, perlu menggunakan metode migrate untuk melakukan upgrade:
karat
#[private]
#[init(ignore_state)]
Self {
let old_state: OldStatusMessage = env::state_read().expect("failed");
Diri {
new_field: LookupMap::new(b"n".to_vec)((,
old_field: old_state.old_field,
}
}
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.
6 Suka
Hadiah
6
3
Bagikan
Komentar
0/400
PumpBeforeRug
· 13jam yang lalu
Jika tidak dapat mencegah kerentanan dasar, untuk apa bermain lari telanjang?
Praktik Terbaik Peningkatan Kontrak Pintar Rust: Belajar dari Kasus Kontrak NEAR
Panduan Upgrade Kontrak Pintar Rust
Kontrak pintar sebagai salah satu jenis program, tidak mungkin tidak memiliki cacat. Bahkan setelah melalui banyak pengujian dan audit, masih mungkin ada celah. Begitu dimanfaatkan oleh penyerang, dapat menyebabkan kerugian aset pengguna, dengan konsekuensi yang serius. Oleh karena itu, kemampuan untuk meng-upgrade kontrak sangat diperlukan, terutama untuk memperbaiki celah dan menambahkan fitur baru. Artikel ini akan memperkenalkan cara upgrade kontrak Rust.
Metode Upgrade Kontrak NEAR
Mengambil proyek StatusMessage sebagai contoh, memperkenalkan metode umum untuk meningkatkan kontrak NEAR.
1. Struktur data kontrak tidak diubah
Jika hanya mengubah logika kontrak tanpa melibatkan perubahan struktur data, Anda dapat langsung menggunakan near deploy untuk menerapkan kode baru:
bash dekat deploy \ --accountId status_message.example.testnet
--wasmFile target/wasm32-unknown-unknown/release/status_message.wasm
Data kontrak yang ada dapat dibaca dengan normal.
2. Modifikasi Struktur Data Kontrak
Jika struktur data kontrak dimodifikasi, penyebaran ulang secara langsung akan menyebabkan kegagalan deserialisasi status. Pada saat ini, perlu menggunakan metode migrate untuk melakukan upgrade:
karat #[private] #[init(ignore_state)] Self { let old_state: OldStatusMessage = env::state_read().expect("failed"); Diri { new_field: LookupMap::new(b"n".to_vec)((, old_field: old_state.old_field, } }
Panggil metode migrate saat penyebaran:
bash
dekat deploy
--wasmFile target/wasm32-unknown-unknown/release/status_message.wasm
--initFunction "migrate"
--initArgs "{}"
--accountId status_message.example.testnet
Dengan cara ini, status lama dapat dipindahkan ke kontrak baru.
![])https://img-cdn.gateio.im/webp-social/moments-73f5e5195fa71f1f25f5d35ba1e8b8ec.webp)
Saran Keamanan untuk Peningkatan Kontrak
Peningkatan yang wajar dapat menjaga keamanan dan skalabilitas kontrak, yang merupakan bagian penting dalam pengembangan smart contract.