[ANN] PeerKeeper: Backend implementation started

Thanks @saeveritt for the graphic design. Still to be implemented in the demo.

I’m working on a project codenamed “PeerKeeper”.
It’s a codename as suggestions for better names are welcome!

Please tip here to fund the project:

Test page to test your browser:


  • A thin client PPC wallet that is able to mint in browser.
  • Creates addresses using BIP32 HD wallets, based on a single locked key that can be bookmarked.
  • Stores no unencrypted private keys on disk.
  • Private keys are never communicated over the internet.
  • Includes a PeerAssets implementation.
  • Values convention over configuration. Coin control is done in savings accounts out of the box.
  • Savings accounts use hardened keys (see BIP32) for extra security.
  • Checking accounts will never mint and therefore never lock your funds.
  • Can run as a chrome/firefox app.
  • Can run as a desktop app using electron http://electron.atom.io/.
  • Can run from a local folder.
  • Can be ported to native iOS and Android using react-native https://facebook.github.io/react-native/.
  • Uses standard block explorers for all functionality except for getting stake modifiers.
  • Should never hard fork from the reference client.
  • Can mint on your phone!

I’m putting it out here early just to make you warm for the project, and give an idea how it will work.
Any feedback is welcome but keep in mind that this is just an interactive mock lacking features tooltips, …

###Update 4th of November 2016
Work on the PeerKeeper backend has started.

###Update 28th of August 2016

  • You can now export your private keys, which means that you can start using the generated addresses in other clients.

