#[ink(storage)] |
On struct definitions. |
Defines the ink! storage struct. There can only be one ink! storage definition per contract. |
#[ink(message)] |
Applicable to methods. |
Flags a method for the ink! storage struct as message making it available to the API for calling the contract. |
#[ink(constructor)] |
Applicable to method. |
Flags a method for the ink! storage struct as constructor making it available to the API for instantiating the contract. |
#[ink(event)] |
On struct definitions. |
Defines an ink! event. A contract can define multiple such ink! events. |
#[ink(anonymous)] |
Applicable to ink! events. |
Tells the ink! codegen to treat the ink! event as anonymous which omits the event signature as topic upon emitting. Very similar to anonymous events in Solidity. |
#[ink(signature_topic = _)] |
Applicable to ink! events. |
Specifies custom signature topic of the event that allows to use manually specify shared event definition. |
#[ink(topic)] |
Applicable on ink! event field. |
Tells the ink! codegen to provide a topic hash for the given field. Every ink! event can only have a limited number of such topic fields. Similar semantics as to indexed event arguments in Solidity. |
#[ink(payable)] |
Applicable to ink! messages. |
Allows receiving value as part of the call of the ink! message. ink! constructors are implicitly payable. |
#[ink(selector = S:u32)] |
Applicable to ink! messages and ink! constructors. |
Specifies a concrete dispatch selector for the flagged entity. This allows a contract author to precisely control the selectors of their APIs making it possible to rename their API without breakage. |
#[ink(selector = _)] |
Applicable to ink! messages. |
Specifies a fallback message that is invoked if no other ink! message matches a selector. |
#[ink(namespace = N:string)] |
Applicable to ink! trait implementation blocks. |
Changes the resulting selectors of all the ink! messages and ink! constructors within the trait implementation. Allows to disambiguate between trait implementations with overlapping message or constructor names. Use only with great care and consideration! |
#[ink(impl)] |
Applicable to ink! implementation blocks. |
Tells the ink! codegen that some implementation block shall be granted access to ink! internals even without it containing any ink! messages or ink! constructors. |