Ethereum ABI Utils
Project description
Ethereum Contract
=================
|Build Status| |Documentation Status| |PyPi version|
Python utilities for working with the Ethereum ABI
Installation
------------
.. code:: sh
pip install eth-abi
Documentation
-------------
Decoding
~~~~~~~~
These functions are intended for decoding return values from the EVM.
- ``eth_abi.decode_single(type, data)``
This function tries to decode ``data`` into the python type that
corresponds to the provided ``type``. This function accepts data of type
bytes.
.. code-block:: python
::
>>> decode_single('uint256', b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0009')
12345
The **value** parameter is expected to be one of the recognized EVM
types.
.. note:: This function cannot be used to decode dynamic or array types
such as ``bytes32[]``.
- ``eth_abi.decode_abi(types, data)``
This function decodes ``data`` into the python type corresponding to the
provided ``types``. This function accepts arrays of type byte.
.. code-block:: python
::
>>> decode_abi(['uint256'], b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0009')
[12345]
>>> decode_abi(['bytes32', 'bytes32'], b'a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
['a', 'b']
The **values** parameter is expected to be an iterable whose values are
all one of the recognized EVM types.
Encoding
~~~~~~~~
These functions are intended for encoding python values into
representations that are suitable for interacting with the EVM.
- ``eth_abi.encode_single(type, value)``
This function encodes ``value`` in the ABI encoding for the provided
``type``.
.. code-block:: python
::
>>> encode_single('uint256', 12345)
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0009'
The **value** parameter is expected to be one of the recognized EVM
types.
.. note:: This function cannot be used to encode array types such as
``bytes32[]``.
- ``eth_abi.encode_abi(types, values)``
This function encodes ``values`` in the ABI encoding for the
corresponding type provided by the ``types`` argument.
.. code-block:: python
::
>>> encode_abi(['uint256'], [12345])
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0009'
>>> encode_abi(['bytes32', 'bytes32'], ['a', 'b'])
b'a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
The **values** parameter is expected to be an iterable whose values are
all one of the recognized EVM types.
Development
-----------
Clone the repository and then run:
.. code:: sh
pip install -e . -r requirements-dev.txt
Running the tests
~~~~~~~~~~~~~~~~~
You can run the tests with:
.. code:: sh
py.test tests
Or you can install ``tox`` to run the full test suite.
Releasing
~~~~~~~~~
Pandoc is required for transforming the markdown README to the proper
format to render correctly on pypi.
For Debian-like systems:
::
apt install pandoc
Or on OSX:
.. code:: sh
brew install pandoc
To release a new version:
.. code:: sh
make release bump=$$VERSION_PART_TO_BUMP$$
How to bumpversion
^^^^^^^^^^^^^^^^^^
The version format for this repo is ``{major}.{minor}.{patch}`` for
stable, and ``{major}.{minor}.{patch}-{stage}.{devnum}`` for unstable
(``stage`` can be alpha or beta).
To issue the next version in line, specify which part to bump, like
``make release bump=minor`` or ``make release bump=devnum``.
If you are in a beta version, ``make release bump=stage`` will switch to
a stable.
To issue an unstable version when the current version is stable, specify
the new version explicitly, like
``make release bump="--new-version 4.0.0-alpha.1 devnum"``
.. |Build Status| image:: https://circleci.com/gh/ethereum/eth-abi.svg?style=shield
:target: https://circleci.com/gh/ethereum/eth-abi
.. |Documentation Status| image:: https://readthedocs.org/projects/eth-abi/badge/?version=latest
:target: https://readthedocs.org/projects/eth-abi/?badge=latest
.. |PyPi version| image:: https://img.shields.io/pypi/v/eth-abi.svg
:target: https://pypi-hypernode.com/pypi/eth-abi
=================
|Build Status| |Documentation Status| |PyPi version|
Python utilities for working with the Ethereum ABI
Installation
------------
.. code:: sh
pip install eth-abi
Documentation
-------------
Decoding
~~~~~~~~
These functions are intended for decoding return values from the EVM.
- ``eth_abi.decode_single(type, data)``
This function tries to decode ``data`` into the python type that
corresponds to the provided ``type``. This function accepts data of type
bytes.
.. code-block:: python
::
>>> decode_single('uint256', b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0009')
12345
The **value** parameter is expected to be one of the recognized EVM
types.
.. note:: This function cannot be used to decode dynamic or array types
such as ``bytes32[]``.
- ``eth_abi.decode_abi(types, data)``
This function decodes ``data`` into the python type corresponding to the
provided ``types``. This function accepts arrays of type byte.
.. code-block:: python
::
>>> decode_abi(['uint256'], b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0009')
[12345]
>>> decode_abi(['bytes32', 'bytes32'], b'a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
['a', 'b']
The **values** parameter is expected to be an iterable whose values are
all one of the recognized EVM types.
Encoding
~~~~~~~~
These functions are intended for encoding python values into
representations that are suitable for interacting with the EVM.
- ``eth_abi.encode_single(type, value)``
This function encodes ``value`` in the ABI encoding for the provided
``type``.
.. code-block:: python
::
>>> encode_single('uint256', 12345)
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0009'
The **value** parameter is expected to be one of the recognized EVM
types.
.. note:: This function cannot be used to encode array types such as
``bytes32[]``.
- ``eth_abi.encode_abi(types, values)``
This function encodes ``values`` in the ABI encoding for the
corresponding type provided by the ``types`` argument.
.. code-block:: python
::
>>> encode_abi(['uint256'], [12345])
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0009'
>>> encode_abi(['bytes32', 'bytes32'], ['a', 'b'])
b'a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
The **values** parameter is expected to be an iterable whose values are
all one of the recognized EVM types.
Development
-----------
Clone the repository and then run:
.. code:: sh
pip install -e . -r requirements-dev.txt
Running the tests
~~~~~~~~~~~~~~~~~
You can run the tests with:
.. code:: sh
py.test tests
Or you can install ``tox`` to run the full test suite.
Releasing
~~~~~~~~~
Pandoc is required for transforming the markdown README to the proper
format to render correctly on pypi.
For Debian-like systems:
::
apt install pandoc
Or on OSX:
.. code:: sh
brew install pandoc
To release a new version:
.. code:: sh
make release bump=$$VERSION_PART_TO_BUMP$$
How to bumpversion
^^^^^^^^^^^^^^^^^^
The version format for this repo is ``{major}.{minor}.{patch}`` for
stable, and ``{major}.{minor}.{patch}-{stage}.{devnum}`` for unstable
(``stage`` can be alpha or beta).
To issue the next version in line, specify which part to bump, like
``make release bump=minor`` or ``make release bump=devnum``.
If you are in a beta version, ``make release bump=stage`` will switch to
a stable.
To issue an unstable version when the current version is stable, specify
the new version explicitly, like
``make release bump="--new-version 4.0.0-alpha.1 devnum"``
.. |Build Status| image:: https://circleci.com/gh/ethereum/eth-abi.svg?style=shield
:target: https://circleci.com/gh/ethereum/eth-abi
.. |Documentation Status| image:: https://readthedocs.org/projects/eth-abi/badge/?version=latest
:target: https://readthedocs.org/projects/eth-abi/?badge=latest
.. |PyPi version| image:: https://img.shields.io/pypi/v/eth-abi.svg
:target: https://pypi-hypernode.com/pypi/eth-abi
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
eth-abi-1.3.0.tar.gz
(20.0 kB
view details)
Built Distribution
eth_abi-1.3.0-py3-none-any.whl
(21.6 kB
view details)
File details
Details for the file eth-abi-1.3.0.tar.gz
.
File metadata
- Download URL: eth-abi-1.3.0.tar.gz
- Upload date:
- Size: 20.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2a898568fd85b8f162b89890695f7e08d7a53dec70ecdb6bea20c544241d8621 |
|
MD5 | f1fa2e0fe8de52bf33ff0c231c45950a |
|
BLAKE2b-256 | a054cafbdd18686185617fb0208f9435708abc1f6ab60c414b2c4328e9c73ea7 |
File details
Details for the file eth_abi-1.3.0-py3-none-any.whl
.
File metadata
- Download URL: eth_abi-1.3.0-py3-none-any.whl
- Upload date:
- Size: 21.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 04e64f739c6f6cb6aded3e7c8924cc49ffbb088ac53ad1786765747853f167b1 |
|
MD5 | 34be28ba71b8577f109e1f345c638506 |
|
BLAKE2b-256 | e9ef5af786a32ae7ac3aece6489400ea2cee6b2ede7a7b3955e6f55a59442d12 |