K-Progress Update Thread (2020)

Week, November 20.

  • At the beginning of the week Atomic Swaps was ready for QA tests. No outstanding issues left for the next release.

  • During the week fixed whatever QA found. Fortunately where wasn’t many issues. Nothing major.

  • Go through Explorer tickets, fixed all of them. Returns back to the reorg attacks notification.

  • With help of Jiraiya made end to end test at the floo network and validate that it works.

  • Add mwc-wallet support fo the SSL connection to the electrumX nodes. Currently wallet support both SSL and non SSL. That allows users install it’s own ElectrumX instance without SSL.

  • Install SSL certificates for the AWS nodes. Later I found half of them need to be updated (reeinstall from the scratch)

  • Start with ElectrumX watchdog implementation. Currently I can collect the data from the nodes. Need to aggregate and report. Found that AWS instances are broken and need to be reinstalled.

  • Reinstalling AWS instances. Because of AWS crappy hardware it is faster to copy the data from my local instance. Unfortunately my internet is slow now, so uploading might take a while as well. So there is a chance that Second phase of final testing will be postponed. All servers supposed to be in place. Also SSL certificate need to be updated after the install will be done.

  • Build start failing for all rust components under the Windows. The problem related to the environment setup. We changed nothing, trying to figure out what can we do. Because we need Windows build to QA testing, it is a blocker for now. QA can’t test new fixes.


Week, November 27

The build CI pipeline was done. Now all mwc executables (except qt wallet) are linked to openssl statically. QT wallet using what QT provides. Since qt wallet doesn’t responsible for any security data, it should be fine. Open SSL (except qt) will be updated with fresh version on every build

MWC embedded node switched to the TOR. If wallet using tor litener as autostart, the MWC node will use tor as well. Under the Windows tor has some issues, because of that it is possible to ban tor for the node usage. Also, because of tor the timing was changed. There are few modifications to handle that. Now embedded node works fine for me on all 3 OS.

Created test plan for the swaps, did a setup for 3 OS and start following the plan. There are bunch of issues of different levels was fixed (see the tickets or commits for details, there are many of them). The largest ones:

  • Network failure handling. We suppose do better than just show the error.
  • Show amounts for buyer locked funds.
  • The enforced backup logic was changed completely. We need to stop before the any locks was made, but after we have everything to do the locks.

So current testing status: we are still on the testnet, no mainnet tests was started.

Next week plan: Finish with the testing and build a release. The release will be tested for some time by QA before announcement.


Week ends with December 4

The swaps are done. There was a lot of edge case testing in testsnet and mainnet. Here are the issues that took most of the time:

  • Enforced backup must stay at defined point. Since FSM want to go forward with every opportunity, it took time to add ‘stay’ flag for routine operations like ‘swap --list’. The side effects can be visible at the UI and we are not fixing them for now.
  • Restore from the backup. Add calculation of a new stage for FSM. Backup is expected to be done in the past, so the backup state is invalid and need to be recalculated.
  • Found that BTC node doesn’t accept anything timelocked into mempool unless it guarantee can be included in the block that is in the progress (it is BTC refund transaction). That error is recoverable, we handle that. But the error messages are scary for the users. As a result I add 5 block extra waiting time to mitigate that.
  • Update QT wallet mwc713 task scheduler. I add groups and priorities. The issue that wallet run bunch of background task and they delay the tasks that need to be executed now. It is bad UX, user expecting response when they press the button.
  • Demo with Jon. Update QT wallet UI with the feedback.
  • Remove the waiting at the Redeem messages cycle. The issue that even message wasn’t delivered, we can’t assume that another party didn’t get it.
  • Test out public MWC node resilience for the income traffic. Node is scalable with new threads. So AWS deployment need to be updated. Current deployment has 1 CPU, it is not much.
  • Found that ElectrumX implantation blocking from resubmit BTC transaction with higher fee. The easiest solution is patch the elcetrumX code. All our instances are patched, documentation is created.
  • Build the release, switch QT wallet build pipeline to the release build. So the code is frozen. In order to do the fix, we will need to update release for any of the components. Binaries are on FTP only.

Help MrT with documentation. MrT did a great job, I think the document has just enough information to start the swaps.

Starting with mwc-wallet rebase. Grin cutting support of old API, Slates. We are keeping them. There are many commit to process. Just started.

Starting with Android builds update for mwc713. Recently we found that mwc713 binary has dependency problem on the Android. Startign with upgrade of the rust for Android, then we will see if it helps.

Week ends with December 11

  • Fix the build for mwc713, Android. Update QT wallet with a latest mwc713 binaries, so the mobile now can use the last version with all features.

  • Started with a rebase by merging the branches. Found that it doesn’t work any more. Grin doesn’t maintain backward compatibility, that is why we can’t just take the grin code. Our design has to different and backward compatible. I went through the changes, there are 2 pieces that we want to adopt: slatepacks and lock later feature. Slates V4 we don’t want to adopt. So the changes was rollback when I realize that it doesn’t work.

  • Started rebase the different way by adopting the changes. mwc-wallet code is adopted to the rebased mwc-node and latest secp chages.

  • Started with a slatepack. Our slatepack implementation will different from what grin has, but for the user it will looks the same. We will use different libraries, serializers, we keep slate V3, no V4 will be introduced. The tests will be adopted form the grin, they expected to pass.

December 18

  • Slatepacks integration. MWC will not introduce Slate V4, instead for slatepacks we will have a custom serializer that will be different form grin’s. For the user experience will be the same. The slatepacks on API level will be activated if slatepack recipient is defined.

Need to finish with slatepack tests. Then will do mwc-wallet functionality tests and integraiton with QT wallet.

December 26.

This week I was busy with a slatepack, compact slate and a late lock adoption. Currently the core functionality seems working fine. Old and new test are passing (exception is new REST API). Tests show that backward compatibility is working fine (I didn’t update the tests, so the logic is the same).

There was many complications during implementation. Now I understand why exactly grin abandon the old data formats and stop maintaining backward compatibility.

Currently I am working on REST API. I need to expected v2 owner API. Next I will tsrat working on rest API doc tests for slatepacks.