Python wrapper for the Zenroom virtual machine
Project description
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 (https://dev.zenroom.org/) find out more.
🚩 Table of Contents (click to expand)
💾 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) and macOS machines.
🎮 Usage
Two main calls are exposed zencode_exec
and zenroom_exec
, one to run
zencode
and one for zenroom scripts
as names suggest.
The names follow the standard Zenroom naming as per Zenroom documentation.
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
(https://github.com/DECODEproject/Zenroom/tree/master/test/zencode_simple)[here]
and
(https://github.com/DECODEproject/Zenroom/tree/master/test/zencode_coconut)[here].
The complete documentation about zencode
is available on
http://dev.zenroom.org/zencode
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 = zenroom.zencode_exec(contract)
print(result.stdout)
The zencode function accepts the following:
script
(str): Required byte string or string containing script which Zenroom will executekeys
(str): Optional byte string or string containing keys which Zenroom will usedata
(str): Optional byte string or string containing data upon which Zenroom will operateconf
(str): Optional byte string or string containing conf data for Zenroomverbosity
(int): Optional int which controls Zenroom's log verbosity ranging from 1 (least verbose) up to 3 (most verbose)
Returns
- an object (#ZenroomResult)[ZenroomResult] that is a facility to access the
stdout
andstderr
result from the execution of the script
ZENROOM SCRIPTS
from zenroom import zenroom
script = "print('Hello world')"
output, errors = zenroom.zenroom_exec(script)
print(output)
The same arguments and the same result are applied as the zencode
call.
ZenroomResult
This is a facility object that allows to acces the output result of the execution of zen{code,room}_exec commands.
Each time zenroom and zencode are executed stdout and stderr will be filled
accordingly and a code is returned (0
for success and 1
if errored).
The following methods and properties are available:
stdout
This property contains all the output printing from the script/zencode run
stderr
This property contains all the content going to stderr that contains debug info and or stacktrace of the script/zencode run
has_error()
Returns True
or False
based on the return code of the zen{room,code}_exec calls
get_warnings()
Filters the warning messages from the stderr
get_errors()
Filters the error messages from the stderr
get_debug()
Filters the debug messages from the stderr
get_info()
Filters the info messages from the stderr
📋 Testing
Tests are made wuth pytests, just run
python setup.py test
🌐 Links
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
Built Distribution
File details
Details for the file zenroom-1.0.7rc0.tar.gz
.
File metadata
- Download URL: zenroom-1.0.7rc0.tar.gz
- Upload date:
- Size: 24.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a780c75ff4341f81b714b54d110bd9ca036482959435083b12532045eb7136db |
|
MD5 | e715dd80a4bdd928fa92e7ce18f035b8 |
|
BLAKE2b-256 | a3801bae09c489e54fc4bbec966280a02f2cbcd3b8f55363f2f667499eb43f08 |
File details
Details for the file zenroom-1.0.7rc0-py3-none-any.whl
.
File metadata
- Download URL: zenroom-1.0.7rc0-py3-none-any.whl
- Upload date:
- Size: 24.7 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 210a25680ec0f44bb4997a14ed8b670f904845165496a459a2858e59d5dfca25 |
|
MD5 | ce750d36e653fc96feea8b9fc6292830 |
|
BLAKE2b-256 | 19bb49b44c988042e5e261228e7bf9925860ec203c78e8fd9efc75420fc0030c |