Roadmap update (1)

By @deepcryptotrade9/18/2018deepcrypto

 In the last couple of days we made some changes to the backend:

  • Web Proxy:
    • Replaced NGINX with Traefik, this allows for automatic service detection on Docker Swarm. Which allows us to easily deploy our own services behind a web proxy with minimal configuration.


  • BitShares-UI:
    •  Updated to latest version 180912
    •  Added our API servers and referral to BitShares-UI
    •  Created Docker Image
    •  Deployed Docker Container on Docker Swarm
    •  Setup a staging so we can test new releases, before pushing it to production


 Whats the short term plan: 

  • Migrate the BitShares WebSockets to a new VPS (will still use NGINX, more on that in another blog post) 
  •  Visit BitFest in the Netherlands, Amsterdam!! 


The Golang module for BitShares: 

One of the great things in Golang is a Struct, this ‘thing’ allows for easy marshaling and unmarshaling of JSON data, to/from a format that Golang understand. 

One of the down sides is dynamic json, where a request can have multiple outputs of different types, for example: the Graphene Database API call: get_objects, accepts multiple values of different types, and will also return values of multiple values of different types

Requesting object 1.3.0 (BTS asset) and 1.6.128 (our witness) 

{
"id": 1,
"method": "call",
"params": [0, "get_objects", [["1.3.0", "1.6.128"]]]
}

The Response

{
"id": 1,
"jsonrpc": "2.0",   
"result": [
{"id": "1.3.0",
"symbol": "BTS",
"precision": 5,
"issuer": "1.2.3",
"options": {
 "max_supply": "360057050210207",
 "market_fee_percent": 0,
 "max_market_fee": "1000000000000000",
 "issuer_permissions": 0,
 "flags": 0,
 "core_exchange_rate": {
   "base": {
     "amount": 1,
     "asset_id": "1.3.0"},
   "quote": {
     "amount": 1,
     "asset_id": "1.3.0"}
   },
   "whitelist_authorities": [],
   "blacklist_authorities": [],
   "whitelist_markets": [],
   "blacklist_markets": [],
   "description": "",
   "extensions": []
   },
 "dynamic_asset_data_id": "2.3.0"
},


{
"id": "1.6.128",
"witness_account": "1.2.876613",
"last_aslot": 0,
"signing_key": "BTS7qKGdA9AJWz9a7mu63AgCBoWQ7dRkzF9SsUh2iZ5YXYzk2pxGk",
"vote_id": "1:378",
"total_votes": "8784142496916",
"url": "https://bts.deepcrypto.trade/",
"total_missed": 0,
"last_confirmed_block_num": 0
}
]


As you can see both JSON documents in the result array,  have no similarity at all with the exception of that it is a JSON document with an id field . This makes it a bit harder, but still possible to (un)marshal JSON (to/)into something that Golang can work with. 


I’m will spend some time on this to figure out on how to make an elegant solution. 


-Mouse

3

comments