Vessel - desktop wallet pre-release - looking for feedback

in steem-project •  2 years ago

Introducing Vessel - a desktop wallet for Steem

One thing I've always wanted was some sort of wallet to store my private keys in for Steem. Nearly every other blockchain project I'm interested has them, so I decided to take a some time and build one. I'm calling it Vessel, which can be a play on words for either "a vessel powered by steam" or "a vessel containing steam".

This project - like everything in Steem - is experimental by nature, so please be diligent with your personal security and the safe backups of your keys in multiple locations. As beta software, there may be rare situations data is corrupted or wiped, so please use at your own risk and backup backup backup.

With the advisories out of the way - please just be cautious. It's very likely that many bugs will need to be worked out.

v0.0.5 - Pre-release Alpha

This is the very first public pre-release of Vessel, which can be found here:

The newest releases will always be published via github, so please do not trust it from anywhere else. You can also compile it yourself from the source code, but I do not have instructions available yet. I will make them available as we get closer to a stable release.

The initial features include...

  • A light wallet to manage your funds, your private keys never leave the wallet. Keys are stored within the application (with or without encryption, your choice), and only used to sign transactions. The transactions are then broadcast to the blockchain with your keys never being communicated outwards.
  • Importing of Private Keys. You can import an account by either using the login you'd use here on Steemit.com and specifying the permission level, or you can import WIF private keys using the account name and WIF.
  • Password locked accounts. Each account imported can be stored with AES encryption based on a password you provide. When used, each use of that key will require that password and your keys will never be stored locally unencrypted.
  • An updating overview of all accounts. The main panel of the wallet displays the total balance of all accounts within the wallet, as well as an individual breakdown of each account's balances. Hovering over a number will reveal it's true amount (if it's an extremely large number).
  • Claiming Rewards from your wallet. When your account has a pending reward, a section will appear at the top of the overview screen showing you how much and giving you the option to claim it.
  • Sending STEEM or SBD to any account or an exchange. The send screen lets you specify any account name to send to, or you can use the prefilled exchanges drop the dropdown to avoid mispellings and autocorrect. The available balance for the selected account will display for each currency, and when clicked on, will populate the field with the maximum amount.
  • Configurable Exchange Memos Enter your Bittrex or Poloniex memo keys for each currency and never have to go look those damn things up again. When you select an exchange during the send process, the memo will automatically fill with the appropriate memo for that exchange/currency combo.
  • Vesting - Managing Power Downs and Routing. The vesting screen shows the status of all active Power Down operations, allowing you to power down specific amounts, change the withdraw route, view the status of pending operations, and cancel any existing power downs.
  • Support for an unlimited number of accounts. Within the accounts section, you can add as many accounts as you'd like, each with their own set of permissions and password.
  • Setting Witness Proxies for each account. The second portion of the account page lets you set the Witness Proxy for your account, which is useful for those with many accounts or those who wish to delegate their vote.

This post is long enough as it is, so I won't ramble on forever. There's plenty more posts to do that ;)

A Vessel walkthrough - v0.0.5


Upon launching Vessel, you need to setup a Wallet.

https://steemdb.com/vessel/01.png

You can choose to import via a Steemit.com password (which is never saved) or import a WIF Private Key (of any type).

The 3rd option is an experimental system to generate private keys, which you're free to explore, but is largely useless unless you have someone to create an account for you.


Logging in with a Steemit.com Account

https://steemdb.com/vessel/02.png

Using the first option on the welcome screen, you will be able to enter a Steemit.com username and password (usually long and starts with a p), the permissions to grant the wallet, and then a password to encrypt the wallet locally.

The permission level itself is as follows:

  • Posting: The wallet will only have permission to keep track of your account and claim pending rewards. Vesting and Sending will not function.
  • Active: The wallet will be able to manage your Vesting (Power Downs) as well as Send STEEM or SBD. It will also have all permissions a posting key would give.
  • Owner: The wallet has all permissions of both Active and Posting. At some point, the owner key will also let you change the Posting and Active key. It is recommended that you don't use your owner key, and keep it someplace safe.

