Skip to main content

"Hello World" from Solidity

How to say "Hello World" in the era of blockchain?

Reflections

Once upon a time, I worked in CTO role of a great startup, and in order to find talented code developers, we ran a competition for the most creative "Hello World" application. It was a lot of fun! I was not able to participate in the competition back then, but here is my delayed entry.

Step 1. Environment Configuration

# Installing Truffle framework (http://truffleframework.com/)
$ sudo npm install -g truffle
# Creating project
$ mkdir solidity-experiments
$ cd solidity-experiments/
$ truffle init
# Installing and starting Etherium local test network
$ sudo npm install -g ethereumjs-testrpc
$ testrpc &

Step 2. Point truffle framework to the test network

Update truffle.js file created by the init to point to your test network. File content should look like this:
module.exports = {
 networks: {
  development: {
   host: "localhost",
   port: 8545,
   network_id: "*" // Match any network id
  }
 }
};



Step 3. Create Hello.sol Solidity contract in the "/contracts" directory 

pragma solidity ^0.4.4;

contract Hello {
  function Hello() public {
    // constructor
  }

  function sayHello() public pure returns (string) {
     //console.log("sayHello() function called...");
     return 'Hello World!';
  }
}


Step 4. Create 2_deploy_contracts.js file in /migrations directory

var Hello1 = artifacts.require("./Hello.sol");

module.exports = function(deployer) {
  deployer.deploy(Hello1);
};


Step 5.  Deploy the script from truffle console 

$ truffle console
truffle(development)>  truffle migrate --reset
Using network 'development'.

Running migration: 1_initial_migration.js
  Deploying Migrations...
  ... 0xb6bbeaaf3649ecb38d548cba96f681682dad9e0225726924fbee3ce36eff94e3
  Migrations: 0xc08c46796ba0edc0bebbbd0d90868c010055cb0e
Saving successful migration to network...
  ... 0x16fe364b9f2c3e8f07fa1ebd6b84b8ad9b4e750d8698a7e920d824ebd019dd80
Saving artifacts...
Running migration: 2_deploy_contracts.js
  Deploying Hello...
  ... 0xfe120836b2d7395bd988104feff018fe352f93555f71003bbf1a64671cca9ba1
  Hello: 0x2b649a87d20ce1ac3b6a0218e911165fa0f095f0
Saving successful migration to network...
  ... 0x1a09073a3b3f7996f3d63a81a99d8cd09198ad7b467f35f7ddc500a4291332b9
Saving artifacts...
truffle(development)>


Step 6.  Run "Hello World"

truffle(development)> var he = Hello.at(Hello.address)
undefined
truffle(development)> he.sayHello()
'Hello World!'

Comments

Popular posts from this blog

Posting to FaceBook feed using Graph API

Graph API was announced at F8 with a promise to dramatically simplify the FB API. I checked the read access over the new interface during the presentations and to my big surprise it worked flawlessly and from the first time. When I tried https://graph.facebook.com/facebook, JSON-formatted info about the FaceBook page was returned (as expected).
Then I tried OAuth 2.0 way of accessing the API to post a message to the feed. And to my even bigger surprise it worked too!
Here is what you need to do to access Graph API over OAuth: 1. Create a FB app, store app properties to a file:
$appkey='7925873fbfb5347e571744515a9d2804'; $appsecret='THE SECRET'; $canvas='http://apps.facebook.com/graphapi/'; 2. Create a page that will prompt user the access permission (I am prompting for the publish_stream and offline_access permissions at the same time)
//http://apps.facebook.com/graphapi/ require'settings.php';
$url="https://graph.facebook.com/oauth/authorize?"; $url.=…

Amazon Simple Email Service (Amazon SES) and PHP

This morning Amazon announced availability of a bulk email delivery service called "Simple Email Service". Anyone who knows how much pain is it to set-up scalable email solution (and it is not just spammers who need it!) should celebrate the occasion. I know of a company that spent several years cleaning ip addresses it sends email and found itself locked into the contract with internet provider since it would take forever to reach required level of email deliver ability anywhere else.

Anyway, this evening I decided to check the Amazon claim that the service is "simple". Found out that it is indeed simple!
Since there is not much in terms of the documentation yet, here is my code where I used AWS PHP library:

// Enable full-blown error reporting. http://twitter.com/rasmus/status/7448448829
error_reporting(-1);

// Set plain text headers
header("Content-type: text/plain; charset=utf-8");

// Include the SDK
require_once '../sdk.class.php';


// Instantiate th…

JavaScript in Facebook applications

Facebook (finally) allowed Java Script in FB applications outside of IFRAME
http://wiki.developers.facebook.com/index.php/FBJS
Among other things, I liked how elegantly they are creating namespaces separating different applications on the same page. Seems that it cold be a security hole here - it is possible to enumerate java functions on the page and "impersonate" user actions with another apps installed on the same page. Other than that - it's great that we can use JavaScript outside of the IFRAME sandbox.