Strategi upgrade smart contract Rust: memastikan keamanan dan keterpeliharaan

Rincian Rencana Peningkatan Smart Contract Rust

Kontrak cerdas pada dasarnya adalah program, yang tidak terhindar dari cacat. Bahkan setelah melalui banyak pengujian dan audit, masih mungkin muncul celah. Begitu dimanfaatkan oleh penyerang, dapat menyebabkan kehilangan aset pengguna, yang merupakan konsekuensi yang serius. Oleh karena itu, kemampuan untuk meningkatkan kontrak sangat diperlukan, terutama untuk perbaikan celah dan penambahan fitur baru. Artikel ini akan memperkenalkan cara-cara umum untuk meningkatkan kontrak Rust.

Rencana Upgrade Kontrak Ethereum

Kontrak pintar Ethereum memiliki sifat tidak dapat diubah, setelah diterapkan tidak dapat dimodifikasi. Untuk mengatasi kerentanan atau menambahkan fitur baru, praktik umum adalah menerapkan kontrak baru. Namun, ini akan menyebabkan perubahan alamat kontrak, yang memerlukan modifikasi pada semua DApp yang menggunakan kontrak tersebut. Selain itu, perlu memigrasi data status dari kontrak lama, yang memakan banyak waktu dan mudah melakukan kesalahan.

Untuk itu, biasanya digunakan arsitektur pemisahan data dan logika: menyimpan data dalam kontrak status, semua logika diimplementasikan dalam kontrak logika yang lain. Saat melakukan upgrade, hanya perlu memperbarui kontrak logika, tanpa perlu memindahkan data status.

Implementasi konkret dapat menggunakan kontrak proxy (Proxy Contract). Kontrak proxy menyimpan data, dan memanggil kontrak logika A melalui deleGatecall. Saat melakukan upgrade, cukup deploy kontrak logika baru B, kemudian biarkan kontrak proxy menunjuk ke B.

Rencana Upgrade Kontrak NEAR

Sebagai contoh proyek StatusMessage, perkenalan metode umum untuk meningkatkan kontrak NEAR.

Struktur data kontrak tidak diubah

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

Struktur data kontrak telah diubah

Jika struktur data kontrak diubah, redeploying secara langsung akan menyebabkan ketidakcocokan antara struktur data baru dan lama, sehingga tidak dapat mengakses data dengan normal.

menggunakan metode Migrate untuk upgrade

NEAR menyediakan metode Migrate untuk membantu memperbarui 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 deployment:

dekat deploy
--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 struktur baru.

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

Pertimbangan Keamanan Upgrade Kontrak

  1. Kontrol akses: Fungsi upgrade harus merupakan fungsi only owner, hanya dapat dipanggil oleh owner.

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

  3. Tambahkan #[init(ignore_state)] sebelum fungsi migrasi, untuk memastikan bahwa status tidak dimuat sebelum eksekusi.

  4. Hapus fungsi migrasi setelah migrasi selesai, pastikan hanya dipanggil sekali.

  5. Struktur data baru diinisialisasi saat migrasi.

Penggunaan yang wajar dari solusi peningkatan ini dapat meningkatkan fleksibilitas dalam memperbarui dan memelihara smart contract sambil menjaga keamanan.

ETH2.81%
INIT9.83%
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
  • 7
  • Bagikan
Komentar
0/400
NFTArtisanHQvip
· 07-24 20:20
pengambilan yang menarik... tapi pola proxy tidak persis seperti readymade duchamp dalam bentuk kode sejujurnya
Lihat AsliBalas0
rugdoc.ethvip
· 07-24 10:17
Ryst juga sedikit merugikan ya
Lihat AsliBalas0
Hash_Banditvip
· 07-23 14:51
pernah ada saat btc ditambang di laptop... kemampuan untuk mengupgrade adalah kunci tetapi sangat berisiko jujur
Lihat AsliBalas0
AllTalkLongTradervip
· 07-21 20:52
Sekali lagi membicarakan pembaruan. Jika saya boleh berkata, cara yang paling aman adalah dengan offline sementara dan kemudian buka kembali.
Lihat AsliBalas0
TestnetFreeloadervip
· 07-21 20:51
Jika ada celah, sebaiknya segera manfaatkan! Bisa mengambil kesempatan.
Lihat AsliBalas0
ApeEscapeArtistvip
· 07-21 20:50
Bug yang diperbaiki tidak akan pernah selesai, lebih baik tidak berharap terlalu tinggi.
Lihat AsliBalas0
GasWhisperervip
· 07-21 20:24
sejujurnya smart contract hanyalah bug yang menunggu untuk terjadi... matching tidak akan menyelamatkanmu dari eksploitasi lmao
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)