Presentation and new light web client Ğ1nkgo

Hey @Maaltir ,

I am not sure if you speak english, but I’ll try anyway. If not, you can still copy and paste in a translator that will give you the french version …

As discussed previously with @poka , it seems the team already decided that using local storage to store private key is not appropriate concerning security issues. I don’t exactly know when the decision was taken and who took it on what knowledge…

From what I know, I come from the Solana ecosystem where we had these discussions about web local storage security. Solana is in the top 10 crypto currency by market cap. Not so much to bolster up, but just so you know that some Solana wallets are handling millions of $ in value and so security is something really, really important for the dev community. Especially because we already experienced many clever hacks that could have endanger the crypto ecosystem as a whole because people would distrust the technology.

That being said and without further addue, there is clearly a balance to find between usability and security. The best solution by far is to have a seed vault in your cell phone (see Saga mobile phone > Seed Vault).
But let’s be honest, even if everybody will get a seed vault in it’s wallet eventually, it’s not yet there. And it’s hard to ask every user to buy a brand new phone just to use crypto payment…
So concerning usability, the second best solution would be to use Web worker / local storage as a ledger. With HTTPS encryption for sending transaction, X-XSS-Protection to protect the local storage from cross-site injection and your key encrypted using AES, you’re pretty much protected against the majority of technical attacks.

Now, I don’t know if the June ecosystem long-term goal is to attract users, and especially non technical users. If that’s the case @vjrj 's solution is definitely beautifully solving the problem as it’s simple, can be used without technical knowledge and without having to download anything, and all that without compromising the security.
Of course, the web app can be hacked with great technical means like quantum computing, but so can a web extension and a mobile app. As a hacker, I can tell you that the easiest way to hack a payment solution is not to hack it technically but socially (= jack your password / mnemonic one way or the other, using phishing, scam, false app, keylogger, etc).

As a result, Solflare which is the most used wallet on Solana, has a web wallet, an extension and a mobile app. So far, the web wallet has still not been hacked despise billions of $ to get as a reward!
Having used it for 2 years, and make a lot of non-tech friends / family use it too, I realised that the solution they prefer is by far the web app. But they still consider it very complicated compared to Google Wallet. I know we are not competing with Google, still I really feel inspired by the simplicity and yet the security they offer to allow payments to everybody.
And I’m so far convinced that using a well protected web app with maximum security (encryption) and simplicity (get rid of wallet, address, mnemonic, etc) is the way to go. As most of users don’t care about those concepts as much as they don’t care about what is a microprocessor, ram, SoC when they use a mobile phone. They just want to use it without the constraints to enter a password, store a mnemonic, download an extension.

It’s just my opinion and I would be happy to hear your arguments / discuss about that :smiley:

5 Likes

Moi, je me contente de faire confiance aux développeurs.
Si cela leur semble sécure, ça me convient.


I just trust the developers.
If it seems safe to them, that’s fine with me.

2 Likes

Few time today but I added a FAQ with these questions so it’s more clear for users:

Thank indeed @poka for the cors fix. I’ll test and respond to both of you with more time.

DNS or just the server being compromised. As the user cannot choose not to update the client, the service admin can just update the server with the compromised version. This could be mitigated using in-browser verification, but this is not standard yet so it will protect too few people.

Meanwhile published releases are signed by at least one dev, and the users can wait for the approval of other devs to install a new version, if they have a doubt.

I think this is not about local storage, but the app being served remotely.

Un portefeuille juste pour les paiements, ça me convient très bien.
Maintenant, j’ai juste hâte de pouvoir installer ça sur mon smartphone.

A wallet just for payments is fine with me.
Now I just can’t wait to get this on my smartphone.

3 Likes

I did add Ğ1nkgo to the first general table Clients and tools comparison.
To be completed.

Would you like to have the repository moved to clients group?
Should we create a dart sub-group to be shared with Ğecko repositories? @poka? Ğecko repositories would get a new URL.

1 Like

Now is failing again for some reason. PS: ok, I see now your last comment.

I use durt for payments and durt do the OPTIONS first and later the POST on payments.

G1nkgo is something that I was not expecting to do, sincerely. It’s quite difficult to me to do these kind of efforts in my spare time (because of my lack of time, because of my health, and for other reasons). But, someone added me to the Spanish tech group :slight_smile: , and there mentioned that some light web client was needed. I suggested several times, to use flutter and some code from gecko to do it. And as “to talk is cheap” suddenly I started to code and here I am.

