During this week stabilize slatepack code, Rest API at mwc-wallet. Did some quick testing to check backward compatibility. Add the new functionality into mwc713 wallet. Merge the code into the master. CLI wallets should support slatepacks now.
Create document to start discussion about message pool, traceability and swap marketplace.
Started with QT wallet slatepack support. When I finish, QT wallet will be ready to work with slatepacks. So we can with testing and do a release.
Slatepack release preparation is on track. There was some issues with proofs and backward compatibility, currently they are fixed. For now there are no open tickets, but the testing is not finished so far.
Mobile automated build is done, we have a new pipeline. The results are published in nightly. The resutilg apk is not signed, debug. For release will build the package manually because it will require the keys to sign. Also for Google Play different package format will be required, so google could generate apk of smaller size.
Installed test nodes and electrumX servers for LTC, BSV, DASH, Zcash, Dogecoin. We are preparing for the next step of swaps. Will see how it will go with those coins.
Fixed found slatepacks issues and UI/UX improvements based on the feedback. This week QA agree that all workflows are tested, so we are good to release.
Switch CI pipeline from MD5 hash to SHA256. The ftp server was switched last week. We want release binary be signed with sha256 instead of md5
The slatepack binary release candidate is ready. mwc-node, mwc-wallet & mwc713 are released. The QT Wallet binaries are at nightly releases. Currently there are some Apple certifications issues that we need to solve in order to sign the MacOS package and do a release.
Deploy BSV mainnet to check the resource consumption. It is needed to understand if we can host it for swaps. So far it is fine, with current traffic BSV consume comparable amount of resources as BTC.
Swaps. Starting with BTC addresses support. The rust-bitcoin library is upgraded. Learning how addresses working from scripts point of view.
Created a test for quick validation of Chain related operations for the Swaps. The test is manual because it involve operations with real blockchains of the another coins. That test will give about 95% confidence what we can support.
Adopt Segwit X miltisig addresses for BTC (total 4 combinations, current release support 1, the next release will support 3 more).
Adopt Miltisig addressed for BCH.
Since release was done, pushed that code into the master branch, so we can go forward with a next release with addresses fixes.
CI/CD failed after the push. Found that only MacOS build was fine, the rest are failed on link issues. That was a surprise. Solution with linker tweak didn’t work. After source code analysis of our 3-rd party I found another correct solution and it worked. First solution with linker tweaks is rolled back.
Currently the nightly are ready for the testing. The next release will have only BTC/BCH coins with all addresses. Even other coins seems fine, we can’t release them because infrastructure need to be build first.
Adopted bitcoin library for Address generation of different coins. Now addresses can be ‘converted’ with this library. Since transaction structure was inherited from the Bitcoin, most of the BTC logic should work.
Here is the status for the coins:
Litecoin, LTC - Cleared, we will be able to support all type addresses (Same as BTC).
BitcoinSV, BSV - Dropped, last year BSV drop supporting of locking opcodes, so it is impossible to do SWAPs with those coins.
Dash, DASH - Addresses are adopted, chain operations are cleared. There were issues with testnet synchronization. Just now finish with it. Dash does hard forks routinely.
Zcash, ZEC - Testnet wallet with a full node still syncing. It is very slow. Addresses are adopted (only Transparent will be supported, no Shielded), but chain operations are not fully cleared yet because wallet is not ready.
Dogecoin, DOGE. All addresses are supported. Coin is cleared.
So far 3 out of 5 coins are will be supported. Zec we will see in a next couple of days. 1 coin (BSV) will not be supported.
Created documentation about out floonet faucet. I put steps what need to be done to claim some floonet MWC. It is expected that google search will show that page. We want to be friendly to other developers.
ZCash support for swap is done. We are supporting transparent addresses. In order to do that we start using librustzcash, we are using code that signs the transaction.
For troubleshooting I build the zcash node, setup debugger. ZCash build is really cool, they include build environment including compiler into the repo, so it is really no problem to build. Build works for Ubuntu, but still I like that idea. Really devs friendly.
Create document about the floonet (testnet) faucet. But so far it is not searchable. Seems like we need to have a webpage for that.
Spend some time trying to use Segwit address for locking BTC funds. Found what need to be done and delay that task.
Finish with ElectrumX nodes setup. DNS, certificates, watchdog - everything is done. For last few days everything is stable expect DogeCoin. It is still syncing and probably will be in this state for a while.
Add support for Dash, Doge, Ltc, ZCash to mwc713, mwc-wallet, qt wallet. The code is at the branch, should be ready for testing when we finish the current release.
Create document for swaps testing, how to setup. For some coins it is complicated.
Most of this week mostly I was busy with ‘message pool’ research and proposal. There is a better way to do that, so now ‘message pool’ is just a concept, implementation will be done on messaging - it is a classic design for p2p networks. For networking we will use libp2p. That library is used into other cryptocurrencies, it is well scalable and flooding tolerant.
Also now design has all needed details, it should be clear about implementation aspects.
Even it is relatively clear about technical details, we still need to continue discussing about business logic aspects. The solution need to be balanced enough so honest players will benefit and non honest will loose money. I hope during next week we will finish with those aspects as well.
Mobile CI/CO pipeline is updated, so now builds can be upgraded and data will not be lost.
Suem code review.
Dash, Doge, Ltc, ZCash nodes are ready for next release. The DNS, backup is done. Watchdog shows that it is pretty stable.
Going through the tickets, so the next next release will be ready for testing. Our plan is to do minor release the next week. By that time the next one will be ready and need to be tested.
mwc-qt-wallet release is done. Now the codebase is update for the next release that will support swaps with multiple coins.
Exploring libp2p . So far it doesn’t looks as good as I would like to see it. But still nothing better exist. We will need adopt it heavily. There is no way to use the code as it is, we will need to modify the existence code.
Mobile wallet. Go though the tickets. Update the binaries to keep them fresh. There are some issues exist but in general Mobile Wallet looks good.
Finish first prototyping with libp2p transport on mwc-node side. The code is into the repo for libp2p &rust-libp2p-tokio-socks5. There are bunch of changes for our needs, but we should be able to rebase the code into the future.
The design document is updated. Now it has “Changes” section. I will keep there description of the functionality that was done. It should help to track and review.
Update mwc-node floonet instances that use tor for communications with this new version. We will need to test inside the network.
Suem did review, we had discussion how we can do better. Found out that it make sense to switch from integrity output to integrity kernel. I will update design document with that, but will start with implementation later, first let’s prototype mwc-wallet wrokflow.
Update mobile wallet. There are some bug fixes and UX improvements. Now seed verification will require 6 random words to confirm.
Supported Integrity fee for libp2p messaging. mwc-wallet can operate with them, there is ‘integrity’ command. mwc-node can verify them. Cover that functionality with the tests. The next step is adding
Design papers reviews with Jon. We finished the first round. As a result we split them into 3 documents: about messaging, swap marketplace, and MWC Coinjoin.
Switch to the mobile wallet issues. We are close to the final versions. There are bunch of tickets I fixed, but still there are some exist. Hard to say how many there will be. I am trying to use the wallet, if I see something, I am fixing that.
CI/CD build is broken for Linux. Found how to fix that, but still need apply fix to all our pipelines.
Continue with libp2p messaging implementation. Now both mwc-wallet and mwc713 has support on the new commands needed for swap marketplace (‘messaging’ and ‘integrity’).
Currently I am debugging all that stuff. Hope soon move forward to qt wallet.
libp2p transport seems start working as expected. So now we have tool to build Atomic Swap marketplace inside QT wallet. The marketplace will be build on QT wallet layer. So mwc-wallet/mwc713 will not be able to work with it user friendly way.
Start working on bug and UX improvements that was discovered during the Testing of the next release. About 60% was done on them.
The inflation bug was discovered and because of that I switched to this problem. Thanks to grin team and Suem, we was able to make a version that able to mine another branch. Today deployment was done, tested. So far it looks fine. Mining pools should start operate. The wallets will be enabled later when blockchain will be stronger.