Method Types
Payable Methods
Methods can be annotated with
#[payable]to allow tokens to be transferred with the method invocation.
#[payable]
pub fn my_method(&mut self) {
...
}Private Methods
Some methods need to be exposed to allow the contract to call a method on itself through a promise, but want to disallow any other contract to call it. For this, use the
#[private]annotation to panic when this method is called externally.
#[private]
pub fn my_method(&mut self) {
...
}Difference between pub fn and fn
pub fn will be exported from the WASM so they can be called as part of a transaction. Otherwise it's just a helper function and not an entry point
Difference between private functions and fn
#[private] is a special marker that's part of the #[near_bindgen] macro. You attach it to public functions, and it adds a restriction such that only the contract itself is allowed to call that function as part of a transaction, even though the function is public. #[private] technically creates a public entry point which only the contract itself is allowed to call. Useful for callbacks.
Last updated