在上一课中,我们介绍了如何在OceanOne交易比特币。OceanOne支持交易任何Mixin Network上的token,包括所有的ERC20和EOS token,不需要任何手续和费用,直接挂单即可。下面介绍如何将将一个ERC20 token挂上OceanOne交易!

此处我们用一个叫做Benz的ERC20 token为例。这个token已经被充值进Mixin Network,你可以在区块链浏览器看到这个token在Mixin Network内部的总数和交易

预备知识:

先将Ben币存入你的钱包,然后使用getAssets API读取它的UUID.

取得该币的UUID

调用 getAssets API 会返回json数据, 如:

asset_id 币的UUID.

public_key 该币的当前钱包的地址.

symbol 币的名称. 如: Benz.

if ( input.equals("aw") ) {

MixinAPI mixinApiUser = generateAPI_FromCSV();

JsonArray assets = mixinApiUser.getAssets();

System.out.println("------------------------All Assets Information---------------------------");

System.out.println(assets);

assets.forEach((element) -> {

JsonObject jsonObj = element.getAsJsonObject();

System.out.println(jsonObj.get("asset_id").getAsString() + " " +

jsonObj.get("symbol").getAsString() + " " +

jsonObj.get("public_key").getAsString() + " " +

jsonObj.get("balance").getAsString() );

});

System.out.println("-----------------------------------------------------------------------");

}

调用 getAssets API的完整输出如下:

Make your choose(eg: q for Exit!): aw

aw

------------------------All Assets Information---------------------------

[{"type":"asset","asset_id":"2b9c216c-ef60-398d-a42a-eba1b298581d","chain_id":"43d61dcd-e413-450d-80b8-101d5e903357","symbol":"Benz","name":"Benz coin","icon_url":"https://images.mixin.one/yH_I5b0GiV2zDmvrXRyr3bK5xusjfy5q7FX3lw3mM2Ryx4Dfuj6Xcw8SHNRnDKm7ZVE3_LvpKlLdcLrlFQUBhds=s128",

"balance":"1000","public_key":"0x62F20013472a72b8Fe3f9a99f36e5802E6e93c15","account_name":"",

"account_tag":"","price_btc":"0","price_usd":"0","change_btc":"0","change_usd":"0",

"asset_key":"0xc409b5696c5f9612e194a582e14c8cd41ecdbc67","confirmations":100,

"capitalization":0},{"type":"asset","asset_id":"6cfe566e-4aad-470b-8c9a-2fd35b49c68d",

"chain_id":"6cfe566e-4aad-470b-8c9a-2fd35b49c68d","symbol":"EOS","name":"EOS",

"icon_url":"https://images.mixin.one/a5dtG-IAg2IO0Zm4HxqJoQjfz-5nf1HWZ0teCyOnReMd3pmB8oEdSAXWvFHt2AJkJj5YgfyceTACjGmXnI-VyRo=s128","balance":"0","public_key":"","account_name":"eoswithmixin","account_tag":"889ed66a1059bc3dab60e2ee44d0f993",

"price_btc":"0.0008953","price_usd":"4.73591781","change_btc":"-0.004161988128557199","change_usd":"0.00012182287348895748",

"asset_key":"eosio.token:EOS","confirmations":64,"capitalization":0},

{"type":"asset","asset_id":"965e5c6e-434c-3fa9-b780-c50f43cd955c","chain_id":"43d61dcd-e413-450d-80b8-101d5e903357","symbol":"CNB","name":"Chui Niu Bi",

"icon_url":"https://images.mixin.one/0sQY63dDMkWTURkJVjowWY6Le4ICjAFuu3ANVyZA4uI3UdkbuOT5fjJUT82ArNYmZvVcxDXyNjxoOv0TAYbQTNKS=s128",

"balance":"0.99984","public_key":"0x62F20013472a72b8Fe3f9a99f36e5802E6e93c15","account_name":"",

"account_tag":"","price_btc":"0","price_usd":"0","change_btc":"0","change_usd":"0",

"asset_key":"0xec2a0550a2e4da2a027b3fc06f70ba15a94a6dac","confirmations":100,

"capitalization":0},{"type":"asset","asset_id":"c6d0c728-2624-429b-8e0d-d9d19b6592fa",

"chain_id":"c6d0c728-2624-429b-8e0d-d9d19b6592fa","symbol":"BTC","name":"Bitcoin",

"icon_url":"https://images.mixin.one/HvYGJsV5TGeZ-X9Ek3FEQohQZ3fE9LBEBGcOcn4c4BNHovP4fW4YB97Dg5LcXoQ1hUjMEgjbl1DPlKg1TW7kK6XP=s128","balance":"0",

"public_key":"15RNBb5GzoXWRoEMT5MJL3pqzSjdPoXf6J","account_name":"","account_tag":"",

"price_btc":"1","price_usd":"5289.7409549","change_btc":"0","change_usd":"0.004160319338628907",

"asset_key":"c6d0c728-2624-429b-8e0d-d9d19b6592fa","confirmations":6,"capitalization":0}]

