CLI Wallet

What privacy problem are you solving?

For now the only way to use incognito is the mobile wallet - though a web wallet is on its way. While the mobile wallet is here to stay and remain the main entry point in the incognito ecosystem the lack of alternative comes with several issues:

  1. iterating on features chain-side makes it necessary to enable their access in the mobile wallet too, introducing viscosity in the development process and slowly cluttering the mobile wallet interface - which ends up being a issue for non-power users.

  2. power-users are used to CLI tools and not to fancy touch interfaces :slight_smile: .

  3. people relying on low ressources devices - like Raspberry Pi - don’t have access to smartphones - obviously - nor to web browsers to access the upcoming web wallet.

What is the solution?

A CLI wallet would provide a simple alternative making it possible to:

  1. quickly iterate on new features without needing to reflect them directly in the mobile wallet.

  2. lighten the mobile wallet interface by delegating some power-users only tool to the CLI wallet.

  3. enable incognito on any node.js capable devices - which is: almost all devices out there.

What substitutes do people resort to because this doesn’t exist yet?

The mobile wallet for those who can.

Who are you?

I’m Olivier Sarrouy. You can find my website here with some links to my Keybase, GitHub and Twitter accounts. As you’ll see if you browse my website I love CLIs :wink: .

I’ve technically led various Ethereum projects like PandoNetwork - a distributed alternative to GitHub - and AragonBlack which used to be the third core team of the Aragon project before we quit and with which I’ve built a bonding-curve based continuous fundraising system for DAOs.

I have a multiple years experience in distributed technologies developing CLI - see here for instance.

Why do you care?

I’ve been concerned about privacy for a while and actually came to the blockchain space for political reasons. I care more specifically about the CLI because I believe in small and simple tools to solve complex problems and also care about widening the access to Incognito.

What’s your plan? What’s your schedule?

The project duration will be one month and a half from April, 13 2020 to May, 30 2020.

Ship Date Deliverable
April 27, 2020 Basic features release: manage wallets and token transfers
May 30, 2020 Advanced features release: manage staking and trading

What’s your budget?

This project will be undertaken by one engineer for 2 months.

Resource Cost Quantity Monthly Cost
Senior Software Engineer 1,000 PRV 1 1,000 PRV
TOTAL (x 2 months) 2000 PRV

Is there an existing conversation around this idea?

Yes: here.

Is there anything else you would like the community to know?

Feedback welcome!

12 Likes

I am not sure we have that many power users yet, but it would be great if this CLI addition would lead to having more power users.

The statement about PI users… I don’t think that is a correct one. Doesn’t make the proposal less valuable though.

Did you change your mind about the budget? Engineer for 2 months, but you calculate 1.5 months.

5 Likes

I am not sure we have that many power users yet, but it would be great if this CLI addition would lead to having more power users.

I totally agree.

The statement about PI users… I don’t think that is a correct one. Doesn’t make the proposal less valuable though.

To be honest with the current end-of-the-world landscape I really feel like it’s important to provide simple low-ressource tools. But you’re right it may be my fantaisies :wink:

Did you change your mind about the budget? Engineer for 2 months, but you calculate 1.5 months.

Yeah that’s a mistake because I’ve been hesitating. I feel like this can totally be done in one month and a half - even less - if everything works well but I’m afraid the whole new SDK may contain some bugs to be fixed on the way - I already opened a couple of small issues. This would be totally normal because it’s a new piece of software which has not been widely tested yet on node but I’m just afraid it could slow the dev process a lot …

Gonna update it for two months for now and shorten if necessary with respects to the feedback.

5 Likes

@osarrouy I like your thoughts :wink:

3 Likes

@osarrouy just curious… will you be building the CLI in Go by any chance? it may be easier in terms of long-term maintenance and adding new CL as most of the core devs at the chain layer are working in Go. we can always roll our sleeves up to jump in and help you with code review and bug fixes if needed.

4 Likes

Congrats @osarrouy! Your proposal got 4/5 vote and it has been funded. Looking forward to using this soon!

2 Likes

