The goal of the project "Block[Chain] Lab" ‒ creation of a toolkit for educational and research activities for blockchain-related tasks. This toolkit consist from programming framework and tools for modelling different blockchain and not only blockchain (indicated by the optionality of "chain") environments. Programming framework oriented to flexibility and possibility of changing different layers of architecture: consensus machinery, storage systems, transaction transport, smart contract implementation, etc.
At present, the implemented Python framework consists of classes:
The utiltity blockchain.py implements CLI for nodes running and REST API for handling of requests to nodes. Options of this utility:
'-p', '--port', default=5000, type=int, help='port to listen on' '-k', '--kwport', default=55554, type=int, help='port keyworker to listen on' '-i', '--ip', default='127.0.0.1', help='ip keyworker to listen on' '-d', '--db', default='', help='db file, if not passed, then no persistance' '-v', '--variant', default='pow', help='variant of blockchain "pow[:difficulty]" or "quant"
,where:
Supporting tools implements functionality related to QKD channels. This tools may emulate QKD hardware, serve QKD "pools" and encrypt transport channels between nodes. They include:
Virtual machine images:
you may find in the project's Wiki.