iExec Dev Letter #11: DApp Challenge and Devcon3–21 Nov 2017

Julien Béranger
iExec
Published in
6 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.

The iExec Booth is Almost Ready
Performing a V1 Demo for Genesis Mining
Getting in the Loop of the Latest HPC Trends

Welcome Ugo, Lead Java Developer

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

Let’s now dive deeper into the technicalities of iExec. Our infrastructure allows to deploy ANY application, and the following details 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:
rm contracts/* && vi contracts/Ffmepg.solpragma 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-)
rm iexec.js && vi iexec.jsmodule.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
iexec submit "{ \"cmdline\": \"-i small.mp4 small.avi\", \"dirinuri\": \"http://techslides.com/demos/sample-videos/small.mp4\" }"
  • -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 --save

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!

ÐApp Challenge — Part II

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

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

Meetups

On December 13th 2017, we’ll organize 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
iExec

DevRel at Arthera | Member of the W3HC | Co-founder of Āto | Founder of Strat | Volunteer at Emmaüs Connect