Thanks a lot @annie ! I’m gonna push a first update next monday.

@duy I started working on a node version because there is already a SDK available … Would that be a dead end ?

Edit. Was also wondering. Is there a dev-dedicated discord or slack or matrix or whatever if I have a technical question ?

2 Likes

Hi bro
I’m @thaibao from core chain team
If you have anything to ask, please contact me

Btw, in our source code, we also implement a simple CLI wallet but not enough resources to continue it here. You can refer to it if you want. And it’s written by golang as all chain project. If you can use golang to write your CLI wallet, I think it sounds good for maintenance and supporting from team chain

Nodejs is also ok, you can try with SDK and web-js-lib. But this is a part of core app team, @binh can support you more detail, and I will support with something which I know

Thanks

5 Likes

I think CLI Wallet is a great need for any blockchain. @osarrouy Did you intent to build something like ethereum CLI.
When I work with Ethereum, i run a node then open a terminal, type geth attach {{path}} then i connect to ethereum via cmd then query node data or give some command.
Am i imagine the right things?
Or your intention is something like web3js

3 Likes

Hi @osarrouy,
Did you read my reply on your proposal. Can you share me how you approach? In my mind, we consider the right way is you can branch code from git incognito-chain repo, and start your code there. In this way, we will have good CLI base on core golang of chain, and we can extend it for a long time, 1st for wallet, and many many imaging features later. If we only build CLI by node and wrap Sdk of app team, we think it is the limit thing for developing. Can you give me your opinion about this suggestion?

Thanks

2 Likes

Hey @thaibao !

Sorry. I’m actually working on it so I’ve stayed far from distraction for a couple of days … :wink:

The path I’ve been taking for now is to build the cli wallet on top the js / node sdk-v2. The main reason for this choice are:

  1. I’m not familiar with Go at all while I’m super familiar with writing node cli tools.
  2. It makes it easier to iterate quickly over the implementation.
  3. It makes it easier to push upstream update / bugfixes to the sdk so that it can benefit all the wallets out there.

Is this an issue to proceed this way ? That being said if you guys want to implement it in Go for understandable reasons I’m probably not be the best guy out there to do so. It would be my first Go project and I would not feel confortable starting my Go journey with a critical piece of software. So if you prefer a Go implementation let me know: I can interrupt the request for funding and pass it to Go expert :slightly_smiling_face:

Regarding your question @ruler it would be quite different: for now I’m being focused on implementing wallet features [create a wallet, add accounts, shield tokens, display balance, send tokens, withdraw to native chain, etc.] while geth also allows you to parametrize / control your node remotely. I think that would be redundant with the existing CLI to spawn / control incognito nodes.

Bests.


Olivier

1 Like

Oh i see, this would be very nice for developers. Nodejs currently attract a lot of developers and applications, this SDK definitely help user reach our to incognito
But i really love they way ethereum allow us to parametrize and control node remotely. What do you think about this feature in Incognito

1 Like

Hi everyone,

Here is a small update about the CLI wallet. The code is now public here.

Bootstrap

I’ve spend most of the time architecting the project properly to make it easier to move forward, fix bugs and iterate on features in the future.

Features

For now the CLI wallet supports the following features:

  • Wallet. Initialize, export and import a wallet.
  • Accounts. Create, delete and list accounts.

I’ve also started following on the following features but have refactored the CLI in the meanwhile and not update those yet to reflect these updates so some stuff may be broken - but will be fixed next week.

  • Display balance.
  • Shield tokens.
  • Transfer PRV or privacy tokens such as pBTC or pETH.
  • Receive PRV or privacy tokens such as pBTC or pETH.
  • Withdraw tokens back to native chain - such as Bitcoin or Ethereum chain.

There are still a couple of bugs which require some upstream bug fixes in the sdk-v2 which are handled by some issues and / or PR waiting to merged such as here and here.

Roadmap

The plan is to update the command listed above to reflect the new architecture of the CLI next week.

Once all these basic features are implemented cleanly I intend to start working on more advanced features such as staking and trading.

Let me know if you have any feedback.

7 Likes