Importing a WIF Private Key

https://steemdb.com/vessel/03.png

Using the second option on the welcome screen, you can import an account using the WIF private key (key starting with the number 5). The WIF key itself determines what kind of permissions the wallet will receive, as you have 4 WIF keys, one for each permission level.


Using either method, it will prompt a Save Confirmation

https://steemdb.com/vessel/04.png

Both methods above once completed will display a confirmation letting you know what you're about to save to the wallet.

At this point, Cancel will abort the import and return you to the main screen, while Confirm will encrypt and save the key, sending you onto the Overview screen.


The Overview

https://steemdb.com/vessel/05.png

An overview of all accounts loaded within the wallet and their balances. Each account name is clickable and will open a browser window to steemit.com to view the account.

Pending rewards, when available, will display at the top of this screen as a notification. The notification will display the total rewards pending as well as a button to claim those rewards.

The larger numbers are abbreviated, and hovering over them will reveal the complete number.


Sending Funds

https://steemdb.com/vessel/06.png

The send interface allows you to easily send STEEM or SBD to any account or to an exchange.

Every account loaded within the wallet is available in the "From" dropdown field, as well as providing a search if you've got a ton of accounts. Only accounts with an Active or Owner key imported will be able to send, and accounts with Posting keys will be disabled.

The "To" field can be swapped between an account name or a list of predefined exchanges.

The "Amount" field can be toggled between SBD and STEEM, showing the balance of the selected currency below the input. Clicking on the balance will populate the input with the maximum amount available.

The optional memo field is available for various uses.


Predefined exchanges

https://steemdb.com/vessel/07.png

When sending to an exchange, you don't have to worry about typo's anymore. The exchanges are fixed strings within a dropdown.


Predefined Memo Fields

https://steemdb.com/vessel/08.png

If you have configured the Exchange from the Settings screen, the memo will automatically populate based on the currency + exchange combo.


Confirming Transactions

https://steemdb.com/vessel/09.png

Clicking "Preview Transaction" from the send page will prompt you to review the information provided. This gives you an opportunity to review and ensure everything is correct before signing the transaction.


Decrypting the Wallet

https://steemdb.com/vessel/10.png

If the wallet is encrypted (which it should be), after you confirm the transaction, you will have to decrypt your wallet to broadcast it.

Only when you enter the correct password will it let you proceed.


Vesting - Managing Power Downs

https://steemdb.com/vessel/11.png

The Vesting screen gives you a brief overview of the status of your Power Down cycles. When an account is idle (not powering down), it is shown as displayed above.

From here, you can start:

  • Click "Start" to bebin a new Power Down cycle
  • Click "Add Withdraw Account" to set which account(s) this account will power down into.

Starting a new Power Down cycle

https://steemdb.com/vessel/12.png

Clicking "Start" on the Vesting screen will prompt you to specify the amount to power down. You can drag the slider from left to right to alter the amount.

The 3 pieces of information on this screen include:

  • The account to power down and for how long.
  • The total amount of SP/VESTS that will be powered down.
  • How much STEEM per week will be withdrawn.

An active Power Down cycle

https://steemdb.com/vessel/13.png

Once active, the red dot turns into a much larger green lightning bolt to indicate the power down is active. The "Next Credit" column displays the amount of the next power down and when it will occur.

The "Start" button is now replaced with a "Stop" button, allowing you to cancel the power down cycle.


Selecting an Withdraw Route

https://steemdb.com/vessel/14.png

The Withdraw Route for each account can be changed by hitting the "Add Withdraw Route" button.

You will be prompted to specify:

  • an account name
  • a percentage of the Power Down to go to this account
  • a checkbox as to whether it should be powered down into STEEM or powered up as SP on the target account.

