Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie

Cryptocurrency

Options
  • 03-11-2017 12:42am
    #1
    Closed Accounts Posts: 1,758 ✭✭✭


    Can anyone enlighten me as to where one would begin should they wish to create a cryptocurrency from scratch? Rather than using and modifying existing open source options.

    There doesn't appear to be a book that breaks all this down. So guess would need to look into various components, P2P, hashing, block chaining etc, separately?

    Would this be an unrealistic idea for a final year project?


Comments

  • Registered Users Posts: 768 ✭✭✭14ned


    I really wouldn't build one from scratch. Too much work. Better to write your own cryptocurrency on top of the Ethereum platform. This will get you started:

    https://blog.ethereum.org/2015/12/03/how-to-build-your-own-cryptocurrency/

    Caveat: don't expect any academic lecturers to get any of this stuff during grading. Far too new.

    Niall


  • Registered Users Posts: 6,012 ✭✭✭Talisman


    14ned wrote: »
    Caveat: don't expect any academic lecturers to get any of this stuff during grading. Far too new.
    They're not all that bad - I know people that are doing post-graduate work on blockchain technology in UCD and DIT.


  • Closed Accounts Posts: 1,758 ✭✭✭Pelvis


    14ned wrote: »
    I really wouldn't build one from scratch. Too much work. Better to write your own cryptocurrency on top of the Ethereum platform. This will get you started:

    https://blog.ethereum.org/2015/12/03/how-to-build-your-own-cryptocurrency/

    Caveat: don't expect any academic lecturers to get any of this stuff during grading. Far too new.

    Niall
    I suppose my concern would be lack of complexity when using something like that. The article itself is titled "how to build your own cryptocurrency without touching a line of code"... :pac:

    Also, I never heard of Solidity until now. :eek:


  • Registered Users Posts: 6,012 ✭✭✭Talisman


    Pelvis wrote: »
    Can anyone enlighten me as to where one would begin should they wish to create a cryptocurrency from scratch? Rather than using and modifying existing open source options.

    There doesn't appear to be a book that breaks all this down. So guess would need to look into various components, P2P, hashing, block chaining etc, separately?

    Would this be an unrealistic idea for a final year project?
    Start with the Bitcoin or Litecoin projects on Github. Litecoin is just one of the 11,000+ forks of Bitcoin.

    By tweaking the parameters you could have your own cryptocurrency in less than a day. If you want something to sink your teeth into then maybe using a whole new Hash algorithm is the way to go - that could take a while to implement and test.


  • Registered Users Posts: 768 ✭✭✭14ned


    Pelvis wrote: »
    Can anyone enlighten me as to where one would begin should they wish to create a cryptocurrency from scratch? Rather than using and modifying existing open source options.

    There doesn't appear to be a book that breaks all this down. So guess would need to look into various components, P2P, hashing, block chaining etc, separately?

    Would this be an unrealistic idea for a final year project?

    Having thought about it a little more, I think writing a subset of this from scratch would indeed make a great final year project.

    But instead of proof of work, I'd suggest proof of storage (stake), as it's much easier to implement. You'd be implementing a distributed store, so each node stores some random set of chunks of content. You store each chunk on say three nodes to implement redundancy.

    To implement proof of stake, generally you need to get the nodes whose data you are storing to act as validators for any data you store onto others. This means a public key encryption round whereby the nodes whose data you are storing issue you a data validation fingerprint against some random small portion of the data stored. You run that against the data of theirs you are storing and send it back, signed with your one time pad requesting validation of a new item to store. They can validate that you really are storing their data, and thus authenticate to other nodes that your store is valid.

    What will get you the marks is implementing the web of trust correctly. So no node trusts any new node unless introduced to them by at least three nodes that they trust saying that the new node is trustworthy to them. And each node only trusts the nodes which can prove that they really are storing your data and not lying about it.

    The above is a fine final year project as it is, and gives you lots of scope to go into the academic theory e.g. fault tolerant algorithms, consensus voting and so on. There is no cryptocurrency involved, but you could write a discussion piece about how you would go ahead and implement a coin on top of the above, so for example, if a node stores more than it stores of others, it must spend coin. If it stores more of others than it stores onto others, it receives coin. I personally wouldn't bother implementing the coin part, it's enough to talk about it with lots of academic and theory references.

    Testing the above will be a bit painful. Forking your process a few hundred times should do it, but debugging that will be awful. Be aware of this before you choose this.

    Good luck!

    Niall


  • Advertisement
  • Closed Accounts Posts: 1,758 ✭✭✭Pelvis


    Thanks Niall, have been doing some reading today, and it became quite clear that starting from scratch was biting off more than I can chew. Even what you describe goes far beyond my current capabilities, though that's the whole point of choosing such a project.

    I shall need to do more reading! I guess my first port of call is figuring out how to implement a distributed data store! :/


  • Registered Users Posts: 768 ✭✭✭14ned


    Pelvis wrote: »
    Thanks Niall, have been doing some reading today, and it became quite clear that starting from scratch was biting off more than I can chew. Even what you describe goes far beyond my current capabilities, though that's the whole point of choosing such a project.

    Fair enough.

    A major simplification for you to consider is to make it a trusted environment, so all nodes trust all other nodes. That dramatically simplifies things.
    I shall need to do more reading! I guess my first port of call is figuring out how to implement a distributed data store! :/

    Look into Distributed Hash Tables (DHT). Also look into GlusterFS. Those are the two extremes of implementing a distributed data store. It shouldn't be too hard to come up with something in between.

    Once you have a distributed hash table, all the other stuff like cryptocurrencies can be built on top. It's pretty hard to avoid some sort of DHT if you want to avoid single points of failure. Even just developing a DHT from scratch, especially if it handles the Byzantine problem, would be a great final project.

    Niall


  • Closed Accounts Posts: 1,758 ✭✭✭Pelvis


    I've been reading up on DHTs, the concept sounds simple enough though I would have no idea on how to implement it. I came across OpenChord, which is a Java implementation of the Chord DHT, so I'll try and get stuck into it's code base and see if I can figure out what's what. That will hopefully give me a better idea what I might be letting myself in for.


  • Registered Users Posts: 6,012 ✭✭✭Talisman


    OpenDHT, a C++ implementation of the Kademlia DHT may interest you. It's the glue behind the Ring project - a communication platform which uses the Ethereum Blockchain.


Advertisement