usdt转入转出出入金开发

比特币协议 -> Omni 层协议 -> USDT
USDT是基于比特币omni协议的一种代币: https://omniexplorer.info/asset/31 ID是31

Tether(USDT 的发行方)的官方钱包已关闭注册,无法注册钱包就无法获得 API Key,也就意味着无法实现类似基于钱包接口的开发方案,但我们可以基于 USDT 的底层协议(叫做 Omni 层协议)进行开发

USDT 的协议结构从底层到顶层大致是:「比特币协议 -> Omni 层协议 -> USDT」,也就是说,USDT 是基于比特币的一种代币(token);
另外USDT也出了最新的以太坊(ERC20 标准)版本,但发行量和流通量都太小,所以还是基于比特币 Omni 层协议的经典USDT。

可以安装并运行一个 Omni Core 节点客户端,然后利用其提供的 RPC 接口,实现我们 USDT 出入金所需的代币发送、接收等功能。

调用时http响应时间默认设置3秒超时会失败,实际已转出成功,需要改成10秒或更长后才可以正常接收到返回状态。

usdt基于btc的,所以钱包里转入转出都需要通过比特币链上操作都需要btc手续费,这也是很多交易所有最低充值额度的限制的原因。

=========================
usdt有单独节点,一般是用bitcond源码搭建的
如果自己搭建了节点看下面这个文档就可以搞定了
怎么搭建节点,github上有的。
https://github.com/OmniLayer/omnicore/blob/master/src/omnicore/doc/rpc-api.md#omni_send
这个是usdt rpc调用提供的命令文档。

自己不搭建节点需要另外开发?
自己不搭建节点就需要依赖三方平台,这样不安全。

==================

importprivkey 出金之前需要把 address and privKey import to node
call rpc : importprivkey pls
usdt node 提供的命令。
文档上有说明。

importprivkey 就是个rpc命令,你call下就可以了,参数就是address和privKey, 也许你们node不需要,
如果你刚才出金成功了,就ok,没有成功,就call importprivkey 下

Usdt 出金 是个from to的形式,如果出金地址固定,就不用知道from, to是必须要指定的。
deposit: 扫描区块,如果发现 to

to地址如果是存在你们的db中,就需要处理deposit的数据。
deposit 指的是入金。
扫描区块的时候,blocknumber->blockHash->txHash->tx Details.
其中details就是json字符串,里面就有from to的地址,然后判断to地址是否存在db中,说明别的平台向你们平的to地址有入金。

出金: 平台必须有个出金总地址addr,所有的出金都是从addr扣取。
扫描区块的时候,blocknumber->blockHash->txHash->tx Details. 其中details就是json字符串,里面就有from to的地址,然后判断to地址是否存在db中,说明别的平台向你们平的to地址有入金。

入金是要扫描区块的,去分析交易详情,发现有个to地址,要判断这个to地址是不是你们平台的,如果是的,说明这次交易就是你们自己平台的地址在入金,所以这个交易详情需要入库。

中心钱包按照一定的百分比条件转钱给冷钱包。 如果出金总地址余额不够了,就要从热钱包转账给出金总地址。
现金流监控有个策略的。

转账上链就必须要扣除手续费, to地址有N多个,你要写个算法以最少的手续费转给冷钱包。
中心钱包, 出金钱包, 热钱包, 冷钱包 四个钱包按照策略比例相互转。先要把这四个钱包概念弄清楚。

要分平台内出金还是平台外,平台外出金上链扣手续费,平台内直接划账
地址存db, 没有导入到钱包,实现方式可以不一样

用户地址对应公链上的余额是转到冷钱包地址
用户看到的余额是用户账号对应db中的余额,用户地址对应公链的余额用户没有实际的转账权限,不能到外部平台转账,只能在自己平台转账。
就是像中心钱包到了,钱包冷,钱包之间相互转,这个你是必须要上链的,上链要手续费,这个余额是钱包的余额。
如果是平台内转账,那是你这个平台内的。一个是钱包的余额。一个是一个用户在你这个平台申请个账号,你给他分配的余额,这是两个不同的余额。
子钱包充值进来的都是链上的余额转账都需要通过链上,需要手续费。比特币的最佳手续费有第三方api接口可以动态获取。
usdt钱包里的币要转出到大钱包需要先转点btc进去做手续费才能转账,转多少进去合适需要看代码和策略。

-------------------------
交易所,要出金的时候,importprivkey, 出金完了,能把privkey删除掉吗?
其他币种也是这么操作的?像ETH用什么RPC ?

只有usdt需要import
eth使用web3j组件就可以了

那BTC的处理,和USDT一样吧?

不需要删除

不删除,那不就成了热钱包了吗?

btc用的是bitcoinj
importprivkey 只是node提供的rpc命令,

并不会把privkey存储到wallet.dat中? 命令执行完, 就会自动删除?
下次执行,还需要import ?

import一次就可以了

跟自己直接在node上创建的账户差不多
你们只是在另外一个node 或者工具上创建了账号,并保存在数据库中,真正要转账时,把它import到节点上
这不是真正的离线签名吧?

就是你说的这样
离线签名是先算出交易签名,然后再广播出去
地址这块你们实现跟我实现的不一样,我用的是地址派生,根据userid派生
只有usdt在创建地址的时候会import到node

