Metadata-Version: 2.0
Name: easy-blockchain
Version: 0.1.5
Summary: A blockchain for human
Home-page: https://github.com/minhtuan221/py-blockchain
Author: Minh Tuan Nguyen
Author-email: ntuan221@gmail.com
License: BSD
Description-Content-Type: UNKNOWN
Keywords: microservice,http,flask,ecdsa,blockchain
Platform: any
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: BSD License
Classifier: Environment :: Web Environment
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Dist: ecdsa
Requires-Dist: flask
Requires-Dist: requests

Easy-blockchain
===============

A blockchain, coin or building tools for human. It doesn't include
servers.

Getting Started
---------------

Installation:

::

    pip install easy_blockchain

Create your first wallet and add your first transaction:

::

    from easy_blockchain.wallet import Wallet
    from easy_blockchain.blockchain import Block, BlockChain

    # Create the first user
    wallet = Wallet()
    user01 = wallet.getPublicKey()
    trans01 = wallet.create_transaction('test01', 1, 0.5, 'one message')
    trans02 = trans01.copy() # create a forgery attack
    print('Check if a forgery attack have same as real transaction')
    print('trans01 == trans02', trans01 == trans02)

    # Create the second user
    wallet02 = Wallet()
    user02 = wallet02.getPublicKey()
    trans03 = wallet02.create_transaction(user01, 1.5, 0.12,'user02 send to user01')

In miner side, the miner receive your transaction, add it to blockchain
and mining:

::

    # add transactions to a block
    block = Block()
    block.add_transaction(trans01)
    block.add_transaction(trans02)  # check adding a forgery attack
    block.add_transaction(trans03)

    # check how many transactions were added
    print('--------------------------------------')
    print('The block 1 have 2 real transaction:')
    print(json.dumps(block.transactions, indent=2))
    # create a blockchain and become an miner
    coin = BlockChain()
    # mine a proof
    proof = coin.mine_proof()
    print('The first proof is:',proof)
    # save blockchain to local database
    coin.save_chain()

The blockchain also provides balance and history of trading:

::

    print('--------------------------------------')
    print('The transaction history and the balance of users:')
    mycoin = coin.get_history(user01)
    print('User: user01 balance:', coin.get_balance(user01))
    print(json.dumps(mycoin, indent=4))

    mycoin = coin.get_history(user02)
    print('User: user02 balance:', coin.get_balance(user02))
    print(json.dumps(mycoin, indent=4))

    mycoin = coin.get_history(user03)
    print('User: user03 balance:', coin.get_balance(user03))
    print(json.dumps(mycoin, indent=4))


