我如何编写一个在计时器上执行的 Solana 程序

How can I write a Solana program that executes on a timer

例如,每月向特定地址发送一次代币或 nft 的程序。

除非 off-chain 参与者提交包含该程序指令的交易,否则不会执行 solana 上的任何程序。 solana 没有固有的计时器机制可以在以后自动执行您的交易。

你可以写一个程序限制一条指令每月只能成功执行一次。该程序可以将当前时间戳与之前的执行进行比较,以检查是否允许现在执行。或者它可以检查自上次执行以来的月数,并转移在该月数后应该可用的适当数量的代币。

此外,您需要考虑提交指令的参与者的激励。普通用户是否已经有理由执行您程序中的某些指令?如果它符合计算预算,您可以将这个月度逻辑与用户经常执行的其他逻辑捆绑在一起。如果没有,那么您需要激励其他人以确保指令被足够频繁地执行。您可以自己每月提交一次交易。或者,您可以将程序设计为向普通用户收取费用,这样它就可以向 运行 执行这些定期指令的曲柄车手支付奖励,这样您就不必这样做了。您还需要让人们知道他们可以通过 运行曲柄获得报酬。

所以,有一些方法可以让事情定期 运行,但你需要发挥创造力才能实现它。有一些有趣的想法建立在我所描述的原语之上,你可以深入这个兔子洞。有人提议多重签名可以在通用的 cron 计时器中发挥作用。与往常一样,这仍然需要有人通过定期向网络提交交易来转动曲柄。 https://github.com/solana-labs/solana/issues/17218