A newly issued gym annual pass, the coach said “it only takes effect next month.” I was puzzled—shouldn’t it count from the day you pay, right?
A friend got a gym annual pass and wanted to book a class the same day. The front desk said the system has a “grace period.” For passes purchased this month, they won’t be officially activated until the beginning of the month after next. It’s not that they’re trying to make things difficult; it’s to prevent people from buying a pass and then疯狂 booking classes the day they sign up, consuming resources—then immediately canceling and cashing out for a quick profit. This “delayed activation” logic also exists on-chain, and the algorithm is even more meticulous than the gym’s.
On Dusk, staking isn’t something you can just lock and instantly participate in block production voting. You must first pass a “maturity period.” Each staking record includes the block height at which the stake was added. The system computes the maturity length using a fixed formula. In essence, from the moment you stake, it first fills the remaining portion of the current epoch (one epoch equals 2160 blocks), and then adds an entire new epoch. As a result, any new stake only truly takes effect when the next epoch officially starts—it doesn’t become active the moment you finish staking.
This delayed design is meant to prevent “temporarily spiking voting power with fresh stake.” If stakes became effective immediately, someone could, one second before a critical vote, drop a large amount of money to grab voting power, cast the vote, and then withdraw right away. This loophole is plugged directly by the maturity period. To gain influence, you’d need to have your funds staked for a whole cycle in advance.
The trade-off is also very direct: the period from when funds are staked to when they actually start producing voting power and rewards includes a waiting time where everything is effectively idle. From a capital-efficiency perspective, there is a cost, and you have to weigh security against how efficiently capital is utilized.
$DUSK
#dusk @Dusk