摘要:在上一課中,我們介紹了如何在交易比特幣。支持交易任何上的,包括所有的和,不需要任何手續和費用,直接掛單即可。下面介紹如何將將一個掛上交易在掌握了之后,就可以把任何在上買賣。
在上一課中,我們介紹了如何在OceanOne交易比特幣。OceanOne支持交易任何Mixin Network上的token,包括所有的ERC20和EOS token,不需要任何手續和費用,直接掛單即可。下面介紹如何將將一個ERC20 token掛上OceanOne交易!在掌握了ERC20 token之后,就可以把任何token在Ocean上買賣。
此處我們用一個叫做Benz的ERC20 token為例。這個token已經被充值進Mixin Network,你可以在區塊鏈瀏覽器看到這個token在Mixin Network內部的總數和交易
預備知識:先將Ben幣存入你的錢包,然后使用ReadAssets API讀取它的UUID.
取得該幣的UUID調用 ReadAssets API 會返回json數據, 如:
asset_id 幣的UUID.
public_key 該幣的當前錢包的地址.
symbol 幣的名稱. 如: Benz.
if cmd == "aw" { priKey, _, sID, userID, _ := GetWalletInfo() assets, err := mixin.ReadAssets(userID,sID,priKey) if err != nil { log.Fatal(err) } var AssetsInfo map[string]interface{} err = json.Unmarshal(assets, &AssetsInfo) if err != nil { log.Fatal(err) } // fmt.Println("Data is: ",AssetsInfo["data"].(map[string]interface{})["public_key"]) for _, v := range (AssetsInfo["data"].([]interface{})) { if v.(map[string]interface{})["symbol"] == "EOS" { fmt.Println(v.(map[string]interface{})["symbol"]," ", v.(map[string]interface{})["asset_id"]," ", v.(map[string]interface{})["account_name"]," ", v.(map[string]interface{})["account_tag"]," ", v.(map[string]interface{})["balance"]) } else { fmt.Println(v.(map[string]interface{})["symbol"]," ", v.(map[string]interface{})["asset_id"]," ", v.(map[string]interface{})["public_key"]," ", v.(map[string]interface{})["balance"]) } } }
調用 ReadAssets API的完整輸出如下:
Make your choose:aw Benz 0x330860Ec473fF366F5Bc4339a69f5bffB52d18Cb 88.9 EOS eoswithmixin 79dd76cedf8f6af49a8d98216bbde890 0 USDT 16wWhKAjmACvZzkfxkyrVutqfrJ1JQ83aj 1 CNB 0x330860Ec473fF366F5Bc4339a69f5bffB52d18Cb 0.10999989 BTC 16wWhKAjmACvZzkfxkyrVutqfrJ1JQ83aj 0 XIN 0x330860Ec473fF366F5Bc4339a69f5bffB52d18Cb 0.01限價掛單
掛限價買單 低于或者等于市場價的單.
掛限價賣單 高于或者是等于市場價的單.
OceanOne支持三種基類價格: USDT, XIN, BTC, 即: Benz/USDT, Benz/XIN, Benz/BTC, 這兒示范Benz/USDT.
限價掛賣單.新幣掛單后,需要等一分鐘左右,等OceanOne來初始化新幣的相關數據.
if cmd == "s2" { fmt.Print("Please input the price of ERC20/USDT: ") var pcmd string var acmd string scanner.Scan() pcmd = scanner.Text() fmt.Println(pcmd) fmt.Print("Please input the amount of ERC20: ") scanner.Scan() acmd = scanner.Text() fmt.Println(acmd) omemo := generateOceanOrderMemo(mixin.GetAssetId("USDT"),"A",pcmd) priKey, pToken, sID, userID, uPIN := GetWalletInfo() balance := ReadAssetBalanceByUUID(ERC20_BENZ,userID,sID,priKey) fmt.Println(balance) fbalance, _ := strconv.ParseFloat(balance,64) abalance, _ := strconv.ParseFloat(acmd,64) if fbalance > 0 && fbalance >= abalance { fmt.Println(omemo) transInfo, _ := mixin.Transfer(OCEANONE_BOT, acmd, ERC20_BENZ, omemo, messenger.UuidNewV4().String(), uPIN,pToken,userID,sID,priKey) fmt.Println(string(transInfo)) var jsTransInfo map[string]interface{} err := json.Unmarshal([]byte(transInfo), &jsTransInfo) if err != nil { log.Fatal(err) } fmt.Println("The Order id is " + jsTransInfo["data"].(map[string]interface{})["trace_id"].(string) + " it is needed to cancel the order!") } else { fmt.Println("Not enough BenZ!") } }限價掛買單.
新幣掛單后,需要等一分鐘左右,等OceanOne來初始化新幣的相關數據.
if cmd == "b2" { fmt.Print("Please input the price of ERC20/USDT: ") var pcmd string var acmd string scanner.Scan() pcmd = scanner.Text() fmt.Println(pcmd) fmt.Print("Please input the amount of USDT: ") scanner.Scan() acmd = scanner.Text() fmt.Println(acmd) omemo := generateOceanOrderMemo(ERC20_BENZ,"B",pcmd) priKey, pToken, sID, userID, uPIN := GetWalletInfo() balance := ReadAssetBalance("USDT",userID,sID,priKey) fmt.Println(balance) fbalance, _ := strconv.ParseFloat(balance,64) abalance, _ := strconv.ParseFloat(acmd,64) if fbalance > 0 && fbalance >= abalance { fmt.Println(omemo) transInfo, _ := mixin.Transfer(OCEANONE_BOT, acmd, mixin.GetAssetId("USDT"), omemo, messenger.UuidNewV4().String(), uPIN,pToken,userID,sID,priKey) fmt.Println(string(transInfo)) var jsTransInfo map[string]interface{} err := json.Unmarshal([]byte(transInfo), &jsTransInfo) if err != nil { log.Fatal(err) } fmt.Println("The Order id is " + jsTransInfo["data"].(map[string]interface{})["trace_id"].(string) + " it is needed to cancel the order!") } else { fmt.Println("Not enough USDT!") } }//end of b2讀取幣的價格列表
讀取幣的價格列表,來確認掛單是否成功!
if cmd == "3" { FormatOceanOneMarketPrice(mixin.GetAssetId("BTC"),mixin.GetAssetId("USDT")) } func FormatOceanOneMarketPrice(asset_id string, base_asset string) { priceInfo, err := GetOceanOneMarketPrice(asset_id, base_asset) if err != nil { log.Fatal(err) } var marketInfo map[string]interface{} err = json.Unmarshal([]byte(priceInfo), &marketInfo) fmt.Println("Price | Amount | Funds | Side") for _, v := range (marketInfo["data"]. (map[string]interface{})["data"]. (map[string]interface{})["asks"]. ([]interface{})) { fmt.Println(v.(map[string]interface{})["price"], v.(map[string]interface{})["amount"], v.(map[string]interface{})["funds"], v.(map[string]interface{})["side"], ) } for _, v := range (marketInfo["data"]. (map[string]interface{})["data"]. (map[string]interface{})["bids"]. ([]interface{})) { fmt.Println(v.(map[string]interface{})["price"], v.(map[string]interface{})["amount"], v.(map[string]interface{})["funds"], v.(map[string]interface{})["side"], ) } } func GetOceanOneMarketPrice(asset_id string, base_asset string) ([]byte, error) { var body []byte req, err := http.NewRequest("GET", "https://events.ocean.one/markets/" + asset_id + "-" + base_asset + "/book", bytes.NewReader(body)) if err != nil { return nil, err } req.Header.Set("Content-Type", "application/json") resp, err := httpClient.Do(req) if err != nil { return nil, err } defer resp.Body.Close() // fmt.Println(resp.Body) bt, err := ioutil.ReadAll(resp.Body) if resp.StatusCode != http.StatusOK { var resp struct { Error Error `json:"error"` } err = json.Unmarshal(bt, &resp) if err == nil { err = resp.Error } } return bt, err }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!):
3: Orders-Book of ERC20/USDT
b3: Buy ERC20 pay USDT
s3: Sell ERC20 get USDT
c: Cancel the order
q: Exit
完整的代碼
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/24684.html
摘要:在上一課中,我們介紹了如何在交易比特幣。支持交易任何上的,包括所有的和,不需要任何手續和費用,直接掛單即可。下面介紹如何將將一個掛上交易在掌握了之后,就可以把任何在上買賣。此處我們用一個叫做的為例。 showImg(https://segmentfault.com/img/remote/1460000019329775?w=1201&h=660); 在上一課中,我們介紹了如何在Ocea...
摘要:在上一課中,我們介紹了如何在交易比特幣。支持交易任何上的,包括所有的和,不需要任何手續和費用,直接掛單即可。下面介紹如何將將一個掛上交易此處我們用一個叫做的為例。 showImg(https://segmentfault.com/img/remote/1460000018419614?w=1200&h=659); 在上一課中,我們介紹了如何在OceanOne交易比特幣。OceanOne...
摘要:在上一課中,我們介紹了如何在交易比特幣。支持交易任何上的,包括所有的和,不需要任何手續和費用,直接掛單即可。下面介紹如何將將一個掛上交易此處我們用一個叫做的為例。 showImg(https://segmentfault.com/img/remote/1460000018419614?w=1200&h=659); 在上一課中,我們介紹了如何在OceanOne交易比特幣。OceanOne...
摘要:在上一課中,我們介紹了如何在交易比特幣。支持交易任何上的,包括所有的和,不需要任何手續和費用,直接掛單即可。下面介紹如何將將一個掛上交易此處我們用一個叫做的為例。 showImg(https://segmentfault.com/img/remote/1460000018952144?w=1200&h=659); 在上一課中,我們介紹了如何在OceanOne交易比特幣。OceanOne...
摘要:方案二掛單交易所是基于的去中心化交易所,它性能一流。完整的步驟如下檢查比特幣或的余額,錢包地址。比特幣的到帳時間是個區塊的高度,約分鐘。 showImg(https://segmentfault.com/img/remote/1460000018378805?w=1200&h=659); 上一章介紹了Exincore,你可以1秒完成資產的市價買賣。如果你想限定價格買賣,或者買賣一些ex...
閱讀 3233·2021-09-07 10:10
閱讀 3579·2019-08-30 15:44
閱讀 2577·2019-08-30 15:44
閱讀 2981·2019-08-29 15:11
閱讀 2219·2019-08-28 18:26
閱讀 2744·2019-08-26 12:21
閱讀 1112·2019-08-23 16:12
閱讀 3009·2019-08-23 14:57