All Projects → robinmonjo → Coincoin

robinmonjo / Coincoin

Blockchain based cryptocurrency proof-of-concept in Elixir. Feedback welcome

Programming Languages

elixir
2628 projects

Projects that are alternatives of or similar to Coincoin

Ico Check
Background checks and due diligence for crypto projects
Stars: ✭ 368 (-4.17%)
Mutual labels:  blockchain, cryptocurrency
Cryptolist
Curated collection of blockchain & cryptocurrency resources.
Stars: ✭ 3,501 (+811.72%)
Mutual labels:  blockchain, cryptocurrency
Desktop Wallet
💻 Multi Platform ARK Desktop Wallet
Stars: ✭ 287 (-25.26%)
Mutual labels:  blockchain, cryptocurrency
Celo Monorepo
Official repository for core projects comprising the Celo platform
Stars: ✭ 269 (-29.95%)
Mutual labels:  blockchain, cryptocurrency
Ethlist
The Comprehensive Ethereum Reading List
Stars: ✭ 3,576 (+831.25%)
Mutual labels:  blockchain, cryptocurrency
Elixium core
A privacy-preserving decentralized application network
Stars: ✭ 274 (-28.65%)
Mutual labels:  blockchain, cryptocurrency
Status React
a free (libre) open source, mobile OS for Ethereum
Stars: ✭ 3,307 (+761.2%)
Mutual labels:  blockchain, cryptocurrency
Road2blockchain
180天搞懂区块链。 区块链的浪潮已来, 当一个弄潮儿,随时准备冲上浪潮之巅。(由于时间精力的原因, 项目暂时搁置,不再更新。 抱歉, 有一腔热情,但是吹下的牛逼没有按时完成。不过对区块链依然保持关注, 欢迎大家关注公众号allinblockchain)
Stars: ✭ 254 (-33.85%)
Mutual labels:  blockchain, cryptocurrency
Multi Party Ecdsa
Rust implementation of {t,n}-threshold ECDSA (elliptic curve digital signature algorithm).
Stars: ✭ 339 (-11.72%)
Mutual labels:  blockchain, cryptocurrency
Conflux Rust
The Rust implementation of Conflux protocol.
Stars: ✭ 330 (-14.06%)
Mutual labels:  blockchain, cryptocurrency
Blockchain go
A simplified blockchain implementation in Golang
Stars: ✭ 3,150 (+720.31%)
Mutual labels:  blockchain, cryptocurrency
Substratumnode
WE ARE THE FOUNDATION OF THE DECENTRALIZED WEB.
Stars: ✭ 359 (-6.51%)
Mutual labels:  blockchain, cryptocurrency
Time Series Machine Learning
Machine learning models for time series analysis
Stars: ✭ 261 (-32.03%)
Mutual labels:  blockchain, cryptocurrency
Nano Node
Nano is a cryptocurrency
Stars: ✭ 3,336 (+768.75%)
Mutual labels:  blockchain, cryptocurrency
Go Vite
Official Go implementation of the Vite protocol
Stars: ✭ 257 (-33.07%)
Mutual labels:  blockchain, cryptocurrency
Xdag
XDAG (Dagger Coin) Official Main Repository. XDAG is a novel DAG based cryptocurrency.
Stars: ✭ 297 (-22.66%)
Mutual labels:  blockchain, cryptocurrency
Awesome Substrate
A curated list of awesome projects and resources related to the Substrate blockchain development framework.
Stars: ✭ 228 (-40.62%)
Mutual labels:  blockchain, cryptocurrency
Go Seele
Seele is an open source blockchain project which consists of advanced sharding technology and our innovative anti-asic MPoW consensus algorithm. The ONLY official website is
Stars: ✭ 234 (-39.06%)
Mutual labels:  blockchain, cryptocurrency
Blockchain
黑马程序员 120天全栈区块链开发 开源教程
Stars: ✭ 3,480 (+806.25%)
Mutual labels:  blockchain, cryptocurrency
Minter Go Node
🚀 Official Minter Blockchain Implementation in Go
Stars: ✭ 342 (-10.94%)
Mutual labels:  blockchain, cryptocurrency

coincoin

Build Status

coincoin is a cryptocurrency proof-of-concept implemented in Elixir. It's an umbrella project that focuses on the 2 main components of (most of) the existing cryptocurrencies: the blockchain and digital transactions.

It's goal is to be as simple as possible but complete enough to technically understand what's going on behind Bitcoin or Ethereum for example.

Setup

Blockchains are P2P softwares. To start using coincoin, we need to setup multiple nodes and connect them together.

You need Elixir installed. Clone this repository and go to the root of the project.

Then pull the dependencies using mix deps.get

To setup a 3 nodes blockchain, spawn 3 tabs in your terminal (node1, node2 and node3) and run:

  • node1: iex -S mix phx.server (defaults: PORT=4000 P2P_PORT=5000)
  • node2: PORT=4001 P2P_PORT=5001 iex -S mix phx.server
  • node3: PORT=4002 P2P_PORT=5002 iex -S mix phx.server

Then connect the nodes to create a P2P network:

$node2> Blockchain.connect("localhost:5000") # connect node2 to node1

$node3> Blockchain.connect("localhost:5001") # connect node3 to node2

This will setup a simple network:

node1 <--> node2 <--> node3

You can also use the robinmonjo/coincoin docker image available on the docker hub:

docker run -it robinmonjo/coincoin

If you use Docker, in the Blockchain.connect/1 call make sure to pass your container IP address and that this address is reachable.

Notes:

  • if you don't want to interact with the REST API, you can skip the PORT env var and use iex -S mix instead of iex -S mix phx.server
  • Blockchain.connect(5000) is equivalent to Blockchain.connect("localhost:5000")
  • for releases use make release

Usage

When started, coincoin will start 3 apps:

  • blockchain: a minimal blockchain
  • token: a minimal cryptocurrency implemented on top of the blockchain
  • blockchain_web: a web interface to manage nodes of the blockchain

To manipulate the blockchain and store random data in it using the iex console checkout the blockchain app. To do the same using a REST API, checkout the blockchain_web app. And finally to play with a cryptocurrency and use the blockchain as a distributed ledger, checkout the token app.

Why coincoin ?

Lately I heard a lot about:

  1. how Elixir is awesome and is the future of complex system / web development
  2. how blockchain technology will be the next big thing

So what about building a cryptocurrency proof-of-concept in Elixir ?

As I'm sure about 1, I still have some doubts about 2 eventough technologies behind cryptocurrencies are exciting.

Also "coin-coin" in french is the noise of a duck (hence Scrooge McDuck)

Final words

Issues, suggestions and pull requests are very welcome 😊

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].