For this example, I'm setting jesta as the withdraw route with 75% of what will be powered down. I choose to leave the checkbox unchecked, because I wanted it deposited as STEEM.


Adding another Withdraw Route

https://steemdb.com/vessel/15.png

Clicking the "Add Withdraw Route" again will prompt the same message, allowing you to specify multiple accounts.

To continue the example, I'm setting aaron as the withdraw route with 25% of what will be powered down.


A Power Down overview with 2 Routes

https://steemdb.com/vessel/16.png

With the two actions I performed above, it has now changed my overview to show an active Power Down, that's being routed to 2 accounts:

  • 25% to aaron as STEEM
  • 75% to jesta as STEEM

The little trash icon next to each one will allow you to remove that route.

Note - Any amount not specified to a destination account just powers down into the original account. So in this example, if I removed the 25% - aaron route, 25% of the powerdown would go directly into the webdev account.


Account(s) Management

https://steemdb.com/vessel/17.png

The Accounts screen will show every account loaded in this wallet, whether it's encrypted, and what key type it is.

From this screen you can also add or remove accounts from the wallet.


Adding a new account

https://steemdb.com/vessel/18.png

Choosing to add a new account prompts just like the very first screen does, and works the exact same way.


Witness Proxy

https://steemdb.com/vessel/19.png

This is a subsection of the Accounts screen, and I plan on adding more. This specific screen allows you to proxy your witness voting power to another account.


Settings - Exchanges

https://steemdb.com/vessel/20.png

The settings panel will be for wallet settings, and currently is only used for the Exchange Configuration.

The Exchange Configuration allows you to specify the MEMO fields required for both Bittrex and Poloniex. These MEMOs will automatically fill the MEMO field on the Send page when you go to send to an exchange.


Enjoy!

I hope you find Vessel as useful as I do. It's not perfect, but as an open source project, over time we'll get damn close.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

This deserves >$40k!

What is needed for you to build something similar for BitShares, or even better: Integrate BitShares?!

·

Hah, I thought about your wallet/post when I was first building all of this :)

To integrate or build something like this with BitShares, we'd need a JS library like steem-js (which it looks like exists) and maybe a month or so of intense work, maybe more. I imagine BTS has a lot more features that require an active key and would warrant a wallet.

Also - doesn't BitShares already have a GUI wallet?

·

Yeah, would be nice to have an "all in one" wallet for both. Too many wallets as it is!

·
·

I had been working on, during my time away from Steem the architecture and protocol specs for a one-datatype one-database, non-blockchain structured distributed database and application framework that takes distributed systems to what I think is the next level - automatic geolocation sharding, fractal epidemic back-propagation and regular digest reposts to allow potentially, sub 100ms clearance times, in a provisional form, for distributed databases like Steem.

You can see the beginnings of the documentation and initial parts of the protocol specification here:

https://gitlab.com/dawn-network/nexus

The reason why I am responding to this post in this way, is because what I am proposing could implement, even better than just a wallet with 50 different distributed database 'wallets' in it, a mechanism whereby this inter chain commmunication can be 'centralised' in this system, and allow the binding of all blockchains together into a cohesive whole.

This would include exchanging on chain, monetising the delivery of uploaded media from users for small nodes providing local replication, it would facilitate further experiments in the architecture of distributed database, and a critical element also, alongside allowing the aggregation of a user's many crypto accounts into a single account database from which they can manage them, is to enable 'in band' instant and long form messaging (email and instant messaging) which is bound to these accounts and can be also third party verified through challenges, enabling seculity while greatly increasing utility of cryptocurrencies and appchains like Steem, indeed LBRY as well, and potentially, a foundation with which to implement the long promised Fabric of Steem.

I would thus like to suggest that this may represent a means towards continuing the adoption and proliferation of use cases for Steem, beyond the current, somewhat difficult to expand framework of Steem's system.

·
·
·

Hardware are those USB things like Trezor, right?

·
·
·

That's right. A physical, digital wallet, usually with extra security layers.

