Jump to: navigation, search

GSoC 2014 Project Ideas

Revision as of 21:20, 3 January 2016 by Jonasbits (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

If you are interested in working on one of the following projects, get in touch via the forum, the namecoin-dev mailing list or #namecoin on freenode IRC! If you have your own ideas for good Namecoin projects, we would love to hear them and support you with those, too!

We did not get into GSoC 2014 but we are going to apply next year! If you have C/C++ programming experience and would be interested in an internship, send a PM to indolering on the forum forum.





Possible mentors

Light Client

Implement a light client for Namecoin, which can be used to get name values trustless but without the need to store the full blockchain. There are multiple possible ideas to tackle this, depending on your interests and likes. One is to implement an SPV client for Namecoin, similar to what is described already in the <a href="http://bitcoin.org/bitcoin.pdf">Bitcoin whitepaper</a> and what is implemented by <a href="https://code.google.com/p/bitcoinj/">BitcoinJ</a>. Another idea is to introduce hashes of the name-value map into the blockchain and use that to verify mappings, see for instance <a href="https://dot-bit.org/forum/viewtopic.php?f=5&t=1388&sid=6a2900df6fe0a01a2cd69c443f04e5f8">this forum thread</a>. You are free to propose a programming language of your choice as well as your own ideas for implementing a light client and discuss your choice with the community.


Excellent understanding of how Bitcoin and Namecoin work, good ability to design your own software project architecture.


Android App

Implement an Android wallet app and/or support for .bit resolution and/or Namecoin identity logins on Android. This may be best solved with a light client (see corresponding project idea), but could also be done using a trusted server for Namecoin queries as compromise for now. Especially for .bit resolution, good understanding of the Android system architecture is probably necessary, as you have to propose a way to make this happen (on rooted phones interfering with the network stack? providing a proxy server?). A possible starting point could be <a href="https://guardianproject.info/apps/orbot">Orbot</a> for understanding how they resolve .onion domains. For the other possible use-cases, no such deep system knowledge is necessary.


Android app development experience, possibly understanding of how networking works on Android. Intermediate understanding of Namecoin.

domob, biolizard89

Name/Value Encryption

Develop a reliable protocol for encrypting / obfuscating names and values in the blockchain, to prevent it from containing illegal material in the clear, and implement it. Some first ideas were already given by <a href="https://en.bitcoin.it/wiki/User:Gmaxwell/namecoin_that_sucks_less">gmaxwell</a>, and others have been brought up in discussions. We first need to decide on a good system based on your ideas and proposals, and then you need to implement that into Namecoin.


Very good knowledge about cryptography and understanding of the Bitcoin/Namecoin code-base and internals.


Improved Privacy

Namecoin suffers the same problems with lack of anonymity and tracability of coin flows that Bitcoin does. When Namecoin is used for its stated purpose to provide censorship-resistant browsing and registration of domains for possibly controversial purposes (Wikileaks?), this may be even a bigger problem than with Bitcoin. You can think of ways to fix this, possibly by implementing <a href="https://bitcointalk.org/index.php?topic=279249.0">CoinJoin</a> / porting over the existing ideas from Bitcoin or by integrating <a href="http://zerocoin.org/">Zerocoin technology</a>.


Excellent knowledge about cryptography and good understanding of the Bitcoin/Namecoin internals.


Armory Port

Add Namecoin support to <a href="https://bitcoinarmory.com/">Armory</a>, so that users can take advantage of its advanced features (in particular, cold storage / offline transactions) both for secure storage of NMC as well as names.


Good understanding of how Namecoin works, C++ and Python experience for hacking on Armory.


Block Explorer

Extend one of the existing block explorer projects (either <a href="http://explorer.dot-bit.org/">khal's</a> or <a href="https://bitcointalk.org/index.php?topic=22785.0">Abe</a>, for instance) to be a modern web application with good support for names and a nice look & feel.


Experience with web development and design, possibly Ajax.


Online Wallet & Faucet

Implement a (secure) online wallet and/or faucet site for Namecoin, in particular also with support for name operations. Ideally for the online wallet, the private keys should never leave the client machine (similarly to what <a href="https://blockchain.info/wallet">blockchain.info</a> does). May be coupled with the block explorer project idea.


Experience with web development and design, possibly Ajax. Good understanding of the cryptographic internals in Bitcoin/Namecoin for client-side private key handling.


File Signing & Verification

Namecoin can provide an excellent base for signing files (like software releases) and verifying their integrity, without the need to distribute signature files (as with GPG) alongside the downloads. See <a href="https://dot-bit.org/forum/viewtopic.php?f=2&t=1059&sid=109cbfe8a6ac7a4a388a56a0e10db8d2">this proposal</a>. Implement a tool that handles this, both for signers and users just wanting to verify their downloads (should be easy to use for them). You can propose a programming language / toolkit to use for this project. There exists already some code to interface to the Namecoin API over JSON-RPC for some languages (C++, Python, PHP), and it is easy to do from others as well.


Ability to design and develop your own software project, skills in designing an easy-to-use and cross-platform UI. Basic understanding of how Namecoin works.

domob, phelix?

Secure Public Key Distribution

Namecoin is very well suited to distribute any type of "public key" for human-readable names / online identities. This has already been taken advantage of for Bitmessage, and a proof-of-concept implementation for OTR fingerprints in Pidgin exists, too. Think about other possible uses (e. g., Bitcoin addresses in wallet software like Electrum, or GPG keys) and implement them.


Knowledge about the particular use-case and tool where you want to add Namecoin support, and basic understanding of Namecoin and public key crypto systems.


Your Own Namecoin Use

Namecoin can be used for lots of novel and interesting use-cases. You can propose your own and discuss it with us!