# #\[ink(storage)]

Aplicável em definições de `structs`.

Aplicado em tipos de `struct` para sinalizá-los como a definição de armazenamento do contrato. Pode haver apenas uma definição de armazenamento ink! por contrato.

Deve haver exatamente uma `struct` `#[ink(storage)]`.

Esta struct define o layout do armazenamento em que o contrato inteligente ink! opera. O usuário é capaz de usar uma variedade de recursos incorporados, combiná-los de várias maneiras ou até mesmo fornecer suas próprias implementações de estruturas de dados de armazenamento.

Para mais informações, visite a documentação da `crate ink_storage`.

### Exemplo[​](https://use.ink/macros-attributes/storage#example) <a href="#example" id="example"></a>

```rust
#[ink::contract]
mod flipper {

    #[ink(storage)]
    pub struct Flipper {
        value: bool,
    }

    impl Flipper {
        #[ink(constructor)]
        pub fn construct() -> Self { Flipper { value: false } }

        #[ink(message)]
        pub fn message(&self) {}
    }
}
```

\
