用 Ruby 买卖Bitcoin: 闪兑交易所 Exincore
方案一: 通过ExinCore API进行币币交易
Exincore 提供了基于Mixin Network的币币交易API.
你可以支付USDT给ExinCore, ExinCore会以最低的价格,最优惠的交易费将你购买的比特币转给你, 每一币交易都是匿名的,并且可以在区块链上进行验证,交易的细节只有你与ExinCore知道!
ExinCore 也不知道你是谁,它只知道你的UUID.
预备知识:
你先需要创建一个机器人, 方法在 教程一.
安装依赖包
正如教程一里我们介绍过的, 我们需要依赖 mixin-bot, 你应该先安装过它了, 这儿我们再安装 easy-uuid, msgpack 两个软件包.
gem install msgpackgem install easy-uuid
复制代码
充币到 Mixin Network, 并读出它的余额.
ExinCore可以进行BTC, USDT, EOS, ETH 等等交易, 这儿演示如果用 USDT购买BTC 或者 用BTC购买USDT, 交易前,先检查一下钱包地址! 完整的步骤如下:
- 检查比特币或USDT的余额,钱包地址。并记下钱包地址。
- 从第三方交易所或者你的冷钱包中,将币充到上述钱包地址。
- 再检查一下币的余额,看到帐与否。(比特币的到帐时间是5个区块的高度,约100分钟)。
请注意,比特币与USDT的地址是一样的。
if cmd == "aw"assetsInfo = walletAccount.read_assets()p "--------The Wallet Assets List-----------------"assetsInfo["data"].each { |x| puts x["symbol"] + " " +x["balance"] + " " + x["public_key"] +x["account_name"] + " " + x["account_tag"]}p "----------End of Wallet Assets --------------"
end
复制代码
查询ExinCore市场的价格信息
如果来查询ExinCore市场的价格信息呢?你要先了解你交易的基础币是什么,如果你想买比特币,卖出USDT,那么基础货币就是USDT;如果你想买USDT,卖出比特币,那么基础货币就是比特币.
if cmd == "8"Utils.ExinCoreMarketPriceRequest(USDT_ASSET_ID)
end
if cmd == "9"Utils.ExinCoreMarketPriceRequest(BTC_ASSET_ID)
enddef self.ExinCoreMarketPriceRequest(asset_id)full_url = "https://exinone.com/exincore/markets?base_asset=" + asset_idp full_urldata = HTTP.get(full_url).bodybody = ""redData = data.readpartialwhile redData != nilbody = body + redDataredData = data.readpartialendresult = ActiveSupport::JSON.decode(body).with_indifferent_accessresult["data"].each { |x|puts x["exchange_asset_symbol"] + "/" + x["base_asset_symbol"] + " " +x["price"] + " " + x["minimum_amount"] + " " + x["maximum_amount"] +" " + x["exchanges"][0]}
end
复制代码
交易前,创建一个Memo!
在第二章里,基于Mixin Network的Ruby比特币开发教程: 机器人接受比特币并立即退还用户, 我们学习过退还用户比特币,在这里,我们除了给ExinCore支付币外,还要告诉他我们想购买的币是什么,即将想购买的币存到memo里。
memo1 = Base64.encode64(MessagePack.pack({
'A' => UUID.parse(USDT_ASSET_ID).to_raw
}))
memo = memo1.sub("\n","")
复制代码
币币交易的完整流程
转币给ExinCore时,将memo写入你希望购买的币, 这个memo别错了,否则,ExinCore需要人工操作来退币! 如果你想卖出比特币买入USDT,调用方式如下:
const EXIN_BOT = "61103d28-3ac2-44a2-ae34-bd956070dab1";
const BTC_ASSET_ID = "c6d0c728-2624-429b-8e0d-d9d19b6592fa";
const EOS_ASSET_ID = "6cfe566e-4aad-470b-8c9a-2fd35b49c68d";
const USDT_ASSET_ID = "815b0b1a-2764-3736-8faa-42d694fa620a";
if cmd == "5"memo1 = Base64.encode64(MessagePack.pack({'A' => UUID.parse(USDT_ASSET_ID).to_raw}))memo = memo1.sub("\n","")p memotransInfo = walletAccount.create_transfer(walletAccount.encrypt_pin(DEFAULT_PIN),{asset_id: BTC_ASSET_ID,opponent_id: EXIN_BOT,amount: "0.0001",trace_id: SecureRandom.uuid,memo: memo})p transInfo
end
复制代码
如果你想卖出USDT买入比特币,调用方式如下:
if cmd == "6"memo1 = Base64.encode64(MessagePack.pack({'A' => UUID.parse(BTC_ASSET_ID).to_raw}))memo = memo1.sub("\n","")p memotransInfo = walletAccount.create_transfer(walletAccount.encrypt_pin(DEFAULT_PIN),{asset_id: USDT_ASSET_ID,opponent_id: EXIN_BOT,amount: "1",trace_id: SecureRandom.uuid,memo: memo})p transInfo
end
复制代码
交易完成后,Exincore会将你需要的币转到你的帐上,同样,会在memo里,记录成交价格,交易费用等信息!你只需要按下面的方式解开即可!
- read_snapshots 读取钱包的交易记录。
if cmd == "7"if wallet_userid == "5e4ad097-21e8-3f6b-98f7-9dc74dd99f77"dt = "2019-05-23T09:48:04.582099Z"elseputs "Input the snapshots datetime: "dt = gets.chompendp CGI.escape(dt)snaps = walletAccount.read_snapshots({limit: "10",offset: CGI.escape(dt),asset: BTC_ASSET_ID,order: "ASC"})snaps["data"].each { |x|if x["amount"].to_f > 0if x["data"] != niluData = MessagePack.unpack(Base64.decode64(x["data"]))p uDatap "The code is " + uData["C"].to_s + " Price is " + uData["P"] + " Fee is " +uData["F"]p "Fee is Asset UUID is " + UUID.parse(uData["FA"]).to_sp "Order id is " + UUID.parse(uData["O"]).to_sendend}
end
复制代码
一次成功的交易如下:
Make your choose(eg: q for Exit!):
7
"2019-05-23T09%3A48%3A04.582099Z"
{"C"=>1000, "P"=>"7562.91", "F"=>"0.000000264", "FA"=>"\xC6\xD0\xC7(&$B\x9B\x8E\r\xD9\xD1\x9Be\x92\xFA", "T"=>"R", "O"=>"\xC4\x00*\a\xF1\xB1C9\xBC\xCE%\xC3C\x88^R"}
"The code is 1000 Price is 7562.91 Fee is 0.000000264"
"Fee is Asset UUID is c6d0c728-2624-429b-8e0d-d9d19b6592fa"
"Order id is c4002a07-f1b1-4339-bcce-25c343885e52"
-------------------------------------------------------------------------
复制代码
读取币的余额
通过读取币的余额,来确认交易情况!
if cmd == "aw"assetsInfo = walletAccount.read_assets()p "--------The Wallet Assets List-----------------"assetsInfo["data"].each { |x| puts x["symbol"] + " " +x["balance"] + " " + x["public_key"] +x["account_name"] + " " + x["account_tag"]}p "----------End of Wallet Assets --------------"
end
复制代码
源代码执行
执行 ruby bitcoin_wallet-ruby.rb 即可开始交易了.
- 1: Create Bitcoin Wallet and update PIN
- 2: Read Bitcoin balance & address
- 3: Read USDT balance & address
- 4: Read EOS balance & address
- tbb:Transfer BTC from Bot to Wallet
- tbm:Transfer BTC from Wallet to Master
- teb:Transfer EOS from Bot to Wallet
- tem:Transfer EOS from Wallet to Master
- tub:Transfer USDT from Bot to Wallet
- tum:Transfer USDT from Wallet to Master
- tcb:Transfer CNB from Bot to Wallet
- tcm:Transfer CNB from Wallet to Master
- 5: Pay 0.0001 BTC to ExinCore buy USDT
- 6: Pay $1 USDT to ExinCore buy BTC
- 7: Read Snapshots
- 8: Fetch market price(USDT)
- 9: Fetch market price(BTC)
- ab: Read Bot Assets
- aw: Read Wallet Assets
- q: Exit Make your choose(eg: q for Exit!):
完整代码
Solution Two: List your order on Ocean.One exchange
转载于:https://juejin.im/post/5ce920fe5188257a2b1ead73
用 Ruby 买卖Bitcoin: 闪兑交易所 Exincore相关推荐
- 通过 Ruby 买卖Bitcoin:使用开放交易所OceanOne
上一章介绍了Exincore,你可以1秒完成资产的市价买卖.如果你想限定价格买卖,或者买卖一些exincore不支持的资产,你需要OceanOne. 方案二: 挂单Ocean.One交易所 Ocean ...
- Newdex Swap闪兑系统已通过PeckShield安全审计服务
2020年04月17日,Newdex Swap 智能合约正式通过 PeckShield 安全审计服务. 此前 Newdex 已经和 PeckShield 就"链上撮合结算智能合约.Danch ...
- Xswap:Web 3.0时代跨链聚合闪兑赛道的黑马
我们一直说,区块链是Web 3.0时代最伟大的技术革新. 随着区块链技术的推进和发展,越来越多的公链和生态开始涌现并日益成熟,从Ethereum到TRON.从BSC到HECO.从Solana到Mati ...
- mixin机器人java开发_mixin_labs-java-bot
通过 Java 买卖Bitcoin 方案一: 通过ExinCore API进行币币交易 Exincore 提供了基于Mixin Network的币币交易API. 你可以支付USDT给ExinCore, ...
- 股市币市:数据分析与交易所最新公告
投资原则: 极端牛市是攒钱的时候(分位数达到100),极端熊市是攒票的时候(分位数低于40%),股指已经屡创新高,你再不攒钱就不对了,同理,股指屡创新低,你再不入场攒票也就不对了.当然,连接这两端(从 ...
- 股市币市:数据分析与交易所最新公告(20190302)
BTC比特币 1. 比特币分位数数据 2. 比特币交易图 3. 比特币分位数图 4. 比特币筹码分布图 数据来源: https://coinmarketcap.com/currencies/bitco ...
- 股市币市:数据分析与交易所最新公告(20190301)
沪深300 1. 沪深300分位数数据 2. 沪深300股指图 3. 沪深300分位数图 4. 沪深300筹码分布图 数据来源: https://finance.sina.com.cn/stock/ ...
- 股市币市:数据分析与交易所最新公告(20190228)
沪深300 1. 沪深300分位数数据 2. 沪深300股指图 3. 沪深300分位数图 4. 沪深300筹码分布图 数据来源: https://finance.sina.com.cn/stock/ ...
- 股市币市:数据分析与交易所公告(20190227)
沪深300 1. 沪深300分位数数据 2. 沪深300股指图 3. 沪深300分位数图 4. 沪深300筹码分布图 数据来源: https://finance.sina.com.cn/stock/ ...
最新文章
- 沈向洋、华刚:读科研论文的三个层次、四个阶段与十个问题
- linux perl cpan 安装使用
- RNA干扰各种方法优缺点简介?
- CentOS Tomcat6 修改默认端口8080为80
- Mac电脑mysql创建数据库步骤_mac上创建MySQL的基本步骤
- 谷歌入职邮件_为什么我全职学习了8个月以接受Google采访
- Python 进程间通信 Queue / Pipe - Python零基础入门教程
- mysql表误删回复_mysql数据库数据删除怎么恢复
- PC自增与转移地址计算问题总结
- css连续选取几个li_CSS高级选择器:nth-child()应用大全
- SQL查询语句中的 limit offset(转 )
- NUAA无线传感器网络 复习重点整理
- Python批量读取txt文件
- 郑州轻工业大学 2021-2022(1)期末模拟测试一 答案
- 【STM32F407的DSP教程】第3章 Matlab简易使用之基础操作
- 《她的声音,每一首歌都是一个驿站》
- PJBLOG首页调用
- java网上商城学年论文_java网上商城论文(DOC毕业设计论文)
- ios测试版软件永久,ios13测试版beta6
- 小白篇之ENC设备实现USB摄像头转HDMI输出的方法
热门文章
- boost::hana::symmetric_difference用法的测试程序
- boost::hana::eval_if用法的测试程序
- boost::hana::ext::std::vector_tag用法的测试程序
- GDCM:gdcm::XMLPrinter的测试程序
- boost::contract模块实现overload的测试程序
- ITK:图像区域重叠
- VTK:小部件之TexturedButtonWidget
- VTK:模型之MarchingSquares
- OpenCV创建小部件Creating Widgets
- OpenCV级联分类器Cascade Classifier