Library for working with NEO related data in Python, without database dependencies.
.. image:: https://travis-ci.org/CityOfZion/neo-python-core.svg?branch=master
:target: https://travis-ci.org/CityOfZion/neo-python-core
.. image:: https://coveralls.io/repos/github/CityOfZion/neo-python-core/badge.svg
:target: https://coveralls.io/github/CityOfZion/neo-python-core
- Datatypes like
UInt160
, KeyPair
, BigInteger
and basic string to address and address to UInt160
methods - Includes a useful cli-tool
np-utils
(see help with np-utils -h
) - Compatible with Python 3.5+
- Used by
neo-python <https://github.com/CityOfZion/neo-python>
_ - https://pypi.python.org/pypi/neocore
np-utils
examples:
.. code-block:: console
$ np-utils -h
usage: np-utils [-h] [--version] [--address-to-scripthash address]
[--scripthash-to-address scripthash] [--create-wallet]
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
--address-to-scripthash address
Convert an address to scripthash
--scripthash-to-address scripthash
Convert scripthash to address
--create-wallet Create a wallet
$ np-utils --create-wallet
{
"private_key": "KwJqCbjsmGUCqbkp83Nxi9MJ9mA7F8EN4tebJVWjYZBEoWCNxCaF",
"address": "AHVvg26CNz1vxteJfeHy4R8P4VN8SydCM6"
}
$ np-utils --address-to-scripthash AK2nJJpJr6o664CWJKi1QRXjqeic2zRp8y
Scripthash big endian: 0xe9eed8dc39332032dc22e5d6e86332c50327ba23
Scripthash little endian: 23ba2703c53263e8d6e522dc32203339dcd8eee9
Scripthash neo-python format: b'#\xba\'\x03\xc52c\xe8\xd6\xe5"\xdc2 39\xdc\xd8\xee\xe9'
$ np-utils --scripthash-to-address 0xe9eed8dc39332032dc22e5d6e86332c50327ba23
AK2nJJpJr6o664CWJKi1QRXjqeic2zRp8y
$ np-utils --scripthash-to-address 23ba2703c53263e8d6e522dc32203339dcd8eee9
Detected little endian scripthash. Converting to big endian for internal use.
Big endian scripthash: 0xe9eed8dc39332032dc22e5d6e86332c50327ba23
AK2nJJpJr6o664CWJKi1QRXjqeic2zRp8y
Getting started
You need Python 3.5 or higher!
You can install neocore
from PyPI with easy_install
or pip
:
.. code-block:: console
$ pip install -U neocore
Alternatively, if you want to work on the code, clone this repository and setup your venv:
- Clone the repo:
git clone https://github.com/CityOfZion/neo-python-core.git
- Create a Python 3 virtual environment and activate it:
.. code-block:: console
$ python3 -m venv venv
$ source venv/bin/activate
- Then install the requirements:
.. code-block:: console
$ pip install -e .
$ pip install -r requirements_dev.txt
Useful commands
^^^^^^^^^^^^^^^
.. code-block:: console
$ make lint
$ make test
$ make coverage
Release checklist
^^^^^^^^^^^^^^^^^
(Only for admins)
Releasing a new version on GitHub automatically uploads this release to PyPI.
This is a checklist for releasing a new version:
.. code-block:: console
# Only in case you want to increase the version number again (eg. scope changed from patch to minor):
bumpversion --no-tag minor|major
# Update ``HISTORY.rst`` with the new version number and the changes and commit this
vi HISTORY.rst
git commit -m "Updated HISTORY.rst" HISTORY.rst
# Set the release version number and create the tag
bumpversion release
# Increase patch number and add `-dev`
bumpversion --no-tag patch
# Push to GitHub, which also updates the PyPI package
git push && git push --tags
=======
History
0.5.6 2018-12-18
- Updated dependencies
- Added
SafeReadBytes
to BinaryReader
0.5.5 2018-12-18
- Updated dependencies
- Added
isValidPublicAddress()
to utility module
0.5.4 2018-10-31
- Updated
BigInteger
to properly support logical shifts - Added tests for
np-utils
- Updated dependencies
0.5.3 2018-10-02
0.5.2 (2018-08-28)
Fixed8.TryParse
fix for zero- Updated dependencies
0.5.1 (2018-08-23)
- Change BigInteger divisor operation to use floordiv rather than truediv
0.5.0 (2018-08-21)
np-utils --address-to-scripthash
outputs now little-endian and big-endian scripthashesnp-utils --scripthash-to-address
detects input endianness and converts accordingly- Updated dependencies
0.4.11 (2018-07-05)
- Added
Size()
method to ECPoint
and Fixed8
class.
0.4.10 (2018-06-25)
- Updated requirements: pycryptome
0.4.9 (2018-06-08)
- Updated dependencies, especially base58
0.4.8 (2018-05-31)
- Create wallets with
np-utils --create-wallet
0.4.7 (2018-05-30)
BigInteger(0)
now is b'\x00'
(PR #50 <https://github.com/CityOfZion/neo-python-core/pull/50>
_)
0.4.6 (2018-04-30)
- make unhexlify in Crypto.VerifySignature optional (
PR #48 <https://github.com/CityOfZion/neo-python-core/pull/48>
_)
0.4.2 (2018-04-26)
np-utils
now supports --scripthash-to-address
(thx @belane)
0.4.1 (2018-04-26)
np-utils
cli tool (see cli.py
, PR #40 <https://github.com/CityOfZion/neo-python-core/pull/40>
_)- alter initialization of Crypto signature curve
0.3.10 (2018-03-21)
- Fix formatting of
ToNeoJsonString()
which was cutting off trailing zeroes from integers.
0.3.8 (2018-03-14)
- Fix travis deploy to be compatible with recent neo-python changes
- Update scrypt and logzero dependency versions
0.3.6 (2018-02-26)
- Enabled Python >= 3.4 in setup.py
0.3.5 (2018-02-15)
- Bugfix: Dont unhex when writing var bytes (
PR #36 <https://github.com/CityOfZion/neo-python-core/pull/36>
_)
0.3.4 (2018-01-25)
- Added
ParseString
method to UInt160/UInt256 (PR #35 <https://github.com/CityOfZion/neo-python-core/pull/35>
_)
0.3.3 (2018-01-25)
- Added
Fixed8.ToJsonString()
(PR #33 <https://github.com/CityOfZion/neo-python-core/pull/33>
_)
0.3.2 (2018-01-23)
- Added UInt
To0xString
method
0.3.1 (2018-01-09)
- Documentation update
- Moved the
cryptography
dependency to requirements_dev.txt
0.3.0 (2018-01-09)
- Added
neo.Cryptography
and KeyPair
- Changed signature of
neocore.Cryptography.Crypto.Sign()
to remove unused public_key
argument - Removed redundant
neocore.Cryptography.Helper.hash_to_wallet_address()
function, use neocore.Cryptography.Helper.scripthash_to_address()
instead. - Removed unused
neocore.Cryptography.Helper
functions: random_string
, bytes_to_hex_string
, bin_sha256
, sha256
, random_key
.
0.2.4 + 0.2.5 (2018-01-03)
- Bugfix for deploying from Travis to PyPI/neocore
0.2.3 (2018-01-03)
- Bugfix for BinaryWriter (
PR #13 <https://github.com/CityOfZion/neo-python-core/pull/13>
_)
0.2.1 (2018-01-02)
- Added UInt*, Fixed8 and neo.IO.Binary* (
PR #9 <https://github.com/CityOfZion/neo-python-core/pull/9>
_)
0.1.1 - 0.1.2 (2017-12-30)
- Testing of releases on PyPI with Travis CI.
0.1.0 (2017-12-28)