/pySavjeeCoin

Python implementation of the SavjeeCoin

Primary LanguagePythonMIT LicenseMIT

Project logo

pySavjeeCoin

License Passing SHA-256

Original Version

The original JavaScript version can be find in SavjeeCoin of master Savjee .

Features

  • Simple proof-of-work algorithm
  • Verify blockchain (to prevent tampering)
  • Generate wallet (private/public key)
  • Sign transactions

Installation

  • Get the repository with git:
git clone https://github.com/yuanmingqi/pySavjee.git
  • Install the packages from PYPI:
pip install -r requirements.txt -i https://pypi.org/simple/ 

Get Started

Generate a keypair

from src.keyGenerator import generateKeyPair

generateKeyPair(nbits=512, saveDir='./key', mark='my')
generateKeyPair(nbits=512, saveDir='./key', mark='his')

Create a blockchain instance

from src.blockchain import Blockchain, Transaction
from src.keyGenerator import loadKeyPair

pySavjeeCoin = Blockchain()

Adding Transactions

# Load keypair
myPublicKey, myPrivateKey = loadKeyPair('./key', mark='my')
hisPublicKey, hisPrivateKey = loadKeyPair('./key', mark='his')

print('INFO: MY PUBLIC KEY IS {}'.format(myPublicKey))
print('INFO: HIS PUBLIC KEY IS {}'.format(hisPublicKey))

tx1 = Transaction(myPublicKey, hisPublicKey, 10)
tx1.signTransaction(myPublicKey, myPrivateKey)
pySavjeeCoin.addTransaction(tx1, myPublicKey)

Mining the block

print('INFO: START MINING...')
pySavjeeCoin.minePendingTransactions(myPublicKey)

Get the balance and check the chain

tx2 = Transaction(myPublicKey, hisPublicKey, 20)
tx2.signTransaction(myPublicKey, myPrivateKey)
pySavjeeCoin.addTransaction(tx2, myPublicKey)
print('INFO: START MINING...')
pySavjeeCoin.minePendingTransactions(myPublicKey)

print('INFO: BALANCE OF {} is {}'.format(myPublicKey, pySavjeeCoin.getBalanceAddress(myPublicKey)))

print('INFO: THE CHAIN IS VALID? {}'.format(pySavjeeCoin.isChainValid(myPublicKey)))