# Trading
Default timeout for a trade is 10 seconds, which means if no response, must wait 10 seconds between trade requests. It will generate an error if Alice tries to submit a trade while a previous request is pending.
However if the other side responds, you can do another trade and we are seeing virtually instant responses from the live FR (Full Relay) nodes.
# Trade Negotiation Sequence:
Alice submits a "request" to the Bob node.
Now we are in a pending state for up to 10 seconds.
Bob responds with a "reserved", which releases Alice from the pending state.
For the request that comes back, Alice can reject it or accept it and send a "connect" message.
Finally Bob returns a "connected" message and the atomic swap begins.
James has also added automated broadcast of any setprices, which will occur automatically when you do a buy/sell for the coin you are buying with, as long as you are not using Electrum.
To be a bob, you need the native coin. With the pruning of the orderbook to most recent 2 minutes, it required the setprice to be called regularly.
This function is internalized, so a single setprice is all that is needed. If you want to "cancel" it you can setprice to 0. GUI can now post bob orders if you have native coins enabled.
Using the buy/sell
api is a fill or kill (except partial fills are allowed) and to put a limit order, autoprice
needs to be used. The autoprice
is a bit tricky to use, make sure you don't make the example backwards.
Note: To fully cancel an autotrade, setprice 0
needs to be called twice, once with base/rel
and then with rel/base
, since there are actually 2 prices (bid and ask).
# autoprice
autoprice
is a very powerful API and it allows you to specify the price for a specific trading pair that is automatically updated as the market price of it changes. barterDEX uses external price sources (Bittrex, Cryptopia, Coinmarketcap) to get up to date prices. You can use fixed price instead of margin
or use autoprice based on coinmarketcap. For now, it is a relatively simple set of things you can do with the following fields (base, rel, fixed, minprice, maxprice, margin, refbase, refrel, factor, offset
).
Sample File Contents:
#!/bin/bash
margin=0.05
source userpass
# KMD/BTC must be first as other prices depend on it
#curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"autoprice\",\"base\":\"KMD\",\"rel\":\"BTC\",\"margin\":$margin,\"refbase\":\"komodo\",\"refrel\":\"coinmarketcap\"}"
#curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"autoprice\",\"base\":\"BTC\",\"rel\":\"KMD\",\"fixed\":0.00025,\"margin\":$margin}"
#curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"autoprice\",\"base\":\"KMD\",\"rel\":\"BTC\",\"fixed\":4000,\"margin\":$margin}"
curl --url "http://127.0.0.1:7783" --data "{\"minprice\":0.0003,\"maxprice\":0.001,\"userpass\":\"$userpass\",\"method\":\"autoprice\",\"base\":\"KMD\",\"rel\":\"BTC\",\"margin\":0.05,\"refbase\":\"komodo\",\"refrel\":\"coinmarketcap\"}"
./auto_chipskmd
./auto_chipsbtc
#curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"autoprice\",\"base\":\"KMD\",\"rel\":\"MNZ\",\"offset\":0.0,\"refbase\":\"KMD\",\"refrel\":\"BTC\",\"factor\":15000,\"margin\":-0.2}"
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"autoprice\",\"base\":\"HUSH\",\"rel\":\"KMD\",\"margin\":$margin,\"refbase\":\"hush\",\"refrel\":\"coinmarketcap\"}"
#curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"autoprice\",\"base\":\"KMD\",\"rel\":\"BTCH\",\"offset\":0.0,\"refbase\":\"KMD\",\"refrel\":\"HUSH\",\"factor\":1.44,\"buymargin\":0.05,\"sellmargin\":0.05}"
#curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"autoprice\",\"base\":\"BTCH\",\"rel\":\"KMD\",\"offset\":0.0,\"refbase\":\"HUSH\",\"refrel\":\"KMD\",\"factor\":0.7,\"buymargin\":0.05,\"sellmargin\":0.05}"
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"autoprice\",\"base\":\"BEER\",\"rel\":\"PIZZA\",\"fixed\":0.0001,\"margin\":0.00001}"
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"autoprice\",\"base\":\"BEER\",\"rel\":\"ETOMIC\",\"fixed\":10,\"margin\":0.00001}"
source crypto
source trackbtc
#source jumblr
#source trackbtc
source pangea
source trackbtc
source bet
source trackbtc
#source revs
#source trackbtc
sharkholdings="{\"coin\":\"iota\",\"balance\":1500000}, {\"coin\":\"komodo\",\"balance\":120000}, {\"coin\":\"bitcoin-cash\",\"balance\":1200}, {\"coin\":\"bitcoin\",\"balance\":100}"
curl --url "http://127.0.0.1:7783" --data "{\"base\":\"MSHARK\",\"rel\":\"KMD\",\"fundvalue_bid\":\"NAV_KMD\",\"fundvalue_ask\":\"assetNAV_KMD\",\"userpass\":\"$userpass\",\"method\":\"autoprice\",\"margin\":$margin,\"address\":\"RTu3JZZKLJTcfNwBa19dWRagEfQq49STqC\",\"holdings\":[$sharkholdings],\"divisor\":1400000}"
curl --url "http://127.0.0.1:7783" --data "{\"margin\":$margin,\"base\":\"SUPERNET\",\"rel\":\"KMD\",\"fundvalue_bid\":\"NAV_KMD\",\"fundvalue_ask\":\"NAV_KMD\",\"userpass\":\"$userpass\",\"method\":\"autoprice\",\"address\":\"RRyyejME7LRTuvdziWsXkAbSW1fdiohGwK\",\"holdings\":[{\"coin\":\"iota\",\"balance\":11000000}, {\"coin\":\"stratis\",\"balance\":1300000}, {\"coin\":\"zcash\",\"balance\":0.10000}, {\"coin\":\"syscoin\",\"balance\":20000000}, {\"coin\":\"waves\",\"balance\":700000}, {\"coin\":\"bitcoin\",\"balance\":600}, {\"coin\":\"bitcoin-cash\",\"balance\":1500}, {\"coin\":\"heat-ledger\",\"balance\":2323851 }, {\"coin\":\"decred\",\"balance\":0.20000}, {\"coin\":\"vericoin\",\"balance\":2199368 }, {\"coin\":\"byteball\",\"balance\":4238}, {\"coin\":\"iocoin\",\"balance\":0.150000}, {\"coin\":\"quantum-resistant-ledger\",\"balance\":0.375000}, {\"coin\":\"chips\",\"balance\":2577006 }, {\"coin\":\"hush\",\"balance\":100000 }, {\"coin\":\"mobilego\",\"balance\":100000 }],\"divisor\":612529}"
curl --url "http://127.0.0.1:7783" --data "{\"margin\":$margin,\"base\":\"HODL\",\"rel\":\"KMD\",\"fundvalue_bid\":\"assetNAV_KMD\",\"fundvalue_ask\":\"assetNAV_KMD\",\"userpass\":\"$userpass\",\"method\":\"autoprice\",\"address\":\"RNcUaMUEFLxVwtTo7rgruhwYanGk1jTkeU\",\"holdings\":[{\"coin\":\"siacoin\",\"balance\":185000000,\"comment\":\"using siafunds equal to million siacoin\"}],\"divisor\":10000000}"
dexholdings="{\"coin\":\"blocknet\",\"balance\":2500000}"
curl --url "http://127.0.0.1:7783" --data "{\"base\":\"DEX\",\"rel\":\"KMD\",\"margin\":$margin,\"fundvalue_bid\":\"assetNAV_KMD\",\"fundvalue_ask\":\"assetNAV_KMD\",\"userpass\":\"$userpass\",\"method\":\"autoprice\",\"address\":\"RThtXup6Zo7LZAi8kRWgjAyi1s4u6U9Cpf\",\"holdings\":[$dexholdings],\"divisor\":1000000}"
curl --url "http://127.0.0.1:7783" --data "{\"base\":\"BOTS\",\"rel\":\"KMD\",\"margin\":$margin,\"fundvalue_bid\":\"assetNAV_KMD\",\"fundvalue_ask\":\"assetNAV_KMD\",\"userpass\":\"$userpass\",\"method\":\"autoprice\",\"address\":\"RNdqHx26GWy9bk8MtmH1UiXjQcXE4RKK2P\",\"holdings\":[$dexholdings],\"divisor\":3333333}"
curl --url "http://127.0.0.1:7783" --data "{\"base\":\"JUMBLR\",\"rel\":\"KMD\",\"margin\":$margin,\"fundvalue_bid\":\"assetNAV_KMD\",\"fundvalue_ask\":\"assetNAV_KMD\",\"userpass\":\"$userpass\",\"method\":\"autoprice\",\"address\":\"RGhxXpXSSBTBm9EvNsXnTQczthMCxHX91t\",\"holdings\":[$dexholdings],\"divisor\":3333333}"
curl --url "http://127.0.0.1:7783" --data "{\"base\":\"MGW\",\"rel\":\"KMD\",\"margin\":$margin,\"fundvalue_bid\":\"assetNAV_KMD\",\"fundvalue_ask\":\"assetNAV_KMD\",\"userpass\":\"$userpass\",\"method\":\"autoprice\",\"holdings\":[$dexholdings],\"divisor\":13000000}"
curl --url "http://127.0.0.1:7783" --data "{\"base\":\"REVS\",\"rel\":\"KMD\",\"margin\":$margin,\"fundvalue_bid\":\"assetNAV_KMD\",\"fundvalue_ask\":\"assetNAV_KMD\",\"userpass\":\"$userpass\",\"method\":\"autoprice\",\"holdings\":[$dexholdings],\"divisor\":9000000}"
Sample Output:
{
"result": "success"
},
{
"result": "success"
}
.......
# Knowledge Base:
refbase
and refrel
allow you to specify a different base/rel pair as the basis for the price, if there is no refbase
and refrel
, the the base/rel price from external sources is used as the starting point. This is calculated approximately once per minute and a set price done automatically:
setprice of (1. + margin) * ((price * factor) + offset)
The margin is usually set to 0.01 for 1% profit margin. using factor and offset it is possible to map a starting price to a standard multiple.
There is also a minprice field which sets the absolute minimum (post calculation) price that is accepted.
# Example autoprice
script using coinmarketcap prices.
curl --url "http://127.0.0.1:7783" --data "{\"minprice\":0.00002,\"maxprice\":0.0001,\"userpass\":\"$userpass\",\"method\":\"autoprice\",\"base\":\"CHIPS\",\"rel\":\"BTC\",\"margin\":0.05,\"refbase\":\"chips\",\"refrel\":\"coinmarketcap\"}"
or
curl --url "http://127.0.0.1:7783" --data "{\"minprice\":0.04,\"maxprice\":0.1,\"userpass\":\"$userpass\",\"method\":\"autoprice\",\"base\":\"CHIPS\",\"rel\":\"KMD\",\"margin\":0.05,\"refbase\":\"chips\",\"refrel\":\"coinmarketcap\"}"
# autoprice
the value of a fund, ie. using the fundvalue
api
The way to do is it start with the fundvalue
api call, then change the method
to autoprice
. Add base
and rel
and most importantly fundvalue_bid
and fundvalue_ask
that will be values in the return of the fundvalue call. Additionally, margin
is applied. This sounds complicated and it is, but now MSHARK, HODL and even SUPERNET are running using this autoprice. The following sample content is an example how to use it.
Sample File Content:
curl --url "http://127.0.0.1:7783" --data "{\"base\":\"MSHARK\",\"rel\":\"KMD\",\"fundvalue_bid\":\"NAV_KMD\",\"fundvalue_ask\":\"assetNAV_KMD\",\"userpass\":\"$userpass\",\"method\":\"autoprice\",\"address\":\"RTu3JZZKLJTcfNwBa19dWRagEfQq49STqC\",\"holdings\":[{\"coin\":\"iota\",\"balance\":5000000}],\"divisor\":1400000}"
Sample Output:
{
"result": "success"
}
# autoprice using usdpeg
There is a way for autoprice coinmarketcap to do USD pegs for orderbooks denominated in any coin. The syntax is pretty arbitrary but it works.
Make sure the usdpeg
is set to non-zero. In that case put in the orderbook BACKWARDS (dont ask me why, it just works only in this way) for the coin that is the coinmarketcap refbase. Based on the example it is KMD so base KMD and rel OOT, will create OOT/KMD orderbooks using factor 0.15 (fifteen cents) denominated in KMD. The example script used different margins for buymargin and sellmargin, so it works for dICO scenario (allow people to sell back but at a steep loss) and also it is backwards (dont ask me why).
What this means is if you do a base DOGE rel OOT and refbase dogecoin, it should maintain an orderbook in DOGE pegged to the 15 cents price. Any CMC coin can be used. If you want to change the price, change the value of factor
accordingly.
Sample File Content:
#!/bin/bash
source userpass
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"autoprice\",\"base\":\"KMD\",\"rel\":\"OOT\",\"factor\":0.15,\"buymargin\":0.0001,\"sellmargin\":0.2,\"refbase\":\"komodo\",\"refrel\":\"coinmarketcap\",\"usdpeg\":1}"
Sample Output:
{
"result": "success"
}
# buy
In simple terms, this command will post a buy order. If there is a matching order in the orderbooks, then this will automatically start a trade. If a match is not found, a bid order will be added in the orderbook. Buy fills asks from the orderbook using relvolume. Trade request will last as long as defined in the 'timeout' field.
Call 'recentswaps' to check the status of the trade request. Alice side does not give feedback about expired trade request, unless a 'recentswaps' call is done.
Sample File Contents:
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"buy\",\"base\":\"MNZ\",\"rel\":\"KMD\",\"relvolume\":0.005,\"price\":0.172}"
# Knowledge Base:
base:
the currency you want to buy rel:
the currency you are paying with price:
the max price you are willing to pay for 1 base relvolume:
the amount of rel you want to trade timeout:
the amount of time Alice or Bob should wait for payment. Default: 10 seconds (might be deprecated in future) duration:
after the specified duration it wont be displayed
Sample Output:
{
"result": "success",
"swaps": [
[45030989, 41860326],
[264022270, 1424922977],
[3882191272, 3366340834]
],
"pending": {
"expiration": 1509564162,
"timeleft": 15,
"requestid": 0,
"quoteid": 0,
"bob": "MNZ",
"base": "MNZ",
"basevalue": 0.02803687,
"alice": "KMD",
"rel": "KMD",
"relvalue": 0.0048,
"aliceid": 7785695213943587000
}
}
# electrum
This method enables a coin by connecting to the specified electrumx server. For this method running a native node and blockchain download is not necessary. You need to edit the file with coin name and IP address and port for the coin. For a list of electrumx server check this link http://pad.supernet.org/electrum-servers (opens new window)
Sample File Contents:
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"electrum\",\"coin\":\"KMD\",\"ipaddr\":\"electrum1.cipig.net\",\"port\":10001}"
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"electrum\",\"coin\":\"MNZ\",\"ipaddr\":\"electrum1.cipig.net\",\"port\":10002}"
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"electrum\",\"coin\":\"REVS\",\"ipaddr\":\"electrum1.cipig.net\",\"port\":10003}"
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"electrum\",\"coin\":\"JUMBLR\",\"ipaddr\":\"electrum1.cipig.net\",\"port\":10004}"
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"electrum\",\"coin\":\"SUPERNET\",\"ipaddr\":\"electrum1.cipig.net\",\"port\":10005}"
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"electrum\",\"coin\":\"DEX\",\"ipaddr\":\"electrum1.cipig.net\",\"port\":10006}"
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"electrum\",\"coin\":\"BOTS\",\"ipaddr\":\"electrum1.cipig.net\",\"port\":10007}"
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"electrum\",\"coin\":\"CRYPTO\",\"ipaddr\":\"electrum1.cipig.net\",\"port\":10008}"
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"electrum\",\"coin\":\"HODL\",\"ipaddr\":\"electrum1.cipig.net\",\"port\":10009}"
# getfee
getfee
API will display network tx fee based on that time. This should only be required for BTC, all other coins are hardcoded.
Sample file content:
#!/bin/bash
source userpass
curl --url "http://127.0.0.1:7783" --data "{\"userpass\": \"$userpass\",\"method\":\"getfee\",\"coin\":\"BTC\"}"
Sample file output:
{
"result": "success",
"coin": "BTC",
"txfee": 0.0002
}
# getprices
The ./getprices
API lists all currently available trading pairs and its current prices. You need to specify a base
and rel
coin if you need a specific pair price.
Sample File Contents:
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"getprices\",\"coin\":\"KMD\"}"
Sample Output:
[
{
"pubkey": "040f1d2d5d12027afa2cec30477312e225b0d24c77cc4aa08d3fffe51277b904",
"rmd160": "8784673d815a20300412a9010b72e771963d45b6",
"pubsecp": "03829863f4ed7660fbf62b2f84b0e655f523a33f23a1f681107d2a2942987584b1",
"timestamp": 1508160175,
"asks": [
["BTC", "KMD", 3304.53174512],
["KMD", "BTC", 0.00030268],
["KMD", "REVS", 0.78551134],
["KMD", "JUMBLR", 0.10432527],
["KMD", "HUSH", 1.17931676],
["REVS", "KMD", 1.29051134],
["JUMBLR", "KMD", 9.77904977],
["HUSH", "KMD", 0.86507888]
]
}
]
# goal
The ./goal
command is basically the automatic trading tool of the API. When you execute this command, orders will be set until the goals are reached. The idea is that you set the goal for each coin and if you have more than the goal for a specific coin, it will allow sales of that coin. If you have less than the goal percentage, it will allow buys of that coin.
Sample File Contents:
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"goal\",\"coin\":\"KMD\",\"val\":99}"
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"goal\",\"coin\":\"BTC\",\"val\":10}"
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"goal\",\"coin\":\"REVS\",\"val\":1}"
Sample Output:
{
"result": "success",
"kmd_equiv": 29.03290329,
"buycoin": "KMD",
"buyforce": 125.75072424,
"sellcoin": "DGB",
"sellforce": -412.28377122,
"portfolio": [
{
"coin": "BTC",
"address": "15XAhHK4ULofD6BTckrCWK6XSkCjscX7jj",
"amount": 0,
"price": 3315.35638637,
"kmd_equiv": 0,
"perc": 0,
"goal": 10,
"goalperc": 9.09090909,
"relvolume": 0,
"force": 82.6446281,
"balanceA": 0,
"valuesumA": 0,
"balanceB": 0,
"valuesumB": 0,
"balance": 0
},
{
"coin": "KMD",
"address": "RDoMmoCM5AcEH6Yf5vqKbqRjD1fLcQHuWb",
"amount": 22.87390295,
"price": 1,
"kmd_equiv": 22.87390295,
"perc": 78.78613696,
"goal": 99,
"goalperc": 90,
"relvolume": 0,
"force": 125.75072424,
"balanceA": 22.6448,
"valuesumA": 22.87390295,
"aliceutil": 98.99840901,
"balanceB": 22.6448,
"valuesumB": 22.87390295,
"balance": 22.87390295,
"bobutil": 98.99840901
},
{
"coin": "DGB",
"address": "D9fGEYFhmkhwk6N4MLqm45G8Ksw3E2AmTR",
"amount": 919,
"price": 0.00670185,
"kmd_equiv": 6.15900034,
"perc": 21.21386304,
"goal": 1,
"goalperc": 0.90909091,
"relvolume": 186.60085587,
"force": -412.28377122,
"balanceA": 479.499,
"valuesumA": 919,
"aliceutil": 52.17616975,
"balanceB": 479.499,
"valuesumB": 919,
"balance": 919,
"bobutil": 52.17616975
}
]
}
# goals
Displays the goal percentage for each coin and their status.
Sample File Contents:
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"goal\"}"
Sample Output:
{
"result": "success",
"kmd_equiv": 28.98048555,
"buycoin": "BTC",
"buyforce": 625,
"sellcoin": "KMD",
"sellforce": -2908.30091422,
"base": "BTC",
"rel": "KMD",
"relvolume": 12.33191136,
"portfolio": [
{
"coin": "BTC",
"address": "15XAhHK4ULofD6BTckrCWK6XSkCjscX7jj",
"amount": 0,
"price": 3321.5219084,
"kmd_equiv": 0,
"perc": 0,
"goal": 25,
"goalperc": 25,
"relvolume": 0,
"force": 625,
"balanceA": 0,
"valuesumA": 0,
"balanceB": 0,
"valuesumB": 0,
"balance": 0
},
{
"coin": "KMD",
"address": "RDoMmoCM5AcEH6Yf5vqKbqRjD1fLcQHuWb",
"amount": 22.87391037,
"price": 1,
"kmd_equiv": 22.87391037,
"perc": 78.92866505,
"goal": 25,
"goalperc": 25,
"relvolume": 12.33559451,
"force": -2908.30091422,
"balanceA": 22.6448,
"valuesumA": 22.87391037,
"aliceutil": 98.9983769,
"balanceB": 22.6448,
"valuesumB": 22.87391037,
"balance": 22.87391037,
"bobutil": 98.9983769
},
{
"coin": "ZEC",
"address": "t1NPmhcjCSfbFojEMZBfKe8CShQPpkcn4W7",
"amount": 0,
"price": 135.89703925,
"kmd_equiv": 0,
"perc": 0,
"goal": 25,
"goalperc": 25,
"relvolume": 0,
"force": 625,
"balanceA": 0,
"valuesumA": 0,
"balanceB": 0,
"valuesumB": 0,
"balance": 0
},
{
"coin": "DGB",
"address": "D9fGEYFhmkhwk6N4MLqm45G8Ksw3E2AmTR",
"amount": 919,
"price": 0.0066448,
"kmd_equiv": 6.10657518,
"perc": 21.07133495,
"goal": 25,
"goalperc": 25,
"relvolume": 0,
"force": 15.43440909,
"balanceA": 479.499,
"valuesumA": 919,
"aliceutil": 52.17616975,
"balanceB": 479.499,
"valuesumB": 919,
"balance": 919,
"bobutil": 52.17616975
}
]
}
# myprice
Shows number of bids andprices you set for a given coin. Your wallet must be active to display the prices.
Sample File Contents:
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"myprice\",\"base\":\"REVS\",\"rel\":\"KMD\"}"
Sample Output:
{
"base": "REVS",
"rel": "KMD",
"bid": 2,
"ask": 0
}
# myprices
./myprices
shows numer of bids and ask for your ./buy
coin pair.
Sample File Contents:
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"myprices\"}"
Sample Output:
[
{
"base": "KMD",
"rel": "REVS",
"bid": 0,
"ask": 0.5
},
{
"base": "REVS",
"rel": "KMD",
"bid": 2,
"ask": 0
}
]
# orderbook
Displays bid/ask for a specific coin/asset pair. You can display multiple pairs, just need to edit the file and add more line. The numutxos/minvolume/maxvolume
are the state of your local utxo
cache. It might or might not be 100% accurate. Also, if all 0
's it could be that it hasn't been queried yet. Even if all zeros, it is possible, even likely that there are actually utxo
available.
If you do an ./orderbook
, it will start fetching the details from the best prices. You can do listunspent
for a specific address, but it is not possible to know for sure what trades are possible, especially as there are other nodes that might be going after the same utxo
. Specifically doing a listunspent
api will also fetch the details, also doing a trade will fetch the details as well. James uses just in time fetching to get the utxo
data. This way we don't flood the network with data for utxo
info.
Sample File Contents:
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"orderbook\",\"base\":\"DGB\",\"rel\":\"KMD\"}"
Sample Output:
{
"bids": [
{
"coin": "KMD",
"address": "RB8yufv3YTfdzYnwz5paNnnDynGJG6WsqD",
"price": 0.00492739,
"numutxos": 13,
"minvolume": 0.072,
"maxvolume": 0.76,
"pubkey": "8adbf9d5de4fb49ec1fca9ca3f28ba384715752de1197c9cddbb756c3d2a1a7c",
"age": 16
},
{
"coin": "KMD",
"address": "RHPBQQpjVqpwWC8NrpAxdoRQAkigA2zjRo",
"price": 0.00487791,
"numutxos": 5,
"minvolume": 0.00016002,
"maxvolume": 96,
"pubkey": "22aaf8e3686d31ee9f5ebe61c97231114717aee943ef01cc58e9f843ddad0240",
"age": 53
}
],
"numbids": 2,
"asks": [
{
"coin": "DGB",
"address": "D6ztNQyQF3mMTYcMFVq1q2cd6eXzqPKGc8",
"price": 0.00532946,
"numutxos": 38,
"minvolume": 0.00586622,
"maxvolume": 2.20800448,
"pubkey": "8adbf9d5de4fb49ec1fca9ca3f28ba384715752de1197c9cddbb756c3d2a1a7c",
"age": 16
},
{
"coin": "DGB",
"address": "DDF5s9t6CRveyBwn8EBQ63FoHczNsyFsFi",
"price": 0.0053779,
"numutxos": 3,
"minvolume": 0.67844886,
"maxvolume": 7.06141621,
"pubkey": "22aaf8e3686d31ee9f5ebe61c97231114717aee943ef01cc58e9f843ddad0240",
"age": 53
}
],
"numasks": 2,
"base": "DGB",
"rel": "KMD",
"timestamp": 1508410319
}
# portfolio
Shows all active coin information and value. Such as, smartaddress, balance, current price per coin in barterDEX, KMD equivalent balance, percentage of your portfolio goal. You don’t need to edit or change the script for it work. It will get information from your active wallets and display them.
Sample File Contents:
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"portfolio\"}"
Sample Output:
{
"result": "success",
"kmd_equiv": 29.09215302,
"buycoin": "KMD",
"buyforce": 129.37341083,
"sellcoin": "DGB",
"sellforce": -418.82246271,
"base": "ZEC",
"rel": "DGB",
"relvolume": 189.62190318,
"portfolio": [
{
"coin": "BTC",
"address": "15XAhHK4ULofD6BTckrCWK6XSkCjscX7jj",
"amount": 0,
"price": 3351.92820521,
"kmd_equiv": 0,
"perc": 0,
"goal": 10,
"goalperc": 9.09090909,
"relvolume": 0,
"force": 82.6446281,
"balanceA": 0,
"valuesumA": 0,
"balanceB": 0,
"valuesumB": 0,
"balance": 0
},
{
"coin": "KMD",
"address": "RDoMmoCM5AcEH6Yf5vqKbqRjD1fLcQHuWb",
"amount": 22.87392545,
"price": 1,
"kmd_equiv": 22.87392545,
"perc": 78.62575669,
"goal": 99,
"goalperc": 90,
"relvolume": 0,
"force": 129.37341083,
"balanceA": 22.6448,
"valuesumA": 22.87392545,
"aliceutil": 98.99831163,
"balanceB": 22.6448,
"valuesumB": 22.87392545,
"balance": 22.87392545,
"bobutil": 98.99831163
},
{
"coin": "DGB",
"address": "D9fGEYFhmkhwk6N4MLqm45G8Ksw3E2AmTR",
"amount": 919,
"price": 0.0067663,
"kmd_equiv": 6.21822757,
"perc": 21.37424331,
"goal": 1,
"goalperc": 0.90909091,
"relvolume": 188.07475055,
"force": -418.82246271,
"balanceA": 479.499,
"valuesumA": 919,
"aliceutil": 52.17616975,
"balanceB": 479.499,
"valuesumB": 919,
"balance": 919,
"bobutil": 52.17616975
}
]
}
# sell
This script is completely opposite of buy
and uses the same parameters. Edit the file with specific coin pair name, volume and price.
Sample File Contents:
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"sell\",\"base\":\"KMD\",\"rel\":\"BTC\",\"basevolume\":10.0,\"price\":0.0005}"
Sample Output:
{
"result": "success"
}
# setconfirms
This will allow each node to set the number of required confirms on a coin by coin basis. During the atomic swap, each side sends to the other the required confirms and the "protocol" is that both sides use the bigger value.
Sample File Contents:
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"setconfirms\",\"coin\":\"DGB\",\"numconfirms\":1}"
Sample Output:
{
"result": "success"
}
# setprice
To create a bob utxo
(or an ask order) you need to first set the price. To set price you need to edit the ./setprice
script in the dexscripts
folder
Note: To fully cancel an autotrade, setprice 0
needs to be called twice, once with base/rel
and then with rel/base
, since there are actually 2 prices (bid and ask). Doing setprice 0
for an order made with coinmarketcap api
call doesn't end it. It is likely as it has two 0
's and you can only set one 0
at a time. The only way to stop an order made with coinmarketcap api
is to kill marketmaker
.
Sample File Contents:
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"setprice\",\"base\":\"KMD\",\"rel\":\"REVS\",\"price\":0.5}"
Sample Output:
{
"result": "success"
}
# fomo
fomo
Fear of missing out API will allow you buy for your specified relvol at the best current orderbook price. Orderbook has to be visible for this API to work. When using fomo
you won't get the best price. No need to fomo
if you are able to do normal ordermatch. It adds 5% to the orderbook entry that is the biggest that fits.
Sample file content:
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"buy\",\"base\":\"KMD\",\"rel\":\"HODL\",\"fomo\":40.00038}"
# dump
As the name suggests, you can use dump
API to dump the coins you want to at current orderbook price. Orderbook has to be visible for this API to work.
Sample file content:
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"sell\",\"base\":\"KMD\",\"rel\":\"HODL\",\"dump\":40.00038}"
# pubkeystats
Sample File Content:
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"statsdisp\",\"starttime\":0,\"endtime\":0,\"pubkey\":\"a2593155464e37fcc88245780240a412a38cf3d316809445aad73f4e7789187d\"}"
← General Status/Info →