·

thanks dear
yes off course this information is useful

·

That's an awesome coincidence :)

·

and in Slovenian (with only one "S", not double) it means "happy" :)

·
·
·
·
·

no joke :)

Awesome as always Jesta. I'm running out of words to describe the level of your work.

However, is it really correct to speak of "Steemit accounts" or shouldn't we rather call them "Steem accounts"? Especially when we're not logging in on Steemit.

·

Well, the "Steemit Account" part is an account generated from steemit.com, which uses a special password scheme when creating the account. They generate a private key, prefixed with P, which is then used to derive all of your keys.

The labeling could be better though :)

·
·

Pm'ed you on steemit.chat

·
·

Ah yes.. I guess it is technically accurate to call them Steemit accounts in this context.

Congrats to your fantastic piece of work!

Excellent work @jesta. I really like your style, you don't brag about your product, you just silently code and deliver, just how it should be.

One suggestion: Add ability to vote for witnesses, I believe it's important that this feature is accessible for everyone, even the non tech sawy :)

·

Agreed - I'll get that in there at a future version.

Pretty much anything that requires an active key I'm planning on integrating.

·
·

I have another suggestion: ability to power up and send funds to saving account :)

·
·
·

Agreed! I show the savings numbers, but no way to use em hah

After whole day in the travel, I finally found time to test your wallet. IT IS AWESOME :) It is so easy with it to set route to power down directly one account to another.

Nice work!!! Please add localization support!

I mean... wow... I can't thank you enough for the kickass work you do. Steemstats was my favorite tool for such a long time, and now i'm looking forward to playing around with Vessel and doing some user experience posts about :)

·

I added OpenLedger for the next build - I also looked at hitbtc/livecoin, both which look to have no volume and I don't know that I'd endorse. Do you know anything of these two? alcurex on the other hand you can't even deposit steem into... so I have no idea what they're doing.

Any thoughts?

·

Good call - and thanks for pointing out a great place to find em all :)

I'll have to look at what all of their deposit schemes are as well (and if more should have configurable memos).

·
·

Services like blocktrades, changelly and shapeshift are not listed there.

·
·
·

I've already got those 3 in the app.

·

Shouldn't internal market be listed on there too?

·
·

In the wallet or on coinmarketcap? :)

·
·
·

I meant coinmarketcap

·
·

"No trading fee, volume is too easy to be manipulated."

For sure I am going to use it, but once I am not stuck at "zero" balance. It is my first day here and taht is why there is nothing to take in the wallet yet :)

Very nice wallet.
I'm also looking for feature like Voting Power Trading, where you can rent Voting Power.

VESSEL is a GOOD NAME! You can carry a lot more in a vessel!
DSC09082.JPG

@aggroed sent me here and I already knew of your brilliance-- but hot damn-- I missed your pièce de résistance.

Bravo Bravo. Thank you for being here!!!

Fantastic work @jesta! You rock man!

Whoa..... bro you are a Mad Steem Scientist!!

Slipped by my radar, wow this is awesome! Really great tool, 💯 🙇 😎

This is STEEM wallet address. Thank you...Keep up the great work! :)

And this, folks, is why we pay good people like this the big witness bucks. Good work!

Wow! Top Developer @jesta

Congratulations @jesta!
Your post was mentioned in my hit parade in the following categories:

  • Upvotes - Ranked 2 with 783 upvotes
  • Comments - Ranked 2 with 151 comments
  • Pending payout - Ranked 1 with $ 2154,54

Holy cow, awesome!

Oh awesome! And I was thinking.... the heck - a new crypto again and that post get more cash as market cap will be, haha :)

Great work of course!

Great perfomance and save security

@jesta Can new accounts be created directly from the wallet w/o using a internet browser ? - this is awesome news thank you very much. Appreciate everything you do for the community.

·

Not yet.

