建议和反馈

请填写你的反馈内容

交易所钱包系统搭建流程

2020-06-18 ·5209次阅读 ·读完需要6分钟

1、搭建区块链钱包节点

一、USDT/BTC

(1)搭建BTC/USDT节点并同步数据

git地址:https://github.com/OmniLayer/omnicore,目前该omni版本已支持BTC,不用再单独部署btc节点

 

(2)检查是否同步最新

可参考区块浏览器https://btc.com/,调用omnicore-cli的getblockchaininfo方法检查是否同步到最新高度

 

二、ERC20/ETH

(1)搭建eth节点

git地址:https://github.com/multi-geth/multi-geth/releases

 

(2)检查最新

可参考区块浏览器https://cn.etherscan.com/,使用geth attach接入节点,调用eth.syncing检查是否同步到最新高度;或者使用RPC提供的接口eth_syncing查看。

 

2、搭建交易所钱包系统

 

以现在市面上用的最多的优盾钱包为例:

参考案例:优盾钱包
优盾钱包官网API接口文档:https://www.uduncloud.com/gateway-interface

 

 

至少添加以下几张表

(1)会员钱包表

会员ID、币种、余额、冻结余额、充值地址

 

逻辑1:对应会员地址有充币时,增加对应钱包余额

逻辑2:会员提币时,从余额冻结对应提币数量,待提币成功,扣除对应冻结数量,提币失败,返还对应冻结数量

 

(2)充币记录表

txid、充值地址、会员ID、币种、数量、时间

 

逻辑1:对应会员地址有充值时录入充币类型记录

逻辑2:可根据txid和充值地址判断唯一,防止重复入账

 

(3)提币审核表

提币编号、会员ID、币种、提币地址、提币数量、提币状态、txid、时间

 

逻辑1:会员申请提币时录入待审核记录

逻辑2:审核通过,将会员提币的金额成功发送到链上后,设置为审核成功,记录交易哈希txid

逻辑3:审核拒绝,设置为审核失败

逻辑4:获取交易在区块链的状态,根据状态判断该笔审核交易的成功与失败,成功扣除提币冻结资金、失败则返还

 

(4)支持币种表

币种、币种类型

 

逻辑1:根据支持币种去生成地址

逻辑2:只允许提币支持的币种

 

3、实现充提币对接

生成地址:

(1)在对应部署的区块节点上创建钱包

(2)通过rpc接口进行生成地址

(3)将生成的地址分配给交易所用户的钱包信息中,供用户充值使用

 

充提币处理逻辑:

(1)查询最新区块链最新高度

(2)对比系统已处理的最新高度

(3)假如区块链最新高度大于已处理的最新高度,则处理系统已处理的最新高度加一的高度

(4)查询需要处理的区块信息

(5)查询对应区块的所有交易信息

(6)循环处理该区块的交易信息处理充币

(6-1)过滤已成功的交易

(6-2)查询到账地址是否为系统地址

(6-3)到账是系统地址则可以判断为充币,进行充币逻辑处理

(7)处理提币

(7-1)循环处理交易

(7-2)判断交易哈希是否为系统提币的交易哈希

(7-3)该笔交易状态为成功,则系统处理提币交易成功

(7-4)该笔交易状态为失败,则系统处理为提币交易失败

 

4、指令和调用方式

一、USDT/BTC

指令:

钱包在启动节点时就已经创建,钱包名称默认为"",钱包默认打开,没有锁定操作

例如:在账户recive下创建新的地址

bitcoin-cli getnewaddress "recive"

 

rpc函数调用:

调用方式均为标准的rpc调用方式,请求地址为http://user:password@ip:port,user/password为配置的允许调用rpc的用户名和密码,ip为节点部署的服务器ip,port为配置的支持rpc端口

查询最新高度

{
 "jsonrpc": "2.0",
 "id": 1,
 "method": "getbestblockhash",
 "params": []
}


获取区块相关信息信息


{
 "jsonrpc": "2.0",
 "id": 1,
 "method": "getblock",
 "params": ["5dacf2826896060679267ff7bbf42ecae8313173f405492ec0583ad5737ffb69",true]
}
 
{
 "jsonrpc": "2.0",
 "id": 1,
 "method": "getblockhash",
 "params": [2]
}
 
{
 "jsonrpc": "2.0",
 "id": 1,
 "method": "getblockheader",
 "params": ["e2acdf2dd19a702e5d12a925f1e984b01e47a933562ca893656d4afb38b44ee3", true]
}



获取交易详情

{
 "jsonrpc": "2.0",
 "id": 1,
 "method": "getrawtransaction",
 "params": ["e2acdf2dd19a702e5d12a925f1e984b01e47a933562ca893656d4afb38b44ee3"]
}
 
{
 "jsonrpc": "2.0",
 "id": 1,
 "method": "gettxout",
 "params": ["e2acdf2dd19a702e5d12a925f1e984b01e47a933562ca893656d4afb38b44ee3", 1]
}


发送交易

{
 "jsonrpc": "2.0",
 "id": 1,
 "method": "sendrawtransaction",
 "params": ["signedhex"]
}

 

二、ERC20/ETH

指令:

运行节点时,钱包已经创建,只需要创建账户即可!所以操作需要使用 geth attach 接入节点


