Tons of updates this week!
https://github.com/kenCode-de?tab=repositories BlockPay related: A bug that made the app crash after selecting BTS as a Loyalty Points token has been fixed. Some unused string resources were also removed speeding the app up. A protection against a crash that seemed to be produced when no currency was being selected was put in place. And a small bug in the numerical keypad screen was fixed.
The hierarchy of views used to build the keypad view was using a deeply nested chain of linear layouts, which constitutes a sub-optimal design choice. Since some changes were required for this view anyways, it was decided to replace the set of nested linear layouts for a newer and more efficient component called ConstraintLayout (
https://developer.android.com/reference/android/support/constraint/ConstraintLayout.html). With it is possible to design complex UI structures like the keypad view while keeping the view hierarchy relatively flat. These efficiency improvements make BlockPay run faster and more stable.
The QR code screen has been cleaned up and simplified.
The selected language was not using the required pointer in order to obtain the value from the shared resources. As a result, the app's default language was always being selected in some parts of the app, not all. This has also been fixed.
The Bridge has undergone some extensive upgrades too. We are hiding some tokens that were just cluttering up the settings screen. By showing less on the settings screen and automating more of the processes, like requiring the blockpay tokens for surety, it makes initial setup of the app much quicker and easier. We should have the new settings screen complete in less than 3 weeks which will really make the blockpay ambassadors and merchants happy. This will be the v1.7 release. Remember, my ultimate goal is to have a 1-step setup.
The numerical keypad was extended with the introduction of a "+" (plus) button, that will allow the merchant to enter a list of individual prices chained together. All the work relating to both the ConstraintLayout, some corner cases, and the introduction of the new "+" button have been finished. You will see these enhancements in the upcoming v1.5.9 release (most likely tonight or tomorrow).
Graphenej (
https://github.com/kenCode-de/graphenej):
After some more research, it was finally possible to make the backup files generated using the graphenej library completely compatible with the web wallet and light clients. This .bin backup interoperability is now complete and will be published this week in both BlockPay v1.5.9 and the Smartcoins Wallet v1.5.14.
This week we also started to work on the support for direct-DEx operations. The first operation that was introduced was the limit_order_create_operation, with this commit having most of the new classes and tests. The binary serialization (required for the local tx signing procedure) is matching the serialized version of the operation produced by the cli_wallet tool, but the transaction built using this newly introduced operation is still being rejected by the network. Further tests, especially on the JSON serialization are required and should be completed this week as well.
C-IPFS related: This week, we continued to work on tying the C-IPFS implementation to the IPFS swarm. There will probably be more commits before the end of the day, as this just about wraps it up.
The underlying c-libp2p was modified as follows..
secio protocol:
https://github.com/kenCode-de/c-libp2p/commit/6d9473069ba17a37dab71d5e33088eb62bb74f5d https://github.com/kenCode-de/c-libp2p/commit/0e0b6b15465c224235e78f91056d5dc0accf23e3 https://github.com/kenCode-de/c-libp2p/commit/c343d2d0ad1e2d4def471064f4e7593f2f61ac88 https://github.com/kenCode-de/c-libp2p/commit/e092a0e974689fa15be17f0bc7f59c9634db1863 https://github.com/kenCode-de/c-libp2p/commit/05cc6e9bd3f025316ce4d95f080eeb21a3e57b38 https://github.com/kenCode-de/c-libp2p/commit/3d53c470a50a2a75bda41d32706b6a3bc31f7c4e https://github.com/kenCode-de/c-libp2p/commit/a6fe0fda4765b41fb371cf48787db4038e7429bf We then made the interface to streams a bit more generic:
https://github.com/kenCode-de/c-libp2p/commit/d0512d90847dbc95283e1f5f38afbda1adedccd8 https://github.com/kenCode-de/c-libp2p/commit/74d95cb696b6da141e6b751faa8abb5495d5ee45 c-ipfs was then modified to use the new code:
https://github.com/kenCode-de/c-ipfs/commit/cd5d347e6346e26256c1bc96b92dbb62bf741e17 https://github.com/kenCode-de/c-ipfs/commit/15a8abff9a7abd417b90a4ebda39ecfa9fac27ad https://github.com/kenCode-de/c-ipfs/commit/43ca31385463774f2466eb55efced36a94b7d82d Additional c-libp2p work finished up:
https://github.com/kenCode-de/c-libp2p/commit/0ffe73ae28202df7453be74b6502093a0c2df13b https://github.com/kenCode-de/c-libp2p/commit/1b5b7c7cbacd354938c377788ef1e6af180b65e5 https://github.com/kenCode-de/c-libp2p/commit/018923ad0964c558a19c5d65688ab9ff503c7c55 https://github.com/kenCode-de/c-libp2p/commit/1fa0d4bd682060e5f60afbd4ff38f116d49713c7 Kademlia/DHT will finally be completed by tonight or tomorrow, just need to finish the callback work for returning search results.
Plans for the final week:
Lots of code cleanup now. Tidy up the comment lines, indenting and spaces, remove unused code/methods, and add efficiency wherever possible. Like I always say, every byte counts. Our v1.0.0 release will be for *nix systems and the RasPi3 first. Then the build for android the following week.
Android Smartcoins Wallet: As you guys know, the Smartcoins Wallet is about to natively support 6 blockchains. Bitshares, Bitcoin, Dash, Litecoin, Dogecoin and Steem. In v1.7 our new streamlined Overdraft Protection feature (aka: "backup asset") will be upgraded to graphenej. In 2.0 (I'll upload a youtube vid for you guys this week I hope so that you can see the new ui/ux concepts in action) we add our c-ipfs and initial meshnet support and the rebrand of the wallet to "Carbon". Also, a big shoutout to
@iHashFury for the suggestion (
https://bitsharestalk.org/index.php/topic,22576.msg302196.html#msg302196)!
Work done this week:
- Bitcoin support is done and tested (send/receive, balances, transactions, qr, import/backups, eReceipts, etc)
- Change api to new server parameters
- Testing of our altcoin fullnode servers (Dash was first, then Doge and Litecoin...)
- Change contacts to use sqlite db
- Changed contacts fragment, add and edit activity to work with BTC/alts
- Changed the Send screen to enable selecting BTC/alts Contacts
- Create base Custom Network Parameters for altcoins
Most of the upgraded UI (for multi-chain support) is ready, the thing to note is the interface is implemented with a new line for each coin right now, but this basic UI will be replaced in v2.0.0 ("Carbon"). Also the send and receive screens had to be modified to adapt to the upcoming 2.0 UI (I'll post a youtube vid so you can see our progress on it in the next week or so).
Work coming this next week:
- Figure out Dash InstantSend and get it finished
- The code we had created for the original Contacts screen needs to be cleaned up now that multi-chain support has been added
- The network parameters in bitcoinj are used to calculate all the transactions and the addresses, which is needed to use the api, so we standardized this to use each altcoin, which in turn makes the implementations much faster
- Upgrade our fullnode servers to support the additional coins
- Make sure all the chains we offer native support to can also take advantage of BlockPay Loyalty Points, Overdraft Protection, eReceipts and so on
- Testing Litecoin
- Testing Dogecoin
- Test and bug fix the Bridge so that users can shift between coins when desired
Stealth related: We're now into week 2 of 6 for the Stealth api creation. In the UI, I have also designed a "3-way switch" that allows you to just do a Normal, Blinded, or Stealth transaction simply by flipping an animated switch. This is a compact way for users to just flip the switch and sends funds however they like. I will try to get you guys some screen shots in the next couple weeks so that you can see it in action.
I also am adding an option in the wallet Settings where you can choose the default setting for that switch, so that you don't always have to remember to set your transaction to Stealth, or just Blinded mode, etc. If you have ever seen that "Propose" 2-way switch when you send funds, well, just imagine that as a 3-way switch on the Send screen. Grayed out for Normal, the switch turns yellow if you flip it to Blinded, and it turns red if you flip it to Stealth mode.
This 3-way switch also works nicely on mobile since it is so compact, colored, etc. BlockPay merchants and users alike want an easy way to use Stealth so I went with the k.i.s.s. method on this. The further we get on the Stealth api, the more UI hooks we can make. Lots of Stealth coding to show this week:
https://github.com/kenCode-de/bitshares-core/commit/009b3e6c8e99349450349913b12a0bced6631cec Besides the 3-way switch, we have also made huge progress on the database, account and contacts editor screens, and initial outlay for the automated backups feature using our c-ipfs implementation. Now that the encryption work is done, it's just down to the api and "trustless setup" algo (which we already have the plan for and will be relatively easy to implement and prove thanx to DPOS). More on that in week 6.
Lots of logic has been added this week too which prevents users from screwing anything up. Besides Chrome support, we are also writing the necessary code to make Stealth as portable as possible in different browsers and configurations such as Firefox and non-websql compatible browsers.
By the way, I don't know if you guys ever saw the original drawings that bytemaster did for Stealth when he used the "@" symbol for addresses. I use a lot of keyboard shortcuts and don't reach for my mouse much, so by having an easy way to access Stealth accounts and addresses by just typing that one character is a nice feature, so I have implemented that in the UI as well. You don't have to type it, as flipping the 3-way switch will do it for you, but I like having that option available. Not that reaching for my mouse is hard or anything..
Alfredo Garcia, Bitshares Core Dev update: Alfredo has some monster updates done this past week. The segfault issue in the get_ticker api call has been fixed. The cause of the segfault has been found and removed but this led us to a new additional bug that was found in an api call get_trade_history used by get_ticker and get_24_volume calls.
Those new bugs found are being researched as we speak and we should have a solution for them as well in the coming week. In the process of a change in get_ticker and get_24_volume, calls to don't use get_trade_history or fix the get_trade_history function. So fixing this is definitely a priority too.
Regarding the "Socket spamming too much data." issue:
https://github.com/bitshares/bitshares-core/issues/231 New commits from elmato in his branch:
https://github.com/elmato/bitshares-2/tree/no-spam-sub-function We tested and setup a node for sigve to make the final tests before the merge. Everything is working great now so as long as our final tests work as expected, we will finally commit this one (hopefully by monday)
Regarding "Can operation_results please show the operation id(s) of all ops in the tx?" issue:
https://github.com/bitshares/bitshares-core/issues/243 This one is now in progress.
Regarding "
https://github.com/bitshares/bitshares-core/issues/159" issue:
https://github.com/bitshares/bitshares-core/issues/159 This one is done as well and I will close it in the next 24 hours.
Here is a list of some of the other bitshares-core issues that Alfredo is tackling right now:
https://github.com/bitshares/bitshares-core/issues?q=is%3Aissue+is%3Aopen+sort%3Acreated-asc As for new features, I would like Alfredo to also work on Dividends, Black Swan prevention and recovery, advanced Trading functions to DEx (Margin Trading, Stop Loss, Trailing Stop etc.), selling/dumping a UIA that you no longer want, Worker proposal upgrade (as per Data and Jonny's ideas), Recurring and Scheduled Payments feature, make it so that FBA's don't always need a hardfork, and a lot more. If you have ideas for new features, please contact chris4210 since he maintains the Bitshares wishlist.
Over the weekend I will also publish more app updates to google play for both BlockPay and the Smartcoins Wallet so stay tuned if you want to see all the new stuff we've been working on. As usual, I will post the download links here for you guys too.