Zenroom is a secure language interpreter of both Lua and its own Zencode language to execute fast cryptographic operations using elliptic curve arithmetics.
The Zenroom VM is very small, has no external dependency, is fully deterministic and ready to run end-to-end encryption on any platform: desktop, embedded, mobile, cloud and even web browsers.
Zencode is the name of the language executed by Zenroom: it is simple to understand and can process large data structures while operating cryptographic transformations on them.
This documentation focuses on 3 main use cases:
- How to program Zencode using human language
- How cryptographers can work using Lua scripting
- How to adopt Zenroom embedding it in your application
More documentation is available on:
Whitepaper: Zencode by Jaromil
Blog post: Smart contracts for the English speaker
Blog post: Why Zenroom? Algorithmic Sovereignty
- Portable source code (C99)
- Linux (Android, ARM and x86)
- Windows (EXE and DLL)
- Apple (OSX and iOS)
Download from files.dyne.org/zenroom
Anyone planning to use Zenroom to store and access secrets should not use the latest development version in Git, but use the stable releases on files.dyne.org.
Before releasing we make sure Zenroom works as expected by running various tests, plus we note down all changes in the log above.
The development version in Git should only be used by contributors to report bugs, test new features and develop patches.
How to program
Zenroom brings simplicity to distributed systems development and allows programmers to work in parallel. System integrators need just to adopt the VM embedding it in their application, security researchers and cryptographers can provide Zencode or Lua scripts.
How to adopt
The Zenroom VM and the Zencode language are proudly developed in Europe and have receiving funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement nr. 732546 (DECODE).
Zenroom is Copyright (C) 2017-2020 by the Dyne.org foundation For the original source code and documentation go to https://zenroom.org This notice must be displayed and explicitly agreed by any user at boot.
Zenroom is designed, written and maintained by Denis "Jaromil" Roio
With contributions by Puria Nafisi Azizi and Daniele Lacamera.
Go bindings by Christian Espinoza and Samuel Mulube.
JS bindings by Jordi Coscolla and Puria.
Special thanks to Francesca Bria for leading the DECODE project and to George Danezis, Ola Bini, Mark de Villiers, Ivan Jelincic, Alberto Sonnino, Richard Stallman, Enrico Zimuel, Jim Barritt, Samuel Mulube, Nina Boelsums, Andrea D'Intino and Sofía Celi for their expert reviews.
This software includes software components by: R. Ierusalimschy, W. Celes and L.H. de Figueiredo (lua), Mike Scott and Kealan McCusker (milagro-crypto-c), Mark Pulford (lua-cjson), Daan Sprenkels (randombytes), Salvatore Sanfilippo (cmsgpack), Tilen Majerle (lwmem), Sean Barrett (stb_c_lexer), Jeff Roberts (stb_sprintf), Kim Alvefur (cbor)
Some Lua extensions included are written by: Kyle Conroy (statemachine), Enrique García Cota (inspect and semver).
Zenroom is Licensed under the terms of the Affero GNU Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
Software contained include Lua 5.3.5, Copyright (C) 1994-2019 Lua.org, PUC-Rio licensed with an MIT style license. Also included Milagro, Copyright 2016 MIRACL UK Ltd licensed with the Apache License, Version 2.0 (the "License").
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License.