Core system of BBc-1 (Beyond Blockchain One)
This project is a Python-based reference implementation of BBc-1, a trustable system of record keeping beyond blockchains.
The design paper (white paper) and the analysis paper are available here and here. BBc-1 is inspired from blockchain technologies like Bitcoin, Ethereum, Hyperledger projects, and so on. BBc-1 is a simple but reliable distributed ledger system in contrast with huge and complicated existing blockchain platforms. The heart of BBc-1 is the transaction data structure and the relationship among transactions, which forms a graph topology. A transaction should be signed by the players who are the stake holders of the deal. BBc-1 achieves data integrity and data transparency by the topology of transaction relationship and signatures on transactions. Simply put, BBc-1 does not have blocks, and therefore, requires neither mining nor native cryptocurrency. BBc-1 can be applied to both private/enterprise use and public use. BBc-1 has a concept of domain for determining a region of data management. Any networking implementation (like Kademlia for P2P topology management) can be applied for each domain. Although there are many TODOs in BBc-1, this reference implementation includes most of the concept of BBc-1 and would work in private/enterprise systems. When sophisticated P2P algorithms are ready, BBc-1 will be able to support public use cases.
The source codes in this repository is a platform of BBc-1 and bbc_core.py is the main process of a core node. The APIs of BBc-1 is defined in bbc_app.py and bbclib.py. So application developers should import them in your apps. For building a BBc-1 system, bbc1 package needs to be installed in the hosts and you need to run bbc_core.py on each host. In order to configure the BBc-1 network, the utilities in utils/ directory are available. They are a kind of BBc-1 application, so that you can develop your own management tools.
For the details, please read documents in docs/ directory. Not only documents but slide decks (PDF) explain the design of the BBc-1 and its implementation.
Some documents are available in docs/.
- Policy, design and analysis
- API reference (Coming soon. Currently, something wrong in building docs)
- You can read API docs in your local host by the following command:
cd docs/api/_build/html pipenv run python -m http.server
- Python 3.5.0 or later
- virtualenv is recommended
python -mvenv venv
- In some environment, pipenv does not work well.
- Some bugs seems to be in the installation scripts. So, please do not use pipenv now.
tools for macOS by Homebrew
brew install libtool automake python3 pipenv
tools for Linux (Ubuntu 16.04 LTS)
sudo apt-get install -y git tzdata openssh-server python3 python3-dev libffi-dev net-tools autoconf automake libtool libssl-dev make pip install pipenv
From source code in github
Install development tools (libtool, automake)
Install python and pip
Clone this project
Prepare OpenSSL-based library in the root directory
Install dependencies by the following command (in the case of python 3.6)
python -mvenv venv source venv/bin/activate pip install -r requirements.txt
Start bbc_core.py on a terminal
cd core python bbc_core.py
Start a sample app in another terminal (should be initially at bbc1/ top directory)
pipenv shell cd examples python file_proof.py arg1 arg2..
- Install development tools (libtool, automake)
- Install python and pip
- Install BBc1 by pip
python -mvenv venv source venv/bin/activate pip install bbc1
Use docker (See README.md in docker/)
- Install docker on your host
- Clone this project
- Build docker image
If you want source codes in your container,
or, if you just want to use BBc-1,
cd docker ./docker-bbc1.sh gitbuild
cd docker ./docker-bbc1.sh pipbuild
- Run a docker container
- Log in to the container
The initial password is "bbc1".
ssh -p 10022 root@localhost
The working directory of BBc-1 on the docker container is mounted on docker/data/.bbc1/. You will find a config file, ledger DB and file storage directory in the working directory.
- core functions of BBc-1
- BBc-1 system configuration utilities
- sample applications on BBc-1
- docker environments
- test codes for pytest
- some libraries used by BBc-1
- docs about BBc-1 and its reference implementation
- default working directory name of bbc_core.py
- python modules to be required
- for creatign python modules
- setup script