MESG Core v0.9 Release Notes

New features in MESG Core v0.9

After three months of intense development, we are very proud to release the v0.9 of MESG Core!

This version is a huge step towards the long-term vision with the release of the beta version of the decentralized marketplace.

Marketplace beta version

This beta version of the MESG Marketplace lets users buy and sell access to modular application components for a limited period of time.

The Marketplace is fully decentralized as it runs on Ethereum with a custom smart contract and uses the MESG Token for purchasing access to services. The source code of the services are also decentralized as they are published on IPFS.

Check the full article about the release of the Marketplace on Medium.

Find and deploy services from the Marketplace website

Go to to browse the available services. You can find services’ documentation, API, offers and versions.


Now let’s deploy the service email-sengrid.
Go to its dedicated page, click on the button “Get this service”, copy the deploy command line, and execute it in a terminal on your local computer (that already runs MESG Core).

Your terminal should look this:

➜  ~ mesg-core service deploy mesg://marketplace/service/8mcRi836QZZmYAvt2o7RgHdUjsvGsdnPdSHVBq25jjyB
✔ Image built with success
✔ Service deployed with sid email-sendgrid and hash CGRuEJahcrEQoFNV6nywDAx22CPifyTi1CmaoLVVj6gk
To start it, run the command:
        mesg-core service start email-sendgrid

Et voila :champagne: You have deployed a service from the decentralized MESG Marketplace!

Publish your services and earn tokens

You can also publish any of your service on the Marketplace.

Setup the wallet

To publish a service, first you need to setup your wallet and transfer a few Ether into it to pay for transaction fee.

  • To create your wallet, execute:
mesg-core wallet create

Enter a desired passphrase and hit enter. You should get a new account with an address like 0x87a3e7de89881e2336c128d2b5c0f227885826d1.

  • Backup the passphrase and the account itself by running:
mesg-core wallet export 0x87a3e7de89881e2336c128d2b5c0f227885826d1

Replace 0x87a3e7de89881e2336c128d2b5c0f227885826d1 by the account’s address created during the previous command. Enter the passphrase and hit enter.

Save the outputted JSON in a secured place. You may need it later to import it and not lose access to your tokens.

  • Transfer some Ether to your address to pay for transaction fees. I recommend to transfer 0.1 ETH.

Publish a service

Now that your wallet is ready, let’s publish a service.

Simply execute the following command:

mesg-core marketplace publish PATH_TO_THE_SERVICE

Answer the questions, wait for the source code to be published on IPFS, wait for the Ethereum transaction to get mined and it should be done!

Click on the URL to display your service on the marketplace website.

Create an offer

Now that your service is published, you need to create an offer to authorize other users to purchase it. You need to specify a price in MESG Tokens and a duration in seconds. You can set the price to 0 if you want to share your service for free.

Execute the following command to create an offer:

mesg-core marketplace create-offer SERVICE_SID

Replace SERVICE_SID by the service’s sid returned by the command publish.

Go back to the website or follow the link displayed by the command to see that your service has now an offer!

Congratulations, you’ve fully published a service on the MESG Marketplace!


Of course, we also update the docs website to add a guide about the Marketplace.

Deterministic service’s hash

Another big step towards the decentralized network is the calculation of a deterministic service’s hash. Now, any deployment of the same service will return the exact same hash! This was not an easy task as services are using Docker for containerization and Docker doesn’t provide a deterministic environment, thus a deterministic hash.

The solution we implemented is to create an hash based on source files, with only the user’s file permissions as the header, and the overridden environment variables that could change the service’s behavior. The solution seems easy but took a lot of research as file headers contain a lot of required information that are specific to the host computer. If you want to learn more about this, you can read this forum post: Service's hash.

For the complete changelog, refer to Github.

To update to v0.9, follow the installation process on the documentation