# Blockchain [![status](https://github.com/Learn-Together-Pro/Blockchain/actions/workflows/Main.yml/badge.svg)](https://github.com/Learn-Together-Pro/Blockchain/actions/workflows/Main.yml) [![stability-experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://github.com/emersion/stability-badges#experimental)
Blockchain written with educational purpose
### Prerequisites
Before running the build please make sure standart development environment is configured.
- [Git](https://git-scm.com/)
- Stable version of [Rust](https://www.rust-lang.org/tools/install)
**Linux**
You may need to install `build-essential`:
```
sudo apt update
sudo apt install build-essential
```
**MacOS**
Make sure you've installed `Xcode` and its developer tools:
```
xcode-select --install
```
**Windows**
You may need to install the [ Visual Studio C++ Build tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/)
### How to start
```
git clone https://github.com/Learn-Together-Pro/Blockchain.git
cd Blockchain
cargo run
```
### Commands
To rebuild:
```
cargo build
```
To run the probject:
```
cargo run
```
To test your changes:
```
cargo test
```
### Usage
To see commands list execute:
```
cargo run
```
Output:
```
.quit => Quit
.system.wipe => Clear data from blockchain
.system.log => Show system state
.system.difficulty => Difficulty set
.system.reward => Set reward
.transaction.create => Create transaction
.block.mine => Mine a block
.blocks.log => Show sys state
.wallet.create => Create waller
.wallet.log => Print information about a wallet
.wallets.log => Print information about all wallets
Please select :
```
To run the command type its name starting with **dot** char and press `Enter` key, for example:
```
Please select : .system.log
```
Some commands require additional information that will be asked:
```
Please select : .transaction.create
Sender :
```
### Tickets
- Implement routine `balance_get()`
-- should return for adresses which do not exist