实现中心钱包系统 (交易所中心钱包)

交易所是如何给你分配地址的,如果检测你充币的,如何有让你提币的,这篇文章给你答案。


很多业务上去中心化的应用上,需要很多中心化的管理,例如交易所,每秒交易量非常大,这都是 比特币,以太坊的网络办不到的。所以才会在去中心化的应用上 进行中心化的管理(市面上大多交易所并不是完全去中心化的),希望eos得到来可以解决这一痛点

再例如一个游戏,每秒进行达不到需求级别,也应该采用去去中心化的进行模式(例如以太坊合约),中心化的资金管理。只有充币提币的时候在链上进行 其他都是一个虚拟的金额对,对应你的真实金额

游戏

做一个dapp的同时你应该考虑,有些东西是否真的需要去中心化。例如一个博客、论坛 去中心化是完全没必要的

先简单的设计一下我们需要的业务方式。

用户充币 -- >  钱进入分配地址 --> 分配地址转入主钱包 -->  用户提币 --> 从主钱包直接转入用户提币地址

(如果采用冷热钱包配合,只需将百分之二十资金留在热钱包便可供日常提币) 具体的架构设计应根据业务来判断,有些钱包的做法是 用户充的币留在原钱包里

转账进主钱包的时候 以太币可以 采用 (用户转入金额除开手续费全部转入中心钱包),但是更推荐的做法是 用户第一次注册时 为用户钱包转入一定的手续费

 接下来来看一下具体的实现它

首先根据 咱们设计的业务 主要点是 检测用户的充币, 用户提币 转出, 转币进入 中心钱包。除开 涉及区块链的业务,架构设计方面的,其他就比较简单了。咱们来看一下具体实现

先实现 用户创建账号时  分配账号


检测eth 充值,和erc20代币充值 方式有些差别,因为eth代币 没有地址,是以太坊内部货币,erc20代币可以进行检测币种合约来进行

下面讲一下erc20代币检测具体实现逻辑:

检测代币地址 可以获得此代币所有的 交易信息,下面的连接为 api连接,startblock 为开始区块  endblock为结束区块  可以5分钟监控一次,一次监控20个块,以太坊是15秒出一个块 

信息里 from 为转账地址 to 为合约地址, 然而接收地址和代币数量呢?在input里,第一个参数是接受地址,第二个参数是 代币数量,代币数量在后边64位  是16进制的,转成10进制,除开代币精度就是转币的数量

接收地址怎么获得呢,从 后边除开64位以后 在40位 就是接收地址。然后把接受地址对比 自己 用户的账号地址就可以了。然后在做一些中心化的处理, 余额加减了啊等等

http://api-ropsten.etherscan.io/api?module=account&action=txlist&address="+contractAddress+"&startblock="+startblock+"&endblock="+endblock+"&sort=asc&apikey=YourApiKeyToken

实例:


下面检测eth代币:

eth代币 我们从块中分析,获取 一个块里的所有交易, 然后分析所有转账value 不为0的交易(为0没必要检测,不存在数值变化),然后 从获得的所有交易数据中比对 和自己用户地址相同的  下面的blockNumber

是16进制的 。应把十进制的数字转成16进制的获取交易

https://api-ropsten.etherscan.io/api?module=proxy&action=eth_getBlockByNumber&tag=0x"+blockNumber+"&boolean=true&apikey=YourApiKeyToken


用户提币的时候 要考虑nonce , 本地nonce和线上nonce比对,如果本地比线上少 就同步成为线上的


转账 eth 和转账 erc20代币也不同 web3j 百度有很多方法,下面贴出来例子吧 逻辑都是先签名,在发送进网络

eth转账(项目里是 由keystore 文件里获取私钥,用私钥来签名) :


erc20代币转账:


注意 转账 和提币的nonce差别

接下来改些配置文件作为项目的开始吧


项目初次运行 把错误的全部配置就行了, 还有一个地方要注意,就是 用户信息通知, 发送 短信验证码,和邮箱验证码


接口文档地址 访问密码 skyhuihui

https://www.showdoc.cc/web/#/128880456266091?page_id=735603450466975

github 代码地址

https://github.com/skyhuihui/exchange.git

如果您想支持我 可以像我的地址上转一些以太币 0x2207358972e37f663a5480dbaa09715e8b0fc4ff,什么你只有新潮的eos 没有以太币,放心放心,eos地址我也有 eosskyhuihui

算了开玩笑的了,哈哈, 您的转发就是对我最大的支持。

猜你喜欢

转载自blog.csdn.net/qq_37527715/article/details/82258085