2b9c216c-ef60-398d-a42a-eba1b298581d Benz 0x62F20013472a72b8Fe3f9a99f36e5802E6e93c15 1000

6cfe566e-4aad-470b-8c9a-2fd35b49c68d EOS 0

965e5c6e-434c-3fa9-b780-c50f43cd955c CNB 0x62F20013472a72b8Fe3f9a99f36e5802E6e93c15 0.99984

c6d0c728-2624-429b-8e0d-d9d19b6592fa BTC 15RNBb5GzoXWRoEMT5MJL3pqzSjdPoXf6J 0

限价挂单

挂限价买单 低于或者等于市场价的单.

挂限价卖单 高于或者是等于市场价的单.

OceanOne支持三种基类价格: USDT, XIN, BTC, 即: Benz/USDT, Benz/XIN, Benz/BTC, 这儿示范Benz/USDT.

限价挂卖单.

新币挂单后,需要等一分钟左右,等OceanOne来初始化新币的相关数据.

if ( subinput.equals("x2") ) {

MakeTheSellOrder(ERC20_BENZ,USDT_ASSET_ID);

}

public static void MakeTheSellOrder(String AssetID, String BaseAssetID) {

System.out.print(String.format("Please input the %s price of %s: ",AssetID,BaseAssetID));

String pinput = System.console().readLine();

System.out.println(pinput);

System.out.print(String.format("Please input the %s amount: ",AssetID));

String aminput = System.console().readLine();

System.out.println(aminput);

float amountf = Float.valueOf(aminput.trim()).floatValue();

String OrderMemo = GenerateOrderMemo("A",BaseAssetID,pinput);

MixinAPI mixinApiUser = generateAPI_FromCSV();

// UUID usdtUUID = UUID.fromString(USDT_ASSET_ID);

// String memoTarget = encodeUUID(usdtUUID);

System.out.println("------------------Ocean.one-EXCHANGE----------------------------");

System.out.println(OrderMemo);

JsonObject asset = mixinApiUser.getAsset(AssetID);

System.out.println(asset);

System.out.println(asset.get("balance").getAsFloat());

if ( asset.get("balance").getAsFloat() > 0 && asset.get("balance").getAsFloat() >= amountf ) {

JsonObject transInfo = mixinApiUser.transfer(AssetID, OCEANONE_BOT,

aminput,

OrderMemo);

System.out.println(String.format("--------------%s Transfer To EXCHANGE Information---------",AssetID));

System.out.println(transInfo);

System.out.println(String.format("---Order is %s: ------",transInfo.get("trace_id").getAsString()));

} else System.out.println(String.format("----------------Not enough %s--------------------------",AssetID));

}

限价挂买单.

新币挂单后,需要等一分钟左右,等OceanOne来初始化新币的相关数据.

if ( subinput.equals("x1") ) {

MakeTheBuyOrder(ERC20_BENZ,USDT_ASSET_ID);

}

