solana 功能求解

channg01 · 2025-8-16 22:23:51 · 1924 次点击
假设我的网站增加了一个功能,可以用我网站的积分兑换 FSHEX 币,用户点击按钮,我后端构建交易内容,前端弹出 phantom 钱包的交易,比如说他有 200 积分兑换了 200V2ex ,然后用户支付 ADA 和 gas 就可以兑换了。

但是用户可以点击取消,那么我怎么知道这个交易有没有完成呢?必须通过轮训吗?

很明在用户点击的时候我应该冻结对应的积分,但是我不知道啥时候需要解冻。

phantom 的交易页面还可以一直挂起,虽然时间长之后区块错了会报错。但是我不知道交易最终结果。

这个有什么好的解法吗?
举报· 1924 次点击
登录 注册 站外分享
17 条回复  
lyric 初学 2025-8-16 23:20:21
后端生成一个 tx ,前端签名然后发送它,把签名发回后端,后端轮询校验这个签名的有效性。这个 tx 如果一段时间不支付,这个 tx 就会失效,轮询时间窗口不会太长。
BeCool 初学 2025-8-16 23:06:06
@channg01 所以通常后端要有一个定时任务来检查收款钱包收到的转账进行对账。根据地址或者 memo 里的信息再做处理。
channg01 楼主 小成 2025-8-16 22:54:53
@JoeJoeJoe #14 我都 ai 写的,我只提供思虑 https://i.imgur.com/duWRpIu.png
JoeJoeJoe 初学 2025-8-16 22:46:10
@channg01 #13 最近在研究 web3 的东西, 看了下 livid 的回复, 打算跟着站长规划的路径做点配套 ps: 安利两个文档: https://solana.com/zh/docs https://www.solanazh.com/
channg01 楼主 小成 2025-8-16 22:42:46
@JoeJoeJoe #12 基本上最简单的就这种了,做一个订单列表,默认交易成功,用户可以去订单列表检查是否成功,失败就还回去积分,哥们也要做这种需求吗?
JoeJoeJoe 初学 2025-8-16 22:41:01
@channg01 #10 我有一计, 前端点击的时候, 你跟后端发条通知, 让后端等 1 分钟或者多久去检查下 tx, 如果前端能拿到结果, 就取消这个 check, 如果出现你那种情况的话, 就以后端校验为准
channg01 楼主 小成 2025-8-16 22:40:56
@JoeJoeJoe #7 想简单了,原来这个逻辑挺复杂的。 其实就是 FSHEX 的金币兑换 FSHEX 币的功能,因为涉及到 ADA 和 gas 所以才需要让用户去签名支付,有钱的话直接服务端出了这个费用就没事了。 当然轮训也没事,只是复杂了一些,还浪费 rpc
channg01 楼主 小成 2025-8-16 22:37:09
@BeCool #6 用户关了页面再点钱包的确认不就芭比扣了吗
channg01 楼主 小成 2025-8-16 22:36:27
@channg01 #7 打错了 ADA
12下一页
返回顶部