Home

Awesome

<p align="center"> <a href="" rel="noopener"> <img width=200px height=200px src="https://i.imgur.com/VELRxXl.png" alt="Project logo"></a> </p> <h3 align="center">SavjeeCoin</h3> <div align="center">

.github/workflows/ci.yml Coverage Status GitHub Issues GitHub Pull Requests License

</div>

⚠️ For education purposes only. This is by no means a complete implementation and it is by no means secure!

Features

🏁 Getting Started <a name = "getting_started"></a>

Install library

npm install --save savjeecoin

Generate a keypair

To make transactions on this blockchain you need a keypair. The public key becomes your wallet address and the private key is used to sign transactions.

const EC = require('elliptic').ec;
const ec = new EC('secp256k1');

const myKey = ec.genKeyPair();

The myKey object now contains your public & private key:

console.log('Public key:', myKey.getPublic('hex'));
console.log('Private key:', myKey.getPrivate('hex'));

Create a blockchain instance

Now you can create a new instance of a Blockchain:

const {Blockchain, Transaction} = require('savjeecoin');

const myChain = new Blockchain();

Adding transactions

// Transfer 100 coins from my wallet to "toAddress"
const tx = new Transaction(myKey.getPublic('hex'), 'toAddress', 100);
tx.sign(myKey);

myChain.addTransaction(tx);

To finalize this transaction, we have to mine a new block. We give this method our wallet address because we will receive a mining reward:

myChain.minePendingTransactions(myKey.getPublic('hex'));

📽 Video tutorial

This source code comes from my video series on YouTube. You can check them here:

Video 1: Simple implementationVideo 2: Adding Proof-of-work
Video 3: Mining rewards & transactionsVideo 4: Signing transactions
Video 5: Building a front-end in Angular