public static void MakeTheBuyOrder(String AssetID, String BaseAssetID) {

System.out.print(String.format("Please input the %s price of %s: ",AssetID,BaseAssetID));

String pinput = System.console().readLine();

System.out.println(pinput);

System.out.print(String.format("Please input the %s amount: ",BaseAssetID));

String aminput = System.console().readLine();

System.out.println(aminput);

float amountf = Float.valueOf(aminput.trim()).floatValue();

String OrderMemo = GenerateOrderMemo("B",AssetID,pinput);

MixinAPI mixinApiUser = generateAPI_FromCSV();

// UUID usdtUUID = UUID.fromString(USDT_ASSET_ID);

// String memoTarget = encodeUUID(usdtUUID);

System.out.println("------------------Ocean.one--EXCHANGE----------------------------");

System.out.println(OrderMemo);

JsonObject asset = mixinApiUser.getAsset(BaseAssetID);

System.out.println(asset);

System.out.println(asset.get("balance").getAsFloat());

if ( asset.get("balance").getAsFloat() > 0 && asset.get("balance").getAsFloat() >= amountf ) {

JsonObject transInfo = mixinApiUser.transfer(BaseAssetID, OCEANONE_BOT,

aminput,

OrderMemo);

System.out.println(String.format("--------------%s Transfer To EXCHANGE Information---------",BaseAssetID));

System.out.println(transInfo);

System.out.println(String.format("---Order is %s: ------",transInfo.get("trace_id").getAsString()));

} else System.out.println(String.format("----------------Not enough %s--------------------------",BaseAssetID));

}

读取币的价格列表

读取币的价格列表,来确认挂单是否成功!

if ( subinput.equals("x") ) {

FetchOceanMarketInfos(ERC20_BENZ,XIN_ASSET_ID);

}

private static void FetchOceanMarketInfos(String targetAssetID, String baseAssetID) {

OkHttpClient client = new OkHttpClient();

String baseUrl = "https://events.ocean.one/markets/%s-%s/book ";

String fullUrl = String.format(baseUrl,targetAssetID,baseAssetID);

// String fullUrl = baseUrl + url;

System.out.println(fullUrl);

Request request = new Request.Builder()

.url(fullUrl)

.build();

try {

Response response = client.newCall(request).execute();

if (!response.isSuccessful()) {

throw new IOException("Unexpected code " + response);

}

String res = response.body().string();

// System.out.println(res);

JsonParser parser = new JsonParser();

JsonElement jsonTree = parser.parse(res);

JsonObject orders;

orders = jsonTree.getAsJsonObject();

JsonArray asksOrders = orders.get("data").getAsJsonObject().

get("data").getAsJsonObject().

get("asks").getAsJsonArray();

JsonArray bidsOrders = orders.get("data").getAsJsonObject().

get("data").getAsJsonObject().

get("bids").getAsJsonArray();

// System.out.println(orders.get("data").getAsJsonObject().get("data").getAsJsonObject().get("bids").getAsJsonArray());

System.out.println("--Side--Price--Amount--Funds---");

asksOrders.forEach((element) -> {

JsonObject jsonObj = element.getAsJsonObject();

System.out.println(jsonObj.get("side").getAsString() + " " +

jsonObj.get("price").getAsString() + " " +

jsonObj.get("amount").getAsString() + " " +

jsonObj.get("funds").getAsString() );

});

bidsOrders.forEach((element) -> {

JsonObject jsonObj = element.getAsJsonObject();

System.out.println(jsonObj.get("side").getAsString() + " " +

jsonObj.get("price").getAsString() + " " +

jsonObj.get("amount").getAsString() + " " +

jsonObj.get("funds").getAsString() );

});

System.out.println("----endo--of--btc/usdt----");

return;

} catch(Exception e) { e.printStackTrace(); }

return;

}

ERC20相关的操作指令

Commands list of this source code:

trb:Transfer ERC20 from Bot to Wallet

trm:Transfer ERC20 from Wallet to Master

o: Ocean.One Exchange

Make your choose(eg: q for Exit!):

x: Orders-Book of ERC20/USDT

x1: Buy ERC20 pay USDT

x2: Sell ERC20 get USDT

c: Cancel the order

q: Exit

