alice fee KMD 5e6918488af45b129dc2a46fbfb0c6811f9ed78a30506a875e8a3df9ed4e220f
bobdeposit HUSH bb52c5d7c574bd692689202beb48d42c3c4fd48a061a0f48c8ea31032f19d73e
alicepayment KMD 78875404d71c19a369d14ddc29988daae4fad1f20d62e9cf2e956ff19d38ce5b
bobpayment HUSH 04b304604d10211dd4af77ef73c11eec270eec14756311de9606655aaeff51ec
alicespend (of bobpayment) HUSH 7b11d0be299fdd0d2e6f3755d69e61ee39b42264c751d5bb81ad628f5d05c1ba
bobspend (of alicepayment) KMD a42d65d4b8b14dcfee64eb8658b01632fdabcbbf95cecafa756ac3cd5097956e
bobrefund (of bobdeposit) HUSH d66725e32ea484261e16570a9a0853da1e1901f811cccbd71ea6c624669abb81
for those keeping up to date with progress, the above was between two client nodes, both configured with canbind:0
./marketmaker "{\"client\":1,\"canbind\":0,\"coins\":[{\"coin\":\"REVS\",\"active\":1, \"asset\":\"REVS\",\"rpcport\":10196},{\"coin\":\"JUMBLR\",\"active\":1, \"asset\":\"JUMBLR\",\"rpcport\":15106},
{\"coin\":\"DOGE\", \"name\":\"dogecoin\", \"pubtype\":30, \"p2shtype\":5, \"wiftype\":128, \"txfee\":100000000},
{\"active\":1,\"coin\":\"HUSH\",\"name\":\"hush\",\"rpcport\":8822,\"taddr\":28,\"pubtype\":184,\"p2shtype\":189,\"wiftype\":128,\"txfee\":10000 },
{\"coin\":\"DGB\", \"name\":\"digibyte\", \"pubtype\":30, \"p2shtype\":5, \"wiftype\":128, \"txfee\":10000},
{\"coin\":\"MZC\", \"name\":\"mazacoin\", \"pubtype\":50, \"p2shtype\":9, \"wiftype\":224, \"txfee\":0},
{\"coin\":\"SYS\", \"name\":\"syscoin\", \"pubtype\":0, \"p2shtype\":5, \"wiftype\":128, \"txfee\":100000},
{\"coin\":\"UNO\", \"name\":\"unobtanium\", \"pubtype\":130, \"p2shtype\":30, \"wiftype\":224, \"txfee\":1000000},
{\"coin\":\"ZET\", \"name\":\"zetacoin\", \"pubtype\":80, \"p2shtype\":9, \"wiftype\":224, \"txfee\":10000},
{\"coin\":\"ZEC\", \"name\":\"zcash\", \"pubtype\":184, \"p2shtype\":189, \"wiftype\":128, \"txfee\":10000},
{\"coin\":\"BTM\", \"name\":\"bitmark\", \"pubtype\":85, \"p2shtype\":5, \"wiftype\":213, \"txfee\":0},
{\"coin\":\"CARB\", \"name\":\"carboncoin\", \"pubtype\":47, \"p2shtype\":5, \"wiftype\":175, \"txfee\":0},
{\"coin\":\"ANC\", \"name\":\"anoncoin\", \"pubtype\":23, \"p2shtype\":5, \"wiftype\":151, \"txfee\":2000000},
{\"coin\":\"FRK\", \"name\":\"franko\", \"pubtype\":35, \"p2shtype\":5, \"wiftype\":163, \"txfee\":0},
{\"coin\":\"GAME\", \"name\":\"gamecredits\", \"pubtype\":38, \"p2shtype\":5, \"wiftype\":166, \"txfee\":100000},
{\"coin\":\"LTC\", \"name\":\"litecoin\", \"rpcport\":9332, \"pubtype\":48, \"p2shtype\":5, \"wiftype\":176, \"txfee\":100000 },
{\"coin\":\"SUPERNET\",\"asset\":\"SUPERNET\",\"rpcport\":11341},{\"coin\":\"WLC\",\"asset\":\"WLC\",\"rpcport\":12167},{\"coin\":\"PANGEA\",\"asset\":\"PANGEA\",\"rpcport\":14068},{\"coin\":\"DEX\",\"asset\":\"DEX\",\"rpcport\":11890},{\"coin\":\"BET\",\"asset\":\"BET\",\"rpcport\":14250},{\"coin\":\"CRYPTO\",\"asset\":\"CRYPTO\",\"rpcport\":8516},{\"coin\":\"HODL\",\"asset\":\"HODL\",\"rpcport\":14431},{\"coin\":\"SHARK\",\"asset\":\"SHARK\",\"rpcport\":10114},{\"coin\":\"BOTS\",\"asset\":\"BOTS\",\"rpcport\":11964},{\"coin\":\"MGW\",\"asset\":\"MGW\",\"rpcport\":12386},{\"coin\":\"MVP\",\"asset\":\"MVP\",\"rpcport\":8655},{\"coin\":\"KV\",\"asset\":\"KV\",\"rpcport\":9747},{\"coin\":\"CEAL\",\"asset\":\"CEAL\",\"rpcport\":11116},{\"coin\":\"MESH\",\"asset\":\"MESH\",\"rpcport\":9455}
], \"userhome\":\"/${HOME#"/"}\",\"passphrase\":\"$randval\"}" &
As you can see, to add a coin to the list of supported coins is a matter of adding the appropriate coins[] array object:
{\"coin\":\"LTC\", \"name\":\"litecoin\", \"rpcport\":9332, \"pubtype\":48, \"p2shtype\":5, \"wiftype\":176, \"txfee\":100000 },
most of this info is in the chainparams.cpp file. If someone is interested in a bounty to dig up this info for the top 100 bitcoin forks, let me know how much it would cost.
Now that two canbind:0 nodes have done an atomic swap, that was the hardest networking test point, so barring silly bugs, all the easier cases should have a good chance to work. We need to now verify proper operation across all the OS platforms and networking configs.
With client mode able to atomic swap with another client node, that means the LP nodes dont have to run a coin for that coin's orderbook to be live in the network. If just two nodes run a specific coin (with the valid JSON definition), then they can create an orderbook between them (everyone else can also see this orderbook) and either party can start an autotrade.
I added blacklisting for nodes that dont connect (based on pubkey) and specific bob utxo that didnt respond. This allows multiple calls to autotrade to iterated down the list from most desirable to least, skipping a utxo after an error and skipping a pubkey after too many errors on utxo connects (currently set at 3).
I also added a bit of smarts to the ignoring of unresponsive peers and a way for them to come back into the active pool if they were just offline for a while.
What does all this mean?
It means that we are now in the "wait for the GUI to make all this easy to use" phase.
There is an uglyGUI that gets the job done, even though it isnt prettified. Also the HUSH devteam is starting a HUSH-centric DEX GUI. While it is possible to support 100+ coins, it is also ok to just support a few. If a coin is in the coins array, it can be active or inactive. If it is inactive (default for most), then all you can do is activate it. So this allows a bit of sanity to the list of available coins where we can verify that the parameters are correct and indeed it represents the coin specified.
So far there have been very few bugs reported with the barterDEX core, even though there is a minimum 100 KMD bounty per bug. I guess most people are afraid to issue curl commands like:
curl --url "
http://127.0.0.1:7779" --data "{\"userpass\":\"$userpass\",\"method\":\"setprice\",\"base\":\"HUSH\",\"rel\":\"KMD\",\"price\":0.93234}"
curl --url "
http://127.0.0.1:7779" --data "{\"userpass\":\"$userpass\",\"method\":\"orderbook\",\"base\":\"HUSH\",\"rel\":\"KMD\"}"
curl --url "
http://127.0.0.1:7779" --data "{\"userpass\":\"$userpass\",\"method\":\"autotrade\",\"base\":\"HUSH\",\"rel\":\"KMD\",\"volume\":0.5,\"price\":1.534}"
The above three are really all the API calls that are needed for a minimal trade setup, ie. set the price, get the orderbook and issue autotrade. probably also want to call swapstatus to see the status of swaps:
curl --url "
http://127.0.0.1:7779" --data "{\"userpass\":\"$userpass\",\"method\":\"swapstatus\",\"requestid\":2291973695,\"quoteid\":3387529385}"
I tried hard to abstract out the difficult parts of barterDEX and map it to something similar to existing exchange requests. If you have experience in writing software to exchange GUI, please contact me, looking for several parallel developed exchange GUI so there is a variety of solutions for users to choose from.
There is 10,000 KMD reserved for bug finding and testing
I can offer a similar amount for a fully working GUI that is independently developed and preferably takes a different approach than the other GUI projects toward barterDEX. Contact me if you are interested in developing such a GUI and if it seems likely you will be able to complete one, I will reserve 10,000 KMD for the completion bounty