solana 功能求解

26 天前
 channg01
假设我的网站增加了一个功能,可以用我网站的积分兑换 V2EX 币,用户点击按钮,我后端构建交易内容,前端弹出 phantom 钱包的交易,比如说他有 200 积分兑换了 200V2ex ,然后用户支付 ADA 和 gas 就可以兑换了。

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

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

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

这个有什么好的解法吗?
1359 次点击
所在节点    Solana
19 条回复
JoeJoeJoe
26 天前
不用其实, 站长提供了一个 api 地址, 可以通过回调来分析用户真正打款了没, 只有收到用户的打款你再执行你的业务逻辑就好, 等我找找站长的地址一会贴给你
channg01
26 天前
@JoeJoeJoe #1 V2EX 币只是我举例,其实我要兑换的是其他的代币
JoeJoeJoe
26 天前
@channg01 一样的, 站长提供的是 Helius 的 api, 你可以看一下

via: https://v2ex.com/t/1151386#r_16606232
channg01
26 天前
@JoeJoeJoe #3 我知道,但是现在只有轮训检测这一种方式,想看看有没有其他的方式。
stabc
26 天前
给用户转币不需要用户签名,也就是不需要弹 phantom
BeCool
26 天前
前端可以得到支付完成的 tx ,用户取消时是得不到这个 tx 的。
即使得到 tx ,也要在后端去 check 这个记录是否在链上。
https://v2ex.com/t/1151332
JoeJoeJoe
26 天前
@channg01 #4 我又突然想到一种方法, 如果仅仅是用户前端点了取消的话, 你的前端界面是可以监听到的

ps: 我觉得你可能得画个图来理理交互逻辑.
channg01
26 天前
@stabc #5 我要让用户自己支付 ata 和 gas要不然一个 ata2 块多钱呢
channg01
26 天前
@channg01 #7 打错了 ADA
channg01
26 天前
@BeCool #6 用户关了页面再点钱包的确认不就芭比扣了吗
channg01
26 天前
@JoeJoeJoe #7 想简单了,原来这个逻辑挺复杂的。

其实就是 V2EX 的金币兑换 V2EX 币的功能,因为涉及到 ADA 和 gas 所以才需要让用户去签名支付,有钱的话直接服务端出了这个费用就没事了。

当然轮训也没事,只是复杂了一些,还浪费 rpc
JoeJoeJoe
26 天前
@channg01 #10 我有一计, 前端点击的时候, 你跟后端发条通知, 让后端等 1 分钟或者多久去检查下 tx, 如果前端能拿到结果, 就取消这个 check, 如果出现你那种情况的话, 就以后端校验为准
channg01
26 天前
@JoeJoeJoe #12 基本上最简单的就这种了,做一个订单列表,默认交易成功,用户可以去订单列表检查是否成功,失败就还回去积分,哥们也要做这种需求吗?
JoeJoeJoe
26 天前
@channg01 #13 最近在研究 web3 的东西, 看了下 livid 的回复, 打算跟着站长规划的路径做点配套

ps: 安利两个文档:
https://solana.com/zh/docs
https://www.solanazh.com/
channg01
26 天前
@JoeJoeJoe #14 我都 ai 写的,我只提供思虑
BeCool
26 天前
@channg01
所以通常后端要有一个定时任务来检查收款钱包收到的转账进行对账。根据地址或者 memo 里的信息再做处理。
lyric
26 天前
后端生成一个 tx ,前端签名然后发送它,把签名发回后端,后端轮询校验这个签名的有效性。这个 tx 如果一段时间不支付,这个 tx 就会失效,轮询时间窗口不会太长。
channg01
25 天前
@lyric #17 感谢,大概就是用的这个方法,不过具体是后端部分签名发给前端,前端继续部分签名再发给后端,后端上链就能获得 tx 了。后端直接用这个 tx 去查询就行了。
lyric
25 天前
@channg01
嗯 是这个意思。前端发到链上或者后端发链上都行。多发也没关系

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1152901

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX