以太坊(eth)交易所钱包开发 - 4 - 提币
文章目录
我们需要有一个数据表来保存用户的提币请求和处理状态,基本数据内容如下:
id | 提币地址 | 提币金额 | 提币序列号 | 提币状态 |
---|---|---|---|---|
1 | 0xa | 0.11 | c39b6ff7-b787-41a5-a3e5-d086c80acd3c | 0 |
2 | 0xb | 0.12 | c39b6ff7-b787-41a5-a3e5-d086c80acd3d | 0 |
3 | 0xa | 0.08 | c39b6ff7-b787-41a5-a3e5-d086c80acd3e | 0 |
4 | 0xc | 0.17 | c39b6ff7-b787-41a5-a3e5-d086c80acd3f | 0 |
数据表结构具体如下:
|
|
之后我们需要一个热钱包,这里面储存着部分资产用于转账给用户。
生成提币交易
这部分功能的大概流程是:
- 获取热钱包地址和热钱包私钥
- 获取热钱包余额
- 获取gasPrice
- 获取待处理提币条目
- 判断热钱包余额是否足够提币
- 获取热钱包nonce
- 创建提币交易
- 将创建的交易插入待发送队列
- 更改提币条目状态为已生成提币交易
这部分的功能代码基本上在上一篇 以太坊(eth)交易所钱包开发 - 3 - 零钱整理 中都有体现。
发送提币交易
这一部分流程和零钱整理中的相似,只不过在处理完成后需要找到对应的提币条目,更改其状态为已发送
检测提币交易是否已打包
这一部分流程和零钱整理中的相似,只不过在处理完成后需要找到对应的提币条目,更改其状态为已到账
具体实现的代码已经传到了github https://github.com/moremorefun/go-dc-wallet
功能入口在
cmd/eth_withdraw/main.go
cmd/eth_raw_tx_send/main.go
cmd/eth_raw_tx_confirm/main.go
文章作者 hao
上次更新 2020-04-20