usdt转入转出出入金开发的更多相关文章

  1. usdt钱包开发,比特币协议 Omni 层协议 USDT

    usdt钱包开发 比特币协议 -> Omni 层协议 -> USDT USDT是基于比特币omni协议的一种代币: https://omniexplorer.info/asset/31 I ...

  2. EAGO科技人工智能+澳洲MSPL外汇平台招商

    天下财经 首席运营商 EAGO外汇人工智能简介:我们将历史数据导入算法引擎,加入因子(外汇中使用的各种技术指标及各个国家的货币政策等)让计算机通过二元遗传基因.深度神经网络等算法,由机器自主深度学习. ...

  3. 算法型稳定币USDN是如何保持稳定的?

    数据显示,2019年稳定币市场总市值25亿美元,在整个加密货币市场占比 1.3%.可别小瞧了看似微小的1.3%这个数据,它其实是一个庞大的市场.稳定币不仅仅是货币的电子化,它还是一种可编程的加密货币, ...

  4. AngularJS +HTML Demo

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...

  5. WPF+通过配置文件生成菜单(Menu)+源码

    这个月做项目,遇到过一个通过配置文件来生成菜单的解决方案,感觉挺优雅的,特地放到博客园来,以飨读者. 说来惭愧,以前做的项目都没有这样用过,都是固定死了.如果后续有需要加入菜单,还得在重新修改UI,然 ...

  6. j2ee分布式缓存同步实现方案dlcache v1.0.0

    现成的分布式K/V缓存已经有很多的实现,最主要的比如redis,memcached,couchbase.那为什么我们还要自己去实现呢,在我们解决了分布式系统下大量rpc调用导致的高延时后,我们发现很多 ...

  7. 2016iweb峰会参会总结

    2016年8月27日去国家会议中心参加iweb峰会. 8点半开始签到入场,8点20分排队签到的人已经排到另一个门口,人超级多啊. 9点一如既往的由h5女神娜姐开场. 上午场 基本是各公司的大佬们介绍各 ...

  8. j2ee分布式缓存同步实现方案dlcache

    现成的分布式K/V缓存已经有很多的实现,最主要的比如redis,memcached,couchbase.那为什么我们还要自己去实现呢,在我们解决了分布式系统下大量rpc调用导致的高延时后,我们发现很多 ...

  9. AJPFX的资金安全性

    AJPFX承诺保证客户资金安全,并严格按照英国的相关规章制度从事经营活动.客户资金存放于投资级银行的独立账户中.通过实行公司资产与客户资金分别保管,在发生无偿债能力的罕见情况下,客户可获退还独立存放资 ...

随机推荐

  1. 并发编程---线程---开启方式---进程线程的区别----Thread的其他属性

    线程 进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合)而线程才是cpu上的执行单位 1.同一个进程内的多个线程共享该进程内的地址资源 2.创建线程的开销远小于创建进程的开销(创建一 ...

  2. Java的HashMap是如何实现的?

    以下内容转自:http://blog.csdn.net/vking_wang/article/details/14166593 1. HashMap的数据结构 数据结构中有数组和链表来实现对数据的存储 ...

  3. 【1】vue/cli 3.0 脚手架 及cube-ui 安装

    安装 Vue CLI 需要 Node.js 8.9 或更高版本 (推荐 8.11.0+).你可以使用 nvm 或 nvm-windows在同一台电脑中管理多个 Node 版本. 检查node版本: $ ...

  4. 列表 list 容器类型数据(str字符串, list列表, tuple元组, set集合, dict字典)--->元组 tuple-->字符串 str

    # ### 列表 list 容器类型数据(str字符串, list列表, tuple元组, set集合, dict字典) # (1)定义一个列表 listvar = [] print(listvar, ...

  5. Spark log4j日志配置详解(转载)

    一.spark job日志介绍    spark中提供了log4j的方式记录日志.可以在$SPARK_HOME/conf/下,将 log4j.properties.template 文件copy为 l ...

  6. PS教程:如何批量处理图片

    1.我们先准备两个文件夹,一个用来装你要处理的图片,可以是几百上千张,另一个是空文件夹,用来装等下处理好的图片. 2.打开PS,打开未处理文件夹里的任何一张图片. 3. 在红圈中点击,新建一个动作. ...

  7. fullpage插件在移动端弹出键盘页面特殊处理

    fullpage插件大家都很熟悉 jquery一款全屏上下滑动的插件. 最近做公司一个活动移动端使用fullpage插件填写input的时候遇见一个问题,手机自带的键盘弹出的时候会把页面顶出去,页面错 ...

  8. mybatis之接口绑定

    接口绑定方案 mybatis中,提供了一套接口绑定方案,程序员可以提供一个接口,然后提供对应接口的一个mapper.xml文件.MyBatis会自动将接口和xml文件进行绑定.实际上就是mybatis ...

  9. node.js初识05

    小项目,需求,通过url来查询学生学号和老师的编号 05.js var http = require("http"); var server = http.createServer ...

  10. C++二进制字符串转Base64字符串 Base64字符串转二进制字符串

    封装成类的 . base64格式的字符串,只包含大小写字母.零到九,以及 + / //___base_64.h /*base_64.h文件*/ #ifndef BASE_64_H #define BA ...