Addressing recent transaction difficulties

(I originally had this prepared for today’s (June 25th, 2019) dev meeting, but it should most likely go here as well).

I just wanted to say a few words about the issues many people are having with transactions at the moment.

So as you know, Grin is only in its infancy. In the months since launch there have been many updates, changes and enhancements to the wallet APIs and the wallet exchange format, which we call the ‘Slate’.

Unfortunately, some of these changes were breaking and not backwards compatible with existing versions of Grin, particularly changes in the recent 1.1.0 release. We’ve tried to be clear and urge everyone involved to upgrade, but for whatever reasons many users and particularly exchanges haven’t been keeping up with the latest versions of Grin. Please note that I’m not blaming anybody other then ourselves here, as we may have misjudged the difficulties inherent in trying to keep up with changes in Grin, and possibly overestimated the frequency of changes the community should reasonably be expected to handle.

Anyhow, the result is that there are a lot of mismatched and slightly incompatible versions of Grin and the Wallet out there at there at the moment, and early versions of the code don’t have sufficient version awareness to help mitigate this. This unfortunately means that users are having far more trouble transacting with Grin than they should.

We know that the interactive nature of MimbleWimble makes transacting more challenging to get right than most other coins. But I don’t think we’ve handled the challenges particularly well over the past few releases, and I want to apologize for this.

Now, the good news and what we’re going to do to make this right:

First, as you know, 2.0.0 is just around the corner, which is our first scheduled hard fork (or you can call it a ‘network upgrade’ if you prefer). Fortunately for our current situation, this is a forced upgrade, which means that all users of Grin will have to upgrade their software to the 2.0.0 release. This should go a very long way (if not all the way) toward making sure all Grin users are on the same version of everything, and should be able to transact with each other without these incompatibility issues we’ve been seeing over the past couple of months.

2.0.0 will be released over the next week, and I strongly urge (to the point of pleading) that everyone involved in the Grin ecosystem update their operations to 2.0.0 as soon as it’s available. If you work for an exchange, pool, or other entity, please make whatever noises needed internally to ensure this happens. All current versions of Grin will stop working as of the HF block in a few weeks, and I very much hope that the HF does not come as a surprise to anyone when their nodes suddenly stop working.

Second, I do anticipate a bit of pain around HF time over the forced upgrade, particularly over the new version of the slate and the new V2 wallet API. However, once this settles I would expect us to see a much longer period of relative stability where everyone is running the same version of everything and transaction disruption should be minimal.

Going forward, changes should be coming at a slower pace, and as we plan upgrades we will be taking into consideration our learnings from this period. Most importantly. We’re planning on implementing an RFC process through which all such changes will be funnelled (https://github.com/mimblewimble/grin-rfcs). (This is on today’s agenda for further discussion) We’re also considering changes to the governance structure that should hopefully get more community members involved and encourage more in-depth discussion from a more diverse set of people on potential breaking changes to APIs or slate formats.

In addition, the V2.0.0 code is much better at doing version checks and the software should be better at explicitly informing users of potential incompatiblities, which we hope will greatly help when we do have to introduce new features to support upcoming technologies.

So that’s more or less all I wanted to say, in a nutshell, apologies to those having transaction issues, the situation will improve soon, and we’re taking steps to prevent this situation from happening again.

Also: upgrade those nodes and wallets!

10 Likes

Can you upgrade to 2.0 now and be functional with all the 1.x exchanges etc?

I can’t really speak to this… it’s very much up to individual exchanges when they choose to roll out 2.0. I’d definitely wait a few days after 2.0.0 is released then check with them.

(The 2.0.0 wallet will not be compatible with any 1.x.x grin (or grin wallet) versions)

Announcements on the forum are great, but I think there are a lot of parties out there who don’t read it.

I would suggest trying to compile a list of email addresses of relevant parties at exchanges, pools, and mining operations, and sending them a very low-volume of critical update notifications. Probably limited to updates that fix exploitable bugs, or that are required to continue functioning. Something like Bitcoin Optech, but for Grin: https://bitcoinops.org

2 Likes

We do have several keybase channels we use to keep pools and exchanges notified, but a mailing list probably wouldn’t hurt either

It’s nice to see a responsible attitude, so I commend you for that.

I know you are aware, but I’m mentioning it with a view for the future: One change (oversight or not, doesn’t matter) was to make v2 slates the default in 1.1.0, which is the change that caused most headaches, broken exchange deposits/withdrawals, etc.

Could you please ensure in the future that any new features that are backward-incompatible are NOT activated as defaults when you release new versions? As long as you can afford to, it’s best to leave the old ones active for a few versions, while you put warnings up of an impending switch to the new functionality.

I also concur with @rodarmor’s suggestions. People don’t tend to watch forums for official updates (or discord etc). A proper mailing list that people can sign-up to for critical updates is needed. You are dealing with a “push” rather than “pull” scenario here. It would also reduce issues such as the above.

That’s all I had to say - great work otherwise! :slight_smile:

1 Like

An invite to join the mailing list for updates could be included in the grin release notes on Github.

2 Likes