Grin++ experience is good but not perfect, and I want it to be perfect. I’ve been thinking how we can improve the Grin experience in general.
First, I’m going to start with a bold statement to set the baseline: Let’s stop trying to shape Grin to be like another coin, and let’s fully embrace our uniqueness. Grin is not Bitcoin, Grin is not Ethereum, Grin is not Beam, Grin is Grin. This sounds obvious but from time to time it is good to say it as a reminder. My intent is not to start another long discussion but to brainstorm what would the perfect experience for Grin be.
I know, I know, we want to make Grin usable, we want to be able to buy a beer using Grin, at least that’s what I want, after that I’m out, I’ll close my account and no one will see me again around; meanwhile… let me offer two easy examples…
We have a comprehensive transaction building flow: Slatepack, but what that heck does that even mean?! I can’t even pronoun Slatepack 10 times in a row without making a mistake; is Slatepack “a pack of slates”? I honestly don’t know, I was not invited to the party when the Community decided to use that word, but even “slate” does not make any sense. I’m not a native english speaker, but neither “pizarra” or “Schiefer” makes sense to describe the transaction process. In Grin, a basic transaction looks like this:
Maria provides the amount, fee and her signature. Juan joins by adding an output for the amount, adds his signature and shares this with Maria. Maria finishes the transaction (signs and broadcast it to the chain).
Reading the above I ask myself 2 questions: one, where are Alice and Bob? maybe on vacation; two, and more important, Why do we use the word “Slatepack” for this?! Some ideas could be:
Why is this so important? Because we could say something like this then:
- The Sender create an agreement/deal to start the transaction and sends it to the receiver.
- The Receiver sends the signed agreement/deal by him/her to the sender.
- The Sender sign the agreement/deal signed by the Receiver.
- Transaction is broadcasted by Sender.
And this makes a lot more sense for everybody. My question is: what other words can we change?
Note: We also have Contracts, therefor I’m not sure if we should use “contract”.
People tend to associate Bitcoin addresses with something like a “bank account number”, but in Grin addresses are not the same, an address is literally that: an address, more like a Url. By definition:
SlatepackAddress is a shareable bech32 encoded ed25519 public key that can be used both to route synchronous transactions and to encrypt asynchronous transactions.
We previously used Tor addresses along side HTTP and also Files, to transact, what a mess! But the truth is there is no such thing as address in Grin. Addresses in Grin are more like “listeners”. For me, having one-time addresses is really important, but also the ability of running multiple listeners at the same time, why? Because we can! I personally don’t want to reuse the same “address”, but also if you’re a miner you could use one address for each pool and one address for personal uses, and the uses case go on and on…
The reality is that there is not a mass adoption of any crypto yet, not even a mass adoption of Bitcoin, why should we try to look like Bitcoin then? I’m not saying we’re better or worse, we are just two different coins. Another thing is that, because the lack of mass adoption, there is no such thing as a “standard ux/ui”, and even if there was, this is constantly changing, look what Android is today compare to what it was some years ago, for example.
I could go with a longer post, but I won’t, what I am going to do is to start sharing in this post a bunch of mockups with my ideas. This will be something long term, I want to make a Community driven effort to create the Ultimate Grin Experience and I need your help!
EDIT 1: Correction of the transaction’s steps.