Usar almacenamiento de instancia en un contrato
Bajo el capó, el almacenamiento de instancia es exactamente como el almacenamiento persistente. La única diferencia es que cualquier cosa almacenada en el almacenamiento de instancia tiene un TTL de archivo que está vinculado a la instancia del contrato en sí. Así que, si un contrato está en vivo y disponible, el almacenamiento de instancia está garantizado a estarlo también.
El almacenamiento de instancia es realmente útil para los datos globales del contrato que son compartidos entre todos los usuarios del contrato (administrador del token, por ejemplo). Del contrato de ejemplo del token, las funciones auxiliares para establecer y recuperar la dirección del administrador son básicamente solo envolturas que rodean la entrada de ledger de Admin.
Se debe notar que cada pieza de datos almacenada en instance()
almacenamiento es recuperada del ledger cada vez que se invoca el contrato. Incluso si la función invocada no interactúa con ningún dato de ledger en absoluto. Esto puede llevar a invocaciones de función más costosas (computacionalmente y financieramente) si los datos almacenados crecen con el tiempo. Elige con juicio qué partes de datos realmente pertenecen al almacenamiento de instancia, y cuáles deben mantenerse en el almacenamiento persistente.
pub fn has_administrator(e: &Env) -> bool {
let key = DataKey::Admin;
e.storage().instance().has(&key)
}
pub fn read_administrator(e: &Env) -> Address {
let key = DataKey::Admin;
e.storage().instance().get(&key).unwrap()
}
pub fn write_administrator(e: &Env, id: &Address) {
let key = DataKey::Admin;
e.storage().instance().set(&key, id);
}
Guías en esta categoría:
📄️ Cómo elegir el tipo de almacenamiento adecuado para tu caso de uso
Esta guía te lleva a elegir el tipo de almacenamiento más adecuado para tu caso de uso y cómo implementarlo
📄️ Usar almacenamiento de instancia en un contrato
El almacenamiento de instancia tiene un TTL de archivo que está vinculado a la instancia del contrato en sí
📄️ Usar almacenamiento persistente en un contrato
El almacenamiento persistente puede ser útil para las entradas del ledger que no son comunes entre cada usuario de la instancia del contrato
📄️ Usar almacenamiento temporal en un contrato
El almacenamiento temporal es útil para un contrato para almacenar datos que pueden volverse irrelevantes o desactualizados rápidamente