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
Congratulations @deepcryptotrade! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :
You got your First payout
Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word
STOP
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Congratulations @deepcryptotrade! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Do not miss the last post from @steemitboard:
Vote for @Steemitboard as a witness to get one more award and increased upvotes!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit