Introducing SAFE Wallet app

The only active feature for now is the SSH key storage. The others are placeholders.


Thanks @David_MacGregor, it’s a single webapp and it will be so even when the other features become active.


Web apps are insanely efficient and can be just as powerful as anything else :smiley:

And the simplest ones can be completed in 3min with just a few lines of code.

Gotta love em!!!


FYI, I just uploaded v0.0.2 (at safe:// which allows to add and edit items of the following types: “Credit Card”, “Password”, “Priv/Pub Key” and “2FA Codes”. The mockup was updated to show this feature also.


Nice work brother!!!

1 Like

Great Stuff, demonstrating a good example of how useful the Safe Network will be. Please accept my modest Bitcoin donation as “thanks” :slight_smile:


Thanks @David_MacGregor, really appreciated!
I agree, this is a very simple app, but without having all the inherent features provided by the SAFE net, it would be so much more complicated to build. I honestly think that if this project achieved just 10% of its overall goal, it would already be such a huge change in comparison to what we are able to build/have today on the current internet.


Love it dude. Very clean, simple and cool!

Where did I miss the donation address?

Can’t wait to use it for real!

1 Like

Looks absolutely fantastic! Great work bochaco :slight_smile:

1 Like

Happy cakeday!
In your right top corner there’s the info button, which will pop up with a donation address.


Thanks @goindeep, @Jabba and @beekeeper, I’m glad you like it!
If you see/experience any issues please let me know as that would be very helpful to me.


Works great so far. Looking towards the future, would it theoretically be possible to implement a ‘one-click’ conversion tool for msc to safecoin? Similar to what various wallet services offered to split eth/etc.
Load your priv key into the wallet, click the button, which ‘automatically’ converts your msc into safecoin straight into your safecoin wallet.
Just an idea from a non techie :slight_smile:

1 Like

Ah ty, not sure how I missed it.

I presume you’re happy with anything going to that address - btc, maids, pdc etc? I will send something next time I import my cold wallet… probably won’t be until after xmas now. Great work though, look forward to seeing what you do next :slight_smile:

Looks great! Could a future version have folders for passwords for example, rather than having them all as tiles on the home page? (addressed to @bochaco not @beekeeper)

Looks really nice! This is very useful for people. I can imagine loyalty credits and donations and more in this type of web-app as well. Or what about the different alt-coins as proposed here by @Seneca.


In theory it should be possible, and I’ll be researching and trying to implement it after the coins wallet are implemented functioning and well.

I prefer MAID, or BTC, but if anyone decided to send some other altcoins compatible with Omni I will certainly value it too.

There will be filters in the top bar, so you can search quicker. Now, you can see each card has a color according to its type, this will become also an option for the user, i.e. when you create an item you can assign a color to it. So you can think of something very similar to the gmail labels, and one of the filters could be “by color”, and this is how I’m seeing folders can be implemented without breaking the simplicity of the UX.

Yes, I started working on a prototype for this. The plan is to begin supporting SAFEnet altcoins/testcoins (and safecoin of course), so you could create wallets for different SAFEnet coins and make transfers either among them or to other people’s wallet.

As part of this effort I’m planing to propose (by demonstrating it with a basic implementation) the use of SAFE vCards as the way to share your public key/s for receiving coins. As mentioned earlier, eventually I’d like to also have non-SAFEnet coins supported but that’s a longer term plan.

I just found out that the use of vCards was earlier proposed by @Tim87, and it’s related to what I proposed here, so perhaps having a real implementation can help us decide if this can be the standard way in SAFEnet, which is also related to some other discussions about defining the standards for SAFEnet.


You forgot PDA :joy_cat:

Have you looked into BIP44? It’s an extension around BIP32, aimed at storing different altcoins in a single wallet. It’s for coins that use the same addressing scheme as Bitcoin, so I’m not sure how much Safecoins can be fit into that (because of the different signature scheme, I guess). MaidSafeCoins are a match though.

Yea, it would make sense. However, let’s not forget that contacts are going to be a more generic feature, so maybe it would make sense to coordinate this with @Seneca’s project.

Even if contacts stays within the wallet, I suggest a hybrid approach, where I can link more than one vCards into a single contact, for example if I want to attach additional details to their self-published vCards, but also if somebody uses multiple identities, and I want to store them together.


Exactly, I agree, I was imagining that any app (like this wallet) can be used to manage vCards using their public ID, so a contact list can be just a set of vCards’ public IDs (grouped by person).

Thus, what I’m planing to do to demonstrate it, it’s to add a new type of item to the this wallet which is a vCard/Profile, where you publish your pk and choose an ID (using this public ID you can import/read it in/with any other SAFE vCard compatible app), then you can send coins to that ID and the coin wallet will realise the pk by inspecting the referenced vCard.

Very vaguely, but I’ll study it more deeper, thanks!


BIP32 can be looked at as a tree of accounts with some cryptographic magic that connects them.

However, something like that can be made without all the more complicated crypto stuff as well, just with HMAC. The idea is that we could have a root account and child accounts, so the wallet can store only a single root key, and everything else is deterministically generated.

Something like this could be used for the authenticator as well, to generate the app keys. Maybe that’s how they are doing it already; I’m not familiar with how it works.


I’ve been wondering what would be the best way for the SAFE network and its community to begin this new year, and I think I figured it out, I developed some new toys you can all start playing with now! :grin:

I created a first prototype of a coin wallet within the SAFE Wallet app (v0.0.3). In order to demonstrate how it works, I created an altcoin (ThanksCoin) which can be transferred using this coin wallet.

Please note this is just a first prototype, and several things were designed in such a way to make it simple to develop, mainly because I’ll need to adapt them to make use of the MutableData soon.

The coin wallet:

  • The SAFE Wallet app now supports the creation of a coin wallet.
  • The coin wallet is internally an unversioned StructuredData, with symmetric encryption, which XorName is based on its associated public key provided by the user.
  • It supports to transfer coins to another wallet using the recipient’s public key, and it automatically detects incoming transactions as well.
  • The user can optionally keep the transactions history within the wallet’s data (not the wallet’s SD where the coin IDs are kept, but as part of the information kept by the SAFE Wallet app).
  • Notifications of transactions are done thru a separate unversioned StructuredData which XorName is based on the recipient’s public key with a predefined prefix.

The ThanksCoin altcoin:

  • An altcoin named ‘ThanksCoin’ was defined as an unversioned StructuredData, which XorName is based on a random number.
  • Since I’m using the safe-js library, I don’t have access to the StructureData’s owner, previous owner, and tag type fields, thus this information is kept in the StructuredData’s data field.
  • E.g. a ‘ThanksCoin’ StructuredData’s data can be the following json:
         type_tag: 15001,
         owner: ‘15iJ91Px9ng5E7r5xPv8x3QpPMUu8q1JAR’,
         prev_owner: ‘1Eup55KofQRtBk1xS48LZs4RPYW2x8bgg5’,
  • Anyone can mint ThanksCoin’s using the low-level API, but I know many of you are neither developers nor so familiar with the SAFE API. But please don’t panic, I’m introducing a new tool for you to mint these coins with :wink:

The SAFE Faucet:

  • A separate web app, the SAFE Faucet, is introduced and made available at safe://
  • This faucet requests the user to enter feedback about the SAFE Wallet app in exchange for the ThanksCoin’s it gives away.
  • The user needs to only provide a public key which the faucet should transfer ownership of 5 (five) ThanksCoin’s to.
  • The SAFE Faucet sends the provided feedback by SAFE e-mail to “safewaletfeedback” public ID I personally own. I’ll appreciate if you provide real feedback/comments about the apps.

Therefore, the recommended steps to start playing with all this are the following:

  1. Connect to the SAFE Wallet (safe://, create a new ‘ThanksCoin Wallet’ item, set its label, private and public key, and a pin number.
  2. Open the SAFE Faucet (safe://, provide your feedback, enter the public key of your wallet, click the ‘Get free ThanksCoins!’ button, and wait for a few seconds untill a confirmation message is displayed
  3. Go back to the SAFE Wallet to verify that the coins were successfully transferred to your wallet.
  4. Create other wallets so you can transfer coins among them.

If you stored information using SAFE Wallet v0.0.2 it won’t show up since I didn’t implement a migration script (KISS), although you can still access it using the older version which is now available at safe://

As always, any type of comment, feedback and/or questions you may have will be very welcome!

Happy new year to everyone! :beers: