[DEFUNCT] Peercoin Android Wallet 3.2 Released

No, you’re right.
Pooled minting may be tricky. You have to create coinstake tx(with correct timestamp), assign txout idx to each participant, send them to sign SIGHASH_SINGLE | SIGHASH_ANYONECANPAY, collect signatures, send created coinstake to lucky minter to sign(he cannot use SIGHASH_SINGLE), he need to send you hash of signed coinstake, you need to send him block header, he has to sign the block and send you back signature. Uff. But there may be some easier ways.

OK, I misunderstood your proposal. This is an interesting idea, but why not just give the trusted server your cold-minting key? Also, this isn’t really using the same concept of “pooled minting” as in other threads. I usually interpret “pooled” to suggest shared distribution of rewards.

I was just thinking about how it could be done. I’m sure it can be done though the details of the implementation would require some good thought.

Edit: Thinking about it, a minting key solution could be the best indeed, though that would depend on the release of such a solution before it’s possible to use in a pooled minting scenario.

A lot to think about anyway. This could perhaps be best moved onto another thread?

I guess so, there are more node implementations nowadays, it would be good to make it more generic thread.

Great work Matthew!!

Some questions:
What software does your central server run?
Did you port bloom filters to the standard client or Peerunity for that server?
If so why not create a pull request and have it publicly released for all clients?

That way you would end up with a decentralized android wallet!

If you run that centralized server it puts the burden on you to protect it against any sort of attacks. e.g. DDoS, which would be a very tricky, costly and time consuming task, wouldn’t it?

Just wondering :slight_smile:

regs
Thomas

Hi thokon00,

My server is using the normal ppcoind. Bloom filtering would not allow for a decentralised wallet unfortunately.

If the server goes down, then the clients wouldn’t be able to synchronise blocks but they would be able to send and receive transactions (which wont confirm). I may setup a backup server if I receive enough donations. If anyone wants to volunteer hosting another server then please let me know, though they would need to demonstrate some credibility.

Matthew

[quote=“MatthewLM, post:67, topic:2846”]Hi thokon00,

My server is using the normal ppcoind. Bloom filtering would not allow for a decentralised wallet unfortunately.

If the server goes down, then the clients wouldn’t be able to synchronise blocks but they would be able to send and receive transactions (which wont confirm). I may setup a backup server if I receive enough donations. If anyone wants to volunteer hosting another server then please let me know, though they would need to demonstrate some credibility.

Matthew[/quote]

Hey Matthew, I think I just might have a solution for this: let’s just have the user pay for using the wallet.

Say you have a server running from where the Android wallet can download data and push tx through. Now, every time the user want to push a tx they have to include a small fee to an address that the server is providing. Now the server will get paid.

Since the server is getting paid for providing this service, there is a point to providing it. If the backend server solution where open sourced, then many people could start running this service.

The user would download the Android wallet and could then add new servers to use and voila now we would get some healthy competition in this space. A slow server might be cheaper.

Also the reliability would go up, because at least one server should always be available no matter the load, the whole thing could scale pretty good.

The wallet would of course be pre-configured with a default set of servers and a default threshold for how much server-fee would be accepted before user is warned (so that a bad behaving sever can’t set an extremely high fee).

  1. Start wallet client.
  2. Connect to server.
  3. Response from server provides client with address and fee.
  4. On client create tx
  5. Verify that fee is not breaking extremely-high-fee-threshold.
  6. append fee to server.
  7. Push tx to server.

EDIT: Forgot to mention the most important thing. While we all know that a TX isn’t mutable and at worst can only be withheld from being propagated to the network, a vulnerability of not being connected to the Peercoin network is that you can not know if you can trust the server. By having a set of services to get data from, this data can be cross-referenced and thereby the user of the wallet should be able to be more confident that the info displayed in the wallet is an accurate reflection of the network.

At the moment the server demand from the app is very low, the only issue is server downtime, and having one or two backup servers would protect against that.

As for open source, the server solution is already open source. Anyone can create a server for the app, the app only downloads from one domain though. I should add an option to allow users to configure the server. I could add a settings menu where users could add multiple servers of their choice which are accessed in a round robin fashion. As for paying for server access, I would rather not introduce that and leave it donation only. People are welcome to use the app and my server for free.

The modified Abe explorer can be found here: https://peercoinexplorer.info/chain/Peercoin

The source code is here: https://github.com/MatthewLM/PeercoinAbeExplorer

[quote=“MatthewLM, post:47, topic:2846”]Thanks everyone, and thanks for the donation redlee.

[quote=“franktoast, post:45, topic:2846”]hello,

I wanted to use the App and it worked. I sent 50 PPC to it but now it always crashes, when I start it on my phone (galaxy 1). Does anyone know how to get the private key?

When I start the app there is a white screen and after about 30sec it says: App doesn’t respond/react (don’t know the exact English words).[/quote]

This is because the app stalls the UI thread during the initial loading process. Please do not force close the app. Instead press the “Wait” button and wait for the app to load the blockchain which may take a considerable time on older devices.

As for f-droid, I took a look into their release process and it appears very complex. Does anyone have experience with f-droid that would like to help submit the app?[/quote]

Sorry, it doesn’t work. It happens nothing. Is there a possibilty to get the private key from a file on the phone? thanks

@franktoast: Wallet files are stored in a protected folder: /data/data/com.matthewmitchell.peercoin_android_wallet/files/wallet_protobuf

It can be accessed using a root file explorer. Your device must be rooted or that directory cannot be accessed.

How long did you wait for the application to load? Can I ask which device you are using?

Many thanks to the latest donors with donations totalling 1029.62 PPC: http://peer4commit.com/projects/129

With these donations I would like to incorporate new features from the upstream Bitcoin wallet which I’m sure many would find useful:

  • Deterministic wallets (BIP0032)
  • Encrypt wallet with PIN code, required to send coins.
  • Displaying local currency in app widget
  • UI improvements
  • Bug fixes and performance enhancements

I would also like to see the following features added, with further funding:

[ul][li]Ability to configure a list of servers for centralised block validation. The app would download hashes from either a random server or from the top of a priority list (configurable option) and if the server is unresponsive it would download from the next in the list until all servers have been tried. This would enhance availability in cases where a centralised server may go down and will allow users to choose whatever server they would like. There’s nothing stopping someone running their own server, in which case I would like to create…[/li]
[li]An easy installation script for the server software. Ideally new server software should be created without the use of Abe. Abe was mainly used due to familiarity and ease of development. New software can interface directly with the peercoin daemon.[/li]
[li]Ability to switch between the production network and test network within the same application[/li]
[li]A loading screen in place of the hang on startup which can occur for a noticeable period on older devices that have downloaded the block history.[/li][/ul]

I’ll see if I can determine some target funding for these features after I have completed the current update.

Edit: Now have beginning of changes to peercoinj up: https://github.com/MatthewLM/peercoinj/tree/upsdev

This feature, I mean wow it would be incredible good to get that one. It would make the it incredibly reliant, stable, scaleable and so forth and so on. ;D

This is a great feature list. I’m particularly looking forward to deterministic wallets. Thanks, MatthewLM!

[quote=“MatthewLM, post:72, topic:2846”]- Deterministic wallets (BIP0032)

  • Encrypt wallet with PIN code, required to send coins.
  • Displaying local currency in app widget
  • UI improvements
  • Bug fixes and performance enhancements

Edit: Now have beginning of changes to peercoinj up: https://github.com/MatthewLM/peercoinj/tree/upsdev[/quote]
Great to see the development of the Peercoin Android client continuing.

Excellent. I think it will advance Peercoin adoption as much as peerunity did.

I hope to have the update done this week. I’m currently going through the peercoinj update. I’ve merged the changes but I need to resolve some issues. Then I will merge the Android code changes and finally do thorough testing of everything; both new and old features.

After this update I hope to do work on the server configuration options.

You should look into making a Transifex project for translations like Bitcoin Wallet:
https://www.transifex.com/projects/p/bitcoin-wallet/

[quote=“sandakersmann, post:78, topic:2846”]You should look into making a Transifex project for translations like Bitcoin Wallet:
https://www.transifex.com/projects/p/bitcoin-wallet/[/quote]

That might be useful for if I add additional strings that need translating. Google also offer their own service for this. I’m not sure what is best.

It might take until next week to get the update done, but I will get there.

[quote=“MatthewLM, post:79, topic:2846”][quote=“sandakersmann, post:78, topic:2846”]You should look into making a Transifex project for translations like Bitcoin Wallet:
https://www.transifex.com/projects/p/bitcoin-wallet/[/quote]

That might be useful for if I add additional strings that need translating. Google also offer their own service for this. I’m not sure what is best.

It might take until next week to get the update done, but I will get there.[/quote]
The advantage of using Transifex over Google is that our translators don’t need to sign up to yet another site. But if you think the Google translation service is more appropriate for this given Android is kind of a Google product, feel free to go with that. Anyway I like to express support for sandakersmann email. Translations are necessarily to get to mainstream adoption across the world.

BTW It would also be great to have something similar for the soon to be released NuBits version. Assuming codebase is the same we should only need to translate once, but correct me if I’m wrong.