Panduan Lengkap Upgrade Smart Contract Rust: Dari NEAR hingga Pertimbangan Keamanan

Praktik Upgrade Smart Contract Rust

Smart contract pada dasarnya adalah program, yang tidak dapat dihindari memiliki cacat. Meskipun telah melalui banyak pengujian dan audit, masih mungkin ada celah. Celah dalam kontrak yang diserang dapat menyebabkan kerugian aset pengguna, dengan konsekuensi yang serius. Memperbaiki celah dan menambahkan fitur baru memerlukan peningkatan kontrak. Oleh karena itu, kemampuan kontrak untuk ditingkatkan sangat diperlukan. Artikel ini akan memperkenalkan cara peningkatan kontrak Rust.

Metode Peningkatan Kontrak NEAR

Sebagai contoh proyek StatusMessage, 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 mendistribusikan kode baru. Data dalam kontrak asli dapat dibaca dengan normal.

2. Struktur data kontrak telah diubah

Jika struktur data kontrak diubah, melakukan redeployment langsung akan menyebabkan ketidakcocokan antara struktur data baru dan lama, sehingga data yang ada tidak dapat dibaca.

3. Menggunakan Migrate untuk memperbarui kontrak

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 redeploy:

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

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

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

Pertimbangan Keamanan dalam Upgrade Kontrak

  1. Fungsi upgrade harus merupakan fungsi hanya pemilik, memastikan hanya pemilik yang dapat memanggilnya.

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

  3. Tambahkan #[init(ignore_state)] sebelum fungsi migrasi

  4. Hapus fungsi migrasi setelah migrasi selesai

  5. Struktur data baru diinisialisasi saat migrasi

Peningkatan kontrak adalah cara penting untuk menjaga keamanan kontrak, pengembang perlu menangani dengan hati-hati, memastikan keamanan proses peningkatan.

INIT-7.07%
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
  • 2
  • Posting ulang
  • Bagikan
Komentar
0/400
SandwichVictimvip
· 08-13 22:24
Banyak celah membuatku merasa panik.
Lihat AsliBalas0
BlockImpostervip
· 08-13 22:24
Naik atau tidak, tidak ada yang bisa keluar dari lubang~
Lihat AsliBalas0
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)