Need help with PySonar?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

200 Stars 57 Forks Apache License 2.0 155 Commits 17 Opened issues


Decentralized Machine Learning Client

Services available


Need anything else?

Contributors list


Decentralized Machine Learning Client

Chat on Slack Build Status

Sonar is a smart contract library that allows data scientists to publish new models they want to get trained into the ModelRepository and people to pick models they can train on their personal data.

You can find a working proof of concept in the notebooks directory.


Using Docker

Using Docker is the easiest way to get this running.

  1. Run
    docker-compose up
    . This will launch IPFS, the in-memory fake ethereum blockchain with the smart contract, OpenMined mine.js and the jupyter notebooks
  2. Open the the Jupyter notebooks on http://localhost:8888
  3. Step through the notebook and check the output of the previous
    docker-compose up
    to get some infos on what happens


Bootstrap environment

Before running the demo there are a couple of prerequisites you need to install.

Base libraries

Before installing the python packages you need to make sure your system holds a set of basic math libraries required for the encryption operations (

  • mpc: arithmetic of complex numbers with arbitrarily high precision and correct rounding of the result
  • mpfr: multiple-precision floating-point computations
  • gmp: GNU multiple precision arithmetic library
  • npm: NPM Package Manager

For MacOS with brew just run:

brew install libmpc mpfr gmp

For Linux run:

apt-get install libgmp3-dev libmpfr-dev libmpc-dev python3-dev

Then run:

curl -o- | bash
nvm install v8


The solidity tools are required to compile the contract of our demo. See installing solidity for instructions for your platform.


In order to import ABIs you'll need to install truffle.

sudo npm install -g truffle


As the network itself is too big to actually host it on the blockchain you need

to host the files. For installation see the ipfs installation page or run:
brew install ipfs

After installation is complete run

ipfs init
to initialize your local IPFS system.

PIP packages

Make sure you have a clean python3 install and continue with installing all the packages

pip install -r requirements.txt

PIP package maintenance

PySonar utilizes pip-tools to help with maintaining PIP packages (

To update all packages, periodically re-run

pip-compile --upgrade

Build local libraries

First you need to get

package bundled up
python install

Then make sure you also have the

package properly installed. Head over to the repository and follow its instructions.

Import Smart Contract ABI

The interface for our

smart contract is distributed via an npm package. You can import the
file to your local environment by running
make import-abi

which will place the file at



After you made sure all the installation steps are done you need to set up your local mock environment.

# start the ipfs daemon in the background
ipfs daemon&
# run local ethereum mock
testrpc -a 1000

Now open a second shell, start the notebook and follow its instructions

jupyter notebook notebooks

Known issues

  • there have been reports of the
    installation of solidity not working properly

If you experience any problems while running this demo please create a github issue and help us get better.


Apache-2.0 by OpenMined contributors

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.