katonobo’s blog

仮想通貨✖プログラミング

【Solidity】スマートコントラクトで「Hello World」をしてみよう!

こんにちは、katonoboです。

 

プログラミング言語を勉強すると、まず最初に「Hello World!」の表示のさせ方を覚えると思います。今回はスマートコントラクトでこの「Hello World!」をやってみたいと思います。

 

今回は、イーサリアムのスマートコントラクトの言語であるSolidityでコードを書いてみます。もちろん、実践ですぐ通用することはありませんがこんな感じなんだなと思っていただければ幸いです。

 ちなみに自分が使っているのはMacなので、その前提で書いていきます。

 

ではやっていきましょう。

普通の入門では、まずはターミナルを開いて、Gethをインストールして…。というのが多いですが、実は実際にコードを書いて動かしてみるだけなら、ブラウザだけでできます。それが開発綜合環境のRemixです。

Remix - Solidity IDE

 
このリンクを開くと、プラウザに開発環境が現れます。

実際に開くとわかりますが、左側にコードが入力でき、右側でコードを実行できます。

デバックなどもしてくれるのでミスを減らすことができます。

 
f:id:katonobo:20180213232617p:plain


 

上の画像のコードを書きます。

 

pragma solidity ^0.4.19;

contract HelloWorld{
    
    string public greeting;
    function HelloWorld(string _greeting)public{
        greeting = _greeting;
    }
    
    function setGreeting(string _greeting)public{
        greeting = _greeting;
    }
    
    function greet() public constant returns (string) {
        return greeting;
    }
}


順に説明します。

     pragma solidity ^0.4.19;

これは、Solidityのバーションを表しています。このバージョンが違うと動作しなくなります。
この場合は、0.4.0未満と、0.5.0以上でも動作しないことを示しています。
Remixでは、バージョンの選択も行えます。注意していただきたいのが、Solidityはバージョンによってコードが結構変更されているため、もしこのコードを使う場合は、Remixがこの0.4.19のバージョンになっているか確認してください。


f:id:katonobo:20180213232913p:plain

(「Setting」の部分に「Solidity version」があるので、そこで変更できます。)

    contract HelloWorld{

コントラクトの宣言です。HelloWorldって名前のコントラクトだよって宣言しています。

string public greeting;

変数の宣言です。「文字列を保存するgreetingという変数使うよ」って宣言しています。

function HelloWorld(string _greeting)public{
        greeting = _greeting;
    }

コンストラクタの宣言です。デプロイする時に実行されます。

 function setGreeting(string _greeting)public{
        greeting = _greeting;
    }
  function greet() public constant returns (string) {
        return greeting;
    }

メソッドの宣言です。setGreetingメソッドで文字をセットして、greetメソッドで返します。

はい。たったこれだけです。

では、実際にやってみます。


コードを書いたら、右側の上にあるタブで、「Run」を選択し、「Enviroment」を「javascript VM」に変更します。

f:id:katonobo:20180213234934p:plain


これでプラウザ上で仮想環境ができました。

さあ、スマートコントラクトに「Hello World」を刻みましょう。下のスクリーンショットの赤く囲った所に「"Hello World!"」と入力して、横のボタン「Create」を押してください。

f:id:katonobo:20180213235448p:plain


押しましたか?ちゃんと"Hello World!"は、ダブルクォーテーションで囲っていますか?

f:id:katonobo:20180213235839p:plain

押すと、コードを入力する下と、ボタンを押した下に何か出てきますね。

コードの下は「Detail」ボタンを押すとなにやら色々出てきます。そこで、ちゃんとHello Worldが記録されているか確認できます。

f:id:katonobo:20180214000229p:plain

「Create」ボタンを押した下には、「greeting」「greet」「setGreeting」ボタンができていると思います。ここのボタンを押すと、"Hello World!"がちゃんとセットさせていることがわかります。

f:id:katonobo:20180214000453p:plain

この「setGreeting」の所の文字を変えて入力すれば、その変更した文字に変えられます。

f:id:katonobo:20180214000714p:plain

("Thank you!"に変更した場合)


いかがでしたでしょうか?意外に簡単だったんではないでしょうか?ぜひ色々遊んでみてください。

それでは!



参考:

はじめてのブロックチェーン・アプリケーション Ethereumによるスマートコントラクト開発入門 (DEV Engineer's Books)

www.ethereum.org

ブロックチェーンアプリケーション開発の教科書