方案一: 通过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相关推荐

  1. 通过 Ruby 买卖Bitcoin:使用开放交易所OceanOne

    上一章介绍了Exincore,你可以1秒完成资产的市价买卖.如果你想限定价格买卖,或者买卖一些exincore不支持的资产,你需要OceanOne. 方案二: 挂单Ocean.One交易所 Ocean ...

  2. Newdex Swap闪兑系统已通过PeckShield安全审计服务

    2020年04月17日,Newdex Swap 智能合约正式通过 PeckShield 安全审计服务. 此前 Newdex 已经和 PeckShield 就"链上撮合结算智能合约.Danch ...

  3. Xswap:Web 3.0时代跨链聚合闪兑赛道的黑马

    我们一直说,区块链是Web 3.0时代最伟大的技术革新. 随着区块链技术的推进和发展,越来越多的公链和生态开始涌现并日益成熟,从Ethereum到TRON.从BSC到HECO.从Solana到Mati ...

  4. mixin机器人java开发_mixin_labs-java-bot

    通过 Java 买卖Bitcoin 方案一: 通过ExinCore API进行币币交易 Exincore 提供了基于Mixin Network的币币交易API. 你可以支付USDT给ExinCore, ...

  5. 股市币市:数据分析与交易所最新公告

    投资原则: 极端牛市是攒钱的时候(分位数达到100),极端熊市是攒票的时候(分位数低于40%),股指已经屡创新高,你再不攒钱就不对了,同理,股指屡创新低,你再不入场攒票也就不对了.当然,连接这两端(从 ...

  6. 股市币市:数据分析与交易所最新公告(20190302)

    BTC比特币 1. 比特币分位数数据 2. 比特币交易图 3. 比特币分位数图 4. 比特币筹码分布图 数据来源: https://coinmarketcap.com/currencies/bitco ...

  7. 股市币市:数据分析与交易所最新公告(20190301)

    沪深300 1. 沪深300分位数数据 2. 沪深300股指图 3. 沪深300分位数图 4. 沪深300筹码分布图 数据来源: https://finance.sina.com.cn/stock/ ...

  8. 股市币市:数据分析与交易所最新公告(20190228)

    沪深300 1. 沪深300分位数数据 2. 沪深300股指图 3. 沪深300分位数图 4. 沪深300筹码分布图 数据来源: https://finance.sina.com.cn/stock/ ...

  9. 股市币市:数据分析与交易所公告(20190227)

    沪深300 1. 沪深300分位数数据 2. 沪深300股指图 3. 沪深300分位数图 4. 沪深300筹码分布图 数据来源: https://finance.sina.com.cn/stock/ ...

最新文章

  1. 沈向洋、华刚:读科研论文的三个层次、四个阶段与十个问题
  2. linux perl cpan 安装使用
  3. RNA干扰各种方法优缺点简介?
  4. CentOS Tomcat6 修改默认端口8080为80
  5. Mac电脑mysql创建数据库步骤_mac上创建MySQL的基本步骤
  6. 谷歌入职邮件_为什么我全职学习了8个月以接受Google采访
  7. Python 进程间通信 Queue / Pipe - Python零基础入门教程
  8. mysql表误删回复_mysql数据库数据删除怎么恢复
  9. PC自增与转移地址计算问题总结
  10. css连续选取几个li_CSS高级选择器:nth-child()应用大全
  11. SQL查询语句中的 limit offset(转 )
  12. NUAA无线传感器网络 复习重点整理
  13. Python批量读取txt文件
  14. 郑州轻工业大学 2021-2022(1)期末模拟测试一 答案
  15. 【STM32F407的DSP教程】第3章 Matlab简易使用之基础操作
  16. 《她的声音,每一首歌都是一个驿站》
  17. PJBLOG首页调用
  18. java网上商城学年论文_java网上商城论文(DOC毕业设计论文)
  19. ios测试版软件永久,ios13测试版beta6
  20. 小白篇之ENC设备实现USB摄像头转HDMI输出的方法

热门文章

  1. boost::hana::symmetric_difference用法的测试程序
  2. boost::hana::eval_if用法的测试程序
  3. boost::hana::ext::std::vector_tag用法的测试程序
  4. GDCM:gdcm::XMLPrinter的测试程序
  5. boost::contract模块实现overload的测试程序
  6. ITK:图像区域重叠
  7. VTK:小部件之TexturedButtonWidget
  8. VTK:模型之MarchingSquares
  9. OpenCV创建小部件Creating Widgets
  10. OpenCV级联分类器Cascade Classifier