Package: kaze-python
.. image:: https://kaze.solutions/content/static/img/general/logo.svg:alt: kaze logokaze-python----------Python Node and SDK for the kaze blockchain... image:: https://img.shields.io/pypi/v/kaze-python.svg:target: https://pypi.python.org/pypi/kaze-python:alt: Pypi.. image:: https://travis-ci.org/KAZEBLOCKCHAIN/kaze-python.svg?branch=master:target: https://travis-ci.org/KAZEBLOCKCHAIN/kaze-python:alt: Travis CI.. image:: https://readthedocs.org/projects/kaze-python/badge/?version=latest:target: https://kaze-python.readthedocs.io/en/latest/?badge=latest:alt: ReadTheDocs.. image:: https://img.shields.io/badge/license-MIT-blue.svg:target: https://github.com/KAZEBLOCKCHAIN/kaze-python/blob/master/LICENSE.md:alt: MITOverview--------What does it currently do~~~~~~~~~~~~~~~~~~~~~~~~~-  This project aims to be a full port of the original C# `kazeproject <https://github.com/kaze-project>`__-  Run a Python based P2P node-  Interactive CLI for configuring node and inspecting blockchain-  Build, deploy, and run smart contracts-  Runs smart contracts on the blockchain in a Python virtual machine-  Very basic Wallet functionality (not fully tested, please do not useon mainnet)-  `NEP2 <https://github.com/kaze-project/proposals/blob/master/nep-2.mediawiki%3E>`__and`NEP5 <https://github.com/kaze-project/proposals/blob/master/nep-5.mediawiki>`__compliant wallet functionality-  RPC Client-  RPC server-  Notification Server ( for viewing transfers of NEP5 tokens )-  ``Runtime.Log`` and ``Runtime.Notify`` event monitoringWhat will it do~~~~~~~~~~~~~~~-  Consensus nodes-  More robust smart contract debugging and inspectionDocumentation~~~~~~~~~~~~~The full documentation on how to install, configure and use kaze-pythoncan be found at `Read TheDocs <https://kaze-python.readthedocs.io/en/latest/>`__.Get help or give help~~~~~~~~~~~~~~~~~~~~~-  Open a new`issue <https://github.com/KAZEBLOCKCHAIN/kaze-python/issues/new>`__ ifyou encounter a problem.-  Or ping **@localhuman** or **@metachris** on the `kazeDiscord <https://discord.gg/R8v48YA>`__.-  Pull requests welcome. You can help with wallet functionality,writing tests or documentation, or on any other feature you deemawesome.Getting started---------------kaze-python has two System dependencies (everything else is covered with``pip``):-  `LevelDB <https://github.com/google/leveldb>`__-  `Python3.6+ <https://www.python.org/downloads/release/python-364/>`__ (3.5and below is not supported)We have published a Youtube`video <https://www.youtube.com/watch?v=ZZXz261AXrM>`__ to help get youstarted. There are many more videos under the`KAZEBLOCKCHAIN <https://www.youtube.com/channel/UCzlQUNLrRa8qJkz40G91iJg>`__Youtube channel, check them out.Docker------Using Docker is another option to run kaze-python. There are exampleDockerfiles provided in the`/docker folder <https://github.com/KAZEBLOCKCHAIN/kaze-python/tree/development/docker>`__,and we have an image on Docker hub, tagged after the kaze-pythonreleases: https://hub.docker.com/r/KAZEBLOCKCHAIN/kaze-python/Native installation-------------------Instructions on the system setup for kaze-python:LevelDB~~~~~~~OSX^^^::brew install leveldbUbuntu/Debian 16.10+^^^^^^^^^^^^^^^^^^^^Ubuntu starting at 16.10 supports Python 3.6 in the officialrepositories, and you can just install Python 3.6 and all the systemdependencies like this:::apt-get install python3.6 python3.6-dev python3.6-venv python3-pip libleveldb-dev libssl-dev g++Older Ubuntu versions (eg. 16.04)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^For older Ubuntu versions you'll need to use an external repository likeFelix Krull's deadsnakes PPA athttps://launchpad.net/~deadsnakes/+archive/ubuntu/ppa (read more`here <https://askubuntu.com/questions/865554/how-do-i-install-python-3-6-using-apt-get>`__).(The use of the third-party software links in this documentation is doneat your own discretion and risk and with agreement that you will besolely responsible for any damage to your computer system or loss ofdata that results from such activities.)::apt-get install software-properties-common python-software-propertiesadd-apt-repository ppa:deadsnakes/ppaapt-get updateapt-get install python3.6 python3.6-dev python3.6-venv python3-pip libleveldb-dev libssl-dev g++Centos/Redhat/Fedora^^^^^^^^^^^^^^^^^^^^::# Install Python 3.6:yum install -y centos-release-sclyum install -y rh-python36scl enable rh-python36 bash# Install dependencies:yum install -y epel-releaseyum install -y readline-devel leveldb-devel libffi-devel gcc-c++ redhat-rpm-config gcc python-devel openssl-develWindows^^^^^^^Help needed. Installing the Python package plyvel seems to require C++compiler support tied to Visual Studio and libraries. Refer to`documentation <https://kaze-python.readthedocs.io/en/latest/installwindows.html>`__.Currently you probably should use the Linux subsystem with Ubuntu, or aVirtual Machine with Linux. You can find more information and a guidefor setting up the Linux subsystem`here <https://medium.com/@gubanotorious/installing-and-running-kaze-python-on-windows-10-284fb518b213>`__.Installing "Ubuntu" from Microsoft Store installs Ubuntu 16.04. You should install Ubuntu 18.04 from Microsoft Store found here: https://www.microsoft.com/en-us/p/ubuntu-1804/9n9tngvndl3q?activetab=pivot%3aoverviewtabPython 3.6~~~~~~~~~~kaze-python is compatible with **Python 3.6 and later**.On \*nix systems, install Python 3.6 via your package manager, ordownload an installation package from the `officialhomepage <https://www.python.org/downloads/release/python-364/>`__.Install~~~~~~~It is recommended to put all project dependencies into its own virtualenvironment, this way we don't pollute the global installation whichcould lead to version conflicts.1. Install from Github:::git clone https://github.com/KAZEBLOCKCHAIN/kaze-python.gitcd kaze-python# if you want to use the development branch, switch nowgit checkout development# create virtual environment and activatepython3 -m venv venvsource venv/bin/activate# install the package in an editable form(venv) pip install -e .2. Install from PyPi::# create project dirmkdir myprojectcd myproject# create virtual environment and activatepython3 -m venv venvsource venv/bin/activate(venv) pip install kaze-pythonRunning-------After installing requirements and activating the environment, there isan easy to use CLI (``np-prompt``) that starts the node and allows somebasic interactivity.::np-promptkaze cli. Type 'help' to get startedkaze> stateProgress: 1054913 / 1237188kaze>By default, the CLI connects to the **TestNet** (see below how to switchto MainNet or PrivNet).Let's query for a block in the current server by hash or by block index:::np-promptkaze cli. Type 'help' to get startedkaze> block 122235{"index": 122235,"script": "","merkleroot": "1d5a895ea34509a83becb5d2f9391018a3f59d670d94a2c3f8deb509a07464bd","previousblockhash": "98ae05cb68ab857659cc6c8379eb7ba68b57ef1f5317904c295341d82d0a1713","tx": ["1d5a895ea34509a83becb5d2f9391018a3f59d670d94a2c3f8deb509a07464bd"],"version": 0,"time": 1479110368,"hash": "74671375033f506325ef08d35632f74083cca564dc7ea6444c94d3b9dec3f61b","consensus data": 16070047272025254767,"next_consensus": "59e75d652b5d3827bf04c165bbe9ef95cca4bf55"}kaze>Bootstrapping the Blockchain----------------------------If you use kaze-python for the first time, you need to synchronize theblockchain, which may take a long time. Included in this project is the script``np-bootstrap`` to automatically download a chain directory for you. Tobootstrap for testnet, run ``np-bootstrap``, get a cup of coffeeand wait. To bootstrap for mainnet, use ``np-bootstrap -m`` andget 8 cups of coffee (3.3 GB file).Important: do not use the chain files fromhttps://github.com/KAZEBLOCKCHAIN/awesome-kaze.git, they will not work withkaze-python.Available Wallet commands~~~~~~~~~~~~~~~~~~~~~~~~~::np-promptkaze cli. Type 'help' to get startedkaze> helpcreate wallet {wallet_path}open wallet {wallet_path}wallet { verbose } { rebuild } {rebuild BLOCK_HEIGHT}export wif { ADDRESS }import wif { WIF }send { ASSET_ID } { ADDRESS } { AMOUNT }Running on MainNet~~~~~~~~~~~~~~~~~~To run the prompt on MainNet, you can use the CLI argument ``-m`` (eg.``np-prompt -m``), for running on PrivNet you can use ``-p``. Besure to check out the details of the parameters:::$ np-prompt -husage: np-prompt [-h] [-m | -p [host] | --coznet | -c CONFIG][-t {dark,light}] [-v] [--datadir DATADIR] [--version]optional arguments:-h, --help            show this help message and exit-m, --mainnet         Use MainNet instead of the default TestNet-p [host], --privnet [host]Use a private net instead of the default TestNet,optionally using a custom host (default: 127.0.0.1)--coznet              Use the CoZ network instead of the default TestNet-c CONFIG, --config CONFIGUse a specific config file-t {dark,light}, --set-default-theme {dark,light}Set the default theme to be loaded from the configfile. Default: 'dark'-v, --verbose         Show smart-contract events by default--datadir DATADIR     Absolute path to use for database directories--version             show program's version number and exitLogging~~~~~~~Currently, ``np-prompt`` logs to ``prompt.log``--------------Tests-----Note that some of the unit tests use a giant blockchain fixture database(~800MB). This file is not kept in the repo, but are downloaded thefirst time the tests are run, this can take some time (depending on theinternet connection), but happens only once.Useful commands---------------::make lintmake testmake coveragemake docs# run only kaze-python testspython -m unittest discover kaze# run only kaze-boa testspython -m unittest discover boa_testUpdating the version number and releasing new versions of kaze-python--------------------------------------------------------------------This is a checklist for releasing a new version, which for now means:1. Merging the changes from development into master2. Setting the version from eg. ``0.4.6-dev`` to ``0.4.6`` (whichautomatically created a tag/release)3. On the dev branch, setting the version to the next patch, eg.``0.4.7-dev``4. Pushing master, development and the tags to GitHubMake sure you are on the development branch and have all changes mergedthat you want to publish. Then follow these steps:::# Only in case you want to increase the version number again (eg. scope changed from patch to minor):# bumpversion --no-tag minor|major# Update CHANGELOG.rst: make sure all changes are there and remove `-dev` from the version numbervi CHANGELOG.rstgit commit -m "Updated changelog for release" CHANGELOG.rst# Merge development branch into mastergit checkout mastergit merge development# Set the release version number and create the tagbumpversion release# Switch back into the development branchgit checkout development# Increase patch number and add `-dev`bumpversion --no-tag patch# Push to GitHub, which also updates the PyPI package and Docker Hub imagegit push origin master development --tagsTroubleshooting---------------If you run into problems, check these things before ripping out yourhair:-  Double-check that you are using Python 3.6.x-  Update the project dependencies (``pip install -e .``)-  If you encounter any problems, please take a look at the`installationsection <https://kaze-python.readthedocs.io/en/latest/install.html#further-install-notes>`__in the docs, and if that doesn't help open an issue. We'll try tohelp.-  You can reach us on the `kaze Discord <https://discord.gg/R8v48YA>`__,or simply file a `GitHubissue <https://github.com/KAZEBLOCKCHAIN/kaze-python/issues/new>`__.License--------  Open-source`MIT <https://github.com/KAZEBLOCKCHAIN/kaze-python/blob/master/LICENSE.md>`__.-  Contributors: [@localhuman](https://github.com/localhuman) (Creator), [@metachris](https://github.com/metachris), [@ixje](https://github.com/ixje), and [many more](https://github.com/KAZEBLOCKCHAIN/kaze-python/graphs/contributors)Donations---------Accepted at **ATEMNPSjRVvsXmaJW4ZYJBSVuJ6uR2mjQU**