Skip to content

beyond-blockchain/py-bbclib

Repository files navigation

py-bbclib

License CircleCI

The library that defines BBc-1 transaction data structure is decoupled from the 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 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.

For the details, please read documents in docs/ directory or the bbc1 repository. Not only documents but slide decks (PDF) explain the design of the BBc-1 and its implementation.

API doc is ready at readthedocs.org.

libbbcsig becomes optional at v1.5.3

Before v1.5.2, libbbcsig module was 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 includes cryptograpy module for 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,

    pip install py-bbclib

You 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.

Mode time to complete 20,000 times sign and verify
use libbbcsig about 8 seconds
use cryptograpy module about 15 seconds
bbclib-go about 4 seconds

condition: The test code creates a BBcTransaction object with 2 signatures and verify this transaction object. This unit of sign/verify process is iterated 10,000 times.

Namespace is changed at v1.4.1

Before 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.

Environment

  • Python

    • Python 3.5.0 or later
    • virtualenv is recommended
      • python -mvenv venv
  • tools for macOS by Homebrew

    xcode-select --install
    brew install libtool automake python3 openssl
    pip3 install virtualenv
    
  • tools 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 make
    

Install

    python -mvenv venv
    source venv/bin/activate
    pip install py-bbclib

install libbbcsig (optional)

An external library, libbbcsig makes 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_libbbcsig

install_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

About

Python implementation of bbclib in BBc-1

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •