uranther
The Blockchain (distributed ledger technology)
What do you all think about writing a blockchain in Elixir? Being a functional language and having OTP in our arsenal, it seems it would be easier to get a block chain up-and-running quickly. We even have some good starting points for the consensus algorithm and hash trees:
![]()
Blockchain resources
Elixir community effort
- exchain/exchain on GitHub
- robinmonjo/coincoin
Background
Videos
Topical
General
Bitcoin
Ethereum
- Ethereum Design Rationale
- Ethereum Virtual Machine and Execution Environment Overview
- Ethereum Platform Review Opportunities and Challenges for Private and Consortium Blockchains
Books
- Princeton Bitcoin Book
- Blockchain Revolution: How the Technology Behind Bitcoin Is Changing Money, Business, and the World by Don Tapscott et al.
- The Science of the Blockchain by Roger Wattenhofer
- Mastering Bitcoin: Unlocking Digital Cryptocurrencies by Andreas M. Antonopoulos
White Papers
Benchmarks
These projects are in active (rapid!) development and in a variety of languages.
- Ethereum
- Hyperledger
- Fabric (Go)
- Sawtooth (Python)
- Juno (Haskell) – Smart Contracts Running on a BFT Hardened Raft
- Stellar
Academic Papers
Specific implementations
- Bitcoin: A Peer-to-Peer Electronic Cash System
- Ethereum Yellow Paper – formal specification
Meta-analysis
- The Quest for Scalable Blockchain Fabric: Proof-of-Work vs. BFT Replication
- Hiding Transaction Amounts and Balances in Bitcoin (zero knowledge proofs)
- Misbehavior in Bitcoin: A Study of Double-Spending and Accountability (double-spending attack)
Distributed consensus
- Tangaroa: a Byzantine Fault Tolerant Raft
- Practical Byzantine Fault Tolerance (PBFT)
- Building Replicated Systems for Performance (“Adam”)
- All about Eve: Execute-Verify Replication for Multi-Core Servers (extended version)
- The Stellar Consensus Protocol: A Federated Model for Internet-level Consensus
- Raft Refloated: Do We Have Consensus?
- Non-determinism in Byzantine Fault-Tolerant Replication
- CheapBFT: Resource-efficient Byzantine Fault Tolerance
- Reaching Agreement in the Presence of Faults
Proofs of “X”
Various methods of using blockchain technologies to prove something in a way that is cryptographically verifiable.
FOR CRYPTOCURRENCY
OTHER PROOFS
- Proof of Elapsed Time (PoET)
- Proof of Existence (or Publication)
- Proof of Ownership
- Proof of Integrity
- Proof of Agreement
- Proof of Receipt
Blockchain components
Distributed consensus algorithms
A fundamental problem in distributed computing and multi-agent systems is to achieve overall system reliability in the presence of a number of faulty processes. This often requires processes to agree on some data value that is needed during computation. Examples of applications of consensus include whether to commit a transaction to a database, agreeing on the identity of a leader, state machine replication, and atomic broadcasts. (Wikipedia)
raftex- Raft consensusexpaxos- Paxos consensusrafute- Another implementation of Raftdike- Paxos implementation in Erlang
Merkle (hash) trees
A hash tree or Merkle tree is a tree in which every non-leaf node is labelled with the hash of the labels or values (in case of leaves) of its child nodes. Hash trees are useful because they allow efficient and secure verification of the contents of large data structures. Hash trees are a generalization of hash lists and hash chains. (Wikipedia)
Elixir
Erlang
merklet- Hash trees - Riak implementation
Cryptography
Elixir
elixir-rsa- Erlangpublic_keycryptography wrapperelixir-ecc- elliptic curve cryptographyelixir-mcrypt- NIF wrapper around libmcryptcryptex- library for encrypting/decrypting, signing/verifying data
Erlang
Keywords: state machine replication, distributed cryptographic ledger, transaction log
Trending in Wikis
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #elixirconf-us
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #hex
- #performance










First 10 of 87 Posts
Hoegbo
Should be interesting to do something. However I do not know enough about blockchain just yet to make anything impactful
uranther
Princeton researchers are writing a book on Bitcoin and they also have a Coursera course on Bitcoin and Cryptocurrencies. Although these resources are mostly geared toward cryptocurrency, the fundamentals of the distributed cryptographic ledger are discussed as well.
[moved compiled list of blockchain learning resources to OP]
IamCharlesHan
I’m currently at an accelerator that invests in VR and Blockchain. If anyone’s interested, the applications for the next tribe just opened. Feel free to ask me anything!
https://app.boost.vc/apply
Hoegbo
Fantastic , I was going into Blockchain for IoT security. So Was thinking about going that route.
Thanks for the links saves me a lot of time
IamCharlesHan:
Could they perhaps invest in open source development of a Elixir implementation of Blockchain Perhaps I could get my company to do something as well.
uranther
There’s a lot of talk about blockchain for IoT. I know IBM created a proof-of-concept and I just saw an article on Cisco Newsroom about it. It’s a great application and IoT security is a big issue nowadays.
Yes, I am definitely for open source development - instead of yet another business based on blockchain (the list on Boost.vc is huuuge
) - knowing that the two are not mutually exclusive. I am happy to see investors opening their wallets for its development though.
I was thinking of this as more of a learning project, although it may be able to compete with the big dogs if it builds enough momentum. There’s two routes I could see this going: 1) implement the Ethereum protocol and thereby benefit from all its conventions 2) build our own barebones blockchain with smart contracts, perhaps drawing inspiration from Hyperledger. I know one of the design goals for Hyperledger is to completely modularize the software so that developers are free to pick-and-choose components to build their blockchain product. I like modularity…
For example, you should be able to choose whether you want proof-of-work or proof-of-stake depending on your application.
Hoegbo
Lets go for something bare bones and modular, perfect combination. I like the hyperledger aproach. I eas actually looking IBM’s source at github. So lets gave a chat an get started
uranther
Indeed, the Hyperledger/IBM incubation project, fabric, is very active.
I created a GitHub organization called exchain. @Hoegbo are you @Hoegbo on GitHub? I’ll send you an invite.
I think we should start by verifying the work on raftex. For one, we want it to be Byzantine fault-tolerant - juno provides a good reference point for us. This paper discusses some subtle correctness requirements of the Raft consensus algorithm and they actually implement it in OCaml. We can write more tests…
From there we can work on implementing Merkle trees.
IamCharlesHan
I’m one of the startups and not the investors so I don’t think I can answer that question for you. However, I can tell you that it’s mostly all about the founder, and of course the potential of the product. So if there are some smart people that are committed, why not
Hoegbo
Cool ,
Would be interesting to see if we could get something funded for open source Elixir projects.
Hoegbo
I am Hoegbo on Github.