The account creation portion isn't there yet. Tonight I did the first successful key creation test though. There's an experimental section at the bottom of the import that let's you specify a username and then generate a seed + keys.

It went like this:

  • My buddy downloaded the wallet, picked a username, and sent me the public key information.
  • I took the public keys and created him an account using the create_account_with_keys_delegated command.
  • He then logged into his new account using the private keys he backed up, and now has an active steem account.

He didn't have to goto the website - but it required someone with technical knowledge on the other end to create the account.

I'm hoping to put GUI's on this entire process so that rather than relying on Steemit.com's account creation, we can securely invite our friends.

·
·

And I helped!!!

·
·
·
·

Now that would be very helpful for me persuading my friends to join up!

Didn't realize I wasn't following you. I read a lot of your posts. I am following you now.

·
·

Ui - thats awesome!!

·
·

This was really helpful.
Thank you, followed.

It'll be exciting to see once I'm able to download and I'll be sure to make a review of it. Nice work so far!

Oh my God, this is amazing!

Fantastic! There seems to be fair demand for delegating SP and account creation - hope to see those in Vessel soon.

·

I took a stab at delegating SP and have it partially working (it's on github), but the problem is that I couldn't find any API methods to check the status of your delegated SP. So the interface itself just had a button to delegate, but no actual display on what you were delegating, so I decided to just cut it out until the time that I could properly display what was happening.

As for account creation, it's something I'm messing with :)

Good work.
Built with electron?

·

Yep - electron + react!

·
·

Great. How is your experience with the stack so far?

Please add possibility of delegating Steem Power

·

I started it, explained a little bit in this response why it's not complete.

That couldn't have been easy to design and build.
I like the name Vessel, very catchy.

That is extraordinary!

Amazing job jesta!

How about SP delegation?

OMG!! @jesta you're the Man!! Thanks for making this software. Will help a lot of people. Good Job!!

Man, this is great work! Thanks for making this!

Absolutely amazing work, this. Will have to give it a good test drive and see if I can find any bugs or anything in it :)

Does the installation in pc comes in handy?

Absolutely marvelous! 😻 Just when I was thinking why doesn't steem have a decent desktop app, I come across this thread.

such a great article

Thank you! It was about time. Running it on MacOS​, no problems so far.

amazing very nice. This is the first Hardware wallet for steem or not?????

WOW, amazing, vessel goes all the way with features, everything I ever imagined for a steem wallet, and then some more

Cool I Might just need this!

This is perfect timing, I am just getting into this. Been on steem about 2 weeks. Thanks

Outstanding for a first go.
Nice clean layouts and a fantastic attitude.
Keep it up.

Damn jesta you outdid your self this time. Wallet looks amazing!

A lot of amazing people here. @jesta is one of them. Go on man!!!

Thanks for the info!

i love all the info it was very interesting and i had to watch it all again

We need this asap lol, hope the final version comes out soon!

Excellent job.

Awesome. Keep up the good work

This is beautiful, I'll be trying this out soon. Great idea having it memorize the exchange memo's, and a proper gui for powerdown configuration was long overdue. Thankyou for all of your hard work @jesta

Amazing, another great app for steem ecosystem

super, that's what we wish , steemit will rock , excellent work , thanks a lot!

great job! awesome

That powerdown config is super slick, lovin it

Nice! I'll try this one as soon as I can!

Hey, excellent work. We are a cypriot based firm operating in the insurance sector, looking an individual with knowledge in blockchain technology to develop an innovative insurance product. check my profile for more info

Nice piece of software. Very much extensive and eloberated. The UI looks great.
Now i can STORE STEEM IN A VESSEL!

Nice post dude😇
checkout my posts and upvote🙈

That looks nice! Now I need to check out github, but if it was in the app area, and is downloadable there it would take off so easy! followed, voted and I'll will keep an eye on your progress looks impressive!
Please check out my blog and help me grow in this community with you here:
https://steemit.com/filmmaker/@larutanton/starman-episode-002-with-commentary-by-larutanton

