Introducing SAFE Wallet app

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.

2 Likes

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.

8 Likes

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.

3 Likes

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!

2 Likes

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.

2 Likes

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://safefaucet.wow
  • 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://safewallet.wow), create a new ‘ThanksCoin Wallet’ item, set its label, private and public key, and a pin number.
  2. Open the SAFE Faucet (safe://safefaucet.wow), 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://previous-safewallet.wow.

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

Happy new year to everyone! :beers:

32 Likes

@bochaco you tha man!!

5 Likes

Very nice, I’m on vacation so not able to look at these right away but will do when I get back home :+1:

7 Likes

Nice work!! :+1::+1::+1:

I made the steps and got the coins.

Some questions though,

The private and public key, are these like with Bitcoin? Should the public key be derived from the privatekey?? I went to https://www.bitaddress.org and just created a private and public key and used them.

So we can now send coins to each other over the network?? What’s your address??

Point of attention here, you need TEST 11 to run the wallet-app and faucet. Using the SAFE Browser and 2 open tabs works great.

Here’s my public key:

1EiRPrarzPmRyz4pfAaDJERztfPHf2tnhx

10 Likes

Yes @polpolrene, you can use those type of addresses, although the signature is not being verified yet by the app, and the coins are not being signed yet, I’m researching on which library I can use for that and will code it soon. And yes, we can start transferring coins among different wallets, I’ll transfer you some coins.

9 Likes

Hey. Works for me too. I set up a Thankscoin account and used the wallet address as the public key when I left some feedback. Five Thankscoins magically appeared in my SAFEwallet :grinning: but there’s nothing in my Thankscoin wallet as yet. Is that expected?

3 Likes

The public key you used to create your ThanksCoin wallet is the one you also need to enter in the faucet. Then you should see in the wallet the balance with the 5 coins, are you seeing a non zero balance in the SAFE Wallet app?

1 Like

Yep. See below. I hadn’t heard of Thankscoins before today so not quite sure how they work.


6 Likes

Cool! I would suggest you go to edit mode of your ThanksCoin wallet and toggle “Store full transactions history in this wallet”:

After that, for any new transactions, you will see the details of each of them on the right hand side of your wallet like this:

Now, regarding the ThanksCoin coin, this is an altcoin I just created the last few days for the sole purpose of demonstrating how this SAFE wallet app works, so it’s not related to the coin at thankscoin.org you are looking at, in fact I didn’t know that ThanksCoin existed either!!! …I should have checked before to avoid this confusion. To summarise, this ThanksCoin I created you can only use it with the SAFE Wallet app and it’s not related to any other coins you can find on the web.

8 Likes

I just created the last few days for the sole purpose of demonstrating how this SAFE wallet app works, so it’s not related to the coin at thankscoin.org you are looking at,

Aha! That’s one mystery solved then. I was wondering how that was going to work! Great work by the way :slight_smile:

5 Likes

This is fantastic work - great to see a proof of concept crypto token / currency implementation built on the Safe network.

It seems the flexibility possible with developments of Safe based tokens is far greater than blockchain based assets - no hard forks needed for upgrades, no expensive blockchains to maintain for security, and no tiny transaction limits.

Keep up the amazing work!

10 Likes

@bochaco Wow great to see you deliver this new years gift :kissing_heart: Sweeeet

tried to send 0.5 Thankscoin, worked but no 0.5 deducted, with 1.5 only 1 deducted from the total amount.

2 Likes

@bochaco Woah this is sooo cool! I was like “Did that work? Naaah probably not” when 5 thankscoin popped up in my wallet! :cake:

My public key is: huhuhu

/edit:
I can only send whole thankscoins to myself, if I send 5.9 coins, 5 will just vanish :slight_smile:

3 Likes

Thanks @rand_om and @19eddyjohn75.
Divisibility is not supported, and you just hit a bug since it shouldn’t behave like that either. I will fix it for next release. Thanks for letting me know.

Something strange happened, 9 Thankscoin disappeared out of my wallet, after that I send 0.99 two times to the same wallet address.

On Monday I send 0.99 two times (they don’t show up as numbers) on the top left

Only one of the 0.99 transaction came through and then the 9 Thankscoin in the wallet was gone. I did a hard reload, but that also doesn’t seem to update the right balance, which should be 10 Thankscoin (I’ve send 1 Thankscoin after the two 0.99 transactions).

I wonder about this, because when I try to send an amount and I do it as:
0,99 the wallet says “Invalid value”
0.99 is being transferred as valid value, but doesn’t show up as an amount in the receivers wallet.

I’m just saying something totally clueless here, but maybe your wallet could interpreted divisible values. But there is obviously a problem, what if your wallet has 9.99 Thankscoin and I send you 0.05 Thankscoin? Will you have 10.04 Thankscoin? I think you could if the wallet interpreted it as receiving 10 Thankscoin + 0.04 Thankscoin (In reality your sending 9.99 Thankscoin + 0.05 Thankscoin to a oracle/code, which sends you back 10 Thankscoin + 0.04 Thankscoin (but this tx doesn’ t show up in your wallet)).

You just see that you have received 0.05 Thankscoins and that your total balance is now 10.04 Thankscoin

3 Likes