Método de actualización de contratos inteligentes en Rust
Los contratos inteligentes son esencialmente programas, y no pueden evitar tener defectos. Incluso los contratos inteligentes que han sido sometidos a muchas pruebas y auditorías aún pueden tener vulnerabilidades. Una vez que un atacante las explota, puede resultar en la pérdida de activos de los usuarios, con consecuencias graves. Por lo tanto, la capacidad de actualización de los contratos es muy importante. Este artículo presentará las formas de actualizar contratos en Rust.
La necesidad de actualizar los contratos
La reparación de vulnerabilidades en contratos inteligentes y la adición de nuevas características a menudo requieren ser implementadas a través de actualizaciones de contratos. Las principales razones son:
Reparar vulnerabilidades de seguridad
Añadir nuevas funciones
Optimizar el rendimiento de los contratos inteligentes
Adaptarse a nuevas demandas comerciales
Método de actualización del contrato NEAR
Tomando el proyecto StatusMessage como ejemplo, se presentan los métodos comunes para actualizar contratos en NEAR:
1. La estructura de datos del contrato no ha sido modificada
Si solo se modifica la lógica del contrato y no se involucran cambios en la estructura de datos, se puede usar directamente el comando near deploy para volver a desplegar el nuevo código. Los datos originales aún se pueden acceder normalmente.
2. La estructura de datos del contrato ha sido modificada
Si se modifica la estructura de datos del contrato, volver a desplegar directamente causará que la nueva estructura de datos no coincida con el estado anterior, lo que provocará errores de deserialización.
3. Usar el método Migrate para actualizar
NEAR proporciona el método Migrate para ayudar en la actualización de contratos. Agrega el método migrate en el nuevo contrato:
Consideraciones de seguridad para la actualización de contratos
Control de acceso - Solo se permite a los desarrolladores o DAO actualizar el contrato
Se recomienda establecer el propietario del contrato como DAO, gestionado a través de propuestas y votaciones.
La función de migración utiliza #[init(ignore_state)]
Eliminar la función de migración después de completar la migración
La nueva estructura de datos se inicializa al migrar.
La actualización del contrato es un proceso complejo que requiere atención cuidadosa a cada detalle, asegurando la seguridad de los datos y la continuidad del negocio.
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
13 me gusta
Recompensa
13
4
Compartir
Comentar
0/400
Anon4461
· 07-14 08:32
¿Quién puede soportar esto~
Ver originalesResponder0
rekt_but_not_broke
· 07-14 08:22
¿También se ha actualizado near?
Ver originalesResponder0
LightningPacketLoss
· 07-14 08:20
Después de dos años de trabajar con Rust, ahora estoy explorando Web3.
Ver originalesResponder0
MidnightMEVeater
· 07-14 08:18
Ni siquiera la guillotina se atreve a tomar a la gente por tonta. ¿Volverán los desarrolladores?
Explicación detallada de la actualización de contratos inteligentes en Rust: Guía de actualización de seguridad de la plataforma NEAR
Método de actualización de contratos inteligentes en Rust
Los contratos inteligentes son esencialmente programas, y no pueden evitar tener defectos. Incluso los contratos inteligentes que han sido sometidos a muchas pruebas y auditorías aún pueden tener vulnerabilidades. Una vez que un atacante las explota, puede resultar en la pérdida de activos de los usuarios, con consecuencias graves. Por lo tanto, la capacidad de actualización de los contratos es muy importante. Este artículo presentará las formas de actualizar contratos en Rust.
La necesidad de actualizar los contratos
La reparación de vulnerabilidades en contratos inteligentes y la adición de nuevas características a menudo requieren ser implementadas a través de actualizaciones de contratos. Las principales razones son:
Método de actualización del contrato NEAR
Tomando el proyecto StatusMessage como ejemplo, se presentan los métodos comunes para actualizar contratos en NEAR:
1. La estructura de datos del contrato no ha sido modificada
Si solo se modifica la lógica del contrato y no se involucran cambios en la estructura de datos, se puede usar directamente el comando near deploy para volver a desplegar el nuevo código. Los datos originales aún se pueden acceder normalmente.
2. La estructura de datos del contrato ha sido modificada
Si se modifica la estructura de datos del contrato, volver a desplegar directamente causará que la nueva estructura de datos no coincida con el estado anterior, lo que provocará errores de deserialización.
3. Usar el método Migrate para actualizar
NEAR proporciona el método Migrate para ayudar en la actualización de contratos. Agrega el método migrate en el nuevo contrato:
óxido #[private] #[init(ignore_state)] Self { let old_state: OldStatusMessage = env::state_read().expect("failed"); Self { taglines: old_state.records, bios: LookupMap::new(b"b".to_vec)((, } }
Llamar al método migrate durante la implementación:
near desplegar
--wasmFile target/wasm32-unknown-unknown/release/status_message.wasm
--initFunction "migrate"
--initArgs "{}"
--accountId statusmessage.blocksec_upgrade.testnet
De esta manera, se puede migrar con éxito los datos antiguos a la nueva estructura de contratos inteligentes.
![])https://img-cdn.gateio.im/webp-social/moments-73f5e5195fa71f1f25f5d35ba1e8b8ec.webp)
Consideraciones de seguridad para la actualización de contratos
Control de acceso - Solo se permite a los desarrolladores o DAO actualizar el contrato
Se recomienda establecer el propietario del contrato como DAO, gestionado a través de propuestas y votaciones.
La función de migración utiliza #[init(ignore_state)]
Eliminar la función de migración después de completar la migración
La nueva estructura de datos se inicializa al migrar.
La actualización del contrato es un proceso complejo que requiere atención cuidadosa a cada detalle, asegurando la seguridad de los datos y la continuidad del negocio.