mimblewimble/grin-pm

Planning: Post 5.0.0 wish list

lehnberg opened this issue ยท 15 comments

About

Non committing, list of ideas for things to work on in 2021.

Definitions

P1 - Critical / Must haves
P2 - Important
P3 - Fix if time

Wish list

P1

PIBD*
multi-sig*
Wallet backend improvements (SQL)
libsecp fork update
preventing chain corruption*
safe cancel*

P2

tor support for nodes*
light node*
testnet exchange / making it easier for exchange integrations
payjoins*
binaries for older systems, older GLIBC or build on low RAM machine < 300MB
invoice payment proofs*
hardware wallets*

P3

wallet view key*
one-time use slatepack addresses for wallet*
flyclient*
atomic swaps*
aggregators*
block archive node support*
improve compatibility with OSX
anchors*
bulletproofs+*
NRD activation*

*) requires RFC to be accepted

atomic swaps
also multisig is on the list twice

my letter to Santa:

tromp commented

testnet exchange (this could fall under "making it easier for exchange integrations")

https://forum.grin.mw/t/testnet-exchange

tromp commented

try avoid corrupting the chain DB when killing server. or allow for DB repair.
Having to resync from scratch is very painful and bad for the network.

phyro commented

light node (pruning node) is roughly described in this gist. It seems possible to prune everything but the MMR peaks for every MMR we have if we assume that output lookups are done through inclusion proofs. Has some open questions. The forum thread with discussion is in this thread

#388 (comment) if we dont discuss this on the #388

improvement of late locking

investigate two step transaction(Eliminating finalize step)

phyro commented

I would like to add that we probably want to get late locking and have a working RSR flow with a payment proof sooner rather than later. We have a single exchange (tradeogre) supporting slatepacks, so we could take this to our advantage and prioritize these. Let's get the simplest flow for the exchanges working asap.

This includes:

  • No Tor (code/flow branching based on availability is an unnecessary complexity we add to them)
  • RSR deposits (they should finalize to avoid any network hops and potential issues there)
  • SRS withdrawals (same here)
  • Think of all the possible cases that can happen (grin is different. Interactivity needs to be thought out well, but luckily, we only need to do that once)

RSR and SRS require late locking if we want it to be smooth for the exchange and RSR flow needs invoice payment proofs

tromp commented

we can add the formal prover / integrity checker discussed in

https://forum.grin.mw/t/investigation-formal-proofs-alternate-verifier-implementation/8712/10

to the list.

A simple feature idea: add a wallet command that provides a plaintext slatepack secret key, it would be a CLI equivalent of get_slatepack_secret_key method from the owner API.

Motivation: If user wants to sign a message with ed25519 key matching the wallet address (and thus, prove ownership of the address) has to run owner API and go through the difficult process of initiating secure communication with it just to extract this key.

Hello. When release?

I would like to add that we probably want to get late locking and have a working RSR flow with a payment proof sooner rather than later. We have a single exchange (tradeogre) supporting slatepacks, so we could take this to our advantage and prioritize these. Let's get the simplest flow for the exchanges working asap.

This includes:

* No Tor (code/flow branching based on availability is an unnecessary complexity we add to them)

* RSR deposits (they should finalize to avoid any network hops and potential issues there)

* SRS withdrawals (same here)

* Think of all the possible cases that can happen (grin is different. Interactivity needs to be thought out well, but luckily, we only need to do that once)

RSR and SRS require late locking if we want it to be smooth for the exchange and RSR flow needs invoice payment proofs

is that off the table?

phyro commented

Not off the table, but we need people to think about this I guess

It would be handy to be able to display slatepacks as QR codes in CLI

https://github.com/timvisee/qr2term-rs
https://docs.rs/qr2term/0.2.2/qr2term/

I would like to request that the recovery phrase when doing init -r can be passed by a command-line argument either directly or as a file, the same goes for slate packs when sending and receiving. the reason i would like this is that it will allow us to script wallet workflow, as currently everybody is using expect or pexpect which is a hack and requires a graphical terminal to be present else it doesn't work, leaving no way to interact with the main implementation if you are running code that has no access to a graphical terminal. https://forum.grin.mw/t/help-how-do-i-recover-a-wallet-programmatically-5-reward/9343/17

edit: this is also a really simple fix if there is somebody who wants to cherry-pick this one. Like I say I would do it myself but rust is alien to me.