Tons of updates this week!
https://github.com/kenCode-de?tab=repositories edit: removed this old image
BlockPay related: The work from the previous week done in graphenej in order to be able to import the .bin backup files from the web wallet and light client wallets has been introduced now into both BlockPay and the Smartcoins Wallet. The commit adding this fix to the Smartcoins Wallet is here:
https://github.com/kenCode-de/smartcoins-wallet/commit/00ddf4e788eecb34b5ea63b8a32f64d115c7be63 An important bug that made it impossible to read the backup codes being generated by the BlockPay app was fixed in this commit:
https://github.com/kenCode-de/blockpay-s/commit/7167803e380da3ead24b9f0532d8766c63aad806 The last screen in the checkout process on BlockPay now also displays the Total, and is sending the customer 0.5% fee to the bitshares-munich account:
https://github.com/kenCode-de/blockpay-s/commit/9ecb736c43abb90b44520746fbe619b31f64da12 Small adjustments done in the settings screen, like selecting the "None" option for the UIA as a default, hiding the "reward ratio" line when this option is checked, a small issue with the wrong UIA being selected was fixed, and also fixed the lack of an asset description.
https://github.com/kenCode-de/blockpay-s/commit/96666c233bfd246ba8d2f1028cf78bb2cf6b076a https://github.com/kenCode-de/blockpay-s/commit/be999af7d7bb9d5ff5befda496038e1c792d3a42 https://github.com/kenCode-de/blockpay-s/commit/c0a631b4c372854c55cd186ae7107903caa7023e It was requested that the BlockPay app only could hold one merchant account at a time, and for that we had to disable the options to add more accounts once we already had one. Check this commit for that work:
https://github.com/kenCode-de/blockpay-s/commit/65cc60aa2cf51b3fbbe960dd03f855cd836bdd43 We now also correctly handle "partial payment" attempts for Smartcoin transactions, playing a special sound (transaction-error.mp3) and updating the UI to give the customer an additional 60 seconds (and new QR code) to pay the cashier what was supposed to be paid. Now it's impossible to cheat the merchant! This feature will of course be extended to disallow partial payments from Bitcoin and Altcoin customers as well, in a few days in the v1.5.8 release.
https://github.com/kenCode-de/blockpay-s/commit/72afc056181f4b4e3305e398a44df1fa64f4c89e We are also removing the need to press that stupid Save button on the settings screen. We'll try to remove that button completely in the next release. Just gotta beta test it like crazy first.
https://github.com/kenCode-de/blockpay-s/commit/7eeb87dcaa4f605978f2681abfaf3d1f01b551bf C-IPFS related: This week we worked on file sharing between 2 networked nodes. While we're close to getting it to work, we still lack some functionality.
The good news is that we made good progress this week. The majority of the items we are building out will continue to be used in future versions. Only some of the "glue" that gives current users some functionality will need to be replaced. Here is a list of "critical path" items:
- We are missing the ability to join the swarm. Procedures, encryption, and time to tinker are lacking, so we cannot perfectly connect to the go-ipfs implementation yet.
- Because we are not part of the swarm, we do not have a list of peers to query for objects.
- Because we do not have a list of peers, a C-IPFS peer must know the hostname and port of the machine that hosts the file.
If the user uses the hostname and port, he will (soon) be able to download an object. The good news here is that the swarm, protocols, and peer stuff are "front-end" pieces. The underlying querying and storing is almost complete. That means:
- We are (or will be soon) able to move files around using the underlying mechanisms very close to existing GO versions.
- The "glue" pieces that currently do this with the user specifying details do not have details buried deep in the code. When we sort out the swarm / encryption / peer stuff, we will finally be part of the swarm and can query and serve files to/from anywhere as existing peers do.
The reason I've got (soon) in there, is that the file transfer is still being worked on, and has not had enough beta testing done on it yet. I'm hoping to get some kind of working POC done tonight (Monday latest). But the clock is ticking.
Here's a rundown of our commits from this week:
c-multiaddr: We're finally getting down to needing this library, and the code was difficult to understand, and not efficient enough. We made modifications to make it more solid, but broke a few things that were not fully understood. That's all been fixed and upgraded, and here are the commits related to addressing:
https://github.com/kenCode-de/c-multiaddr/commit/fcb0cce437cea8b028bc8d52af921de41301b803 https://github.com/kenCode-de/c-multiaddr/commit/4e281ddd0877db8451e62554be310b264c280f39 https://github.com/kenCode-de/c-multiaddr/commit/0b8789ebbcdb30d4614b22fdc6c93c9caed42cc9 https://github.com/kenCode-de/c-multiaddr/commit/7da26ca04d050cbe6fdd926bbb6dd119f8b4e2f1 c-libp2p: The first part of the week was the buildout of protobuf-compatible objects that can be sent through the wire.
https://github.com/kenCode-de/c-libp2p/commit/cd27026cb5cd7691e210cb5865bf63a0f5635940 https://github.com/kenCode-de/c-libp2p/commit/7f00ce69fe14114e7df1bf23f18bfdfcb2507eb7 https://github.com/kenCode-de/c-libp2p/commit/4555cdfdf1c335bf2cf42295ea3f005b8d7da916 c-libp2p: The peerstore will be where remote connections to/from the local peers will be stored:
https://github.com/kenCode-de/c-libp2p/commit/9f0ee0cdb9a2c095713e4a6033897eeb17a6a2f6 https://github.com/kenCode-de/c-libp2p/commit/ddb12745968b0d7b7e0d0f065333b5ef8ee955c5 https://github.com/kenCode-de/c-libp2p/commit/e4a4226f5d9fcf584fefafab6ee4d7d924c39c25 c-libp2p: Finally the more ipfs-like ping was implemented. This is good because it also tests some of the same code that is used in file/object sharing:
https://github.com/kenCode-de/c-libp2p/commit/8139dc9d4806c86ec71c1a38b3e9d83cca2e481c https://github.com/kenCode-de/c-libp2p/commit/f1aaae0f17a0b00f6f94b1122edefe4b31ee8ee2 c-ipfs: Many of the pieces that were built earlier are now being put to use. Network communications was the focus this week:
https://github.com/kenCode-de/c-ipfs/commit/f8e42867405c18aebeb1ad9cf9d0387bff7f40a8 https://github.com/kenCode-de/c-ipfs/commit/daefe7604fc00b8da28dc1aeb14bbf93fd197734 https://github.com/kenCode-de/c-ipfs/commit/ae48e058dd2e162dc3a29c709e8a6bd6b06daa3b https://github.com/kenCode-de/c-ipfs/commit/7a6b1384448a303f115e9bc5fd6eb273e40eaf8f Up this next week:
With the focus on file transfers, we didn't get a chance to work on the higher level encryption and connectivity portions like we wanted. If we can get the file transfer stuff working by Monday, even in a cobbled together way, we can work on breaking through this connectivity barrier, so as to join the swarm. That will be a huge step towards global acceptance.
Android Smartcoins Wallet: A small improvement was done in the way the app checks the input fields of the send screen. Especially after you scan a QR code. The previous method not only was kind of wasting CPU by performing a check every 100 ms, but it was also unreliable, leaving sometimes the Send button disabled when the fields were actually correct and thus preventing the user from sending the funds. This commit contains that work:
https://github.com/kenCode-de/smartcoins-wallet/commit/77b849f40ec88be56eb7bfa7636eb21b67e6a970 Since the Smartcoins Wallet will soon support 6 chains (Bitshares assets, Bitcoin, Litecoin, Dash, Dogecoin and Steem), here is the rundown on that feature:
- Added confirmation text and colors to the bitcoins transactions
- Added confirmation text and colors to the bitcoins balance (using the transaction with less confirmations)
- Changed Balance to get confirmed balance and unconfirmed balance and get the less confirmations
- Test send in the api, to see what's needed to construct the transaction using existing libraries in Smartcoins Wallet
- Change Transactions in database added blockheight, transaction index, priv script and pub script
- Changed the primary keys of all tables in Smartcoins Wallet from string to integers
- Adjusting BalanceFragment to work different with other coins than Bitshares
- Adding labels and confirmations needed to the Coin information. With this the app now prints "BTC", or whatever the symbol is for the altcoin, and the number of confirmations needed can be changed for every supported coin.
- Added send logic. This involved changing the account logic to get the proper change address and getting each utxo from each address.
At this point, we have completed all of the main functions that the wallet needs, send and receive transactions, also check the balance and get the balance history. The only thing left is to support memo/note fields for coins that support it. We should have that done by end of this weekend.
The work for next week is almost all UI, because the logic part is essentially done. So, for next week:
- Upgrade the database where we store Contacts, but that should only take a few hours at most
- For the QR code (sending and receiving); working on this, but this one will take a couple of weeks
- See if we can begin with the testing on other coins (Dash and Litecoin will be first)
- UI: Send Page
- UI: Create QR Code
- UI: Scanning a QR Code
..and if time allows this week:
- Sending memos
- Receiving memos
- Add new BTC Contact
- Make it easier to share your Contact address
- Import contacts
- Create eReceipt from multicoinsj
- Add option to set preferred unit (ie: BTC, mBTC, uBTC)
- Show the equivalent fiat value
If we keep moving at this pace, then at least the Bitcoin support will be completed in around 2 weeks, and the other coins will be very easy to add and finish since all of the base code is written already.
Stealth related: Lots of progress made on Stealth this week! The 2 "serious issues" that we found last week with the libsnark and gadgets have been solved. So, now that that is out of the way, we have been debugging libsnark proofs and proving keys. This entire week has been spent in the debugger and logs, so no github commits to link here.
Now that we have reached this point in the core code, I am able to add another cryptographer to the Stealth team in about a week. This will help us speed the Stealth project up of course, and add more security auditing as we go, but I also require my teams to cross-train just in case someone has a family emergency or something.
We should be able to start proving transactions within 3 weeks, and then begin closing the gaps in the api, which is needed to connect to the UI. Most of the UI work, at least in a rudimentary sense, is already done. We can make it pretty later, for now, I just want it working asap. I pushed hard on that too because I want to begin public beta testing on our testnet as soon as possible.
Alfredo Garcia, Bitshares Core Dev update: Fixed: Don't print private keys in log on witness startup
https://github.com/bitshares/bitshares-core/issues/93 PR:
https://github.com/bitshares/bitshares-core/pull/236 - merged
Added function to "api call to obtain an account's trad history for a specific asset-pair" issue:
https://github.com/bitshares/bitshares-core/issues/222 PR:
https://github.com/bitshares/bitshares-core/pull/237 - not merged yet. we want to enhance performance on this one a bit more first.
Testing additional changes at nospam branch (websocket spammed too much data).
Testing xeroc comment "sending notification twice". This is now fixed in the nospam branch at:
https://github.com/bitshares/bitshares-core/pull/234/commits/2487689f26a81a633cc2659d7d0311c6d848f467 Fixed: Uninstall light client does not remove "personal info"
https://github.com/bitshares/bitshares-core/issues/227 Issue is fixed at
https://github.com/bitshares/bitshares-ui/pull/82 - merged