Package: py-bbclib
py-bbclibThe library that defines BBc-1 transaction data structure is decoupled fromthe bbc1 repository.BBc-1 is a Python-based reference implementation of BBc-1, a trustable system of record keeping beyond blockchains. The transaction data structure definition is the most important part of BBc-1.The design paper (white paper) and the analysis paper are availablehereandhere. 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 haveblocks, 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 ofdomainfor 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.For the details, please read documents indocs/ directoryorthe bbc1 repository. Not only documents but slide decks (PDF) explain the design of the BBc-1 and its implementation.API doc is ready atreadthedocs.org.libbbcsig becomes optional at v1.5.3Before v1.5.2,libbbcsig modulewas required by py-bbclib. So, building libbbcsig at pip install took very long time, and sometimes it leads to cache problem. py-bbclib v1.5.3 newly includescryptograpy modulefor crypto-related procedures. KeyPairPy class in bbclib_keypair.py includes the new feature and KeyPairFast class in bbclib_keypair_fast.py is the same script as bbclib_keypair.py in the older version. bbclib_keypair.py automatically checks whether libbbcsig is installed or not, and if not installed, bbclib_keypair.py fallbacks to use cryptography module based class.Just run,pipinstallpy-bbclibYou will find that the module is installed more quickly than before.The drawback of using fallback mode (cryptograpy module) is slower transaction speed. Concretely, sign/verify speed is about half as fast as that of libbbcsig based mode.The sign/verify performance comparison on MacBookPro 2016 (2.7 GHz Quad core Intel Core i7 with 16GB RAM) is shown below.Modetime to complete 20,000 times sign and verifyuse libbbcsigabout 8 secondsuse cryptograpy moduleabout 15 secondsbbclib-goabout 4 secondscondition: The test code creates a BBcTransaction object with 2 signatures and verify this transaction object. This unit os sign/verify process is iterated 10,000 times.Namespace is changed at v1.4.1Before v1.4.1, the namesapce of py-bbclib module was "bbc1". However, This conflicts with that of bbc1 module.
Therefore, the namespace of py-bbclib has been changed to "bbclib" since v1.4.1.
Be careful when using py-bbclib module solely.EnvironmentPythonPython 3.5.0 or latervirtualenv is recommendedpython -mvenv venvtools for macOS by Homebrewxcode-select --install
brew install libtool automake python3 openssl
pip3 install virtualenvtools for Linux (Ubuntu 16.04 LTS, 18.04 LTS)sudo apt-get update
sudo apt-get install -y git tzdata openssh-server python3 python3-dev python3-pip python3-venv libffi-dev net-tools autoconf automake libtool libssl-dev makeInstallpython-mvenvvenvsourcevenv/bin/activatepipinstallpy-bbclibinstall libbbcsig (optional)An external library,libbbcsigmakes sign/verify of transaction data faster. After pip install, two utilities are installed in your venv/bin."install_libbbcsig" command downloads the libbbcsig repository, builds libbbcsig and installs the dynamic link library in your venv. Just run as follows:install_libbbcsiginstall_libbbcsig command builds the library in /tmp/tmp.libbbcsig.xxxxx directory (xxxxx part is the process number). If you want to reuse the module, you can use "copy_libbbcsig" command to copy library from the repository directory that includes the built library as follows:copy_libbbcsig /tmp/tmp.libbbcsig.xxxxx