When someone mentioned me about durt, I trash the pure crypt code I had to create wallets, and I started to use the wallet part of durt. Recently when I started to achieve to use gva via a proxy, I did the same with the duniter code I used to calculate the history and the balance (maybe I have to rescue some part in case gva fails temporally to retry with duniter).

I was with the sensation that we were sharing code. Later you, poka, clarified me that you are not using durt right now.

But my motivation to do Ğ1inkgo was the problems that I saw in the markets:

  • People using paper
  • People without wallets at all for different reasons (lack of knowledge, lack of space, …)
  • People asking for help because they lost the pass/phrase (many of them, all the time)
  • People with passwords annotated in papers in all the markets (so here I agree with @flodef about the social hacks) some working, some not working
  • People like me that couldn’t pay because Cesium was not working correctly
  • Other serious usability problems that I suffer myself and I saw in others
  • Friends installing Cesium (after talking them about duniter/Ğ1) and trying to use their “I-use-the-same-password-everywhere” and losing the interest minutes later in use Ğ1 after the password/passphrase wall.
  • IMHO, the use of “you are not a member” everywhere in Cesium is not a warm welcome to newcomers. This is why I do not mention things related to WOT in Ğ1.

(and these are the reasons that comes to my mind right now, to say something).

So I was thinking mainly in mitigate these kind of scenarios mainly to newcomers. Are these also goals of gecko?

If yes, or partially, count with me. If not, we can try to share as much code as possible in some common libs and not to try to solve the same problems again and again, and to have to faces (gecko and g1nkgo) for the same client libs.

BTW there are some MR in:

I was thinking in this a bit, but I didn’t find a good solution. I derived thinking in RO distros, and things like that, but none seems to work.

A signed app sounds like a the better option, and to let the web client just like a starting for the firsts uses (try without effort, continue later with g1nkgo app, continue later with cesium/gecko).

I completed it.

Feel free.

BTW, this weekend I installed a production server:

More info:

PS: Duniter CORS successful test:

3 Likes

Pour moi, il manque juste la possibilité de payer en DUğ1, et l’installer sur mon smartphone.

For me, it just lacks the ability to pay in DUğ1, and install it on my smartphone

A post was split to a new topic: Ğ1nkgo requests

Those are real motivations (meaning problems to solve) that I also encountered on markets (using another blockchain). I thinks those concerns need to be taken into accounts and discussed.
I see only big advantages to web app VS extension VS mobile app for creating a friendly usable wallet and as such, I’m inclined to go this way in priority.
If we can afford it, it would be great to have these three possibilities developped and let users choose which is the best for them (see Solflare wallet as an example).
On my spare time, I would really love to collaborate on this project as I want to learn more about flutter, even if I think a web app should have been done in a more recent web language (Next.js or Vue.js for example). I mean, if it’s okay with you @vjrj ?

I strongly disagree with this one.
To reply to @tuxmain concerns which are great ones, I would suggest the following:

Web app security

IMPLEMENTATION
Let’s say you have your web app (G1nko) you develop, so many change are happening which are transparent to the user as she doesn’t need to update anything (as you mentioned).
All the wallet interactions (mainly storing private keys and signing transactions) are handled by a separate module (preferably web workers). This module is very rarely changed has once the function are implemented, only a blockchain protocol change would trigger a need to change the Wallet module.
As a security measure, the wallet module has a specific hash so when it is changed, the hash also changed. This hash is stored on the blockchain on multi sig account (best way) or any other decentralised storage with a multi sig access. Multi sig means that it should have more than one dev validation to modify the key).

USAGE
When the web app needs to do an operation, it will first request the hash, then check the wallet module against the hash. If it matches, perfect, it means that the wallet module is correct and the user can perform wallet operations and transactions. Otherwise, the wallet module has been hacked or the key not yet updated.

What prevents the web app to be hacked and bypass the wallet module? We can sign things, but browsers cannot natively check code for now. This cannot be solved using only layers and indirections, it is still needed to reliably install at least one thing (e.g. a generic DHT proxy with hash checking, a package manager or a specific extension).

I think such a wallet may be ok for small amounts (and even then, 1000 small accounts makes a large account, so it should be decentralized) but it should warn the users about the risks, maybe even refuse to handle too much money, and refuse to handle member accounts. (except for test blockchains, where we don’t need that much security)