How can i sing up ?

I like!

Can't wait to use one of these! You are amazing, thanks @jesta from everyone on Steemit!

Yo this sounds badass! So I can store a and have access to all of my keys including other coins? If so this sounds amazing. 📣📣📣

·

Right now it's Steem-only, since Steem's APIs are unique.

Looks awesome! cant wait to try it!

Imagine what have been waiting for all along, this is gonna be a gift @jesta once this project is done.

·

It's a pretty functional product right now, you're free to download and test it. If you don't trust it yet because it's still an alpha, you can always import your posting key into the app just to see what it's all about :)

wow thats so very nicee cool <3
Vessel Army 👊

Great development!

Everything is described in detail in your post ...

Thank you very much @jesta

Good luck !!!

very interesting, thanks for posting - Subbed!

innovative, looks cool.

This looks awesome. A few days ago I transferred some bitcoin into my steemit account. I wanted to purchase steem or sbd straight from the steem wallet app but apparently I don't the right type of visa card so this was all I knew how to do. I haven't been able to transfer my steem to my steem wallet app. Does this desktop version allow for that? I am new to the steemit environment and not all that well versed in the crypto world...

Awesome article none the less...Gonna give it a try

·

Where is your steem now? You have a steem account (which is obvious by you posting with it), you should just be able to transfer it to the account by it's name and it's loaded onto the account.

Vessel itself just loads private keys for accounts - there aren't multiple addresses like other crypto currencies. Your name is your account.

I don't know much about the CC process you're talking about, so I can't speak to that.

Hope that helps hah :)

Like it. How about importing by private key AND active account. Once the active account is imported, it can generate a private key to import on other PCs.

·

I'll be adding a feature to allow the exporting of keys, so that should work well for this.

If you were to login with an account (which technically is all of the keys), it could then output a private key for you to use elsewhere (like on chainBB!).

·
·

Sounds pretty sweet.

thanks u

darn man. You just can't seem to be able to hit the brakes huh?

·

Nope! Sprinting at the moment :)

这是一个什么钱包?不明白。

WOW good luck.. looks like this will pay off already

Thats whats up!

Good project!!!
I like it @jesta

This is how you rock Steemit!

Excellent work @jesta!
GBG, GOLOS, BTS?

·

Potentially, I don't think a fork would be too hard, at least for golos and other steem-based chains. BTS on the other hand would take more time and effort, since it's APIs are slightly different.

·
·

Bah! This was me. I need to just use my main account in dev if I'm going to use it :)

It's nice to see a lot of the heavy duty creators like jesta get credit and rewarded for their hard work. Thanks jesta!

Great job! This wallet is so clean and set-up is very easy. May I ask if its possible to generate and store both public and private key on a paper wallet?

·

It's something I'm working on, though the way steem accounts need to be created is a bit weird. It'll probably be a while before there's a true paper wallet generator method for this.

The way it would work is:

  • You'd download an HTML file capable of generating private/public keys, and use it (for maximum security, on an offline PC) to generate a set of 4 keys (owner, active, posting, memo) and pick a username.
  • This will output 2 sets of information: the public and the private keys.
  • Both could be printed out as a paper wallet and never stored on a computer. It would have QR codes for the public and private keys.
  • Vessel could then read the QR codes for the public keys, and using an active account, use those public keys to create a new account.

You'd then be able to send funds to that new account with the private keys never being accessible on a machine connected to the internet. When you were ready to spend those keys, Vessel could then scan the QR codes for the private keys, importing them, and letting you spend those funds.

It's about time to get really serious with Steemit.

That looks pretty good!
Good job sir....
Congratulations on the result.

Definitely an inspirational read, and great work. While I've been playing with thoughts of a mobile app wallet or a small mobile app game in the steem and doge currencies, I can honestly say your article alone shows attention to detail. I'm following this one.

need a paper wallet.

Makes alot of sense! I agree,. Thank you!