Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/0xs34n/coin-cli

ðŸ’ļA minimal cryptocurrency CLI implementation in TypeScript & Immutable.js
https://github.com/0xs34n/coin-cli

Last synced: 1 day ago
JSON representation

ðŸ’ļA minimal cryptocurrency CLI implementation in TypeScript & Immutable.js

Awesome Lists containing this project

README

        







Coin CLI


A minimal cryptocurrency CLI implementation in TypeScript & Immutable.js


## Demo

#### Connect
![connect](https://raw.githubusercontent.com/seanjameshan/coin-cli/master/media/demo/connect.gif)

#### Mining
![mining](https://raw.githubusercontent.com/seanjameshan/coin-cli/master/media/demo/mine.gif)

#### Payment
![payment](https://raw.githubusercontent.com/seanjameshan/coin-cli/master/media/demo/pay.gif)

## 🎉 Features
- 💰 Wallet with public and private key.
- ðŸ’ģ Make Payments between wallets.
- 🔑 Transactions are signed with the wallet's private key.
- 🔗 Blocks with index, hash, data, transactions, and timestamp.
- ⛏ Proof-of-work implementation.
- ⛓ In-memory JavaScript array to store the blockchain.
- ✅ Block & Transaction integrity validation.
- ðŸ“Ą Decentralized and distributed peer-to-peer communication.
- âœĻ Minimal implementation in 900 lines of code.

## ðŸ“Ķ Installation

To install this application, you'll need
[Node.js](https://nodejs.org/en/download/) 7+ (which comes with
[npm](http://npmjs.com)) installed on your computer. From your command line:

#### Source (recommended)

You'll need [Git](https://git-scm.com) to run the project from source. From your
command line:

```bash
# Clone this repository
$ git clone https://github.com/seanjameshan/coin-cli

# Go into the repository
$ cd coin-cli

# Install dependencies
$ npm install

# Run the app
$ npm start
```

## ðŸ•đïļ Usage
| Command | Alias | Description | Example |
|------------------------------------------|-------|---------------------------------------------------------------------------|----------------------------|
| open | o | Open port to accept incoming connections. | open 5000 |
| connect | c | Connect to a new peer with host and | connect localhost 5000 |
| blockchain | bc | See the current state of the blockchain. | |
| peers | p | Get the list of connected peers. | |
| mine [address] | m | Mine a new block with rewards going to optional [address]. | mine or mine xxx... |
| transactions | tx | See unconfirmed transactions that can be mined. | |
| wallet | w | Create a new wallet with | wallet mypassword |
| key | k | Get your public key | |
| pay

| p | Make payment to address with and using wallet | pay xxx... 10 5 mypassword |
| balance [address] | b | Balance of optional address | balance or balance xxx... |
| help [command...] | | Provides help for a given command | help balance or help |
| exit | | Exits application. | |



Buy Me A Coffee