I am trying to work out when ETH is needed and hence when the modifier payable is needed in a function. I read through the "documentation" and various jumbled up references to payable, but I cannot see any clear statement about when ETH is needed and when payable therefore is needed.
I assume that payable is needed when a state variable is modified. Is there any other condition requiring ETH and hence the word payable to be stated?
From what I know now -
State Variable Update - ETH needed - payable specified
Other variable actions (eg local, or reading only) - no ETH needed - payable not specified.