挂单的java处理方案_用Java在去中心化交易所OceanOne上挂单买卖任意ERC20 token相关推荐

  1. 以太坊去中心化_开发以太坊去中心化投票应用程序的指南

    以太坊去中心化 by Timothy Ko 蒂莫西·高(Timothy Ko) 开发以太坊去中心化投票应用程序的指南 (A guide to developing an Ethereum decent ...

  2. 防saq注入_去中心化交易所CYBEX将为区块链ICO注入新的价值观

    距离开启ICO还有不到 30 个小时,中国最主要的ICO平台ICOAGE上的CYBEX.io项目进度条显示已有接近90%份额被锁定.在近期相对波动的大环境下,去中心化交易所CYBEX的ICO开展却异常 ...

  3. 端到端加密优缺点_基于Filecoin的去中心化文件保存和加密分享平台

    Filecoin天生就是去中心化的文件存储网络,但是文件存储到网络时,仅进行切片分割,不会进行加密.虽然通过分割后的数据并不能窥探整个数据源,但是仍留有泄露的风险.而有一个项目正是利用了Filecoi ...

  4. python去中心化是什么意思_一种完全去中心化的治理投票机制Aeternity介绍

    为了确保能够持续性地开发æternity协议,并且能够定期增加新功能,必须评估和确定可持续的筹资机制以引导良好的生态发展.幸运的是,经过各种选项和可行性分析,启动æternity的第一次链上治理机制成 ...

  5. 硬核·WINE 2021 | 去中心化资产托管方案及其在面对理性敌手时的安全性

    转自北京大学前沿计算研究中心 导  读 本文是第十七届国际互联网经济学术会议(WINE 2021)入选论文<Decentralized Asset Custody Scheme with Sec ...

  6. 去中心化 去区块链_使用JavaScript和坚固性在以太坊区块链上构建去中心化应用程序dapp...

    去中心化 去区块链 In this blog, I build a decentralized application, also known as a "dapp". While ...

  7. 区块链去中心化分布式_为什么渐进式去中心化是区块链的最大希望

    区块链去中心化分布式 by Arthur Camara 通过亚瑟·卡马拉(Arthur Camara) 为什么渐进式去中心化是区块链的最大希望 (Why Progressive Decentraliz ...

  8. 福瑞1号科技在疫情笼罩的局势下推出了解决资金流的去中心化金融方案

    去中心化金融(DeFi)通过提供可加强传统金融机构(如:银行)运营能力的服务,颠覆了金融业.通过人工智能(AI)技术来实现自动化套利交易的福瑞1号科技正式宣布了其投资与实现资金流平台的推出.该平台与传 ...

  9. java 分割一个_分割java

    [java]分割字符串工具类,霸气 jdk自带的 java 分割字符串,分割string,可以根据多个条件去分割.比如逗号,分号,逗号或者分号. 比如一个字符串:"abc,def;gh,ij ...

最新文章

  1. 关于Unity四元数相乘先后顺序的问题
  2. HR吐槽BAT员工:不要把平台的光环当成自己的,我们需要造火箭的。
  3. 宝塔Linux, 反向代理服务器, 开启WSS
  4. ErWin简单使用说明
  5. Android Activity形象描述
  6. 成员函数 静态变量做默认参数_Scala系列 (二)Scala的独有特性提高开发效率学会之后玩转函数式与OOP!!...
  7. 工作108:精准的v-for和if
  8. 用MDT 2012为企业部署windows 7(四)--创建Deploymentshare共享以及介绍一些选项的具体作用...
  9. latex教程 / 矢量图转换 / 文献引用bibitem
  10. 循环群、对称群、陪集和拉格朗日定理、正规子群和商群
  11. [每日一氵] windows cmake 安装
  12. JavaScript速成
  13. android简单的自定义涂鸦控件
  14. J v a v 与 您
  15. 红外成像光电探测器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  16. 微软开源的浏览器自动化工具-Playwright
  17. 02 ABY框架的搭建及踩到的坑
  18. AWS KVS(Kinesis Video Streams)之WebRTC的C库测试
  19. java随机生成一万条数据
  20. 解决windows下合上、掀开笔记本盖子后屏幕黑屏的问题

热门文章

  1. 网页图片尺寸查看方法
  2. Ubuntu 18.04 升级 20.04
  3. 5年了,高通还是那个高通,华为却早已不是当年的华为!
  4. 别不信,读书虽然不是唯一的出路,但读书一定是最好的出路
  5. 基于PHP+小程序(MINA框架)+Mysql数据库的电影院售票选座小程序系统设计与实现
  6. 小技巧: 通过cert-rotate将新节点添加到K8S集群
  7. 关于CCNA的培训课程(2)-- 路由器和交换机的基本配置
  8. 《Adobe Photoshop CS6中文版经典教程(彩色版)》—第2课2.12节保存用于四色印刷的图像...
  9. C# 中的年月日时分秒 yyyy MM dd HH mm ss
  10. 防蓝光的台灯有用吗?2022最新的防蓝光台灯品牌排行榜