iExec Dev. Letter #11

Julien Béranger
5 min readNov 21, 2017

--

Before jumping in the technical part of the Dev. Letter, let’s give some fresh news.

Devcon3

iExec was really proud to sponsor the Devcon3. We had a booth and Gilles Fedak gave a talk (video and slides). Quite a lot of dapp developers were coming at the booth willing use iExec to deploy their distributed applications, but also enthusiastic token holders always encouraging and giving out interesting advices.

Off-chain computing was clearly a keyword at Devcon3, whith many projects offering their own solutions to improve Ethereum scalability. Privacy was another keyword with two emerging solutions: the first one based on zk-snarks, the second one is based on hardware approach, in particular enclave such as Intel SGX. iExec solution follows this trend, as it has been suggested that a practical and efficient solution to these issues.

SC’17

From the 11th to the 18th, iExec was in Denver, Colorado for Super Computing 2017.

SC17 is the premier international conference showcasing the many ways high performance computing, networking, storage and analysis lead to advances in scientific discovery, research, education and commerce. It’s also where the TOP500 list of the fastest supercomputers is made (China won again this year).

During 3 days, iExec presented its V1 “The Wanderer” to HPC professionals and cloud enthusiasts on its booth.

We also leveraged this opportunity to network and meet with many big actors of the HPC field such as Google Cloud, NVIDIA, CNRS, Huawei, The National Supercomputer Center in Guangzhou, and the HPC Center CAS.

We also had multiple meetings with a partner of ours present at SC in preparation of V2-V3.

Welcome Ugo!

We welcome Ugo Plouviez, who is joining the team as Lead Java Developer. During his past years spent in Singapore and Hong Kong, Ugo has gained a remarkable expertise in Java technology applied to fintech. He has tackled challenges such as in-memory realtime analytics, high frequency trading, mission-critical software, always at the bleeding edge of Java and Cloud technology. At iExec, Ugo will address the issue of refactoring and architecting iExec to make it scalable, robust, safe, and highly efficient.

How to deploy any application on iExec

iExec allows to deploy ANY application, here’s how:

iExec has released its SDK permitting to create decentralized applications. The SDK comes with a sample dapp as an example, “factorial”. This article emphasizes that iExec is not dedicated to factorial only: by using the SDK, one can insert nearly any application.

This article targets application developers. It is assumed that the reader has sufficient IT skills as to understand some notions like “batch scheduling”, or “standard input, error and output”, etc. Please note that “node” and “npm” must be installed on your computer.

As an example, this article details how to create a smart contract to deploy and run the “ffmpeg” application, a cross-platform and free software solution to record, convert and process audio and video.

One would easily replicate this example to insert his/her favorite applications (as soon as it can be run in batch mode, on Linux AMD64 stations).

To create and use the “ffmpeg” smart contract, one could follow the next dozen steps:

  • -1- install sdk

npm -g install iexec

  • -2- execute the following command to initialize your iExec project:

iexec init

  • -3- create your project main directory executing :

cd iexec-init/

  • -4- download ffmpeg from https://ffmpeg.org/ and install the Linux AMD64 binary into the apps/ directory:

cp /from/somewhere/ffmpeg-binary apps/Ffmpeg

  • -5- create your smart contract Ffmpeg.sol with your preferred editor (be careful that copy/paste may insert wrong quotes):

rm contracts/* && vi contracts/Ffmepg.sol

pragma solidity ^0.4.11;
import “iexec-oracle-contract/contracts/IexecOracleAPI.sol”;
contract Ffmpeg is IexecOracleAPI{

uint public constant DAPP_PRICE = 1;
string public constant DAPP_NAME = “ffmpeg”;

function Ffmpeg (address _iexecOracleAddress) IexecOracleAPI(_iexecOracleAddress,DAPP_PRICE,DAPP_NAME){

}

}

  • -6- edit “iexec.js” file to export your application name: it must be the smart contract name (“Ffmep”, as defined at step -5-) (again, be careful with the pasted quotes)

rm iexec.js && vi iexec.js

module.exports= {

name: ‘Ffmpeg’,

};

  • -7- create a wallet on testnet with some RLC by executing :

iexec wallet create && iexec wallet getETH && iexec wallet getRLC

  • -8- execute the following command to stake and check 5 nRLC:

iexec account allow 5 && iexec account show

  • -9- deploy your ÐApp so that you and your potential users will be able to access it over the blockchain

iexec deploy

  • -10- submit a job to your Ffmep ÐApp : ffmpeg needs (a) the URI of an input file in the “dirinuri” variable and (b) a command line in the “cmdline” variable (for the 3rd time, beware of pasted quotes ;) )

iexec submit {“dirinuri”:“http://sample-videos.com/video/mp4/720/big_buck_bunny_720p_20mb.mp4“,“cmdline”:”big_buck_bunny_720p_20mb.mp4 big_buck_bunny_720p_20mb.avi”}

  • -11- retrieve your result: previous execution shown the transaction hash of your submission; you need it to retrieve your result

iexec result the_transaction_hash_of_your_submission

That’s all, folks.

ÐApp results

iExec results may be packaged in different manners. This is out of the control of the middleware since results are certainly application-specific. It is the end-user’s responsibility to check its result format and validity. To summarize, the result may be a single file (whatever is its format) or a single Zip compressed file. Results are compressed if and only if there are more than one result file and/or result size is greater than 250Kb.

Result certification within iExec will be introduced in the iExec “PoCo” (“Proof of Contribution”) mechanism in the version to be released in 2018 (more about this).

Conclusion

This article introduced the iExec SDK that permits the deployment and usage of decentralised applications of any kind. We created the “ffmpeg” dapp as an example, and we hope one can easily replicate it with its preferred application.

We hope you will enjoy our SDK. Don’t hesitate to contact us for further informations, we would be happy to help you with your own dapp!

Dapp Challenge — Part II

We were surprised of the quality of the candidates of the very first dapp challenge we organised before Devcon3 (Github). So, we’ll launch another dapp challenge to grant between 10 and 15 project for a total budget of 50k EUR.

Details to be announced at BlockShow Asia — November 30, 2017.

Meetups

On December 13th 2017, we’ll organise a meetup in Lyon, France where developers can discover Ethereum and get started the iExec stack.

This is the first of a series, next ones will be held in Paris, Brussels, and Zug.

Social networks

Resources

--

--

Julien Béranger
Julien Béranger

Written by Julien Béranger

CEO of Strat | Co-founder of the Web3 Hackers Collective

No responses yet