🏟️Tipos de Ambiente de Cadeia

CUIDADO: Se você escrever um contrato para uma cadeia que se desvia dos tipos padrão do Lunes, você deve garantir de configurar o Ambiente Environment dessa cadeia para o seu contrato!

O ink! define um traço Environment e também uma implementação padrão desse traço - DefaultEnvironment.

Esses são os tipos que o ink! utiliza, se nenhuma etapa explícita for tomada:

/// The fundamental types of the default configuration.
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "std", derive(TypeInfo))]
pub enum DefaultEnvironment {}

impl Environment for DefaultEnvironment {
    const MAX_EVENT_TOPICS: usize = 4;

    type AccountId = ink_primitives::AccountId;
    type Balance = u128;
    type Hash = ink_primitives::Hash;
    type Timestamp = u64;
    type BlockNumber = u32;
    type ChainExtension = NoChainExtension;
}

O contexto aqui é que você pode usar o ink! na blockchain Lunes, que inclui o módulo pallet-contracts. Na rede Lunes você pode decidir quais tipos deseja usar, como o número de bloco da cadeia ou os identificadores de conta.

Por exemplo, as cadeias que pretendem ser compatíveis com a Ethereum geralmente usam o mesmo tipo de Ethereum para o AccountId. A cadeia na rede Lunes permanece com os tipos padrão, e o ink! também usa esses tipos por padrão.

No entanto, é possível configurar um ambiente diferente no macro do contrato. (documentação aqui):

#[ink::contract(env = MyCustomTypes)]

Last updated

Was this helpful?