wiki:Summer of Code Proposals

Web user interface for Nebulostore

Currently Nebulostore has a console interface, which is hard to use and a Java GUI, which is still unstable. We would like to have a simple yet fast and extensible web GUI for users, admins and testers. Use cases:

  1. User should be able to easily manage all his files stored in the system, view the basic information such as replication rate and availability, manage his identity and cryptographic keys.
  2. Admin should be able to access logs, change logging levels, restart application, manually clean or modify data stored on disk.
  3. Tester should be able to configure and initiate a test via our test framework (called “Conductor”) on a set of multiple machines, collect the results, logs and display the statistics (currently we do it via shell scripts) as well as manage and easily select test machines.

Ideas for further extensions:

  • It would be great to be able to observe the status of test executions live or at least make it possible to be added in future.
  • Ability to perform some maintenance operations on many system instances at once (such as reconfiguration)


  • some experience in web development and Java tools
  • proposing and discussing an API between the system and the GUI

Mentor: Krzysztof Rzadca, Bolek Kulbabinski

Cryptographic framework for Nebulostore

Currently Nebulostore has only empty placeholders for all cryptography, as our tests so far were measuring only performance and data availability. However, in order to release a publicly usable product, we need to implement basic security measures. This project is to design and implement cryptographic primitives based on our privacy model. This includes:

  1. Encryption of files stored on disk
  2. Storage and distribution of private and public keys of users.
  3. Creating user identities and using them (registration and login procedures).



  • understanding of public key cryptography and privacy in distributed systems
  • knowledge of Java libraries and tools that are going to be used in the project

Mentor: Bolek Kulbabinski, Grzegorz Milka

Integrating bittorrent protocol with Nebulostore for fast distributed downloads and uploads

One of our former team members has implemented the bittorrent protocol to distribute data among Nebulostore peers. This task is to:

  1. Understand the existing implementation and fully integrate it with Nebulostore.
  2. Design and perform extensive performance tests.


  • basic knowledge about the bittorrent protocol and willingness to broaden it

Mentor: Bolek Kulbabinski

Bitcoin micropayments in nebulo for community services (like querying the DHT)

So far, we assumed that peers in our network conclude contracts for storage space based on tit-for-tat strategy. However, our theoretical analysis has shown that this could be harmful to low availability peers making the network unstable. We also assumed that the cost nodes bear maintaining DHT are negligible. This doesn’t have to be through. Especially, when some nodes cooperate to acquire network resources.

Possible solution to this problems comes with Bitcoin network. We can use Bitcoin micropayments so that low availability peers could pay for their contracts with peers with higher availability. What’s more, they can be also used to pay for every DHT query making it profitable to respond.

This projects consists of following parts: Integrate Bitcoin protocol with Nebulostore making it possible to transfer money between peers. Extend our DHT implementation with micropayments for nodes involved in DHT query processing. It contains also designing a P2P mechanism responsible for query price determination and fair division between nodes involved. Use Bitcoin micropayments in the Broker module so that it was possible to pay for storage space.

Requirements: Experience with Java, knowledge of DHT implementations and its assumptions. Basic knowledge of Bitcoin protocol and it’s implementations.

Mentor: Krzysztof Rzadca, Szymon Matejczyk

Last modified 5 years ago Last modified on 02/17/14 09:53:45