Inspiration

As a group of people who are - more or less - new to the topic, we found it to be a good idea to get our hands dirty before we use some fancy tools. Now, using Java and the many standard library features, they're not as dirty as they could've been, but there are only that many hours in... 24 hours.

What does it do?

I find this question to be offensive. Instead, I'd like to answer the question: What is it supposed to do?

The idea is, that given any other member of the network by IP, you can join. Then you'll build a network of your own peers and start listening for transactions while working on mining your own block.

All the blocks you've heard about are of course stored locally, so you don't need to request all the blocks from the other peers again.

Also, all the traffic is encrypted and signed using RSA keys so you can be sure where it's coming from.

How we built it

Since everyone seemed to know it, Java was an easy choice as our main programming language. To be as hassle-free as possible we used Gradle to manage our project.

The entire code is based on integrated language features like java.security and java.net.

Challenges we ran into

It turns out that, for those who haven't really heard anything about blockchain, it's quite a tricky thing to implement one.

Additionally, it's quite hard to get proper networking going while you're not the admin for your local network.

Accomplishments that I'm proud of

We implemented a decent data structure for the blocks and the chain.

We implemented a solid basis for a proper peer to peer network.

We helped each other get through the troubles we had and grew to be a better team.

What we learned

We all learned a lot about the Java language and its idioms. Additionally, we learned how to work with git properly and will hopefully never commit straight to master again.

We learned how to organise our work and do code reviews.

What's next for HTC: The next cryptocurrency you never needed.

  1. Get it to run.
  2. Implement all the other package types to make the networking complete.
  3. Change the protocol such that each block contains more than one transaction. (We know that's the standard implementation but it makes it easier if you ignore this feature at first.)
  4. Build a charming GUI to attract more users.
  5. Write documentation.
  6. Write tests.
  7. Do 5 and 6. Seriously!

Built With

Share this project:

Updates