如何创建质押智能合约?
How to create a staking smart contract?
我是智能合约的新手,但想在 Solana 中创建一个简单的股权合约。
但是不明白我什么时候需要更新每个用户的奖励计数器?因为合约与写入帐户交互,只有当用户为此付费时。但在所有质押协议中,我们都可以看到质押后的奖励计数。这怎么行?
以及如何一次更改 APY?
我只发明了一种方法——在链下程序中保存计数器,但我认为这种方法不对
很多这更多的是设计,但有一些建议:
But can't understand when I need to update a reward counter per user?
您不一定需要一直更新。事实上,许多质押协议会跟踪用户上次支付奖励的时间,但在用户尝试退出之前不会实际更改值。对于前端,你只需要根据用户的位置进行动态计算。
您可以通过查看协议的源代码找到更多有趣的信息。例如,Orca 的合约基于 SPL 的代币交换:https://github.com/solana-labs/solana-program-library/tree/master/token-swap
否则,https://github.com/solana-labs/solana-program-library/tree/master/farms
上有更多通用客户端和代码可能会引起您的兴趣
智能合约没有这样的计时器,所以不可能自动更新状态。换句话说,奖励状态应该通过手动触发函数来更新。
在质押合约中,用户可以通过使用自己的私钥签名来调用更新或领取奖励的功能。
最好的例子是 orca.so github repo(https://github.com/orgs/orca-so)。 Orca 是 solana 上成功的 AMM 交易所之一,您可以在那里获得所有必要的代码片段。
我是智能合约的新手,但想在 Solana 中创建一个简单的股权合约。 但是不明白我什么时候需要更新每个用户的奖励计数器?因为合约与写入帐户交互,只有当用户为此付费时。但在所有质押协议中,我们都可以看到质押后的奖励计数。这怎么行? 以及如何一次更改 APY?
我只发明了一种方法——在链下程序中保存计数器,但我认为这种方法不对
很多这更多的是设计,但有一些建议:
But can't understand when I need to update a reward counter per user?
您不一定需要一直更新。事实上,许多质押协议会跟踪用户上次支付奖励的时间,但在用户尝试退出之前不会实际更改值。对于前端,你只需要根据用户的位置进行动态计算。
您可以通过查看协议的源代码找到更多有趣的信息。例如,Orca 的合约基于 SPL 的代币交换:https://github.com/solana-labs/solana-program-library/tree/master/token-swap
否则,https://github.com/solana-labs/solana-program-library/tree/master/farms
上有更多通用客户端和代码可能会引起您的兴趣智能合约没有这样的计时器,所以不可能自动更新状态。换句话说,奖励状态应该通过手动触发函数来更新。 在质押合约中,用户可以通过使用自己的私钥签名来调用更新或领取奖励的功能。 最好的例子是 orca.so github repo(https://github.com/orgs/orca-so)。 Orca 是 solana 上成功的 AMM 交易所之一,您可以在那里获得所有必要的代码片段。