提币功能的实现

之前已经写好了send raw transaction的模块,链上操作就复用之前写好的代码,本篇主要描述提币的链下逻辑。

按步骤来:

1. 提币从用户发起请求开始,后端收到请求创建一个待确认提币请求记录,发送验证信息给用户,等待确认;

2. 用户收到确认信息,确认状态发回后端,后端通过确认状态,标记对应提币请求记录为已确认,加入到提币请求队列;

3. 定时任务给提币队列里的记录转账,返回的tx hash写入对应的记录里,并标记打包中,加入到打包队列;

4. 定时任务检查打包队列里的记录,通过tx获取transaction状态,

    json = $eth_client.get_transaction_receipt tx

    这里返回的json,如果json["result"]返回nil,表示这条transaction还没被以太坊网络处理;返回了result = json["result"],result["blockNumber"].to_i(16) > 0表示已经写入链上的节点编号;result["status"].to_i(16) == 1表示交易正常,否则交易失败,失败的交易不会扣余额,但是已经用掉的gas不会被退回;如果需要记录确认数,这里只能用获取当前区块链高度的接口($eth_client.block_number["result"].to_i(16)),减去result["blockNumber"]。

 

第4步结束,每条记录都会得到对应的状态,再写个处理失败记录的脚本进行容错,提币的模块就写好了,做起来是没什么难度的,逻辑也比较简单。至于交易所里下单,结算等交易逻辑,目前互联网里的经验很丰富了,我的解决方案估计说出来也挺low的,没什么价值,就不写成博客了。至此,一个支持交易ETH的交易所就可以运行了,下一篇会写关于ERC20的充值提币。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值