内容简介:在此处我们用一个叫做Benz的
在 上一课 中,我们介绍了如何在OceanOne交易比特币。OceanOne支持交易任何Mixin Network上的token,包括所有的ERC20和EOS token,不需要任何手续和费用,直接挂单即可。下面介绍如何将将一个ERC20 token挂上OceanOne交易。掌握了ERC20代币的交易方法,就可以交易任何其他Mixin Network代币了。
此处我们用一个叫做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 ( args.type === TYPE_WALLET_ASSETS_INFO ) { const assetsInfo = await newUserClient.getUserAssets(); console.log("-AssetID--Asset--Balance--public_key--"); assetsInfo.forEach(function(element) { console.log(element.asset_id + " " + element.symbol + " " + element.balance + " " + element.public_key + " " + element.account_name + " " + element.account_tag ); }); // console.log(assetsInfo); }
调用 getUserAssets API的完整输出如下:
Make your choose aw: Read Wallet All Asssets Information You choice to : { type: 'aw: Read Wallet All Asssets Information' } You wallet is : 0b10471b-1aed-3944-9eda-5ab947562761 -AssetID--Asset--Balance--public_key-- 2b9c216c-ef60-398d-a42a-eba1b298581d Benz 99.9 0xA35722B0a5Ab20f2d2276999F5b18D42C71Ba688 6cfe566e-4aad-470b-8c9a-2fd35b49c68d EOS 0 eoswithmixin 30f0c36057b9b22151173b309bd0d79c 965e5c6e-434c-3fa9-b780-c50f43cd955c CNB 999.99999993 0xA35722B0a5Ab20f2d2276999F5b18D42C71Ba688 c6d0c728-2624-429b-8e0d-d9d19b6592fa BTC 0 15MySY7UnA827TRMQWuCKGiogCYXUmt21M
限价挂单
- 挂限价买单 低于或者等于市场价的单.
- 挂限价卖单 高于或者是等于市场价的单.
OceanOne支持三种基类价格: USDT, XIN, BTC, 即: Benz/USDT, Benz/XIN, Benz/BTC, 这儿示范Benz/USDT.
限价挂卖单.
新币挂单后,需要等一分钟左右,等OceanOne来初始化新币的相关数据.
else if ( args.type === TYPE_OO_SELL_ERC_USDT ) { var prompts = [ { name: 'price', type: 'input', message: "Input the price of ERC(Benz)/USDT: ", }, ]; price = await inquirer.prompt(prompts); var prompts = [ { name: 'amount', type: 'input', message: "Input the amount of ERC20(Benz): ", }, ]; amount = await inquirer.prompt(prompts); console.log(price); console.log(amount); const memo = GenerateOceanMemo(USDT_ASSET_ID,"A",price.price); const assetInfo = await newUserClient.getUserAsset(ERC20_BENZ); console.log("The Wallet 's USDT balance is ", assetInfo.balance); if ( assetInfo.balance >= amount.amount ) { const Obj = { assetId: ERC20_BENZ, recipientId: OCEANONE_BOT, traceId: newUserClient.getUUID(), amount: amount.amount, memo: memo, } const transInfo = await newUserClient.transferFromBot(Obj); console.log(transInfo); console.log("The Order id is " + transInfo.trace_id + " It is needed to cancel the order!"); } else { console.log("Not enough ERC20_BENZ!"); } }
限价挂买单.
新币挂单后,需要等一分钟左右,等OceanOne来初始化新币的相关数据.
else if ( args.type === TYPE_OO_BUY_ERC_USDT ) { var prompts = [ { name: 'price', type: 'input', message: "Input the price of ERC20(Benz)/USDT: ", }, ]; price = await inquirer.prompt(prompts); var prompts = [ { name: 'amount', type: 'input', message: "Input the amount of USDT: ", }, ]; amount = await inquirer.prompt(prompts); console.log(price); console.log(amount); const memo = GenerateOceanMemo(ERC20_BENZ,"B",price.price); const assetInfo = await newUserClient.getUserAsset(USDT_ASSET_ID); console.log("The Wallet 's USDT balance is ", assetInfo.balance); if ( assetInfo.balance >= amount.amount && assetInfo.balance >= 1 ) { const Obj = { assetId: USDT_ASSET_ID, recipientId: OCEANONE_BOT, traceId: newUserClient.getUUID(), amount: amount.amount, memo: memo, } const transInfo = await newUserClient.transferFromBot(Obj); console.log(transInfo); console.log("The Order id is " + transInfo.trace_id + " It is needed to cancel the order!"); } else { console.log("Not enough USDT!"); } }
读取币的价格列表
读取币的价格列表,来确认挂单是否成功!
else if ( args.type === TYPE_OO_FETCH_ERC_USDT ) { FetchOceanOneMarketInfos(ERC20_BENZ, USDT_ASSET_ID); } function FetchOceanOneMarketInfos(asset_id, base_asset) { var instance = axios.create({ baseURL: "https://events.ocean.one/markets/" + asset_id + "-" + base_asset + "/book", timeout: 3000, headers: {'X-Custom-Header': 'foobar'} }); instance.get() .then(function(response) { console.log("--Price--Amount--Funds--Side") response.data.data.data.asks.forEach(function(element) { console.log(element.price + " " + element.amount + " " + element.funds + " " + element.side); }); response.data.data.data.bids.forEach(function(element) { console.log(element.price + " " + element.amount + " " + element.funds + " " + element.side); }); // console.log(response.data.data.data.asks); }); }
ERC20相关的操作指令
Commands list of this source code:
- 21: Fetch ERC20/USDT order book
- 24: Sell ERC20/USDT
- 27: Buy ERC20/USDT
- 28: Cancel the order
- q: Exit
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 通过 Go 在去中心化交易所OceanOne上挂单买卖Bitcoin
- PHP比特币开发教程:在去中心化交易所OceanOne上挂单买卖比特币
- 用PHP在去中心化交易所OceanOne上挂单买卖任意ERC20 token
- 用C#在去中心化交易所OceanOne上挂单买卖任意ERC20 token
- 交易所安全测试:信息收集
- 交易所安全测试:安全审计指南
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Algorithms + Data Structures = Programs
Niklaus Wirth / Prentice Hall / 1975-11-11 / GBP 84.95
It might seem completely dated with all its examples written in the now outmoded Pascal programming language (well, unless you are one of those Delphi zealot trying to resist to the Java/.NET dominanc......一起来看看 《Algorithms + Data Structures = Programs》 这本书的介绍吧!