Decorators
The following decorators may be used at the start of each function:
@private
The @private
decorator makes the function inaccessible from outside the contract.
@public
The @public
decorator makes the function both visible and executable publicly. For example, even the Ethereum wallet will display such functions when viewing the contract.
@constant
Functions with the @constant
decorator are not allowed to change state variables. In fact, the compiler will reject the entire program (with an appropriate error) if the function tries to change a state variable.
@payable
Only functions with the @payable
decorator are allowed to transfer value.
Vyper implements the logic of decorators explicitly. For example, the Vyper compilation process will fail if a function has both a @payable
decorator and a @constant
decorator. This makes sense because a function that transfers value has by definition updated the state, so cannot be @constant
. Each Vyper function must be decorated with either @public
or @private
(but not both!).