Skip to main content

Overview

An ink! module is the module that is flagged by #[ink::contract] containing all the ink! definitions. All ink! attributes are available to specify inside an ink! module.

Merging Attributes#

It is possible to merge attributes that share a common flagged entity. The example below demonstrates this for a payable message with a custom selector.

#[ink(message)]#[ink(payable)]#[ink(selector = "0xCAFEBABE")]pub fn transfer(&mut self, from: AccountId, to: AccountId, value: Balance) -> Result<(), Error> {    // actual implementation}

We can also write the above ink! message definition in the following way:

#[ink(message, payable, selector = "0xCAFEBABE")]pub fn transfer(&mut self, from: AccountId, to: AccountId, value: Balance) -> Result<(), Error> {    // actual implementation}