The Blockchain (distributed ledger technology)



The author says it is from an old Riak implementation and it looks to me to be general purpose. I haven’t compared the code directly either, but this standalone module looks far more useful than plucking the master branch module from Riak.


thanks. As you know, some cryptocurrencies use the proof of work consensus (Bitcoin), other, the proof of stake (Ethereum in the future). In this context it would be possible to design a cryptocurrency such as Bitcoin or Ethereum using the Raft consensus. Sorry, if this question does not make sense or sound absurd. I am learning about these issues yet.


I guess I found the answer to my own questions:"raft-dev"+(cryptocurrency+OR+blockchain+OR+bitcoin)


Out of curiosity (I don’t really know how these things are supposed to work), did y’all start out with the goal of Open-Sourcing? Where did that fit in to the overall business strategy (if you are able to elaborate). Thanks! :slight_smile:


@rps17 Good find! I wasn’t aware that plain ol’ Raft was not enough for a blockchain consensus. Yes, there is the Tangaroa flavor of it which juno implements.

Hyperledger Fabric implements Practical Byzantine Fault Tolerance (PBFT) and Sieve which is an augmentation of PBFT, supporting output consensus. Sieve has been created by IBM Research and we are currently waiting on a research paper from them. That FAQ also mentions Eve whose supposed successor I’ve found, Adam.

Bitcoin uses their proof-of-work for consensus (PoW) which is definitely not performant at scale. This paper from IBM Research compares PoW and BFT replication with respect to their scalability. It looks like a great place to start to get our bearings.


Hola, I have arrived on a learning mission on functional programming, but I am, as the tech half of our project, now needing to reach out some more.
I have built a smart contract system.

There are some nuances, but none of them are of the form of a universal timestamp arbitrated by a proof of work mechanism funded by a cryptocurrency which is validated by a universal timestamp …

Basically, with SSL, digital sigs & Merkle trees, you can easily build a system that as long as everyone corroborates everything with everyone else, and at least one of them hasnt been hacked, is provably immutable.
So it wont scale wrt number of parties on a contract, but how many parties to a contract, who all need undeniable proof, do you want ?.
I have a crude rules engine which is barely more than a proof of concept place holder right now. I was/am considering allowing javascript run in a VM to add functionality, but I should perhaps do some learning about functional programming before doing anything yet.


Thanks for sharing! Yes, I’ll read the mentioned papers and give feedback. It also seems that an alternative to proof of work is the proof of stake. In reality, there are lot of alternatives and sincerely it’s interesting to see which one is more useful to create a cryptocurrency.


Thanks for sharing!


I compiled these blockchain resources above as a wiki. Feel free to contribute. :041:


A couple of questions:

  • Do you have any repository set up yet?
  • Do you think it can all be done in Elixir / Erlang - any need for performant C code?
    I would be glad to help where I can.


Do you have any repository set up yet?

exchain/exchain on GitHub

I just created a new supervised mix project and put a tentative roadmap for the project.

Do you think it can all be done in Elixir / Erlang - any need for performant C code?

I think we can start implementing it in Elixir as non-fancy data structures until we need to start scaling it and optimizing bottlenecks. The “chaincode” or smart contracts portion should be done in Rust (or Futhark?) because that component must crunch numbers. It would be convenient to use the smart contracts virtual machine of Ethcore Parity, the latest Rust implementation of Ethereum, and likewise pluggable for that of Hyperledger Fabric or Sawtooth.


This is something I’d love to get into as I want to learn more about crytography in general as well as use more Elixir. I’m taking the Cryptography 1 course on Coursera as a primer.


I too am very much interested in working on things in this area. I have a project I’m primarily committed to for the next couple months, but I have all of the books listed in the reading list above, and am slowly working through them + studying cryptography + learning Rust + reading Designing for Scalability with Erlang/OTP on the side.

I really hope that within the next month to three months I can start collaborating with others on things in this area. This seems like an amazing opportunity to learn a ton.

I’m especially curious to see what waves something like the EVM could make in this territory. To me it’d seem that it’s particularly well suited to many aspects of this problem domain; but I’m also still very ignorant about how a lot of this stuff actually works, so my instinct may be wrong on that. I’ll find out soon enough :slight_smile:


How exciting! I want to get started this week or next on building out the basic data structure with Merkle trees. I don’t think this will take too long, but I have been distracted with other things :069:

Yes, the cryptography aspect of blockchain is what makes it so compelling for financial tech (FinTech) and other enterprises wishing to keep their data secure and auditable. Apache Kafka can serve a similar function but its log data are not hardened with Merkle trees, there is no access control, and no encryption in motion.

I noticed there is already a project called ex_chain for Markov chains. To avoid confusion, should we change the name? Any suggestions?


What about ex_bchain, or, ex_blockchain?


Or how about blockchainex? :slight_smile:


Why go with the obvious? How about Mixture? No hard rules saying it needs to have a reference to block or chain, right?


I definitely agree! I was trying to think of some pun about Elixir-things and blocks and chains - but nothing yet.

Why Mixture? (It doesn’t seem to be taken by another Elixir project yet.)

One thing about project names is that it’s convenient if it’s a unique word or phrase. For example, searching for “go” is troublesome whereas “golang” will actually return results about the programming language.


Oh no special reason in particular! Mixture is a play on Elixir, seemed like a fitting name especially since the blockchain adds upon itself, each hash a new ingredient. Could definitely be considered a mixture.


cool! I like .