Keep in mind that PeerKeeper still doesn’t fetch real balance data, that’s for next iteration.

  • Firefox compatibility is fixed. (it was caused by this issue: https://github.com/feross/buffer/issues/131
  • BIP44 & SLIP44 key generation is implemented and tested. Meaning that from now on, the addresses generated using a rootkey and password combination will never change.

In progress:

  • Fetching address balances from block explorer
  • Implementing send transactions

In short, we’re getting close to a functional wallet.

###Update 28th of July 2016
No demo update but an announcement:
Key derivation pattern will change in next demo to follow the recommendations in:
BIP44: https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki
SLIP44: https://github.com/satoshilabs/slips/blob/master/slip-0044.md

###Update 15th of July 2016
You can now print your credit card sized key card, which contains your locked key.
This way you can take your locked key with you in your real wallet!

I’m now working on printing your keys to paper, just like the paper wallets.

###Update 4th of July 2016

  • QR code scanning support in Send modal.
  • QR code displayed in Receive modal.
  • An empty address is shown as first checking address. This one can be used as ‘new’ address.
  • Per address Send/Receive support.
  • Number of transactions displayed.

###Update 29th of June 2016

  • Overview & Checking screen redesigned
  • Transaction count displayed
  • Send & Receive modals implemented

###Update 23rd of June 2016

  • Demo is now hosted on github: http://hrobeers.github.io/peerkeeper/
  • Modals are added to handle button clicks in the checkings screen.
  • Password checksum logic improved, keys generated using previous demos don’t work anymore.

In progress:

  • Implementation of payment modals.
  • Redesign of Overview screen as it should be possible to execute standard payments from that screen and the dedicated screens are for fine grained account control.
  • @saeveritt is working on implementing the new styling in css.

###Update 2nd of June 2016

Unlock this key using password “hello” and will give you the following addresses in the checkings panel

  • PQ1rH7HS7jYqWBG…
  • PNuy9UEArXeqBEZ…
  • PUzziR4qrjkJJ5o…
  • PTU5pd3iifkDsPR…
  • P8teVxCrRTyoNQQ…
  • PDukDTQsUebuB4…

You can have keys without password checksum encoded by having the first byte of your key < 128 e.g. http://hrobeers.be/tmp/peerkeeper/?key=0404445036aa5f5facd78852929ec759b0c751f311329b1928db2f4ad5e24484

This way you can use the key with any password and all passwords generate a different hdwallet.
This feature is supported for the paranoid people.

  • The first bytes of the key encodes the logN of scrypt rounds so that the hashing power needed to unlock can be increased over time. e.g. 0x84 -> 128|4 meaning checksum bit set and 2^4 scrypt rounds. This will be raised once a progress bar is implemented, but you can raise it manually for testing.
  • A test page is created that runs the unit tests in your browser to check compatibility and proper functioning: http://hrobeers.be/tmp/peerkeeper/test/

More to come!


Where is the source code?

  • The code will be released before a functional client is released!
  • Right now, I’m still working on a framework so that other developers can easily contribute plug-ins.

Minting in browser, how is that possible?

  • To be able to mint, stake the modifiers and blocks need to be calculated before they can be minted.
  • The blocks and stake modifiers will be exposed through a modified block explorer.
  • This means that a centralization will happen similar to bitcoin mining pools.
  • The idea is that multiple stake modifier and block providers will register their services through some kind of PeerAsset, wich will counter centralization.

Why are you doing this?
Multiple reasons:

  • I’m learing React https://facebook.github.io/react/ and Livescript (http://livescript.net/).
  • I believe that Peercoin is a sustainable coin that can survive the crypto bubble.
  • For PeerAssets to succeed, I believe it needs a simple to use wallet.
  • I’m working on a DAO that let’s people trade simulations (of a specific type) where the DAO resolves conflict in case of disagreement. I need PeerAssets and a simple and extendable wallet for this.

Who are you, what is your track record?

  • I’m a thermo-mechanical engineer that got interested in software development.
  • I work as a technical software developer since 2011.
  • I contributed to several open-source project including ppcoin (fixed the unit tests): https://github.com/hrobeers
  • I’m the creator/owner/chief whatever of finFoil: http://finfoil.io/

I just had a quick look at it, but you can be sure I’ll have a closer look!
This is amazing!

Most impressive. :o

Wow! This is great stuff :slight_smile:

great idea, good luck with implementation, sounds too good to be run in browser, can’t wait to try it out!

electron ?

you must make changes.
the new address must be formed in different ways.

Added a FAQ section to answer all you questions :wink:

Wanna put the FAQ at http://hrobeers.be/tmp/peerkeeper/ as well - just in case it spreads :wink:

holy cow.
React is the bomb.
I learned some kockoutjs, but will have a good look at this library.

Small update.

I’m testing out bitcore-lib https://github.com/bitpay/bitcore-lib for all transaction work.
First tests seem very promising!

Edit: Will test bitcoinjs too, as the internet suggests it being more type safe http://bitcoinjs.org/.

Demo update will follow later this week.

Wow, great! Thank you!

Small update:

Key generation algorithm is implemented and unit tested.

Had an unexpected delay in development due to nodejs and browserify fun.
But now the unit tests are both running in nodejs for automatic testing and in browser for testing browser compatibility.

Next demo update is expected later this week!

Exciting! I’m looking forward to seeing your work!

Updated with a new demo version! Read the first post https://www.peercointalk.org/index.php?topic=4583.msg43271#msg43271

[member=32827]hrobeers[/member] bro this awesome project keep doing great work !!! If you need some help or something else give me a bell :slight_smile:


peer4commit page created, start tipping if you’d like to support this project! https://peer4commit.com/projects/179

[member=32970]miga[/member] I don’t know your competences, neither will I ask for specific help. To help out, think about how you can help the project with your skill set.

Thanks for the support guys!

Small update:

Haven’t had much time this week and next week won’t be commuting to work, meaning that I won’t have my daily slot for PeerKeeper work.
This means that no progress will be made until the 19th of June.

But no worries, after that I’ll be back at full power!

I’ve just checked your peer4commit fund and saw only about 3 ppc there. This is embarrassing for this community. You have laid out a sketch for the most advanced web wallet in existence and yet nobody is supporting you. Please keep working on this, we need it.

I will donate 40% of future profits of Peerbet to your peer4commit.

That is very generous!

I’ll try to help the PeerBet marketing campaign!

any chance cold miniting in this