Crate ink

source ·



  • Definitions and utilities for ink! smart contract static reflection.


  • Computes and expands into the BLAKE2b 256-bit hash of the string input.
  • Macro defines the combined chain extension via structure definition. Each sub-extension can be accessed by the corresponding field.
  • Generates a wrapper which can be used for interacting with the contract.
  • Computes the ink! selector of the string and expands into its byte representation.
  • Computes the ink! selector of the string and expands into its u32 representation.


  • The API behind the self.env() and Self::env() syntax in ink!.
  • Represents some abstract value that is returned by a function. Currently acts as a placeholder.


  • An error emitted by the smart contracting language.



Type Aliases§

Attribute Macros§

  • Defines the interface for a chain extension.
  • Entry point for writing ink! smart contracts.
  • Implements the necessary traits for a struct to be emitted as an event from a contract.
  • Derive the re-exported traits ink::scale::Encode, ink::scale::Decode and ink::scale_info::TypeInfo. It enables using the built in derive macros for these traits without depending directly on the parity-scale-codec and scale-info crates.
  • Prepares the type to be fully compatible and usable with the storage. It implements all necessary traits and calculates the storage key for types. Packed types don’t have a storage key, but non-packed types (like Mapping, Lazy etc.) require calculating the storage key during compilation.
  • Defines a unit test that makes use of ink!’s off-chain testing capabilities.
  • Marks trait definitions to ink! as special ink! trait definitions.

Derive Macros§

  • Derives an implementation of the [ink::Event] trait for the given struct.
  • Derives the [ink::EventMetadata] trait for the given struct, which provides metadata about the event definition.