我正在编写一个应用程序,用户可以在该应用程序中存入APT硬币并获得积分。所以,我必须100%确定用户已经将APT转移到托管,以便给他积分。我想做的是使用用户钱包在客户端签署转账交易,并将签名发送到服务器,在那里验证交易并提交到区块链。如果一切正确,用户将在应用程序上获得积分。我的问题是,我如何在后端提交已经签署的交易,并验证它是否将硬币转移到托管账户?
我已经尝试在客户端对事务进行签名,并向服务器发送签名缓冲区。然后我想使用AptosClient.submitTransaction((,但它不起作用。
与其尝试在服务器端提交交易,不如在合同端(甚至后端(做一些事情来确保他们已经存款:
- 当用户托管硬币时,在用户帐户上的合同中发出一个事件,并让后端服务器检查他们的帐户
- 运行索引器,并以这种方式检查预期的交互
如果您将他们签名的txn发送到您的后端,您将面临用户在向后端发送签名txn之后/期间完成另一个txn的竞争条件,这会增加用户seq_no,从而使之前签署的txn无效