Skip to main content

Python wrapper for the Zenroom virtual machine

Project description


Zenroom
zenroom.py
A python wrapper for Zenroom


This library attempts to provide a very simple wrapper around the Zenroom (https://zenroom.dyne.org/) crypto virtual machine developed as part of the DECODE project (https://decodeproject.eu/), that aims to make the Zenroom virtual machine easier to call from normal Python code.

This library has been developed for a specific deliverable within the project, and as such will likely not be suitable for most people's needs. Here we directly include a binary build of Zenroom compiled only for Linux (amd64), so any other platforms will be unable to use this library. This library has also only been tested under Python 3.

Zenroom itself does have good cross platform functionality, so if you are interested in finding out more about the functionalities offered by Zenroom, then please visit the website linked to above to find out more.

:triangular_flag_on_post: Table of Contents (click to expand)

:floppy_disk: Installation

pip install zenroom

NOTE - the above command attempts to install the zenroom package, pulling in the Zenroom VM as a precompiled binary, so will only work on Linux (amd64) machines.


:video_game: Usage

Two main calls are exposed, one to run zencode and one for zenroom scripts.

If you don't know what zencode is, you can start with this blogpost https://decodeproject.eu/blog/smart-contracts-english-speaker

A good set of examples of zencode contracts could be found here https://github.com/DECODEproject/dddc-pilot-contracts

ZENCODE

Here a quick usage example:

from zenroom import zenroom

contract = """Scenario 'coconut': "To run over the mobile wallet the first time and store the output as keypair.keys"
Given that I am known as 'identifier'
When I create my new keypair
Then print all data
    """

result, errors = zenroom.zencode(contract)
print(result.decode())

NOTE The result is in bytes and not string if you want a string you want to .decode() it

The zencode function accepts the following:

  • script (str): Required byte string or string containing script which Zenroom will execute
  • keys (str): Optional byte string or string containing keys which Zenroom will use
  • data (str): Optional byte string or string containing data upon which Zenroom will operate
  • conf (str): Optional byte string or string containing conf data for Zenroom
  • verbosity (int): Optional int which controls Zenroom's log verbosity ranging from 1 (least verbose) up to 3 (most verbose)

Returns

  • tuple: The output from Zenroom expressed as a byte string, the eventual errors generated as a string

ZENROOM SCRIPTS

from zenroom import zenroom

script = "print('Hello world')"
output, errors = zenroom.execute(script)

The same arguments and the same result are applied as the zencode call.


:clipboard: Testing

Tests are made wuth pytests, just run

python setup.py test


:globe_with_meridians: Links

https://decodeproject.eu/

https://zenroom.dyne.org/

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

zenroom-0.2.0.tar.gz (7.3 MB view details)

Uploaded Source

Built Distribution

zenroom-0.2.0-py3-none-any.whl (11.6 MB view details)

Uploaded Python 3

File details

Details for the file zenroom-0.2.0.tar.gz.

File metadata

  • Download URL: zenroom-0.2.0.tar.gz
  • Upload date:
  • Size: 7.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.2

File hashes

Hashes for zenroom-0.2.0.tar.gz
Algorithm Hash digest
SHA256 3a3e1eb84daea85dac77a118c4c7a6731fccb0b25ef15c4c4c2e2c6e5ed3f60f
MD5 5e1ec1588980986e61dd44d955f8cfa8
BLAKE2b-256 40864854fe4d52a4e419a0b779f6cf0e45983215b1d05b77d426c32b9f6f2030

See more details on using hashes here.

File details

Details for the file zenroom-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: zenroom-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 11.6 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.2

File hashes

Hashes for zenroom-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4ca474b3b33c46b0944f4987b02856c417c17f7d5836aba5a4dabd387a4339bb
MD5 a47a71152316c3dfb5920b7e59e3835d
BLAKE2b-256 f6c9763033f2b76beeafee0bdd36caf00776eadf38344e8136ff6d6135181000

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page