Library for working with NEO related data in Python, without database dependencies.
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
np-utils examples:
$ 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:
$ 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:
$ python3 -m venv venv
$ source venv/bin/activate
Then install the requirements:
$ pip install -e .
$ pip install -r requirements_dev.txt
Useful commands
$ 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:
# 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
Updated the dependencies
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 scripthashes
np-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)
0.4.6 (2018-04-30)
make unhexlify in Crypto.VerifySignature optional (PR #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)
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)
0.3.4 (2018-01-25)
Added ParseString method to UInt160/UInt256 (PR #35)
0.3.3 (2018-01-25)
Added Fixed8.ToJsonString() (PR #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)
0.2.1 (2018-01-02)
Added UInt*, Fixed8 and neo.IO.Binary* (PR #9)
0.1.1 - 0.1.2 (2017-12-30)
Testing of releases on PyPI with Travis CI.
0.1.0 (2017-12-28)
First release on PyPI.
Release files for neocore 0.5.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| neocore-0.5.6.tar.gz | 43.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| neocore-0.5.6-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details |
Total release size: 73.4 kB
Release files / neocore-0.5.6.tar.gz
| Download URL | neocore-0.5.6.tar.gz |
|---|---|
| Size | 43.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1a8542fc2529e048a365d441e89907649994b54a19f312d53ba8225e729e50ca
|
|
BLAKE2b-256 checksum How to use checksums |
2fc4393aafe40bcbf3aaaaa0efbfff02d767f76a8b2b1533c4098ff540e5c21b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.12.1 pkginfo/1.5.0.1 requests/2.20.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.6.3
|
Release files / neocore-0.5.6-py2.py3-none-any.whl
| Download URL | neocore-0.5.6-py2.py3-none-any.whl |
|---|---|
| Size | 29.7 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
af3b66b29f6c0c6dd6676d26f3693057a42d1ab812a91dff99e3eb3f10b30a37
|
|
BLAKE2b-256 checksum How to use checksums |
03978321b09c03cb2f1de2b44c4cc9fa72003aba3efd17f016cb74ef92c9bb69
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.12.1 pkginfo/1.5.0.1 requests/2.20.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.6.3
|