# 列出当前账户
eth.accounts
# 创建账户
personal.newAccount()
#解锁账户(资金来源的账户)
personal.unlockAccount(eth.accounts[0])
#锁定账户(资金来源的账户)
personal.lockAccount(eth.accounts[0])


rpc函数:

官方文档链接https://github.com/ethereum/wiki/wiki/JSON-RPC#net_version

常用rpc函数:

查询最新高度

查看区块个数

{
 "jsonrpc": "2.0",
 "id": 1,
 "method": "eth_blockNumber",
 "params": []
}

 

根据区块hash获取区块信息

{
 "jsonrpc": "2.0",
 "id": 1,
 "method": "eth_getBlockByHash",
 "params": ["0x13d796b3485a49b1ff9654638a2be8f61a617d14df676a0613c70716c353f1e7", true]
}

 

根据区块高度获取区块信息

{
 "jsonrpc": "2.0",
 "id": 1,
 "method": "eth_getBlockByNumber",
 "params": ["0x1", true]
}

 

获取交易详情

{
 "jsonrpc": "2.0",
 "id": 1,
 "method": "eth_getTransactionByHash",
 "params": ["0x9428ea6b8cc11b996625be6e04ae99b1e460a3cdf2ade9184ebf3026c2dc81c4"]
}

 

发送交易

{
 "jsonrpc": "2.0",
 "id": 1,
 "method": "eth_sendTransaction",
 "params": [{
  "from": "0x81a8d02cfd1db2cc781940f361d301edc11b978c",
  "to": "0xed45bbb0c75a23b82304d77ad551f9d5d46b046a",
  "value": "0xDE0B6B3A7640000"}]
}

 

发送签名交易

{
 "jsonrpc": "2.0",
 "id": 1,
 "method": "eth_sendRawTransaction",
 "params": ["0xf8610180825208941e4abf25b8f6d692e079cc60cebbb12e908553c48203e8801ba0d1012ee33405ee58d68837fd4bad6632d5d5f7070b9eb6312b60428c21e7e41aa025f99c502f134a15ad6b0c55256375800799e2e833e986598a4144d9d80a3f50"]
}

 

声明:作为区块链技术信息平台,本站所提供的资讯信息不代表任何投资暗示,本站所发布文章仅代表个人观点,与链客社区官方立场无关。
评论(0)问答(0)
请先登录或注册

请先登陆或注册

相关推荐

理解闪电网络:构建网络

Alice 想要给一个第三方 Carol 支付 1 btc。一般来说,Alice 和 Carol 需要在彼此之间开设一个支付通道。但实际上并不需要。因为 Bob 和 Carol 之间已经有了一个通道,......
链客 · 2021-07-27
322阅读 · 0赞赏 · 0问答

如何透过数据投资 NFT 赛道?

目录数据定量分析框架横向数据 - 时间维度纵向数据 - 同类比较颗粒数据 - 细分指标代币数据 - 投资机会研究定性分析逻辑实用性所有权历史流动性发现价值 捕获价值市场总量排行榜元数据搜索巨鲸追踪项目......
链客 · 2021-07-26
382阅读 · 0赞赏 · 0问答

5G要与区块链技术相融合

最新数据显示,目前我国累计开通5G基站96.1万个,截至6月底已覆盖全国所有地级以上城市,5G终端连接数约3.65亿户。随着网络普及,5G融合应用也处于规模化发展的关键期,还需各方共同努力,打好“团体......
链客 · 2021-07-26
257阅读 · 0赞赏 · 0问答

波卡是公链吗?波卡与元协议究竟有什么关系?

随着区块链的快速发展和创新,波卡生态也逐渐吸引了更多人的关注,很多人在说起波卡的时候都会提到波卡的“跨链、可扩展性、区块链网络……”,但这只是波卡正在做且想要做的一部分,它对区块链的创新远远超过这些单......
链客 · 2021-07-06
638阅读 · 0赞赏 · 0问答

科普:什么是密码经济?

5月20日17:00,知密大学发起人、Freecash发起人昌用老师受邀在PlatON中文Telegram群参加快闪活动,向社区成员分享了密码经济的相关知识,全文内容如下:我今天还是讲讲这几年来一直和......
链客 · 2021-06-23
678阅读 · 0赞赏 · 0问答

三分钟搞懂 ERC-20 和 ERC-721 的不同

我们经常会在业内媒体报道上看到“ERC-20”这个词,它是以太坊上的一种标准协议。除了ERC-20,以太坊上的另一个较多数人听说过的协议是ERC-721。虽然听说过,但很多人依然不了解这两个协议究竟是......
链客 · 2021-06-22
899阅读 · 0赞赏 · 0问答

链客

332138.0

LK币

-2

粉丝

572

笔记

感谢"链客"

这篇精彩的笔记,目前已经帮助

  • 0
  • 5
  • 2
  • 0
  • 9
喜欢0
链客社群 加入

微博进入

商务合作>

广告投放>

公司名称:北京链客行科技有限公司

联系方式:010-67707199

ICP备案号:京ICP备18032136号

Copyright:链客区块链技术问答社区 版权所有

感谢您的提问,问题被社区永久收入以便新人查看。一定要记得采纳最佳答案哦!加油!

感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励

您将赞赏给对方2LK币的奖励哦!感谢您的赞赏!

您将赞赏给对方2LK币的奖励哦!感谢您的赞赏!