1 Like

I’ve just released a apk first version here:

Note: I have the same wallet of the web exported to the android version, and works as expected in my firsts tests.

@flodef , you are more than welcome. I’m quite newbie is all this ecosystem. Flutter is from 2017… is this now old !? :slight_smile:

Regarding the discussion on security, I was thinking this weekend about the “backwards law” mentioned by Alan Watts, which states that often you achieve the opposite of what you want. For example, you want to impress a girl but with your attitude, you may end up achieving the opposite effect; or if you want to feel secure in your house, and you install visible alarms and bars on the windows, you may end up drawing more attention and attract potential thieves.

In our case we want to be very secure with our passwords/passphrases but at the end there are users that sometimes are quite exposed (if people cannot remember their pass/passwords and bring them in a paper that anyone can memorize or make a photo) as they are doing this is a open market and frequently. Even me, using a password manager with other pass in public anytime I want to use my Cesium.

BTW, what a good talk!

5 Likes

J’ai installé le .apk, mais impossible d’importer le portefeuille que j’avais exporté depuis le site web. Je ne peut pas naviguer pour retrouver le bon dossier.

Sera-t-il possible un jour de payer en DUğ1 plutôt qu’en ğ1. Le DUğ1 sera un invariant temporel, ce serai bien de pouvoir l’utiliser pour payer.


I installed the .apk, but I can’t import the wallet I exported from the website. I can’t navigate to find the correct folder.

Will it ever be possible to pay in DUğ1 rather than ğ1. The DUğ1 will be a time invariant, it would be nice to be able to use it to pay.

1 Like

You can create a backup to see where the wallet.json is placed. In my case Android/data/org.comunes.ginkgo/files
This is the application folder so you don’t need perms to access it. Brave save a wallet export in a similar place.

I tested the APK, it’s very handy on the phone :star_struck:
we get a better sense of the app use than in the browser
GVA allows to be very quickly notified about a new transfer, that’s a game changer, thanks to bring it to life!

Feature requests:

  • add information on the “send” button when it is grayed out to explain why
  • add scan button in the contact panel to be able to add a new contact from there
scan does not work without google play services


PS: I added Ğ1nkgo to the software page on duniter website: Duniter | Software

3 Likes

J’ai exporté mon portefeuille depuis l’application, et je le retrouve quand je tente de faire un import.
J’ai incliné mon téléphone pour voir le nom du fichier en entier.

I exported my wallet from the app, and I can find it again when I try to do an import.
I tilted my phone to see the full file name.

.

Quand je cherche ce fichier ou ce dossier avec mon gestionnaire de fichier, je ne retrouve que les portefeuilles que j’avais exportés depuis le site web.
Je ne retrouve pas le dossier utilisé par l’application.

When I search for this file or folder with my file manager, I only find the wallets I had exported from the website.
I can’t find the folder used by the application.

Very great work ! I just added your work on https://infojune.fr

3 Likes

I’ll add to the the issues, thanks for the feedback.

Merci!

See the directory below “Select the wallet backup” .

image

Does your file manager have access to others directory?

Merci! Can you add better: https://g1nkgo.comunes.org/ (the other is more a demo/test site)

BTW, I’ve just published a new version with fixes, and the apk includes notifications (let’s see if works as expected).

https://git.duniter.org/vjrj/ginkgo/uploads/5e9eb1cf77dc480539b73b2ec97b53ad/ginkgo-0.0.16.apk

image

1 Like

image

Does your file manager have access to others directory?

Mon gestionnaire de fichier me permet de naviguer sur tous les répertoires. J’ai même activé l’affichage des fichiers caché.
Mais je ne trouve pas le répertoire utilisé par l’application.
Je suis un utilisateur basique, Mes compétences sont très basses. Mais je pense que cette application est prévue pour les utilisateurs comme moi.

My file manager allows me to browse all directories. I have even activated the display of hidden files.
But I can’t find the directory used by the application.
I am a basic user, my skills are very low. But I think this application is meant for users like me.

I’ll try to fix with more energy because I spent a lot of time trying to use the downloads directory without success with permissions issues (this changed a lot between different Android versions, and the documentation and libraries seems to me not very up-to-date). The app application folder does not have so much restrictions.

Can you try the new version I’ve just published?

More info in:

These and other issues in:

2 Likes