Skip to main content
Version: Next

dyn_entry

The decorator @dyn_entry on a function indicates that said function should be made available as a dynamic entrypoint of the smart contract. For more information about dynamic entrypoints, see Dynamic entrypoints.

Dynamic entrypoints can be removed or updated without deploying a new contract, unlike entrypoints decorated with @entry, which cannot be modified after the contract is originated. Dynamic entrypoints can be used for example to implement a DAO (Decentralized Autonomous Organization) with a built-in update mechanism that allows participants to vote on upgrades to the contract, in a manner somewhat akin to the amending process of the Tezos protocol itself.

type storage = {
storage: int;
dynamic_entrypoints;
};
@dyn_entry
const one = (_u: unit, _i: int): [list<operation>, int] =>
[[], 1];
@dyn_entry
const tick = (_: ticket<int>, x: [int, int])
: [list<operation>, [int, int]] =>
[[], x];