Penjelasan Upgrade Kontrak Pintar Rust: Panduan Pembaruan Keamanan Platform NEAR

robot
Pembuatan abstrak sedang berlangsung

Penjelasan Metode Upgrade Smart Contract Rust

Smart contract pada dasarnya adalah program, pasti akan ada kekurangan. Bahkan smart contract yang telah melalui banyak pengujian dan audit, masih mungkin memiliki celah. Setelah dieksploitasi oleh penyerang, dapat menyebabkan kerugian aset pengguna, dengan konsekuensi yang serius. Oleh karena itu, kemampuan untuk memperbarui kontrak sangat penting. Artikel ini akan memperkenalkan cara untuk memperbarui kontrak Rust.

Kebutuhan untuk Meningkatkan Kontrak

Perbaikan kerentanan dan penambahan fitur baru pada smart contract seringkali perlu dilakukan melalui peningkatan kontrak. Alasan utamanya adalah:

  1. Memperbaiki celah keamanan
  2. Menambahkan fitur baru
  3. Mengoptimalkan kinerja kontrak
  4. Menyesuaikan dengan kebutuhan bisnis baru

Metode Upgrade Kontrak NEAR

Menggunakan proyek StatusMessage sebagai contoh, memperkenalkan metode umum untuk memperbarui kontrak NEAR:

1. Struktur data kontrak tidak diubah

Jika hanya mengubah logika kontrak, tanpa melibatkan perubahan struktur data, Anda dapat langsung menggunakan perintah near deploy untuk menyebarkan kode baru. Data yang ada masih dapat diakses dengan normal.

2. Struktur data kontrak telah dimodifikasi

Jika struktur data kontrak diubah, penyebaran ulang secara langsung akan menyebabkan struktur data baru tidak dapat dicocokkan dengan status lama, mengakibatkan kesalahan deserialisasi.

3. Menggunakan metode Migrate untuk memperbarui

NEAR menyediakan metode Migrate untuk membantu peningkatan kontrak. Tambahkan metode migrate di kontrak baru:

karat #[private] #[init(ignore_state)] Self { let old_state: OldStatusMessage = env::state_read().expect("failed"); Diri { taglines: old_state.records, bios: LookupMap::new(b"b".to_vec)((, } }

Panggil metode migrate saat penyebaran:

dekat deploy
--wasmFile target/wasm32-unknown-unknown/release/status_message.wasm
--initFunction "migrate"
--initArgs "{}"
--accountId statusmessage.blocksec_upgrade.testnet

Dengan cara ini, data lama dapat berhasil dipindahkan ke dalam struktur kontrak yang baru.

![])https://img-cdn.gateio.im/webp-social/moments-73f5e5195fa71f1f25f5d35ba1e8b8ec.webp)

Pertimbangan Keamanan dalam Peningkatan Kontrak

  1. Kontrol akses - Hanya mengizinkan pengembang atau DAO untuk memperbarui kontrak

  2. Disarankan untuk mengatur pemilik kontrak sebagai DAO, melalui proposal dan pemungutan suara untuk mengelola.

  3. Fungsi migrasi menggunakan #[init(ignore_state)]

  4. Hapus fungsi migrasi setelah migrasi selesai

  5. Struktur data baru diinisialisasi saat migrasi

Pembaruan kontrak adalah proses yang kompleks, perlu memperhatikan setiap detail dengan hati-hati, untuk memastikan keamanan data dan kelangsungan bisnis.

NEAR-0.89%
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
  • 4
  • Bagikan
Komentar
0/400
Anon4461vip
· 07-14 08:32
Siapa yang bisa menahan ini~
Lihat AsliBalas0
rekt_but_not_brokevip
· 07-14 08:22
Apakah near juga telah diperbarui?
Lihat AsliBalas0
LightningPacketLossvip
· 07-14 08:20
Setelah dua tahun menggunakan Rust, saya beralih ke Web3.
Lihat AsliBalas0
MidnightMEVeatervip
· 07-14 08:18
Mesin pemenggal pun tidak berani memainkannya seperti ini, apakah pengembang akan kembali?
Lihat AsliBalas0
  • Sematkan
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)